Dasturlash jarayonida loyihani boshqarishning turlicha yondashuvlari mavjud bo’lib, ularning ba’zilari eski metodlarning yangicha ko’rinishi bo’lsa, boshqalari yangicha uslub sifatida kirib keldi. Bugungi kunda sohada ko’proq ikki yondashuv – Agile (Scrum, Kanban, Lean, va hk.) va an’anaviy Waterfall modellaridan foydalaniladi.
Ularning qaysi biri samarali, qaysi biri loyiha uchun mos kelishini topishdan oldin, ular o’rtasidagi farqlarni ko’rib chiqamiz.
Waterfall
Waterfall – dasturni ishlab chiqishi jarayoniga chiziqli yondashuv hisoblanadi. Jarayonlarning har biri aniq bosqichlarga (phase) ega bo’lib, har bir bosqich keyingisi boshlanishidan oldin yakunlanishi kerak. Waterfall’da katta loyiha barcha bosqichlar yakunlangach, ishga tushadi (live).
Waterfall’ni tasavvur qilish uchun mashinasozlikni, bir jarayon tugallanmay turib, boshqa jarayon boshlanmaydigan avtomobil yig’ishni misol qilish mumkin.
Waterfall bosqichlari quyidagi tartibda bo’ladi:
- Tizim va dastur talablari: texnik topshiriq tuziladi
- Dizayn: dastur arxitekturasi ishlab chiqiladi
- Koding: Kod yoziladi
- Test: loyiha test qilinadi, kamchiliklari bartaraf etiladi
- O’rnatish (installation yoki migration), qo’llab-quvvatlash (support), va xizmat ko’rsatish (maintenance)
Qachon Waterfall’dan foydalangan afzal:
- Loyihaning ishlab chiqish jarayoni aniq strukturaga ega bo’lsa
- Dasturlash jarayonida yangi o’zgarishlar (features) kelib turmasa
- Texnik topshiriq berilib, unda barcha talablar oldindan ko’rsatib o’tilgan bo’lsa.
Agile
Waterfall’dan farqli ravishda, Agile butun loyihani rejalashtirish, uni topshirish sanasini belgilash kabi yondashuvdan voz kechadi. Agile o’zgarishlarga tez reaksiya berishni nazarda tutadi, o’zgarishlar buyurtmachining talablarini qondirish sifatida baholanadi.
Agile to’rt g’oyada mujassam:
- odamlar va o’zaro fikr almashish jarayonlardan ko’ra muhimroq
- ishlayotgan mahsulot eskirgan dokumentatsiyadan ko’ra afzalroq
- buyurtmachi bilan hamkorlik shartnoma shartlaridan ko’ra muhimroq
- o’zgarishlarga tayyorlik dastlabki rejaga amal qilishdan ko’ra muhimroq.
Agile – bir guruh konseptlarni o’z ichiga olib, dasturlashni aniq bir muddat davom etadigan kichik iteratsiyalarga bo’lib yuboradi. Har bir iteratsiya uchun ma’lum bir vazifa qo’yiladi va unda rejalashtirish, dizayn, koding, hamda testing jarayonlari mujassam bo’ladi.
Iteratsiyaning ohirida dastur reliz bo’lish-bo’lmasligidan qat’iy nazar, Agile belgilangan muddat ichida o’zgarishlar kiritish imkoni bo’lishini ko’zda tutadi. Ya’ni iteratsiya ichida dasturga talablar o’zgarishi, yangi o’zgarishlar (features) bo’lishi mumkin, va bu Agile uchun normal holat.
Kichik iteratsiyalarga bo’lib yuborish dasturlash jamoasiga buyurtmachi fikrini tezroq bilish, prioritetlarni o’rnatish, bozordagi talabdan kelib chiqib hatto dasturning asosiy funksiyalarini o’zgartirish kabi afzalliklarni taqdim etadi.
Dasturni tugatish uchun dasturlash jamoasi va buyurtmachi o’rtasida doimiy aloqa bo’lishi kerak. Boshqachasiga aytganda, buyurtmachi jamoaning a’zosiga aylanadi. Bu ko’pincha texnik topshiriq hujjati bo’lmaydigan Agile uslubi sababli zaruriyat.
Agile vs Waterfall
Waterfall’ning kuchli taraflari – uning o’zgarmas qiymati va yetkaziladigan mahsulotning qanday bo’lishini oldindan ko’rish, tahmin qila olish imkoniyatining berilishida.
Waterfall’ning katta kamchiligi – moslashuvchan emasligi. Shuningdek buyurtmachining mahsulot tayyor bo’lmaguncha uni ko’rolmasligi, baho berolmasligi ham eng katta minus.
Agile uslubi juda ham moslashuvchan va dasturlash jarayoni yakunida u dastlabki rejadagidan ko’ra boshqacharoq, takomillashgan mahsulot yetkazib berishi mumkin.
Waterfall vs Agile. Image credit: https://www.visual-paradigm.com/tw/scrum/scrum-vs-waterfall-vs-agile-vs-lean-vs-kanban/
* * *
P.s. Ushbu maqolani yozishni boshlashdan oldin reja – Agile, Scrum va Kanban haqida axborot berish edi. Ma’lumot qidirish jarayonida avval Waterfall va Agile’ning o’zini tushuntirishni lozim topdim (reja o’zgardi). Keyin esa maqola uzun bo’lib ketayotgani sababli, Scrum va Kanban haqida boshqa maqolada yozadigan bo’ldim (minimum viable product). Rejalarning o’zgarishi ham Agile yondashuviga misol bo’ladi. 😉