Upload
iolana
View
35
Download
3
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
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ó csaknagyvonalakban írja lea valóságos problémát.
A szoftver fejlesztőnekmeg kell értenie
a felhasználó problémáját.
Probléma dekompozíció és struktúrák leírása.
A valóságos problémákat egyszerűbb részproblémákra kellfelbontani.
Rendszerint a problémának és a részproblémának is ugyan azok adoménjei: Azonos világban játszódnak le.
Ezt a közös domént azonban a különböző részproblémákbankülönböző szempontok szerint vizsgáljuk és írjuk le.
Ennek a probléma dekomponálásnak a hatását illusztrálja akövetkező példa.
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 ésmáskor pedig legyen csukva.
A zsilipkaput egy forgó vertikális csavarral emelik fel ill. le.
Az emelőt egy kis motor húzza.
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.
A "világunk" (domain) tulajdonságai, amiket a gépmegkonstruá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.
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 bottomszenzor jelei közötti kapcsolat).
Kapu emelkedik: ha a motor elindul az óramutató járásánakmegfelelő 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.
Nyilvánvaló ellentmondások kezelése.
A fizikai eszközök azonban nem olyan megbízhatóak, ahogyan migondoljuk.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.
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.
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 kellbiztosí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.
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ásokbanis 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).
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 szoftverfejlesztő vállán nyugszik.
A géppel történő megoldásspecifiká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)
Típusos kifejezések:
• Alaptípusok:
integer,
boolean,
character.
Típus: <név> = <értékek halmaza>;
Boolean = {true, false}; integer = {...-1,0,+1,....};
• Származtatott típusok (magasabb típusok): n1;
T1...Tn T;
Argument típusok; érték típus.
Argumentumok száma n: a tömb dimenziója.
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:
T1...Tn 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];
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óla 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 tT; iinteger; akkor pl. t = [i];
Legyen az tömb típusa:
integer Boolean Boolean;
Ha iinteger; BBoolean, akkor pl.
(i,B) egy Boolean kifejezés;
B' Boolean; akkor pl.
B' (i,B); egy értékadás;
Adva:
T1...Tn T;
típus-szimbólum.
Példa: Egy tömb leképezés típus-szimbóluma:
integer boolean boolean;
A array; kinteger; B, ok boolean;
Ekkor:
B A[k+1,ok] bool kifejezés.
A[2k,ok] bool kifejezés.
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 s1,...,sn rendre a T1,...,Tn típusú kifejezések, és op egy
konstans a T1...Tn T típusból, akkor op(s1,...,sn) egy T
típusú kifejezés.
• Ha s1,...,sn rendre a T1,...,Tn típusú kifejezések, és egy tömb
a T1...Tn T típusból, akkor [s1,...,sn] egy T típusú kifejezés.
• Ha B egy bool típusú kifejezés, továbbá s1 és s2 pedig T típusú
kifejezések, akkor
if B then s1 else s2 fi
egy T típusú kifejezés.
Kifejezések felírási formái:
Infix forma: s1 op s2 ;
Pl. + : integer integer integer [infix];
iinteger, jinteger, kinteger,
k=i+j;
Prefix forma: op(s1,s2); op(s);
Pl. add: integer integer integer;
iinteger, jinteger, kinteger,
k = add(i,j);
Pl.
: Boolean Boolean;
iinteger, kinteger,
k = i;
Post fix forma: s op;
Pl. Faktoriális:
! : nat nat [postfix];
nnat; knat;
n = k!;
Kifejezés forma:
Pl.: vektor, amelynek elemei integer értékek:
Vektor műveletek:
_ [ _ ] : vector nat integer
vvector; knat; iinteger;
i = v[k];
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));
pq r értelmezése: (pq) r;
Adva:
T1...Tn T;
típus-szimbólum.
Példa: Egy tömb leképezés típus-szimbóluma:
integer boolean boolean;
A array; kinteger; B, ok boolean;
Ekkor:
B A[k+1,ok] bool kifejezés.
A[2k,ok] bool kifejezés.