21
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.

probléma formálisan specifikált:

  • 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

Page 1: probléma formálisan specifikált:

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.

Page 2: probléma formálisan specifikált:

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.

Page 3: probléma formálisan specifikált:

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.

Page 4: probléma formálisan specifikált:

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.

Page 5: probléma formálisan specifikált:

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.

Page 6: probléma formálisan specifikált:

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.

Page 7: probléma formálisan specifikált:

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.

Page 8: probléma formálisan specifikált:

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.

Page 9: probléma formálisan specifikált:

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.

Page 10: probléma formálisan specifikált:

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).

Page 11: probléma formálisan specifikált:

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.

Page 12: probléma formálisan specifikált:

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)

Page 13: probléma formálisan specifikált:

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.

Page 14: probléma formálisan specifikált:

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];

Page 15: probléma formálisan specifikált:

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;

Page 16: probléma formálisan specifikált:

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.

Page 17: probléma formálisan specifikált:

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.

Page 18: probléma formálisan specifikált:

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;

Page 19: probléma formálisan specifikált:

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];

Page 20: probléma formálisan specifikált:

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;

Page 21: probléma formálisan specifikált:

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.