Tervezés A szoftver életciklus
Eötvös Loránd Tudományegyetem Informatikai Kar
• Minden szoftver rendelkezik életciklussal, amely meghatározza létét a feladat kitűzésétől a program használatának befejeztéig • Az életciklus a következő fázisokra tagolható: 1. projektdefiníció (project definition) 2. elemzés (analysis) 3. tervezés (software architecture) 4. implementáció (implementation) 5. tesztelés (testing) 6. kihelyezés (deployment, release) 7. tréning és támogatás (training and support) 8. karbantartás (maintenance)
Szoftvertechnológia 8. gyakorlat Tervezés
© 2013.11.04. Giachetta Roberto
[email protected] http://people.inf.elte.hu/groberto
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
A tervezési folyamat
A tervezési folyamat
• A tervezés a készülő szoftver absztrakt megvalósítása, azaz:
• A program szerkezetének meghatározása:
• a rendszer szerkezetének meghatározása, a programegységek, részegységek feltérképezése
1. a feladat elemezése, igények és követelmények feltérképezése, felhasználói esetek megállapítása
• a programrészek pontos ábrázolása, funkcióinak meghatározása, ezek közötti reláció, kommunikáció megvalósítása (adatmodellek, áramlások feltérképezése)
2. tárgykörök azonosítása, objektumok, majd osztályok hozzárendelése
• a feladatmegoldás folyamatának meghatározása, a benne részt vevő programegységekkel, azok állapotváltozásaival, illetve a kiváltó események meghatározása • A tervezés során főként az UML csomag, osztály, állapot és szekvencia diagramokat használjuk fel ELTE IK, Szoftvertechnológia
8:2
3. interfészek, kapcsolódási pontok, adatkezelés megtervezése 4. a belső reprezentáció, működési elvek (algoritmusok) feltérképezése 5. végrehajtási folyamat, állapotváltozások meghatározása 6. implementáció specifikus jellemzők meghatározása
8:3
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
Rendszerterv
Rendszerterv
• A tervezés eredménye a szoftver rendszerterve (software design description, SDD), amely tartalmazza:
• A rendszerterv meghatározó jellemzői:
• a program statikus szerkezetét, azaz a programegységek feladatát, részletes leírását és a köztük lévő relációkat
8:4
• kohézió: egy programegységen belül a komponensek összetartozása, akkor jó, ha erős az összetartó erő • összekapcsolás: a programegységek egymáshoz való kapcsolódása és függése, akkor jó, ha gyenge a függés
• a program dinamikus szerkezetét, azaz a program eseményeinek kiváltódását és hatásait, a programegységek állapotainak változását, az üzenetküldések megvalósítását
• módosíthatóság: mennyiben módosítható a teljes program az egységek, vagy részegységek cseréjével
• a tárolt, kezelt, és eredményül adott adatok formáját, leírását • a programok belső és külső interfészeinek leírását
• fejleszthetőség: új komponensekkel való bővíthetőség lehetősége, mennyire szabványosak a csatolási felületek
• ajánlásokat az implementáció számára (stratégia, függőségek, programozási nyelv, tesztelési módszerek)
• bonyolultság: a terv áttekinthetősége és megérthetőségének a mértéke
ELTE IK, Szoftvertechnológia
8:5
ELTE IK, Szoftvertechnológia
8:6
1
Tervezés
Tervezés
1. esettanulmány: a feladat
1. esettanulmány: felhasználói esetek
1. esettanulmány: Készítsünk programot, amely Marika néni kávézójának eladási nyilvántartását végigköveti.
• Felhasználói esetek:
• a kávézóban 3 féle étel (hamburger, ufo, palacsinta 10%-os áfával), illetve 3 féle ital (tea, narancslé, kóla 25%-os áfával) közül lehet választani • az ételek ezen belül különfélék lehetnek, amelyre egyenként lehet árat szabni, és elnevezni, az italok árai rögzítettek • minden rendelés több ételből és több italból áll, és sorszámmal rendelkezik, esetlegesen törzsvásárlói számmal, amelyet hagyhatunk üresen is • lehessen lekérdezni egy adott rendelésre, egy adott törzsvásárlóra, illetve összesítve a bruttó, nettó összeget ELTE IK, Szoftvertechnológia
8:7
• Új rendelés felvétele: megadható a törzsvásárlói szám • ital felvétele: elég kiválasztani a megadott italt • étel felvétele: az étel típusát ki kell választani, majd meg kell adni pontos nevét, illetve bruttó árát • Rendelések lekérdezése: • adott törzsvásárlóhoz: a törzsvásárlói szám megadásával csak a lényegi adatok lekérdezése • összes: valamennyi rendelésről a statisztikák lekérdezése • egy rendelés: a rendelés azonosító (sorszám) megadásával valamennyi adat egy rendelésről ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
1. esettanulmány: felhasználói esetek
1. esettanulmány: statikus tervezés
8:8
• A program felépítése (1. fázis): • a feladatban fellelhető tárgykörök a menü, a rendelések listája, a rendelés, valamint a rendelés elemei (italok, ételek) • rendelés elemei (Item): • hasonlóan viselkednek, ám némileg eltérően • ezért megvalósításban öröklődést használunk, specializáljuk a 3 ételt, illetve italt • rendelés (Order): tartalmazza az elemeket (mivel a rendelések száma változhat, ezért láncolt listát használ) • menü (Menu): tartalmazza a rendeléseket (láncolt listában) ELTE IK, Szoftvertechnológia
8:9
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
1. esettanulmány: statikus tervezés
1. esettanulmány: statikus tervezés
8:10
• A program felépítése (2. fázis): • láncolt lista (List): • külön megvalósítást igényel, sablonos típusként • kétszeresen láncolt, fejelemes, aciklikus reprezentáció • lehetőséget ad a beszúrásra (elején, végén, közben), törlésre, kiürítésre, és méret lekérdezésre • a listaelem (ListItem) tárolja az adatot és a két mutatót • a hibát kivétellel jelezzük, egy felsorolási típussal (Exceptions) • a lista bejárható, a bejáró (Iterator) a szabványos műveleteket tárolja ELTE IK, Szoftvertechnológia
8:11
ELTE IK, Szoftvertechnológia
8:12
2
Tervezés
Tervezés
1. esettanulmány: statikus tervezés
1. esettanulmány: statikus tervezés
• A program felépítése (2. fázis):
• A program felépítése (3. fázis):
• rendelési elemek (Item): • közös tulajdonságaik a típusnév, a bruttó és nettó ár • az ételek esetén további adatok a konkrét név, illetve ár • rendelések (Order): • tulajdonságai az azonosító (ez automatikus), a törzsvásárlói szám • lehetőséget ad új elem felvételére, nettó/bruttó érték lekérdezésére
• a listaelemet és a lista kivételeit beágyazott osztályként hozzuk létre, a listaelem egyszerűsége miatt lehet rekord (struct) • a lista megfelelő használatához szükséges destruktor, másoló konstruktor, értékadás művelet, kiíró operátor, indexelő operátor
• menü (Menu): • biztosítja a mentést/betöltést, valamint a menüfunkciókat ELTE IK, Szoftvertechnológia
• a cím szerinti hivatkozásokat mutatókon keresztül kezeljük
8:13
• a rendelési elem ősosztályban megvalósítunk egy virtuális destruktort
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
1. esettanulmány: statikus tervezés
1. esettanulmány: statikus tervezés
ELTE IK, Szoftvertechnológia
8:15
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
1. esettanulmány: statikus tervezés
1. esettanulmány: adatkezelés
8:14
8:16
• A program adatkezelésének megvalósításához egyetlen szöveges fájlra lesz szükségünk • legyen ez kavezo.dat, és a programmal azonos könyvtárban helyezkedik el • a fájl szerkezete a következőképpen épül fel:
;; ;<étel neve>;<étel ára> ;<étel neve>;<étel ára> … ;; …
ELTE IK, Szoftvertechnológia
8:17
ELTE IK, Szoftvertechnológia
8:18
3
Tervezés
Tervezés
1. esettanulmány: dinamikus tervezés
1. esettanulmány: dinamikus tervezés
• A program működése: • a lista végrehajt tevékenységet, ugyanakkor állapotai lényegteleneket a program futása szempontjából • a menü hajtja végre a tényleges tevékenységeket a különböző metódusok (menüpontok) futtatásával, mivel a metódusok futtatása jellemzi a program különböző állapotait, így az állapotokat a tevékenységekhez kötjük • a menüfuttatás mellett az adatok betöltése, valamint kimentése is szerepet játszik a működésben, ezért külön részletezzük a teljes program állapotait, valamint a menüfuttatás állapotait
ELTE IK, Szoftvertechnológia
8:19
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
1. esettanulmány: dinamikus tervezés
1. esettanulmány: dinamikus tervezés
ELTE IK, Szoftvertechnológia
8:21
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
1. esettanulmány: dinamikus tervezés
2. esettanulmány: a feladat
8:20
8:22
2. esettanulmány: A feladat egy adatbázis alapú, grafikus felületű alkalmazás megvalósítása egy apartmanokkal foglalkozó utazási ügynökség számára, amelyben a felhasználóknak lehetősége van apartmanok foglalására. • az adatbázisban városokra csoportosítva találunk épületeket, és épületen belül apartmanokat • a programba a felhasználóknak be kell előbb jelentkeznie, így kapnak lehetőséget az adatok megtekintésére és szerkesztésére • a felhasználó lehetőséget kap az egyes adatok megtekintésére és szerkesztésére, valamint apartmanok foglalására ELTE IK, Szoftvertechnológia
8:23
ELTE IK, Szoftvertechnológia
8:24
4
Tervezés
Tervezés
2. esettanulmány: felhasználói esetek
2. esettanulmány: statikus tervezés
• A program felépítése (1. fázis): • a program szerkezetét a Qt modell/nézet architektúrának megfelelően építjük fel • az adatbázis kezelésére táblamodell osztályokat alkalmazunk, amelyek tartalmát megfelelő táblamegjelenítőkkel és egyéb vezérlőkkel jelenítjük meg • a beépített architektúrát több ponton kiegészítjük, ahol egyedi viselkedésre/megjelenésre van szükségünk, továbbá megvalósítjuk a megjelenítő ablakokat • bejelentkezést diaglógusablakban végezzük (LoginDialog) • … ELTE IK, Szoftvertechnológia
8:25
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
2. esettanulmány: statikus tervezés
2. esettanulmány: statikus tervezés
8:26
• A program felépítése (2. fázis): • főablak (MainWindow): • egy MDI megjelenítőt (QMdiArea) tartalmaz, valamint egy menüsort legyártott akciókkal • példányosítja a megfelelő táblamodelleket (setupModels), illetve az épületek esetén egy egyedi megjelenítőt (BuildingTableDelegate) • az akciók végrehajtása a megfelelő beágyazott ablak megnyitását kezdeményezi • minden ablak ekkor kapja a táblamodell mutatókat, amelyeket a szerkesztésre felhasznál, így a táblákat nem töltjük be többszörösen a memóriába ELTE IK, Szoftvertechnológia
8:27
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
2. esettanulmány: statikus tervezés
2. esettanulmány: statikus tervezés
8:28
• A program felépítése (2. fázis): • táblamodellek: • az AppartmentTableModel specialitása, hogy az apartman állapotát kijelölő mezőn keresztül tudja kezelni. • a BuildingTableModel új oszlopokat definiál az állapot, apartman szám, valamint minimum/maximum árak kezelésére, továbbá adatellenőrzéseket végez. • a RentTableModel letiltja a nézetek számára a szerkesztést, valamint a fizetési állapotot kijelölést formájában adja vissza • … ELTE IK, Szoftvertechnológia
8:29
ELTE IK, Szoftvertechnológia
8:30
5
Tervezés
Tervezés
2. esettanulmány: statikus tervezés
2. esettanulmány: adatkezelés
• Adatkezelést adatbázis biztosítja a következő táblákkal: • városok (city): azonosító, városnév; • épületek (building): azonosító, név, város azonosító, utca, tengerpart távolság, tengerpart-típus (számként), jellemzők (binárisan összeillesztve), megjegyzés; • apartmanok (appartment): azonosító, épület azonosító, szám, ágyak száma, pótágyak száma, felújítás alatt van-e; • ügyfelek (customer): azonosító, név; • foglalások (rent): azonosító, ügyfél azonosító, apartman azonosító, kezdődátum, befejező dátum, fizetett-e az ügyfél, összeg; … ELTE IK, Szoftvertechnológia
8:31
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
2. esettanulmány: adatkezelés
2. esettanulmány: dinamikus tervezés
8:32
• A program működése: • a program indításkor ellenőrzi az adatbázis-kapcsolatot, amennyiben az nem megfelelő, azonnal terminál • a program elsőként a bejelentkező ablakot nyitja meg, amelyben a felhasználó megadhatja az azonosítót, illetve jelszót (ezek ellenőrzésre kerülnek az adatbázis alapján) • amennyiben az azonosítás sikeres, megnyílik a főablak, amelyben elérhetővé válnak a menüpontok • minden ablak megnyitásakor az alkalmazás betölti az adatokat az adatbázisból, ablak bezárásakor (vagy mentés gombra) pedig elmenti azokat (amennyiben sikerült) ELTE IK, Szoftvertechnológia
8:33
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
2. esettanulmány: dinamikus tervezés
2. esettanulmány: dinamikus tervezés
ELTE IK, Szoftvertechnológia
8:35
ELTE IK, Szoftvertechnológia
8:34
8:36
6
Tervezés
Tervezés
2. esettanulmány: dinamikus tervezés
2. esettanulmány: dinamikus tervezés
ELTE IK, Szoftvertechnológia
8:37
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
3. esettanulmány: a feladat
3. esettanulmány: felhasználói esetek
8:38
3. esettanulmány: A feladat egy olyan programrendszer (ETRImporter) megvalósítása, amellyel lehetőség nyílik különböző adatok betöltésére az ETR központi adatbázisába. • a program felhasználói megadott formátumokban importálhatnak, illetve szerkeszthetnek adatokat a programban, melyet végül elküldhetnek egy központi szervernek, amely betölti az adatokat az adatbázisba • az adatok táblázatos formában kerülnek betöltésre, azok utólagos szerkesztését is biztosítanunk kell a programban • a táblák formátumát központilag szabályozzák, de a későbbiekben tetszőleges módosítás alá kerülhetnek, illetve új adatformátumok kerülhetnek a rendszerbe ELTE IK, Szoftvertechnológia
8:39
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
3. esettanulmány: statikus tervezés
3. esettanulmány: statikus tervezés
• A rendszert az alábbiaknak megfelelően építjük fel: • a kliens (ImporterClient) egy grafikus felületű alkalmazás, amely biztosítja az adatok betöltését, kezelését, valamint hálózaton történő továbbítását • a szerver oldali szolgáltatás (ImporterService) állandó jelleggel fut a háttérben a szerveren, a szolgáltatás feladata lesz a kliensek kéréseinek kiszolgálása, a kommunikáció, az adatok kezelése és bevitele az adatbázisban, illetve az eseménynaplózás • a közvetítő program (ImporterAdmin) feladata korlátozódik az eseménynapló, valamint a csatlakoztatott kliensek megtekintésére, esetleges üzenetküldésre
• Célszerű a tábla típusainak kezelését külön könyvtárba kiemelni (TypeManagement), hiszen azt már három további komponens is használja • Így a rendszer már összesen 4 komponensből áll
ELTE IK, Szoftvertechnológia
ELTE IK, Szoftvertechnológia
8:41
8:40
8:42
7
Tervezés
Tervezés
3. esettanulmány: statikus tervezés
3. esettanulmány: statikus tervezés
• A szerver gépen így megjelenik a közvetítő mellett a szolgáltatás, illetve ott és a kliens gépen is megjelenik a típuskezelés
• A kliens program funkcióit három csomag valósítja meg: • felhasználói felület (GUISystem) • adatimportáló (ImportSystem) • adatkezelő (DataSystem)
ELTE IK, Szoftvertechnológia
8:43
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
3. esettanulmány: statikus tervezés
3. esettanulmány: statikus tervezés
8:44
• Az adatimportáló csomag a különböző formátumú fájlok betöltésére szolgál, a későbbiekben tetszőlegesen bővíthetőm • megfelelően feldogozza a fájlt, és eltárolja a nyers adatokat • ennek megfelelően szükség van egy általános osztályra, amely beolvassa (Open) és eltárolja (Data) az adatokat • ebből származtatunk speciális feldolgozó osztályokat, amelyek a beolvasást felüldefiniálják
ELTE IK, Szoftvertechnológia
8:45
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
3. esettanulmány: statikus tervezés
3. esettanulmány: statikus tervezés
8:46
• Az adatkezelő csomag az adatok táblázatos kezeléséért, valamint a kommunikáció lebonyolításáért felel • a kommunikációs osztály (Connection) feladata a kapcsolat létrehozása (Connect) TCP kapcsolattal SSL titkosítást alkalmazva, tetszőleges adat feltöltése (SendData), letöltése (ReadData) • az összes adat felügyeletét egy adatkezelő osztályra bízzuk (DataHandler), amely kezeli a táblákat (TableObject) • a tábla, és annak sorainak, oszlopainak típusleírását külön osztályokra bízzuk (TableType, RowType, Column) • a helyes formátum kialakítását külön osztályra bízzuk (DataFormat), amely ezt statikus műveletekkel végzi ELTE IK, Szoftvertechnológia
8:47
ELTE IK, Szoftvertechnológia
8:48
8
Tervezés
Tervezés
3. esettanulmány: statikus tervezés
3. esettanulmány: statikus tervezés
• A felhasználói felület csomagja a felhasználói interakció kezelésére szolgál • a felhasználói felület több ablakból, amelyeknek megfeleltetünk egy-egy osztályt, és minden benne szereplő vezérlőnek egy-egy eseménykezelő alprogramot • tartalmazza az adatimportáló, illetve adatkezelő alrendszer hivatkozásait attribútumként • a következő feladatra kellenek ablakok: indítóablak (StartForm), főablak (MainForm), beállítások (SettingsForm), új tábla létrehozása (NewTableForm), táblatípusok megjelenítése (TypesForm)
ELTE IK, Szoftvertechnológia
8:49
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
3. esettanulmány: adatkezelés
3. esettanulmány: adatkezelés
• A rendszer működése során 4 ki-, és bemeneti csatornát használ:
• Hálózati kommunikáció: • a kapcsolat során a kliens, illetve a közvetítő üzeneteket küldenek egymásnak a hálózaton keresztül, TCP kapcsolat segítségével, a kliens elküldi üzeneteit, majd adott ideig vár a válaszra
• adatok lokális mentése a kliens programban: használjunk szérializációt, azaz az adattáblák adatait közvetlenül az objektumorientált felépítésnek megfelelően írjuk ki • kommunikáció a kliens és a közvetítő között: használjunk szabványos TCP kapcsolatot, amelyen ASCII formátumú adatsorozatok tartalmazzák az adatokat
• a titkosítás érdekében az azonosító adatokra alkalmazzunk MD5 kódolást, illetve a csatorna kommunikációjára használjunk SSL protokollt
• az adatformátumokat leíró fájl, amely XML formátumban tárolja a különböző tábladefiníciókat, és sorszerkezeteiket
• a közvetítő állandóan hallgatózik a hálózaton, és várja az új üzenet megérkeztét, a beérkező üzenetek egymás után kerülnek feldolgozásra
• adatok mentése az adatbázisba: definiáljuk a megfelelő átmeneti táblákat, valamint a feldolgozó tárolt eljárásokat ELTE IK, Szoftvertechnológia
8:50
8:51
ELTE IK, Szoftvertechnológia
Tervezés
Tervezés
3. esettanulmány: adatkezelés
3. esettanulmány: adatkezelés
• adattovábbítás: • a kliens üzenetek formájában küldi el a teljes táblát, benne az azonosító számával és a lekérdezés típusával • amennyiben a kliens nem kap választ adott időn belül egy módosítás eltárolására, akkor a küldés sikertelen
8:52
• Adatbázis kommunikáció: • a közvetítő csak a fenntartott táblákat használja az ETR adatbázisában, azok feldolgozását tárolt eljárások végzik
• üzenetszintaxis: • egy üzenetkóddal indul, amely megadja az üzenet típusát, a tartalmi elemeket ;-vel választjuk el egymástól
• a tárolt eljárások hiba, összeütközés, ellentmondás, vagy hiányzó adat esetén szemantikus hibát jeleznek (soronként), amelyet a közvetítő visszaküld a kliensnek • minden adatformátum egy, vagy több saját táblával rendelkezik az adatkezeléshez ETR_IMPORTER_TEMP__P<sorszám>
elnevezés konvecióval • ezen felül vannak állandó táblák, amelyek a rendszer működéséhez szükségesek ELTE IK, Szoftvertechnológia
8:53
ELTE IK, Szoftvertechnológia
8:54
9
Tervezés
Tervezés
3. esettanulmány: adatkezelés
3. esettanulmány: dinamikus tervezés
• A kliens program indulási folyamata: • kapcsolat létrehozása a közvetítővel, felhasználó bejelentkeztetése • táblatípusok frissítése, amennyiben szükséges • adatkezelő objektum inicializálása a kapcsolattal • korábbról megmaradt táblák ellenőrzése és betöltése • továbblépés engedélyezése, amennyiben a folyamat sikerrel járt, hibák esetén csak kiléptetés engedélyezése • Sikertelen kapcsolódás, vagy adatforgalom esetén a kapcsolatépítés, és a táblatípus frissítés minden feltöltés kezdeményezésre megismétlődik ELTE IK, Szoftvertechnológia
8:55
ELTE IK, Szoftvertechnológia
8:56
Tervezés 3. esettanulmány: dinamikus tervezés
ELTE IK, Szoftvertechnológia
8:57
10