Miért célszerű az agilis szoftverfejlesztést választani?

2019/ 17/09
A hagyományos szoftverfejlesztési filozófiával szemben az agilis értékek és elvek üzleti környezetben történő értelmezése folyamatos fejlesztést tesz lehetővé. Hogyan lehet segítségünkre egy, a szakaszos fejlesztési ciklusokon alapuló szoftverfejlesztési projekt? Jelenlegi cikkünkben erre keressük a választ.

A technológiai világ folyamatosan változó körülményeihez való alkalmazkodás nagyfokú rugalmasságot igényel. A megrendelői elégedettséghez vezető folyamatos inkrementum-szállítás biztosítása érdekében a szervezetek egyre inkább törekednek az agilis értékeken alapuló módszerek megfelelő alkalmazására. Mindez lehetővé teszi az alkalmazkodó tervezést, a folytonos továbbfejlesztés megvalósítását, a változásokra irányuló rugalmasságot és a korai “szállítást”, valamint nagyobb hatékonyság eléréséhez is vezet. 
A következőkben az agilis szoftverfejlesztés jelentőségére és előnyeire szeretnénk rávilágítani, valamint, a filozófia gyakorlati alkalmazásának válfajaira és a sikeres megvalósítás feltételeire is kitérünk.

Az agilis szoftverfejlesztés alapjai

Mielőtt elmélyedünk az agilis szoftverfejlesztés előnyeinek boncolgatásában, fontos szót ejteni a szemléletmód elemi vonatkozásairól is. Az agilis szoftverfejlesztés túlmutat a szűk értelemben vett agilis módszertan alkalmazásán, hiszen a fejlesztés folyamata az agilis irányelveken alapuló döntések összessége. A gyakorlatban tehát az agilis szoftverfejlesztés egy döntéshozatali folyamat, ahol a fejlesztés szakaszaira vonatkozó döntések az agilis értékeket és irányelveket tükrözik az adott agilis projektvitelre formálódó csoport értelmezésében. Az agilis elvek világos, mindemellett rugalmas iránymutatást adnak a fejlesztői csoport döntéshozatali tevékenységéhez, ezáltal is növelve a csapat hatékonyságát.
Az alapvető értékek és irányelvek összefoglalója az Agilis Kiáltvány, amely szerint egyes értékek kihangsúlyozása és előnyben részesítése, valamint az irányelvek mentén zajló döntéshozó folyamat hozzájárul az eredményesebb szoftverfejlesztéshez. A nyilatkozat alapelvei közé tartozik a felhasználói részvétel fontosságának, az átláthatóság és az iteratív tervezésre való képesség jelentőségének hangsúlyozása. Éppen ezért az agilis szemléletmódon alapuló szoftverfejlesztés hozzásegít a projekt során bekövetkező változó körülményekhez való könnyebb alkalmazkodáshoz, így támogatva az ún. inkrementumok folyamatos és korai szolgáltatását. A különálló fejlesztési ciklusokban létrehozott, önmagában is működőképes szoftver könnyebben egyeztethető a felhasználói igényekkel, ami csökkenti a projekt kockázatát is.

Az agilis szoftverfejlesztés legfontosabb előnyei

Az agilis értékeken és elveken alapuló döntéshozatal lehetőséget kínál a szoftverfejlesztés eredményességének javítására. A következőkben röviden tárgyaljuk a főbb előnyöket.

Hatékonyság

A közös értékekkel és alapelvekkel összhangban folyó munka és a döntéshozatal közös felelősségtudatot és a célok iránti kollektív elköteleződést teremt. Az együttműködő közeget egyértelműen meghatározott szerep- és feladatkörök jellemzik, mindez az adott csapat fejlődő hatékonyságában mutatkozik meg. Mindemellett a világos célkitűzések gyorsabb, célzottabb és jobb eredményeket elérő munkához vezetnek.

Magas minőség

