WALKER

Dasturchi, frilanser, gik va introvert

by Sherzod Shermukhamedov

Dasturlaş jarayonida yondaşuvlar. Agile vs Waterfall

agile-vs-waterfall

Dasturlaş jarayonida loyihani boşqarişning turliça yondaşuvlari mavjud bölib, ularning ba'zilari eski metodlarning yangiça körinişi bölsa, boşqalari yangiça uslub sifatida kirib keldi. Bugungi kunda sohada köproq ikki yondaşuv - Agile (Scrum, Kanban, Lean, va hk.) va an'anaviy Waterfall modellaridan foydalaniladi.

Ularning qaysi biri samarali, qaysi biri loyiha uçun mos kelişini topişdan oldin, ular örtasidagi farqlarni körib çiqamiz.

Waterfall

Waterfall - dasturni işlab çiqişi jarayoniga çiziqli yondaşuv hisoblanadi. Jarayonlarning har biri aniq bosqiçlarga (phase) ega bölib, har bir bosqiç keyingisi boşlanişidan oldin yakunlanişi kerak. Waterfall'da katta loyiha barça bosqiçlar yakunlangaç, işga tuşadi (live).

Waterfall yondaşuvi. Image credit: https://www.visual-paradigm.com/tw/scrum/scrum-vs-waterfall-vs-agile-vs-lean-vs-kanban/ Waterfall yondaşuvi. Image credit: https://www.visual-paradigm.com/tw/scrum/scrum-vs-waterfall-vs-agile-vs-lean-vs-kanban/

Waterfall'ni tasavvur qiliş uçun maşinasozlikni, bir jarayon tugallanmay turib, boşqa jarayon boşlanmaydigan avtomobil yiğişni misol qiliş mumkin.

Waterfall bosqiçlari quyidagi tartibda böladi:

  • Tizim va dastur talablari: texnik topşiriq tuziladi
  • Dizayn: dastur arxitekturasi işlab çiqiladi
  • Koding: Kod yoziladi
  • Test: loyiha test qilinadi, kamçiliklari bartaraf etiladi
  • Örnatiş (installation yoki migration), qöllab-quvvatlaş (support), va xizmat körsatiş (maintenance)

Qaçon Waterfall'dan foydalangan afzal:

  • Loyihaning işlab çiqiş jarayoni aniq strukturaga ega bölsa
  • Dasturlaş jarayonida yangi özgarişlar (features) kelib turmasa
  • Texnik topşiriq berilib, unda barça talablar oldindan körsatib ötilgan bölsa.

Agile

Waterfall'dan farqli ravişda, Agile butun loyihani rejalaştiriş, uni topşiriş sanasini belgilaş kabi yondaşuvdan voz keçadi. Agile özgarişlarga tez reaksiya berişni nazarda tutadi, özgarişlar buyurtmaçining talablarini qondiriş sifatida baholanadi.

Agile tört ğoyada mujassam:

  • odamlar va özaro fikr almaşiş jarayonlardan köra muhimroq
  • işlayotgan mahsulot eskirgan dokumentatsiyadan köra afzalroq
  • buyurtmaçi bilan hamkorlik şartnoma şartlaridan köra muhimroq
  • özgarişlarga tayyorlik dastlabki rejaga amal qilişdan köra muhimroq.

Agile - bir guruh konseptlarni öz içiga olib, dasturlaşni aniq bir muddat davom etadigan kiçik iteratsiyalarga bölib yuboradi. Har bir iteratsiya uçun ma'lum bir vazifa qöyiladi va unda rejalaştiriş, dizayn, koding, hamda testing jarayonlari mujassam böladi.

Iteratsiyaning ohirida dastur reliz böliş-bölmasligidan qat'iy nazar, Agile belgilangan muddat içida özgarişlar kiritiş imkoni bölişini közda tutadi. Ya'ni iteratsiya içida dasturga talablar özgarişi, yangi özgarişlar (features) bölişi mumkin, va bu Agile uçun normal holat.

Kiçik iteratsiyalarga bölib yuboriş dasturlaş jamoasiga buyurtmaçi fikrini tezroq biliş, prioritetlarni örnatiş, bozordagi talabdan kelib çiqib hatto dasturning asosiy funksiyalarini özgartiriş kabi afzalliklarni taqdim etadi.

Dasturni tugatiş uçun dasturlaş jamoasi va buyurtmaçi örtasida doimiy aloqa bölişi kerak. Boşqaçasiga aytganda, buyurtmaçi jamoaning a'zosiga aylanadi. Bu köpinça texnik topşiriq hujjati bölmaydigan Agile uslubi sababli zaruriyat.

Agile vs Waterfall

Waterfall'ning kuçli taraflari - uning özgarmas qiymati va yetkaziladigan mahsulotning qanday bölişini oldindan köriş, tahmin qila oliş imkoniyatining berilişida.

Waterfall'ning katta kamçiligi - moslaşuvçan emasligi. Şuningdek buyurtmaçining mahsulot tayyor bölmagunça uni körolmasligi, baho berolmasligi ham eng katta minus.

Agile uslubi juda ham moslaşuvçan va dasturlaş jarayoni yakunida u dastlabki rejadagidan köra boşqaçaroq, takomillaşgan mahsulot yetkazib berişi mumkin.

*Waterfall vs Agile. Image credit: *https://www.visual-paradigm.com/tw/scrum/scrum-vs-waterfall-vs-agile-vs-lean-vs-kanban/


P.s. Uşbu maqolani yozişni boşlaşdan oldin reja - Agile, Scrum va Kanban haqida axborot beriş edi. Ma'lumot qidiriş jarayonida avval Waterfall va Agile'ning özini tuşuntirişni lozim topdim (reja özgardi). Keyin esa maqola uzun bölib ketayotgani sababli, Scrum va Kanban haqida boşqa maqolada yozadigan böldim (minimum viable product). Rejalarning özgarişi ham Agile yondaşuviga misol böladi. ;)