Dasturiy ta'minotning moslashuvchanlik xususiyati katta va murakkab tizimlarga tobora ko'proq kiritilishining asosiy sabablaridan biridir. Uskuna uchun dasturiy maxsulot ishlab chiqarish to'g'risida qaror qabul qilingandan so'ng, apparat loyihasiga o'zgartirish kiritish juda qimmatga tushadi. Biroq, tizimni ishlab chiqish paytida yoki undan keyin istalgan vaqtda dasturiy ta'minotga o'zgartirishlar kiritilishi mumkin. Hatto keng qamrovli o'zgarishlar ham tizim uskunasiga o'zgarish kiritishdan ancha arzon.
Tarixiy jihatdan, dasturiy ta'minotni ishlab chiqish jarayoni va dasturiy ta'minot evolyutsiyasi jarayoni (dasturiy ta'minotga texnik xizmat ko'rsatish) o'rtasida har doim bo'linish mavjud edi. Odamlar dasturiy ta'minotni ishlab chiqishni dasturiy ta'minot tizimi dastlabki kontseptsiyadan to ishchi tizimgacha ishlab chiqiladigan ijodiy faoliyat deb bilishadi. Biroq, ular ba'zan dasturiy ta'minotga texnik xizmat ko'rsatishni zerikarli va qiziq emas deb hisoblashadi. Ular dasturiy ta'minotga texnik xizmat ko'rsatishni original dasturiy ta'minotni ishlab chiqishga qaraganda salgina qiziqarli va qiyin deb o'ylashadi.
Rivojlanish va texnik xizmat ko'rsatish o'rtasidagi farq tobora ahamiyatsiz bo'lib bormoqda. Ikkita alohida jarayon emas, balki dasturiy injiniringni evolyutsion jarayon (2.8-rasm) deb o'ylash yanada realroq bo'lib, bunda dasturiy ta'minot o'zgaruvchan talablar va mijozlar ehtiyojlariga javoban o'z hayoti davomida doimiy ravishda o'zgartiriladi.
Define system requirements - Tizim talablarini aniqlang
assess existing systems - mavjud tizimlarni baholash
Propose system changes - Tizimga o'zgartirishlarni taklif qiling
O'zgarishlar ustida ishlash (coping with change)
Barcha murakkab dasturiy ta'minot loyihalarida o'zgarishlar bo’lib turadi. Tizim talablari korxonalar tashqi muhitga, raqobatga va boshqaruv sifatidagi o'zgarishga javob berishiga qarab turib o'zgaradi. Yangi texnologiyalar paydo bo'lishi bilan loyihalash va amalga oshirishga yangi yondashuvlar paydo bo'ldi. Shuning uchun dasturiy ta'minot jarayonining qaysi modeli qo'llanilishidan qat'i nazar, u ishlab chiqilayotgan dasturiy ta'minotdagi o'zgarishlarga mos kelishi juda muhimdir.
O'zgartirish dasturiy ta'minotni ishlab chiqish xarajatlarini oshiradi, chunki bu odatda tugallangan ishni qayta bajarish kerakligini anglatadi. Bu qayta ishlash deb ataladi. Misol uchun, agar tizimdagi talablar o'rtasidagi munosabatlar tahlil qilingan bo'lsa va yangi talablar aniqlansa, talablar tahlilining bir qismi yoki barchasi takrorlanishi kerak. Yangi talablarni bajarish uchun tizimni qayta loyihalash, ishlab chiqilgan dasturlarni o'zgartirish va tizimni qayta sinovdan o'tkazish kerak bo'lishi mumkin.
Qayta ishlash xarajatlarini kamaytirish uchun ikkita tegishli yondashuvdan foydalanish mumkin:
O'zgarishlarni kutish, bunda dasturiy ta'minot jarayoni qayta ishlash talab qilinishidan oldin mumkin bo'lgan o'zgarishlarni oldindan ko'ra oladigan yoki bashorat qila oladigan faoliyatni o'z ichiga oladi. Misol uchun, tizimning ba'zi asosiy xususiyatlarini mijozlarga ko'rsatish uchun prototip tizimi ishlab chiqilishi mumkin. Ular prototip bilan tajriba o'tkazishlari va yuqori dasturiy ta'minot ishlab chiqarish xarajatlarini talab qilishdan oldin talablarini yaxshilashlari mumkin.
Jarayon va dasturiy ta'minot tizimga osongina o'zgartirishlar kiritganda o'zgarishlarga chidamlilik. Bu odatda bosqichma-bosqich rivojlanishning ba'zi shakllarini o'z ichiga oladi. Taklif etilayotgan o'zgarishlar hali ishlab chiqilmagan bosqichlarda amalga oshirilishi mumkin. Agar buning iloji bo'lmasa, o'zgarishlarni kiritish uchun faqat bitta o'sish (tizimning kichik bir qismi) o'zgarishi kerak bo'ladi.
Ushbu mavzuda tizim talablarini o'zgartirish va o'zgartirish bilan kurashishning ikkita usulini muhokama qilinadi:
Tizim prototipi, bu erda tizimning versiyasi yoki tizimning bir qismi mijozning talablari va loyiha qarorlarining maqsadga muvofiqligini tekshirish uchun tezda ishlab chiqiladi. Bu o'zgarishlarni kutish usulidir, chunki u foydalanuvchilarga etkazib berishdan oldin tizim bilan tajriba o'tkazishga imkon beradi va shuningdek uning talablari aniqlanadi. Shunday qilib, etkazib berishdan keyin kiritilgan talablarni o'zgartirish takliflari soni kamayishi mumkin.
Qo'shimcha (Incremental) yetkazib berish, bunda tizim qo'shimchalari fikr-mulohazalarini bildirish va tajriba uchun mijozga yetkaziladi. Bu o'zgarishlardan qochish va o'zgarishlarga bardoshlilikni ta’minlaydi. Bu butun tizim uchun talablarni muddatidan oldin bajarilishini oldini oladi va o'zgarishlarni nisbatan arzon narxlarda keyingi bosqichlarga kiritish imkonini beradi.
Refaktoring tushunchasi, ya'ni dasturning tuzilishi va tashkil etilishini takomillashtirish ham o'zgarishlarga bardoshlilikni qo'llab-quvvatlovchi muhim mexanizmdir. Buni 3-ma’ruzada (Agile usullari) muhokama qilinadi.