Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaGergő Péter Megváltozta több, mint 10 éve
1
probléma formálisan specifikált: valós világ (domai) (hibás eredmény) ködös határ (félreértés, hiba) formális világ (megoldás) A specifikáció csak nagyvonalakban írja le a valóságos problémát. A szoftver fejlesztőnek meg kell értenie a felhasználó problémáját.
2
Probléma dekompozíció és struktúrák leírása. A valóságos problémákat egyszerűbb részproblémákra kell felbontani. Rendszerint a problémának és a részproblémának is ugyan azok a doménjei: Azonos világban játszódnak le. Ezt a közös domént azonban a különböző részproblémákban különböző szempontok szerint vizsgáljuk és írjuk le. Ennek a probléma dekomponálásnak a hatását illusztrálja a következő példa.
3
1. Példa egy öntöző rendszer zsilip problémája. Egy kis zsilipről van szó, ahol a zsilipkapu felemelkedik és leesik. Ezt egy számítógép vezérli. Követelmény. Minden órában a zsilipkapu legyen nyitva 10 percig és máskor pedig legyen csukva. A zsilipkaput egy forgó vertikális csavarral emelik fel ill. le. Az emelőt egy kis motor húzza.
4
A motort vezérlő elektromos jelek: - be, - ki, - óramutató járásának megfelelő irány, - óramutató járásával ellentétes irány. A kapu útjának a tetején és az alján van egy-egy érzékelő: top érzékelő: a kapu teljesen felemelkedett, (elektromos jel); bottom érzékelő: a kapu teljesen leereszkedett, (elektromos jel); A motor vezérléséhez a számítógépet 4 pulzusvonal köti össze a motorral és 2 állapot vonal a kapu szenzorokkal. Megkövetelt jelenségek: a kapu nyitva, a kapu csukva. Specifikációs jelenségek: motor vezérlő jelei, és a szenzorok állapotai.
5
A "világunk" (domain) tulajdonságai, amiket a gép megkonstruálásánál figyelembe kell venni: A motor az állapotának a megváltozásával válaszol a hozzá érkező külső jelre. A zsilip mechanikus része az állapotát (emelkedik, esik), aszerint változtatja, hogy a motor áll, vagy egyik vagy másik irányba forog. A szenzorok állapotai és a kapu vertikális pozíciói közötti kapcsolatok. A zsilip mechanikus részeinek az állapot változásait (áll, emelkedik, süllyed) az vezérli, hogy a motor áll, vagy forog és milyen a forgási iránya. A vezérlő gép specifikációjának ezeket formálisan kell rögzítenie.
6
A kapu állapotai: nyitva, zárva, emelkedik, süllyed. Specifikációs jelenségek. (A kapu állapotai és a motor kontrol jelei, és a top és bottom szenzor jelei közötti kapcsolat). Kapu emelkedik:ha a motor elindul az óramutató járásának megfelelő irányban. Kapu nyitva:ha a fenti irányú haladásnál a top szenzor jelzést ad. Kapu süllyed:ha a motor az óramutató járásával ellenkezőleg irányban forog Kapu zárva:ha az ellenkező irányú haladásnál a bottom szenzor jelt ad.
7
Nyilvánvaló ellentmondások kezelése. A fizikai eszközök azonban nem olyan megbízhatóak, ahogyan mi gondoljuk. Pl.: 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 mind figyelembe kell venni, legalább is a motor megállásainak okai közé ezeket be kell venni.
8
Lehetséges hibás jelenségek még: A top és bottom szenzor egyaránt jelez. A motor emeli fel a kaput több mint n másodperce és a Top szenzor még mindig nem jelez. A motor engedi le a kaput több mint m másodperce és a Top szenzor még mindig jelez. A motor emeli fel a kaput több mint x másodperce és a Bottom szenzor még mindig jelez. A motor engedi le a kaput több mint y másodperce és a Bottom szenzor még mindig nem jelez. Kezelés: auditáló program.
9
Auditháló program közös domain esetén. Az uditháló program konkurens módon fut magával a vezérlő programmal. A közös erőforrásokhoz való hozzáférésnél kölcsönös kizárást kell biztosítani. A két program egymással kommunikál. Hiba detektálása esetén az auditálható program jelzést küld a vezérlő gépnek. A vezérlő gép az auditháló program jelzésére leállítja a motort és előírt módon tevékenységeket indít el.
10
Objektumok azonosítási problémái. Fontos különbséget tenni: Követelmény jelenségeinek leírásában szereplő azonosítók; (A lift esetében: at(f), fel, le); A specifikációs jelenségek leírásában szereplő azonosítók; (sensor(f) állapotai a lift domain esetén), között. (Később: f az emelet azonosítója volt, amit az informális leírásokban is használtunk). Elektromos vezeték szakadás detektálása és nem kellő megerősítő ellenőrzése számos repülőgép szerencsétlenség okozója volt. (Pl. Elégett a vezetéket detektáltak pedig csak dohányfüst volt).
11
A számítógépek gyakran behoznak egy komplexitást a probléma világába, amellyel interakcióba lépnek. Ennek gyökere: 1. Magának a szoftvernek a bonyolultsága. 2. A probléma világával való együttműködés bonyolultsága. 3. Ezt a bonyolultságot a régi rendszerekben három tényező kontrol alatt tartotta. - Maga a szoftver és annak kézi kezelése kisebb és egyszerűbb volt, mint a mai rendszerek. - Nem volt lehetőség, talán igény sem rendszerek ambíciózus integrálása. - A rendszerek működtetése emberi közreműködésre hagyatkozott. (az operátor, közbeavatkozott, ha abszurd viselkedést látott). Számos alkalmazásban megszűnt ez a biztosíték. Ma a felelősség nagy része az informatikában kutatók és a szoftver fejlesztő vállán nyugszik.
12
A géppel történő megoldás specifikációja. (formális leírás). Specifikáció (igazolt, bebizonyított) A probléma formálisan leírt megoldás (program) Kifejezés, típusos kifejezés. Verifikáció (formális igazolás)
13
Típusos kifejezések: Alaptípusok: integer, boolean, character. Típus: = ; Boolean = {true, false}; integer = {...-1,0,+1,....}; Származtatott típusok (magasabb típusok): n 1; T 1 ... T n T; Argument típusok; érték típus. Argumentumok száma n: a tömb dimenziója.
14
Változók: Egyszerű változók; Tömb változók (array); Konstansok: Alaptípusok konstansok; Összetett típusú (magasabb típusú) konstansok; Reláció ill. függvény: T 1 ... T n T; Ha T értéktípus boolean, akkor reláció szimbólum, egyébként függvény szimbólum. Pl. Reláció: : integer integer boolean [infix]; Függvény: + : integer integer integer [infix];
15
A tömb típusának jelölése: Pl. Ha egy tömb, amelynek típusa: integer T; az egy olyan függvényt jelöl, amely az integer értékek halmazáról a T által jelölt értékek halmazára képez le. Ha k l akkor [k:l] jelölés az intervallumot {i | k i l} -ra korlátozza. Ha t T; i integer; akkor pl. t = [i]; Legyen az tömb típusa: integer Boolean Boolean; Ha i integer; B Boolean, akkor pl. (i,B) egy Boolean kifejezés; B' Boolean; akkor pl. B' (i,B); egy értékadás;
16
Adva: T 1 ... T n T; típus-szimbólum. Példa: Egy tömb leképezés típus-szimbóluma: integer boolean boolean; A array; k integer; B, ok boolean; Ekkor: B A[k+1,ok] bool kifejezés. A[2 k, ok] bool kifejezés.
17
Típusos kifejezés rekurzív definí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 a 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 a T 1,...,T n típusú kifejezések, és egy tömb a T 1 ... T n T típusból, akkor [s 1,...,s n ] egy T típusú kifejezés. Ha B egy bool típusú kifejezés, továbbá s 1 és s 2 pedig T típusú kifejezések, akkor if B then s 1 else s 2 fi egy T típusú kifejezés.
18
Kifejezések felírási formái: Infix forma: s1 op s2 ; Pl.+ : integer integer integer [infix]; i integer, j integer, k integer, k=i+j; Prefix forma: op(s1,s2); op(s); Pl.add: integer integer integer; i integer, j integer, k integer, k = add(i,j); Pl. : Boolean Boolean; i integer, k integer, k = i;
19
Post fix forma: s op; Pl. Faktoriális: ! : nat nat [postfix]; n nat; k nat; n = k!; Kifejezés forma: Pl.: vektor, amelynek elemei integer értékek: Vektor műveletek: _ [ _ ] : vector nat integer v vector; k nat; i integer; i = v[k];
20
Kifejezések kiértékeléséről: Zárójelezések elkerülése, a műveletek prioritási sorrendje: 1: szorzás , osztás /, moduló; 2: összeadás +, kivonás -; 3: =,, ; 4: , ; 5: , . Például: x+y mod(n) értelmezése: x+(y mod(n)); p q r értelmezése: (p q) r;
21
Adva: T 1 ... T n T; típus-szimbólum. Példa: Egy tömb leképezés típus-szimbóluma: integer boolean boolean; A array; k integer; B, ok boolean; Ekkor: B A[k+1,ok] bool kifejezés. A[2 k, ok] bool kifejezés.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.