Programozástechnológia PTE-TTK 2008. tavasz Kilián Imre H-7683 Gyűrűfű Cseresznyéskert tel: +36-73-554412 (20-6655951 ritkán használható) kilian@gamma.ttk.pte.hu
Követelmények 2008 tavasszal csak vizsga
Tematika Procedurális technikák. A szoftverfejlesztés fázisai. Objektumorientált programkészítés és tervezés alapjai Statikus és dinamikus modell Az UML és metamodellje Modellvezérelt programkészítés Modellek és metamodellek egyesítése. Intelligens információ integráció. Kódgenerálás Összetevőmodell és telepítési modell
Módszerünk (Az őszbe csavarodott csősz becsavarodott) UML tárgyalása UML-lel
Rendszertervezési megközelítések funkcionális a folyamatokat lebontjuk részekre és műveletekre az adatszerkezet a műveletek függvényében alakul ki adatközpontú az adatszerkezetekből indulunk ki a folyamatokat a műveletekig lebontjuk objektum-orientált adat, folyamat és viselkedés egyetlen objektumba sűrítve a tárgymodellt az “objektumok” strukturálják
Egy információs rendszer három nézőpontból Adat Viselkedés Folyamat Mindhárom nézőpont integrálva van egy objektumban.
A szoftverfejlesztési folyamat modelljei Tiszta vízesés modell. Az egyes funkcionális feladatcsomagok a vízesés „buborékai”, v. „örvényei”, a lánc elemei Szigorú fegyelmen alapuló modell, egy modul elkészülte feltétele egy másik elkezdésének Inkább feladatközpontú, mintsem folyamat központú Mérföldkő alapú Belső és külső mérföldkövek állítása, amelyek nem egyenesen, hanem egy spirálon vannak elhelyezve. Egy kör egy fejlesztési ciklus. Elképzelés (koncepció)-művelet (funkcionális) specifikáció-kód kész-kibocsátás belső mérföldkövek Tiszta tulajdon és felelősségi szabályok megállapítása Kockázatelemzés, kockázatvezéreltség Több kör párhuzamosan is futhatváltozatok kezelés Iteratív Egyes spirálkörökön belül további beágyazott mikrospirálok lehetségesek Növekményes (incremental) Fejlődő (evolutionary) Többszálú (multi-threaded)
A szoftverfejlesztési folyamat modelljei A szoftverfejlesztés hagyományos módja: Systems Development Life Cycle (SDLC) (Minőségbiztosítási ciklusok) Visszacsatolások a szoftverfejlesztésben A szoftver használatba vétele Szoftverfejlesztés folyamata Visszacsatolás a megrendelőhöz Változáskezelés és -követés
A szoftverfejlesztés fázisai. I. Követelményelemzés üzleti folyamatelemzés (Business Modelling), amelyeket a szoftvernek támogatnia kell a szoftvert kívülről nézzük, a határait húzzuk meg leírjuk a szoftver és a külvilág kapcsolatát létrehozzuk a szoftver nagyon durva funkcionális felosztását, és összegyűjtjük a vele szembeni követelményeket iterációkhoz szükséges műszaki környezet biztosítása felhasználó interfész I. változata a követelménygyűjtemény alapján elkészítjük a „tesztesetkatalógust”
A szoftverfejlesztés fázisai. II. Elemzés Már az elkészítendő szoftvert tervezzük, de megvalósítási részletek még nem érdekesek. A szoftver és a tárgyterület ideális modelljét keressük. A követelményelemzés alapján létrehozzuk a „fogalmi szótárt” A fogalmi szótár alapján létrehozzuk a tárgymodellt (domain modell) A funkcionális felosztás (modell) alapján létrehozzuk a szoftver működési tervét finomítjuk és kiegészítjük a tesztesetkatalógust
A szoftverfejlesztés fázisai. III. Tervezés Az elkészítendő szoftvert tervezésénél minden fontos technikai részletet figyelembe veszünk. Az elemzési modellből kiindulva meghatározzuk a szoftver-csomagok határait és összekapcsolódási tervét. Külön figyelemmel vagyunk a már meglevő csomagokra Elkészítjük az újonnan kifejlesztendő szoftver csomagok modultervét, és a felületeik (interface) tervét Az összekapcsolódási tervet a hardver elemekkel összehangolva elkészítjük a telepítési tervet finomítjuk és kiegészítjük a tesztesetkatalógust
A szoftverfejlesztés fázisai. IV. Megvalósítás Végső tervezési döntések meghozatala Kódolási szabványok összegyűjtése és dokumentálása (style guide) Csoportmunka környezet létrehozása Forráskódok létrehozása Tesztszkriptek/kódok létrehozása A szoftvert a forrásanyagból újrageneráló szkriptek létrehozása Kezdeti adatállományt létrehozó (adatbázis populáció) szkriptek létrehozása Terjesztő és telepítőszkriptek létrehozása
A szoftverfejlesztés fázisai. V. Tesztelés Funkcióteszt (egységteszt, unit teszt): az egyes eljárások/csomagok hibamentes működését ellenőrzi Integrációs teszt: az egyes szoftverösszetevők helyes működését, ill. a helyes összekapcsolódását ellenőrzi Rendszerteszt: a teljes rendszert a végfelhasználó szemszögéből teszteli Átvételi teszt: rendszerteszt, amelyet a szoftver átvételekor a megrendelő hajt végre Regressziós teszt: integrációs teszt, változtatások után az érintett csomagok automatizált ellenőrzésére.
Modellezési nyelv Általában grafikus jelölésrendszer, amellyel leírjuk a rendszert, rendszertervet A kommunikáció alapja (megrendelő és fejlesztő csoport között, fejlesztő csoport tagjai között) Fontos, hogy a modellezési nyelv alkalmas legyen mind a valóság, mind rendszer belső szerkezetének ábrázolására (üzleti modelltől, telepítési modellig) Mi az UML modellezési nyelvet használjuk Unified Process: Elmélet, a tevékenységek, termékek leírása Rational Unified Process Termék, a Unified Process egyik megvalósítása Hatalmas tudásbázis kézreálló (HTML) formában Kiegészítő munkafolyamatokkal, sablonokkal, eszköz-támogatásokkal
Mi az UML? Unified Modelling Language - Egységes Modellező Nyelv Objektumorientált elemzés, tervezés és üzleti modellezés eszköze Analízis (elemzés) a megoldandó feladat leírása Tervezés a megoldás Az üzleti modellezés a valóság folyamatait írja le Szabványos (Object Management Group - OMG) 1997. november óta Alapvetően grafikus nyelv Modellező nyelv, nem módszertan OMG: iparági támogatás
Az OMG elfogadta az UML-t Az UML története 1997. nov: Az OMG elfogadta az UML-t OOPSLA ‘94 - Rumbaugh - Booch közös munka bejelentése. „A módszertanok háborújának vége, mi nyertünk.” OOPSLA ‘95 - Unified Method 0.8 Valójában a neve ellenére nem módszertan, hanem csak a jelölések első változata Jacobson és az Objectory csatlakozik (használati esetek) 3 amigo: Booch, Jacobson, Rumbaugh ‘96 Unified Modeling Language 0.9 Az ipar észrevételeinek összegyűjtése következik (Microsoft, Oracle, HP, IBM, stb) ‘97. jan. UML 1.0 a szabványosítás kezdete ‘97. szept. UML 1.1 ‘97. nov. OMG szabványként elfogadja
A szoftverfejlesztés részletes modellje UML alapon Szoftverfejlesztés munkafolyamata „workflow” UML+Software Process Engineering Metamodel (SPEM) – hogy mi az pontosan, azt majd később… RUP (Rational Unified Process) az UML használatára vonatkozó módszertan Az előzőeknél részletesebb modell
Munkafolyamat modellezés The basic concepts and relationships to be modelled Incremental evolution with other concepts Inferred relationships: eg. sequence of activities can be inferred from dataflow model. Other business rules/constraints
Munkafolyamat modellezés The basic concepts and relationships to be modelled Incremental evolution with other concepts Inferred relationships: eg. sequence of activities can be inferred from dataflow model. Other business rules/constraints
Munkafolyamat modellezés The basic concepts and relationships to be modelled Incremental evolution with other concepts Inferred relationships: eg. sequence of activities can be inferred from dataflow model. Other business rules/constraints
Munkafolyamat modellezés The basic concepts and relationships to be modelled Incremental evolution with other concepts Inferred relationships: eg. sequence of activities can be inferred from dataflow model. Other business rules/constraints
Munkafolyamat modellezés The basic concepts and relationships to be modelled Incremental evolution with other concepts Inferred relationships: eg. sequence of activities can be inferred from dataflow model. Other business rules/constraints
SPEM (Software Process Engineering Metamodel) elemei
A RUP szerkezete idő tartalom A fejlesztés két dimenzióval írható le: Idő alapján, a dinamika szempontjából a fejlesztés minden ciklusa fázisokra bomlik, minden fázis egy vagy több iterációból áll. Az eljárás elemei, statikus szempontból az elkészítendő dokumentumok illetve kódok alapján oszthatjuk fel munkafolyamatokra, amelyek meghatározzák az egyes termékek előállításához szükséges tevékenységeket. Minden fázis minden iterációjában mindenféle tevékenységet végzünk, csak ezek mennyisége változik a fázisoktól függően. (Az elején sok követelményelemzés és kevés - de van - az implementáció.
Mérnöki munkafolyamatok Támogató munkafolyamatok A RUP munkafolyamatai Üzleti modellezés Követelmény-elemzés Elemzés-tervezés Implementáció Tesztelés Telepítés Konfiguráció és változás-kezelés Projektvezetés Környezet kialakítása Mérnöki munkafolyamatok Támogató munkafolyamatok
Mérnöki munkafolyamatok A fejlesztési munka konkrét feladatai Üzleti modellezés (Business Modeling) Cél megérteni annak a szervezetnek a felépítését, folyamatait, amely támogatására az alkalmazást fejlesztjük Követelmény-elemzés (Requirements) Cél meghatározni azokat a feladatokat, amelyeket a rendszernek meg kell oldani (scope) és a megrendelőkkel együttműködve egy egységes képet kell kialakítani a fejlesztendő rendszerről Elemzés-tervezés (Analysis & design) Cél a követelményelemzés során meghatározott elvárásoknak megfelelő, robosztus rendszer tervezése NÉZZÜK MEG A RUP-BAN! Induljunk ki az előző ábrából, mutassuk meg a browsert és nézzünk bele valamelyik workflow-ba.
Mérnöki munkafolyamatok Implementáció (Implementation) Cél a terv alapján a rendszert alkotó komponensek implementálása, egységtesztjeinek elvégzése és integrálása Tesztelés (Test) Cél annak ellenőrzése, hogy az implementált rendszer megfelel-e az elvárásoknak, és hogy valamennyi követelmény implementálva lett-e Telepítés (Deployment) Cél a kész alkalmazást elérhetővé tenni a felhasználó számára
Támogató munkafolyamatok Azok a feladatok, amelyek a fejlesztés során folyamatosan segítik a fejlesztők munkáját Konfiguráció és változás-kezelés Cél a fejlesztés során előálló termékek verzióinak kezelése Projektvezetés Cél irányelvek megadása és a projekt ellenőrzésével kapcsolatos feladatok elvégzése Környezet kialakítása Cél a szoftverfejlesztési környezet (módszertan, eszközök) kialakításával kapcsolatos feladatok ellátása