A vízesés metodológia megközelítést a 60-as években dolgozták ki az USA haditengerészeténél. Alapvető célja az volt, hogy lehetővé tegye a komplex, katonai szoftverek biztonságos, ellenőrzött kifejlesztését. A vízesés modellben minden fázis végén a projekt csapat felülvizsgálja az adott fázist, majd lezárja azt. A fejlesztés nem folyik tovább, amíg a megrendelő nem elégedett az eredménnyel.
Ha változtatás volt szükséges, amely során az előző állapotra kellett visszalépni, akkor ez költség és időigényes lépés volt. A vízesés metódus formális és dokumentum vezérelt. A projekt során nagyszámú dokumentum előállítása biztosítja a tervezett szoftver működőképességét, robosztusságát, megbízhatóságát. Egy másik sajátossága modellnek a tervezés hangsúlyossága, gondos kivitelezése. Az előre megtervezett rendszer minimalizálja a tervezési időigényt a későbbi fázisokban.
Sok olyan le nem szállított vagy leszállított, de sohasem használt szoftverről tudunk, amelyek esetén a fő gond a specifikáció, követelmények menet közbeni változása volt. Ez az eltérés lehet egészen kis mértékű pl. 1%, de ha olyan részét változtatja a rendszernek, amely 1-1 fázis teljes újrakezdését vonja maga után, mert logikailag kell áttervezni, akkor a költségek és a határidők jelentősen megnőhetnek.
A vízesés modell fázisai:
- Követelmények elemzése és meghatározása (specifikáció)
- Rendszer- és szoftvertervezés
- Megvalósítás és egységteszt
- Teljes rendszertesztelés
- Üzemeltetés, működtetés és karbantartás
A vízesés modell fázisait felhasználjuk az egységi fejlesztési cikluson belül és a dokumentációkat is előállítjuk a későbbi továbbfejlesztés, üzemeltetés biztosítása érdekében.
Prototípus készítés
Számunkra kiemelkedően fontos, hogy ergonómikus, könnyen használható és a kézikönyv végigolvasása nélkül is kezelhető szoftvereket tervezzünk. Több esetben is azt tapasztaltuk, hogy a követelmények összesége és egymásra hatása rejtve marad a megvalósítási fázisig, amikor már több időt vesz igénybe a változtatás.
Ennek elkerülése érdekében minden lényeges képernyőt előre megrajzolunk úgy, ahogy annak a megvalósítás során el kell készülnie. A rajzolás során figyelembe vesszük az összes követelményt és a technikai korlátokat. Az elkészült képernyőterveket megvitatjuk a projekt megrendelőjével és elvégezzük a szükséges változtatásokat. A megrendelő által jóváhagyott képernyőtervek és működési leírásuk a specifikáció részét képezik. A folyamat eredményeként egy sokkal alaposabban meghatározott és mindkét fél által egyformán értett és elfogadott terv születik.
A prototípus képernyőtervek megrajzolásával a megrendelői elégedettség a projekt végeredményével és a szoftver működésével kapcsolatosan jelentősen megnövekedett.
Lépcsőzetes átadás (Staged Delivery)
Az egy folyamatban, zéró kommunikációval elkészített szoftverfejlesztések korszaka lejárt. A lépcsőzetes átadás (Staged Delivery) szoftverfejlesztési módszertan a vízesés modellre alapul, de a kívánt szoftverterméket nem egyszerre, hanem előre meghatározott lépcsőkben szállítja. A követelményelemzés során meghatározásra kerülnek az egyes funkciók, igények prioritásai. Majd ennek megfelelően a szoftver átadásának lépcsőfokai. A legnagyobb prioritással bíró, ún. "kritikus" funkciók kerülnek bele az első körbe.
A lépcsőzetes átadás előnyei:
- A legfontosabb funkciók korábban elérhetők, tesztelhetők
- Kockázatok korábban csökkenthetők
- A problémák korábban napvilágra kerülnek
- A státusz jelentésekkel járó adminisztráció csökken
- Fejlesztési idő becslése pontosabb
- Nagyobb rugalmasság
A lépcsőzetes átadásnak köszönhetően megrendelőink gyorsabban jutnak eredményhez és vehetik használatba a számukra legfontosabb modulokat, programrészeket.
eXtrém Programozás
Az utóbbi 10 évben számos agilis módszertan jelent meg a piacon, amelyek egyik alaptulajdonsága, hogy a változást, mint az élet részét, elfogadják. Ezért igyekeznek a projekt során a változásokat a projekt részeként kezelni és végig alacsonyan tartani a változtatási költségeket.
Az agilis módszertanok egyik legnevesebb képviselője az extrém programozás. Kent Beck, az akkoriban már neves Smalltalk konzulens 1996-ban került egy haldokló bérszámfejtő projekt élére a Chrysler-nél. A projektet az alapoktól kezdték újra, és a kivitelezéshez Beck saját módszertani elképzeléseit alkalmazták. Ez volt az első Extreme Programming (későbbiekben csak XP) projekt, ami sikeresen működött is Beck irányítása alatt.
Az agilis módszertanok sok olyan alapelvet, legjobb gyakorlatot bevezettek, amelyek képesek alapjaiban megragadni a változások kezelését és a magas szintű minőség biztosítása mellett a projekt rugalmasságát is a lehető legmagasabb szintre emelni. Az alábbi legjobb szoftverfejlesztési gyakorlatok segítenek ebben:
-
A tervezési játék: gyors, magas szintű terv meghatározása a következő fejlesztési ciklushoz, amelyik a legmagasabb üzleti értékek kifejlesztését célozza.
-
Rövid fejlesztési ciklusok: a rövid fejlesztési ciklus lehetővé teszi a gyors visszacsatolást a Megrendelő részéről. Mindig a legfontosabb üzleti értéket adó részét fejlesztjük a programnak.
-
Metafóra: közös nyelv és szimbólumrendszer kialakítása a Megrendelővel.
-
Teszt-vezérelt fejlesztés: a leglényegesebb eleme a fejlesztésnek. Először a tesztet írjuk meg és futtatjuk. A kódrész akkor kész, ha az automatizált teszt hiba nélkül lefut.
-
Refaktorálás: a kód hatékonyságának javítása a nélkül, hogy a működésben változást okozna.
-
Folyamatos kódellenőrzés: az extrém változata a páros programozás. A folyamatos kódellenőrzés lényege, hogy a csapaton belül egy másik programozó vizsgálja felül az általam elkészített kódrészletet.
-
Kollektív kód tulajdonlás: bármelyik programozó a kód bármely részét megváltoztathatja, azaz teljes értékben tudjuk a kieső embereket helyettesíteni, mivel mindenki ismeri a kód nagy részét és az elveket, amelyekre épül.
-
Folyamatos integráció: a rendszer komponensei minden nap összeépítésre és automatikus tesztelésre kerülnek.
-
Intenzív kommunikáció a Megrendelővel: a projekt során a Megrendelő embereit a csapat tagjának tekintjük és intezív kommunikációt folytatunk velük.
-
Kódolási konvenciók: egy olyan szabálygyűjtemény, amelyet minden programozóa csapaton belül elfogad és követ a fejlesztés során, így lesz egységes a kód.
Az eXtrém Programozás legtöbb "legjobb gyakorlatát" alkalmazzuk folyamatosan a fejlesztési ciklusaink során jelentősen növelve a kód minőségét és szoftver rugalmasságát.
Módszertanok összehasonlítása
Az alábbi ábrán láthatjuk az egyes módszertanok egymáshoz viszonyított elhelyezkedését a minőség és változtathatóság szempontjából:
A fenti ábrán látható fejlesztési módszertanok között nincs kibékíthetetlen ellentét (kivéve Kódolás/Javítás). Kisebb és kevesebb dokumentációt megkövetelő projektek esetén az eXtrém Programozás a leghatékonyabb módszer, de minden módszertannak megvan az előnyös oldala.
Szoftverfejlesztési gyakorlatunk magába foglalja a Lépcsőzetes átadás, Vízesés, Prototípus készítés és az eXtrém Programozás legjobb tulajdonságait és ezek kombinációjaként rugalmas, gyors, minőségi és dokumentált szoftverfejlesztést tudunk nyújtani minden partnerünk számára.