Agile ба уламжлалт програм хангамж хөгжүүлэх арга зүй
Өнөөдөр програм хангамжийн салбарт олон төрлийн програм хангамж хөгжүүлэх арга зүйг ашиглаж байна. Хүрхрээ хөгжүүлэх арга нь програм хангамж хөгжүүлэх хамгийн эртний аргуудын нэг юм. V-Model, RUP болон бусад хэд хэдэн шугаман, давталтын болон хосолсон шугаман давталтын аргууд нь хүрхрээ аргын аргын олон асуудлыг арилгах зорилготой байв. Эдгээр бүх өмнөх аргуудыг уламжлалт програм хангамж хөгжүүлэх арга зүй гэж нэрлэдэг. Agile загвар нь уламжлалт загваруудын дутагдлыг арилгах зорилгоор нэвтрүүлсэн сүүлийн үеийн програм хангамж хөгжүүлэх загвар юм. Agile-ийн гол зорилго бол системийг маш жижиг, удирдах боломжтой дэд хэсгүүдэд хувааж, аль болох эрт туршилтыг оруулж, бүтээгдэхүүний ажиллах хувилбарыг маш эрт гаргах явдал юм.
Програм хангамж боловсруулах уламжлалт арга зүй гэж юу вэ?
Хүрхрээ арга, V-Загвар, RUP зэрэг програм хангамжийн арга зүйг уламжлалт програм хангамж хөгжүүлэх арга зүй гэж нэрлэдэг. Waterfall аргачлал нь програм хангамж хөгжүүлэх хамгийн эртний загваруудын нэг юм. Нэрнээс нь харахад энэ нь хүрхрээтэй адил хэд хэдэн үе шатыг (шаардлагад дүн шинжилгээ хийх, боловсруулах, боловсруулах, турших, хэрэгжүүлэх) дээрээс доошоо дамждаг дараалсан үйл явц юм. V-Model нь Waterfall програм хангамж хөгжүүлэх загварын өргөтгөл гэж тооцогддог. V-Загвар нь хүрхрээ загварт тодорхойлсон үе шатуудын хоорондын ижил хамаарлыг ашигладаг. Гэвч V-загвар нь шугаман доошлохын оронд (хүрхрээний загвар шиг) диагональаар доошоо алхаж, дараа нь буцаж дээш хөдөлж (кодлох үе шатны дараа) V үсгийн хэлбэрийг үүсгэдэг. RUP (Rational Unified Process) нь дасан зохицож болохуйц үйл явцын хүрээ (дан ганц тодорхой үйл явц биш) бөгөөд үүнийг хөгжлийн байгууллага өөрсдийн хэрэгцээнд тохируулан өөрчилж болно. Хүрхрээтэй бага зэрэг төстэй бөгөөд энэ нь эхлэл, боловсруулалт, бүтээн байгуулалт, шилжилт зэрэг тогтмол үе шатуудтай. Гэхдээ хүрхрээнээс ялгаатай нь RUP нь давтагдах процесс юм.
Agile гэж юу вэ?
Agile бол agile тунхаг дээр үндэслэсэн маш сүүлийн үеийн програм хангамж хөгжүүлэх арга зүй (эсвэл зөвөөр хэлбэл бүлэг арга зүй) юм. Энэ нь уламжлалт програм хангамж боловсруулах арга зүй дэх зарим дутагдлыг арилгах зорилгоор боловсруулсан. Agile аргууд нь хөгжлийн мөчлөгийн эхэн үед хэрэглэгчийн оролцоонд өндөр ач холбогдол өгөхөд суурилдаг. Энэ нь үйлчлүүлэгчийн туршилтыг эрт, аль болох олон удаа хийхийг зөвлөж байна. Тогтвортой хувилбар гарах үед туршилтыг цэг бүрт хийдэг. Agile-ийн үндэс нь төслийн эхнээс туршилтыг эхлүүлж, төслийн төгсгөл хүртэл үргэлжлэхэд суурилдаг. Scrum болон Extreme програмчлал нь Agile аргын хамгийн алдартай хоёр хувилбар юм.
Agile-ийн гол үнэ цэнэ бол "чанар бол багийн хариуцлага" бөгөөд энэ нь програм хангамжийн чанар нь бүх багийн (зөвхөн туршилтын баг биш) үүрэг гэдгийг онцолдог. Agile-ийн өөр нэг чухал тал бол програм хангамжийг удирдах боломжтой жижиг хэсгүүдэд хувааж, хэрэглэгчдэд маш хурдан хүргэх явдал юм. Ажиллаж буй бүтээгдэхүүнийг хүргэх нь хамгийн чухал зүйл юм. Дараа нь баг нь програм хангамжаа үргэлжлүүлэн сайжруулж, томоохон алхам бүрт тасралтгүй хүргэсээр байна. Үүнийг маш богино суллах циклүүд (Scrum-д спринт гэж нэрлэдэг) байх ба мөчлөг бүрийн төгсгөлд сайжруулах санал хүсэлтийг авах замаар хүрдэг. Өмнөх аргуудын хөгжүүлэгчид, тестерүүд гэх мэт багтай нэг их холбоогүй байсан хувь нэмэр оруулагчид одоо Agile загварт хамтран ажиллах болсон.
Agile болон уламжлалт програм хангамж хөгжүүлэх арга зүй хоёрын ялгаа нь юу вэ?
Хэдийгээр Agile арга нь хэд хэдэн уламжлалт арга барилын хувьд давталттай хөгжүүлэлт дээр суурилдаг ч Agile болон Уламжлалт арга зүй нь үндсэн ялгаатай байдаг. Уламжлалт аргууд нь төлөвлөлтийг хяналтын механизм болгон ашигладаг бол Agile загварууд нь хэрэглэгчийн санал хүсэлтийг хяналтын үндсэн механизм болгон ашигладаг. Agile-ийг уламжлалт аргаас илүү хүн төвтэй арга гэж нэрлэж болно. Agile загвар нь уламжлалт аргачлалтай харьцуулахад бүтээгдэхүүний ажлын хувилбарыг маш эрт хүргэдэг бөгөөд ингэснээр үйлчлүүлэгч зарим ашиг тусыг эртнээс мэдрэх боломжтой болно. Agile-ийн туршилтын мөчлөгийн хугацаа нь уламжлалт аргуудтай харьцуулахад харьцангуй богино байдаг, учир нь туршилтыг хөгжүүлэлттэй зэрэгцүүлэн хийдэг. Ихэнх уламжлалт загварууд нь маш хатуу бөгөөд Agile загвараас харьцангуй бага уян хатан байдаг. Эдгээр бүх давуу талуудын улмаас Agile-г одоогийн байдлаар уламжлалт арга зүйгээс илүүд үздэг.