Egy agilis projekt iteratív jellege lehetőséget nyújt a folyamatos tesztelésre és fejlesztésre a projektmegvalósítás egésze alatt. A szoftverfejlesztési célok megvalósulásának szakaszos ellenőrzésével könnyebben optimalizálható a folyamat, a szükséges változtatások végrehajtása zökkenőmentesebb, valamint tudatosabbá és megbízhatóvá válik a fennmaradó munkafolyamatok és erőforrás befektetés tervezése is. Ezenkívül a folyamatos ellenőrzés során azonosított hibaforrások könnyebben lokalizálhatók, a hibák hatékonyabban szüntethetők meg.

A végső, lehető legmagasabb színvonalú szoftvertermék átadásának jegyében a projektfolyamatot gördülékeny információáramlás, rendszeres tesztelés és a teszteredmények szekvenciális integrációja, valamint automatizált tesztelő eszközök és növekményes ciklusok menti szoftverfejlesztés alkalmazása jellemzi.

Tervezhetőség

A szoftverfejlesztés kisebb ciklusokra történő felosztása kulcsfontosságú a potenciális költségek és a ROI közötti interferencia korai azonosításában. Éppen ezért az ún. sprintek szerint végzett fejlesztés a sikertelen projekt kísérletek ellenszere lehet. Ezenkívül a fejlesztési folyamat fázisainak folytonos tervezése illetve újratervezése támogatja a projekt lehetséges költségeinek előrejelzését, amely a további fejlesztési tevékenységek megtervezéséről szóló döntések alapjául szolgálhat.

Alkalmazkodóképesség

Az agilis szemléletmód a fejlesztési folyamat részeként támogatja a folyamatos tanulást. Ebből következően az agilis irányelveket követve a fejlesztés során bekövetkező változások könnyebben adaptálhatók a részletes projekttervek alapján működő vízesés projektmenedzsment modell alkalmazásához képest. A projektmenet rövidebb időintervallumot felölelő sprintekre való tagolásának segítségével nagyobb rugalmasságot érhetünk el a változáskövetés tekintetében, illetve hamarabb tehetünk szert látható és életképes fejlesztési eredményre. A sprintek következtében a visszacsatolási ciklus is felgyorsul, így a projekteredményben érdekeltek igényeinek változásához való alkalmazkodás is megvalósítható.

Korai eredmények

Az agilis szoftverfejlesztés egyik legfontosabb előnye, hogy minden egyes projektciklus végén működőképes szoftver formálódik. A kézzelfogható és világos cél elérése egyrészt ösztönző erőként szolgál a projektcsapat szempontját tekintve, másrészt pedig a korai eredmény biztosíték a projektben érdekeltek számára a végterméket illetően, valamint a rendszeres visszajelzés lehetősége miatt a szoftver továbbfejlesztése is kézenfekvő. Mindemellett a korai eredmények a piaci lépéselőny megszerzését is támogathatják.

Agilis szoftverfejlesztési módszerek

Az agilis szemléletmód értékeinek és alapelveinek értelmezése, vállalati filozófiává formálása, és a későbbiek során gyakorlati alkalmazása egyedülálló folyamat, szervezetenként és projektenként eltérő. Az agilis megközelítések alkalmazása nem csak egy adott szoftverfejlesztő csapat kultúrájától függ, hanem a projekt jellegétől és a kívánt eredménytől is. Éppen ezért igaz az is, hogy egy szoftverfejlesztő folyamat során több módszer együttes alkalmazása a jellemző, valamint a projektek iteratív jellegét figyelembe véve a módszerek a projekt előrehaladtával változhatnak az egyedi üzleti megoldásoknak megfelelően.

A következőkben a legnépszerűbb agilis szoftverfejlesztési módszerekről ejtünk szót.

Scrum

