Informális vs. formális probléma leírás Valós világ (Domain) Ködös határ (Félreértés, hiba) Formális világ (Hibás eredmény) (Megoldás) A specifikáci ció csak nagyvonalakban írja le a valóságos problémát, amit a szoftver fejlesztőnek meg kell értenie.
Probléma dekompozíci ció, struktúrák k leírása A valóságos problémákat egyszerűbb részproblr szproblémákra kell felbontani A problémának és s a részproblr szproblémának általában ugyanazok a domainjei, vagyis azonos világban játszj tszódnak le A közös k s domaint különbk nböző részproblémákban különbk nböző szempontok szerint vizsgáljuk és írjuk le A probléma dekomponálásnak hatását t illusztrálja lja a következk vetkező példa
Példa: öntözőrendszer zsilip problémája Valóságban Egy kis zsilipről l van szó,, ahol a zsilipkapu felemelkedik / leesik, melyet egy számítógép p vezérel. A zsilipkaput egy forgó csavarral mozgatják fel / le, egy kis motor segíts tségével. Motorvezérl rlő elektromos jelek: be, ki, jobbra forog, balra forog Zsilip tetején és s alján n egy-egy érzékelő: : top, bottom top: a kapu teljesen nyitva bottom: a kapu teljesen zárva Zsilip és számítógép között 4 pulzus vonal vezet a motorhoz a számítógépből és 2 állapot vonal vezet a kapu szenzoroktól a számítógépbe. Követelmény A zsilipkapu óránként nt 10 percig legyen nyitva,, egyébk bként zárva Megkövetelt jelenségek: kapu nyitva, kapu csukva Specifikációs jelenségek: motor vezérlő jelei, szenzorok állapotai.
Példa: öntözőrendszer zsilip problémája A "világunk" (domain) tulajdonságai,, melyeket a gépg tervezésénél l figyelembe kell venni A motor az állapotának megváltoz ltozásával válaszol v a hozzá érkező külső jelre. A zsilip mechanikus része r az állapotát t (emelkedik, esik), aszerint változtatja, hogy a motor áll, vagy egyik vagy másik m irányba forog. A szenzorok állapotai és s a kapu vertikális pozíci ciói i közötti k kapcsolatok. A zsilip mechanikus részeinek r az állapot változv ltozásait (áll, emelkedik, süllyed) s az vezérli, hogy a motor áll, vagy forog és s milyen a forgási iránya. A vezérl rlő gép p specifikáci ciójának ezeket formálisan kell rögzr gzítenie.
Példa: öntözőrendszer zsilip problémája A kapu állapotai: nyitva, zárva, emelkedik, süllyed Specifikációs jelenségek (kapura vonatkozóan) an) (Kapu állapotai, motor jelei, top és s bottom szenzor jelei közötti k kapcsolat). emelkedik: : a motor elindul az óramutató járásával egyező irányban. nyitva: : a fenti irány nyú haladásn snál l a top szenzor jelzést ad. süllyed: : a motor az óramutató járásával ellenkező irányban forog zárva: : ellenkező irány nyú haladásn snál l a bottom szenzor jelt ad.
Példa: öntözőrendszer zsilip problémája Nyilvánvaló ellentmondások kezelése A fizikai eszközök nem olyan megbízhatóak, ahogyan gondoljuk Elszakadhat a kábel, leéghet a motortekercs, a rozsda tönkreteheti a vasból készült alkatrészeket stb. A vezérlő gép viselkedésénél ezeket figyelembe kell venni, a motor megállásainak okai közé ezeket be kell venni. További lehetséges hibás jelenségek Top és s Bottom szenzor egyszerre jelez, Zsilip emelésn snél l n mp. elteltével sem jelez a Top szenzor, Zsilip emelésn snél l x mp. eltelte után n is jelez a Bottom szenzor, Zsilip leengedésn snél l m mp. eltelte után n is jelez a Top szenzor, Zsilip leengedésn snél l y mp. elteltével sem jelez a Bottom szenzor. Megoldás: auditáló program használata
Auditáló program közös k s domain esetén Az auditáló program konkurens módon m fut a vezérl rlő programmal. A közös k s erőforr forrásokhoz való hozzáférésn snél l kölcsk lcsönös s kizárást kell biztosítani. tani. A két k t program egymással kommunikál Hiba detektálása esetén n az auditálhat lható program jelzést küld k a vezérl rlő gépnek. A vezérl rlő gép p az auditáló program jelzésére leáll llítja a motort és s az előre megadott tevékenys kenységeket elindítja.
Objektumok azonosítása sa Különbséget kell tenni Követelmény jelenségeinek leírásában szereplő azonosítók (A lift esetében: hol(f), fel, le) és specifikációs jelenségek leírásában szereplő azonosítók között (sensor(f) állapotai a lift domain esetén) n). f az emelet azonosítója volt, ami az informális leírásokban is szerepelt. Érdekesség Elektromos vezeték k szakadás s detektálása és s nem kellő megerősítő ellenőrz rzése számos repülőgép p szerencsétlens tlenség g okozója volt. Például: : Elégett vezetékk kként érzékelték k a dohányf nyfüstöt. t.
Komplexitás A számítógépek gyakran olyan komplexitást hoznak be a probléma világába, amellyel interakcióba lépnek. Ennek okai 1. A szoftver bonyolultsága; 2. A probléma világával val való együttm ttműködés s bonyolultsága; 3. Ezt a bonyolultságot a régi r rendszerekben három h tényezt nyező kontrol alatt tartotta. Maga a szoftver és s annak kézi k kezelése kisebb és s egyszerűbb volt, mint a mai rendszerek. Nem volt lehetőség, talán n igény sem rendszerek ambíci ciózus integrálására. ra. A rendszerek működtetm dtetése emberi közremk zreműködésre hagyatkozott (az operátor közbeavatkozott, k ha abszurd viselkedést st látott). l Számos alkalmazásban megszűnt ez a biztosíték.
Verifikáci ció A géppel történő megoldás specifikációja (formális leírás) Verifikáci ció (formális igazolás) Specifikáció (igazolt, bizonyított) Kifejezés vs. típusos kifejezés A probléma formálisan leírt megoldása (program)
Típusos kifejezések Alaptípusok: Integer, Boolean, Character. Típus: < név n v > = < értékek halmaza > Boolean = { true, false } Integer = {... -1, 0, 1,... } Származtatott típusok (magasabb típusok): t n 1 T 1... T n T Argumentum típusok t Érték k típus t Argumentumok száma n: a tömb t dimenziója
Változó,, konstans, reláci ció,, függvf ggvény Változók Egyszerű változók Tömb változv ltozók k (Array)( Konstansok Alaptípusok pusok konstansok Összetett típust pusú (magasabb típust pusú) ) konstansok Reláció, függvény T 1... T n T Ha T értéktípus Boolean,, akkor reláció szimbólum, egyébk bként függvény szimbólum. Reláció: : Integer Integer Boolean [infix]; Függvény: + : Integer Integer Integer [infix];
Tömb típust Az Integer T típusú α tömb esetében α egy olyan függvényt jelöl, amely Integer értékek halmazáról l képez k a T által jelölt lt értékek halmazára. Ha k l, akkor α [ k : l ] jelölés s az intervallumot { i k i l }-re} korlátozza Ha t T; ; i Integer,, akkor pl.: t = α [ i ] Ha az α tömb típusa t Integer Boolean Boolean i Integer; ; B Boolean, és akkor pl. α( ( i, B ) egy Bool kifejezés, B Boolean esetén n pl.: B' α( ( i, B ) egy értékadás.
Tömb típust Adott egy T 1... T n T típus-szimbólum Példa: : Egy tömb t leképez pezés s típust pus-szimbóluma Integer Boolean Boolean A Array, k Integer, B, ok Boolean esetén B A[ k+1, ok ] bool kifejezés, A[ 2 k, ok ] bool kifejezés.
Típusos kifejezés s rekurzív v definíci ciója T típus egy egyszerű változója egy T típusú kifejezés. T típus egy egyszerű konstansa egy T típusú kifejezés. Ha s 1,..., s n rendre T 1,..., T n típusú kifejezések, és op egy konstans a T 1... T n T típusból, akkor op( s 1,..., s n ) egy T típusú kifejezés. Ha s 1,..., s n rendre T 1,..., T n típusú kifejezések, és α egy tömbt a T 1... T n T típusból, akkor α [ s 1,..., s n ] egy T típusú kifejezés. Ha B egy Boolean típusú kifejezés, tovább bbá s 1 és s 2 T típusú kifejezések, akkor if B then s 1 else s 2 fi egy T típusú kifejezés.
Kifejezések felírási formái Infix forma: s 1 op s 2 Példa + : Integer Integer Integer [infix], valamint i, j, k Integer esetén k = i + j Prefix forma: op( s 1, s 2 ) vagy op( s ) Példa add: Integer Integer Integer, valamint i, j, k Integer esetén k = add( i, j ) Példa : Boolean Boolean i, k Boolean esetén k = i
Kifejezések felírási formái Post fix forma: s op Például: Faktoriális! : nat nat [postfix] n, k nat n = k! Kifejezés forma: Például: vektor, amelynek elemei Integer értékek Vektor műveletek: _ [ _ ] : vector nat Integer v vector, k nat, i Integer i = v [ k ]
Kifejezések kiért rtékelése Zárójelezések elkerülése a műveletek prioritási sorrendje alapján 1. szorzás, osztás /, moduló 2. összeadás +, kivonás - 3. =, <,, >, 4., 5., Például: x + y mod(n) értelmezése: p q r értelmezése: x + (y mod(n)) (p q) r