A siker háromszöge
Az előadás videója elérhető itt.
Ahhoz hogy a szoftverfejlesztési ciklus sikeres legyen az alábbi három dolog nélkülözhetetlen:
- Folyamat. A folyamat irányítja a szoftverfejlesztési ciklust, definiálja annak lépéseit és a lépések sorrendjét.
- Jelölésrendszer. Szabványos jelölésrendszer, amely leírja hogyan kell hogy kinézzen a tervezési dokumentáció.
- Eszköz. Szoftver, amellyel mindez elvégezhető.
Az ábra azt sugallja, hogy ha a három elem közül valamelyik is hiányzik, akkor a hatékony szoftverfejlesztés nem lehetséges: folyamat nélkül kaotikus a projekt, szabványos jelölésrendszer nélkül nincs jó kommunikáció, eszközre viszont mindig szükség van, ha más nem, legyen az papír és ceruza. A következő részben a folyamattal foglalkozunk, utána pedig a jelölésrendszer következik, végezetül pár szóban ismertetjük a lehetséges eszközök listáját.
Folyamat¶
A siker háromszögének első és legfontosabb eleme a folyamat, hiszen az irányítja az egész szoftverfejlesztési életciklust. Leírja a végrehajtandó lépéseket és a végrehajtás sorrendjét. Valójában az ésszerű szoftverfejlesztés módját írja le, amelyet sok gyakorlattal mi is elsajátíthatunk, de ebben segít a formális leírás. Két legfontosabb jellemzője, miszerint az előírt fejlesztési életciklus:
- Iteratív. Ez azt jelenti, hogy a szoftverfejlesztés kisebb mértékű "alprojektekre" van bontva, és ezek ismétlődően, iteratívan követik egymást.
- Inkrementális. Az inkrementalitás azt jelenti, hogy minden iteráció után a szoftver egyre "jobb", tehát a fejlesztés fokozatos.
A lényeg az, hogy az egyes iterációkra jobban lehet összpontosítani és jól definiált feladatokat kell elvégezni. Egyik alapvető irányelv az, hogy minden pillanatban jól tudjuk, hogy mi a célunk és merre halad a projektünk, tehát azt próbáljuk elkerülni, hogy a szoftver fejlesztése közben a végcél is változzon (ez megfelelő folyamat hiányában elkerülhetetlen és nagyon nem hatékony fejlesztéshez vezet).
Ha egy iteráció során valami probléma merül fel, akkor könnyebb a problémát kezelni, mert csak azon az alprojekten belül kell vizsgálódni. Minden iterációnak az a célja, hogy a részfeladat megoldásával közelebb kerüljünk a szoftver specifikált működéséhez. Minden iterációban az alábbi fő tevékenységeket kell elvégezni:
- követelmények gyűjtése az adott iteráció végével kapcsolatban
- analízis: a feladatok pontos kitűzése
- tervezés: a megoldás megtervezése
- implementáció: a terv megvalósítása (pl. kódolás)
- tesztelés: az adott iteráció követelményei megoldottak-e?
A legismertebb példák folyamatok lépéseinek definiálására:
- vízesés modell
- Scrum
- eXtreme Programming (XP)
- Rational Unified Process (RUP)
Jelölésrendszer¶
A jelölésrendszer szintaktikai és szemantikai szabályok összessége (más szóval egy nyelv), amely a fejlesztési ciklus során alkalmazható a terv elkészítéséhez vizuális eszközök segítségével. Mi az UML (Unified Modeling Language) jelölésrendszert fogjuk használni ahhoz, hogy modelljeinket leírjuk.
Modellezéskor a rendszer architektúráját különböző nézetekkel írjuk le. Ezek lehetnek logikai, komponens (implementációs), folyamat, telepítési (feladat-kiosztási) nézetek, vagy akár a használati eset nézet (esettanulmány).
Fontos, hogy nem minden esetben szükséges minden nézet, de az is elképzelhető, hogy adott rendszerhez más nézeteket is szükséges definiálni (pl. adat és biztonság).
Az architektúra 4+1 nézete¶
- Logikai nézet. A rendszer logikai szerkezeti felépítésének ábrázolására használatos. Szerkezeti és viselkedési modellezéskor tipikusan használt nézet, amely a végfelhasználó szemszögéből vizsgálja a rendszert. Jellemző diagramfajtája az osztálydiagram és a kölcsönhatás diagramok.
- Komponens (implementációs) nézet. Implementáció-közeli szerkezetet ábrázol, így ez leginkább a programozókat segíti. Ide kapcsolódó diagramfajta a komponens diagram.
- Folyamat nézet. A folyamat egyéb jellemzőinek fenntartott nézet, különböző nem-funkcionális szempontok szerint ábrázolja az architektúrát, mint amilyen a rendszer teljesítménye, skálázhatósága, hibatűrése. Ez a nézet azoknak a rendszer integrátoroknak érdekes, akik a programnak a futás közbeni viselkedéseit kell esetleg javítani.
- Telepítési (feladatkiosztási) nézet. Magasabb szintű fizikai nézet, a rendszer magas szintű szerkezetére vonatkozóan tartalmaz információkat, hogyan viszonyul a rendszer szoftvere és a használt eszközök, hardverek egymáshoz. Megadja, azon technikai függőségeket, amit a szoftver futtatása igényel. Fő diagramja a telepítési diagram használatos.
- Használati eset nézet (esettanulmány). Az egészet összefogja és közös kommunikációs platformot létesít a résztvevő felek között. Használati eset- és kölcsönhatás diagramok alkalmasak.
Eszköz¶
Számos szoftver eszköz van, amely támogatja a UML nyelvet. Nyilván legegyszerűbb eszköz a papír és a ceruza. Azonban vannak speciálisan vizuális modellezésre alkalmas eszközök is, vagy olyanok, amelyekben kiegészítő szolgáltatásként jelenik meg az UML támogatás (pl. általános rajzolóprogram UML elemekkel).
A Rational cég Rose nevű eszköze az egyik legrégebbi és legelterjedtebb, iparban is széles körben alkalmazott eszköz, amely UML támogatásával a teljes szoftverfejlesztési folyamat támogatható. De hasonlóan ismertek a Microsoft Visio, vagy a Borland Together ControlCenter eszközök is. Illetve a jelenlegi népszerűségi listák élén ott van az EdrawMax nevű eszköz, amellyel az elkészített diagramok rögtön meg is oszthatóak, vagy a StarUML, ami open source megvalósítással teszi lehetővé 7 fajta UML diagram szerkesztését.