Az egyik legszélesebb körben alkalmazott módszer, a scrum az agilis gondolkodásmód rövid fejlődési ciklusait, az úgynevezett sprinteket hangsúlyozza. A keresztfunkcionálisan működő fejlesztői csapat feladata az egyes iterációk végén elkészülő kezdetleges vagy rész szoftverek a programozást és tesztelést követő bemutatása. A “napi scrum”-ként számontartott rendszeres találkozók során a projektcsapat megvitatja a jelenleg futó tevékenységeket, a projekt előremenetelét, illetve javaslatokat vethetnek fel az esetleges módosításokra, prioritások átszervezésére.

Extrém programozás (XP)

A projekteredményben érdekeltek elvárásainak változása a szoftverfejlesztés bármely szakaszában előfordulhat. Az érdekeltek elégedettségének biztosítása miatt a fejlesztés szakaszait célszerű úgy megtervezni, hogy a projektmenet képes legyen a változásokhoz való alkalmazkodáshoz. A Kent Beck amerikai szoftvermérnök által megalkotott extrém programozás módszertana az együttes kódírásra és tesztelésre fekteti a hangsúlyt. A változó körülményekhez alkalmazkodó fejlesztési módszertan lehetővé teszi a jó minőségű szoftverek létrehozását módosuló igények esetében is, valamint a tesztvezérelt fejlesztés és a gyakori kód felülvizsgálat segítségével a teszteredmények fejlesztési céllal folyamatosan integrálhatók a projekt során.

Kanban

A Kanban módszertana a Kanban tábla használatán alapszik, amely szemlélteti a fejlesztési folyamat fázisait. Az említett táblázat a szoftverfejlesztés összes ciklusát átfogóan jelöli, úgy mint az elvégzésre váró és folyamatban lévő munkákat, illetve a felülvizsgálatra vagy tesztelésre váró és blokkolási eljárás alatt álló fázisokat. A Kanban célja, hogy minimalizálja a befejezetlen munkát, így segíti a just-in-time feladatmegoldásra való összpontosítást és a fejlesztési folyamat önszerveződését. Ez a módszertan magas szintű kommunikációt és egyértelmű információközlést igényel a folyamatok hatékony kezelése, valamint a kétértelmű tájékoztatásból eredő felesleges intézkedések és erőfeszítések elkerülése érdekében. A Kanban eszköztárát célszerű egyéb agilis módszerekkel együtt alkalmazni.

Milyen esetben alkalmazzunk agilis szoftverfejlesztést?

Ahogy a korábbiakban is említettük, az agilis megközelítés szerinti működés a döntéshozatali folyamatok agilis értékekkel és alapelvekkel való összehangolásáról szól, éppen ezért az agilis irányítás kulturális változásokkal is jár. Másképp fogalmazva, egy agilis projektcsoport felállítása és tevékenységének a szervezet működésébe való integrálása erőfeszítést és egyfajta hozzáállást igényel meg a csoport tagjaitól. Éppen ezért agilis projektmenedzsmenttel abban az esetben érhetőek el meghatározó eredmények, ha a vállalat struktúrája támogatja a keresztfunkcionális csoportok szerveződését és együttműködését. Fontos az is, hogy a nyílt kommunikációt akadályozó tényezőket kezelni tudjuk. Az agilis megközelítés a folyamatos, rendszeres és nyílt kommunikációra épül, a formális kapcsolatteremtés viszont az agilis fejlesztési folyamatot hátráltathatja, ezért a megfelelő hatékonyság elérése érdekében célszerű minimalizálni azt. Ez különös jelentőséget nyer rövidebb időtartamú sprintek esetében, amikor a visszacsatolási ciklus gyorsasága és folyamatossága elengedhetetlen a szoftverfejlesztés megrendelői igények szerinti megvalósítása érdekében. Összegezve az említetteket, az agilis projektmenedzsment megfelelő alkalmazásához vállalati szintű változások szükségesek mindazok számára, akik korábban nem vettek részt ilyen projektekben. Ezen változások gördülékeny elérése érdekében érdemes az agilis szemléletmódot eleinte kisebb projektekben alkalmazni, majd azokat a későbbiek folyamán kibővíteni.

Forrás: Forbes, Tech Beacon, Nisos Technologies, Project managerAgile Manifesto