Informatikai rendszerek általános jellemzői 1.Hierarchikus felépítés Rendszer → alrendszer->... → egyedi komponens 2.Az elemi komponensek halmaza absztrakciófüggő Az az elemi, amit annak tekintünk... 3.A komponenseken belüli kapcsolatok erősebbek, mint a komponensek köztiek. 4.A hierarchikus rendszerek általában néhány alapvető komponens változatos kombinációjából és kapcsolatából épülnek fel. 5.Minden működő bonyolult rendszer egyszerűbb működő rendszerből fejlődik – fejleszteni is csak így lehet...
A bonyolult szoftverrendszerek problémáinak okai 1.A megoldandó feladat bonyolultsága 2.A fejlesztési folyamat kézben tartásának nehézségei 3.A szoftvereszközök kínálta rugalmasság 4.A diszkrét rendszerek viselkedésének leírásából fakadó nehézségek
A megoldandó feladat bonyolultsága ● Kívánalmak száma nagy ● Bonyolult funkcionalitás ● Egymásnak ellentmondó igények a részfeladatok megvalósítása során ● Egyszerű használhatóság ● Nagy teljesítmény ● Elfogadható költségek ● Megbízhatóság ● Hibatűrés ● stb.
● A megrendelő a feladat nyelvén beszél ● Gyakran maga sem tudja megfogalmazni, mire is van szüksége ● A fejlesztő a számítógépek nyelvén beszél ● Gyakran az igények csak a fejlesztés későbbi stádiumára tisztázódnak A megoldandó feladat bonyolultsága Többlet fejlesztési idő és költség
Szoftverrendszerek változása Mindezek az okok, vagy tervszerű döntés vezet a változásokhoz: ● Karbantartás: létező, felbukkanó hibákat szüntet meg ● Fejlesztés: újonnan felmerült igényt elégít ki ● Konzerválás: régi, idejétmúlt, de valamiért még mindig fontos rendszert a megváltozott körülmények közt is használni akarunk/kell (pl. régi DOS-alapú könyvelőprogramok Windows 7 alatt...)
A fejlesztési folyamat kézben tartásának nehézségei ● A belső bonyolultságot el kell rejteni a ● felhasználó és ● a többi fejlesztő ● elől. ● Oka: kezelhetetlenül bonyolulttá válik. ● A profi hozzáállása: a lehető legrövidebb idő alatt a lehető legmegbízhatóbb megoldás. Egyszerűségre törekvés, keretrendszerek (framework) használata, modularizálás, újrafelhasználhatóságra törekvés
Megoldás A feladat szétosztása több fejlesztő közt: egyetlen ember egy bonyolult rendszer minden részletét nem láthatja át, nem képes teljes mélységéig megírni.
A szoftvereszközök kínálta rugalmasság Absztrakciós szint és a megoldandó feladatot kezelő eszközök kiválasztása: ● Túl alacsony szint: túlrészletezett, bonyolultabb, hosszadalmasabb fejlesztés ● Túl magas szint: elrejt olyan lehetőségeket, amelyekre szükségünk lehet.
A diszkrét rendszerek viselkedésének leírásából fakadó nehézségek Diszkrét rendszer: csak meghatározott állapotokat vehet fel Folytonos rendszer: a korlátok közt minden állapotot felvehet, pl. egy eldobott kő a pályája mentén bármely pontban tartózkodhat.
A diszkrét rendszerek viselkedésének leírásából fakadó nehézségek A szoftverrendszerek diszkrét állapotú rendszerek. Állapotukat meghatározzák: ● A bennük működő algoritmusok ● Rengeteg változó ● A rendszerek viselkedése óriási állapottérrel és rengeteg csomópontot tartalmazó állapotgráffal írható le. A tesztelés igen nehéz, a gráfnak képtelenség minden útvonalát bejárni.