Magasabb szintű formalizmus: Állapottérképek (statecharts) dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Hasonló dokumentumok
Magasabb szintű formalizmus: Állapottérképek (statecharts) dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Magasabb szintű formalizmus: Állapottérképek (statecharts) dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Alapszintű formalizmusok

Futásidőbeli verifikáció

Futásidőbeli verifikáció

Forráskód generálás formális modellek alapján

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Részletes tervek ellenőrzése

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Részletes szoftver tervek ellenőrzése

Alapszintű formalizmusok

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Automatikus tesztgenerálás modell ellenőrző segítségével

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Alapszintű formalizmusok

2. gyakorlat: Részletes tervek és forráskód ellenőrzése

Modellező eszközök, kódgenerálás

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Elérhetőségi probléma egyszerűsítése: Állapottér és struktúra redukció Petri-háló alosztályok

Zárthelyi mintapéldák. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Modell alapú tesztelés mobil környezetben

Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben. Ráth István

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Követelmények formalizálása: Temporális logikák. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Dr. Mileff Péter

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

Temporális logikák és modell ellenırzés

Kiterjesztések sek szemantikája

A modell-ellenőrzés gyakorlata UPPAAL

Petri hálók: Alapelemek és kiterjesztések

Hatékony technikák modellellenőrzéshez: Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Petri hálók: alapfogalmak, kiterjesztések

Dinamikus modell: állapotdiagram, szekvencia diagram

Diszkrét állapotú rendszerek modellezése. Petri-hálók

Formális verifikáció Modellezés és modellellenőrzés

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Modellek végrehajtása, kódgenerálás

Petri hálók: Alapelemek és kiterjesztések

Időzített átmeneti rendszerek

Diszkrét állapotú rendszerek modellezése. Petri-hálók

AWK programozás, minták, vezérlési szerkezetek

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Formális modellezés és verifikáció

Szoftver-modellellenőrzés absztrakciós módszerekkel

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Java programozási nyelv

Bevezetés az informatikába

Digitális technika (VIMIAA02) Laboratórium 4

Szoftverminőségbiztosítás

Metamodellezés. Simon Balázs BME IIT, 2011.

BPEL nyelvű üzleti folyamatok modellezése és formális ellenőrzése

AWK programozás, minták, vezérlési szerkezetek

Digitális technika (VIMIAA02) Laboratórium 4

3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások

Osztott rendszer. Osztott rendszer informális definíciója

Objektumelvű programozás

Szoftver karbantartási lépések ellenőrzése

Szekvenciális hálózatok és automaták

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Petri hálók: alapfogalmak, kiterjesztések

Monitorok automatikus szintézise elosztott beágyazott rendszerek futásidőbeli verifikációjához

A formális módszerek szerepe

Már megismert fogalmak áttekintése

Modell alapú tesztelés: célok és lehetőségek

Időt kezelő modellek és temporális logikák

Újrakonfigurálható eszközök

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Automatikus kódgenerálás helyességének ellenőrzése

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

A szerzõrõl... xi Bevezetés... xiii

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Java II. I A Java programozási nyelv alapelemei

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

Színezett Petri-hálók

3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások

Digitális technika (VIMIAA01) Laboratórium 4

2.előadás. alapfogalmak, formális definíció

UML (Unified Modelling Language)

Tesztelési feladatok és kihívások a FALCON projektben

Sztochasztikus temporális logikák

A C programozási nyelv II. Utasítások. A függvény.

Modellek ellenőrzése és tesztelése

OOP. Alapelvek Elek Tibor

Programozási nyelvek Java

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

AWK programozás Bevezetés

Modellezés Petri hálókkal. dr. Bartha Tamás dr. Majzik István dr. Pataricza András BME Méréstechnika és Információs Rendszerek Tanszék

Állapotalapú modellezés

Java II. I A Java programozási nyelv alapelemei

Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Interfészek. PPT 2007/2008 tavasz.

Átírás:

Magasabb szintű formalizmus: Állapottérképek (statecharts) dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék 1

Modellek a formális ellenőrzéshez Mivel nyújt többet egy magasabb szintű formalizmus? Hogyan használható szoftver szintézisre és verifikációra? Mérnöki modellek Modelltranszformációk Magasabb szintű formalizmusok SC, PN, CPN, DFN Alapszintű matematikai formalizmusok KS, LTS, KTS 2

Tartalomjegyzék Alapelemek Az állapottérkép szintaxisa UML 2 statechart diagram Az állapottérkép szemantikája UML 2 State Machine szemantika (Más szemantikák: pl. Harel-féle szemantika) A formális szemantika használata Forráskód szintézis Futásidőbeli verifikáció 3

Mi az állapottérképek célja? Állapot alapú, eseményvezérelt rendszerek viselkedésének megadására alkalmasak Egy állapotgép viselkedésének leírása Reaktívviselkedés: Külső események hatására történő állapotváltást ír le Pl. bejövő üzenet, jelzés, hívás, Akciók: az állapotátmenetekhez rendelt tevékenységek, történések Pl. értékadás, kimenő üzenet, Szokásos használat: Beágyazott rendszerek: bejövő események feldolgozása (pl. robot vezérlése, vagyonvédelmi rendszer, ) Protokollok: üzenetek feldolgozása 4

Alapfogalmak Állapot, aktív állapot Adott feltételek teljesülése (pl. művelet végrehajtható) Állapotváltozók adott állapota Állapotátmenet Állapot változása Trigger esemény válthatja ki Trigger nélküli átmenet: önmagától következik be Őrfeltétel rendelhető hozzá Állapotátmenet csak akkor történhet meg, ha az őrfeltétel igaz Akciórendelhető hozzá Állapotátmenethez rendelt tevékenység, történés Esemény Aszinkron történés, paraméterei is lehetnek Önálló elem, eseményosztály példánya Öröklés: esemény attribútumok bővítése 5

Új igények Állapotok finomítása: Állapothierarchia Szuperállapot: alállapotokra bontható Konkurens viselkedés leírása Nem akarunk sorrendi kötöttséget megadni (egyidejűleg, vagy tetszőleges sorrendben végzett feldolgozás) Többszálú / elosztott / párhuzamos végrehajtás esetén Összetett állapotátmenetek Szétváló, egyesülő, feltételtől függő elágazó átmenet Emlékezés: Visszatérés egy korábbi aktív állapotkonfigurációra Visszatérés adott feldolgozáshoz közbenső esemény után Egy állapotfinomítási szinten vagy mélyebben is 6

Állapotdiagramok és állapottérképek Állapotdiagram: Egyszintű, egyszerű állapotok és átmenetek Pl. UPPAAL esetén látott automaták leírása Állapottérkép: az állapotdiagram kiterjesztése Állapothierarchia: állapotok finomítása Konkurens régiók: konkurens viselkedés leírása Összetett átmenetek: szétváló, egyesülő, feltételes Emlékezés: Legutolsó aktív állapotkonfiguráció tárolása Szintaktikai segédelemek Ritkán használt (nem intuitív) kiegészítések Késleltetett esemény Szinkronizációs állapot 7

Egy állapottérkép out Off do/blink in On T2 Yellow T1 Green T4 Red Yellow T3 H Red On ManualOff ManualOn Off Camera CarGo Shoot Count Count0 CarIn Count1 CarIn Count2 CarIn 8

Az állapottérképek szintaxisa (UML szerinti szintaxis) 9

Állapotok: Akciók és állapotfinomítás Állapotok: Alapszintű modellelem Állapotokhoz kötődő akciók: Belépési akció (entry /...) Kilépési akció (exit /...) Belsőakciók (do /...) Állapotfinomítás Egyszerű állapot: nincs finomítása OR jellegű finomítás: alárendelt állapotok Ezek közül egyszerre egy állapot lehet aktív AND jellegű finomítás: konkurens régiók print_job entry / init() exit / reset() do / poll() job / print() Egyidejűleg minden egyes régióban kell legyen aktív állapot! 10

Példa: Állapotfinomítás On Image Sound Off Picture SoundOn off Standby on snd mute out in txt txt Videotext SoundOff out Disconnected AND jellegű finomítás OR jellegű finomítás 14

Példa: Állapotfinomítás On Image Picture Clock clk clk NoClock Off Sound off Standby SoundOn on snd mute out in txt txt Videotext SoundOff out Disconnected 15

Pszeudo-állapotok Kezdőállapot jelzés: régióba való belépéskor lesz aktív Minden OR finomításban egy Minden AND régióban egy Végállapot jelzés: állapotgép terminálás Emlékező állapotok (history state) A legutolsó aktív állapotkonfigurációt tárolja Egyszerű emlékező állapot: csak az adott finomítási szinten Mélyen emlékező állapot: a mélyebb finomítási szinteket is Mit jelent az emlékező állapothoz húzott bemenő átmenet? Tüzelésekor a tárolt állapotkonfigurációba kerül az objektum Az emlékező állapot egy hivatkozás a tárolt állapotkonfigurációra Mit jelent az emlékező állapotból húzott kimenő átmenet? Alapértelmezett tárolt állapotot jelöl ki arra az esetre, ha előzőleg még nem volt aktív állapot H H * 16

Példa: Emlékező állapot Print_job Handle Get ev1 H Process Print Reply Close 17

Állapottérképek elemei Állapot Állapotátmenet Emlékező állapot Feltétel Kezdőállapot Végállapot Állapotcsonk (Szinkronizáció) StateName s1 s2 H H* s1 sn * 18

(Állapot)átmenetek Állapotátmenetek megadása Szintaxis: trigger [guard] / action trigger: kiváltó esemény guard: az átmenet őrfeltétele Predikátum az állapotváltozók és esemény paraméterek felhasználásával Állapotra való hivatkozás is lehet: is_in(state) action: akció (művelet) akció szemantika: művelet részletezése 19

Time-out mint trigger: Átmenetek specialitásai Fennáll, ha az objektum az átmenethez tartozó kiindulási állapotban tartózkodik végig az adott időintervallumban Összetett átmenetek: Szétváló (fork): konkurens régiókban lévő állapotokba való együttes belépés Egyesülő(join): konkurens régiókban lévő állapotokból való együttes kilépés Elágazó (condition): több, őrfeltételtől függő átmenet egyszerűsített jelölése (szegmensek) Állapothierarchián átívelő átmenetek Megengedett (nem elegáns) 20

Példa: Állapotátmenetek Work Phase1 Phase2 Prepare Passed Act1 Act2 Act3 tm(50) Missed [not_fatal] / recovery error [fatal] / report_status illegal_activity [fatal] / report_status Failure 21

Az állapottérképek informális szemantikája (UML szerinti szemantika) 22

Alapelemek: Szemantika: Hogyan működik? Állapotgép: Az állapottérkép írja le a viselkedését Eseménysor + Ütemező: Futtató rendszer (az állapotgép szempontjából külső elemek) e Eseménysor Ütemező Állapotgép 23

Mit ad meg a szemantika? Mit tesz az állapotgép egy esemény hatására állapotgép egy lépése Állapotátmenetek tüzelnek Újdonság: egy esemény hatására több konkurens állapotátmenet tüzelhet Állapotkonfiguráció változik Több aktív állapot lehet Aktív állapot minden régiójában kell legyen egy aktív állapot Aktív állapot OR finomításában kell legyen egy aktív állapot Egy OR finomításban illetve egy régióban csak egy aktív állapot lehet Rekurzívan érvényes 24

Alaptulajdonságok Egyenként feldolgozott események Az ütemező akkor küld újabb eseményt, ha az előző feldolgozása teljes egészében megtörtént Stabil állapotkonfiguráció kialakult: nincs trigger nélküli átmenet Események teljes feldolgozása (run to completion) Átmenetek maximális halmaza tüzel (minden engedélyezett átmenet tüzel, kivéve ha ezt konfliktus megakadályozza) Ezek tüzelése után dolgozza fel a következő eseményt Az eseményfeldolgozás a szemantika lényege Ez alapján lehet programkód alakjában megvalósítani az állapotgépet (forráskód generálás) 25

Az eseményfeldolgozás lépései 1/4 Külső feltétel: Ütemező a stabil konfigurációban lévő állapotgépnek egy eseményt juttat Engedélyezett átmenetek: Kiindulási (forrás-) állapot aktív A kiválasztott esemény az átmenet triggere Az őrfeltételek teljesülnek Esetek az engedélyezett átmenetek száma alapján: Ha csak egy van: Tüzelhet! Ha nincs: Halasztott-e az esemény? Igen: tárolás, új esemény kérése az ütemezőtől Nem: esemény eldobható (hatás nélküli)... Ha több van: Tüzelő átmenetek kiválasztása szükséges Befolyásol: A konfliktus 26

Példa: Konfliktus A t1,, t5 átmenetek ugyanazon e eseményre triggereltek. Melyek nem tüzelhetnek együtt? a1 a111 a11 a121 a12 t4: a21 a2 t1: t2: t3: t5: a112 a113 a122 a22 - Egyszerre nem tüzelhetnek: (t1,t2); (t1,t4); (t2,t4); (t3,t4) - Nem engedélyezett: t5 (forrásállapota nem aktív) - Egyszerre is tüzelhetnek: (t1,t3); (t2,t3); 27

Eseményfeldolgozás lépései 2/4 Tüzelő átmenetek kiválasztása: Maximális számú átmenet, nem lehet közöttük konfliktus Konkurens átmenetek szimultán tüzelése Konfliktusban lévő átmenetek: Ugyanazt az állapotot hagyják el, pontosabban az elhagyott állapothalmazok metszete nem üres Konfliktus feloldása: Prioritás alapján: egy átmenet prioritása nagyobb, ha az átmenet kiindulási állapota az állapothierarchiában (finomításban) alacsonyabb szintű OO koncepció: a finomítás felüldefiniál Véletlenszerű választás, ha függetlenek 28

Példa: Konfliktusfeloldás A t1,, t5 átmenetek ugyanazon e eseményre triggereltek. Melyek tüzelhetnek együtt? a1 a2 a11 a12 t4: a21 a111 a121 t1: t2: t3: t5: a112 a113 a122 a22 - Nagyobb prioritású t4-nél: t1 és t2 - Tüzelhet: (t1,t3) vagy (t2,t3) 29

Eseményfeldolgozás lépései 3/4 Kiválasztott átmenetek tüzelnek: Sorrend véletlenszerű (nincs köztük konfliktus) Akció végrehajtási sorrend nemdeterminisztikus Egy átmenet tüzelése: 1. Kiindulási állapotok elhagyása Alacsonyabb hierarchiaszinten először Kilépési akciók végrehajtása (exit akciók) 2. Átmenetek akcióinak végrehajtása 3. Célállapotokba való belépés új konfiguráció Magasabb hierarchiaszinten először Belépési akciók végrehajtása (entry akciók) 30

Példa: Akciók sorrendezése S1 entry / e1 exit / x1 S2 entry / e2 exit / x2 S11 entry / e11 exit / x11 t: e / a1; a2 S21 entry / e21 exit / x21 Akciók sorrendje: x11; x1; a1; a2; e2; e21 31

Eseményfeldolgozás lépései 4/4 Belépés új konfigurációba különféle jellegű célállapotok esetén: Ha egyszerű (nem finomított) a célállapot: Új konfiguráció része lesz Ős állapotai (amelyek finomításában szerepel) is aktívak lesznek Aktívvá váló ős állapotok minden régiójában lesz aktív állapot (kezdőállapot jelöli ki) Ha OR finomítása van a célállapotnak: A finomításban a kezdőállapot jelöli ki az aktív állapotot Ha AND finomítása van a célállapotnak: Minden régiójában kell legyen aktív állapot (kezdőállapot jelöli ki) Ha emlékező állapot: Az utoljára elhagyott állapotkonfiguráció lesz újra aktív Ha nem volt még ilyen: a kimenő él határozza meg Ha nem stabil az állapot: azonnali továbblépés 32

Példa: Belépés konkurens állapotba S1 S2 S21 S22 S24 t: S23 H S31 S32 S25 A t átmenet tüzelése után mi lesz az új állapotkonfiguráció? 33

Mintapélda Közlekedési lámpa vezérlője egy főútvonal és egy mellékútvonal kereszteződésében Bekapcsoláskor: kezdetben főútvonal számára zöld Kikapcsoláskor: villogó sárga Zöld, sárga, piros váltás: időzítő eseményre Főútvonalon 3 várakozó: időzítőtől függetlenül zöld jelzés szükséges Főútvonalon tilosban áthajtók: fényképezés Ez a funkció kézzel ki-be kapcsolható 34

1. Lámpaváltás Off off do/blink off off T2 Yellow T1 Green Red on off T4 Red Yellow T3 35

2. Állapothierarchia Off off do/blink On T2 Yellow T1 Green Red on T4 Red Yellow T3 36

3. Konkurens alállapotok off On T2 Yellow Red Camera Count Off do/blink T1 Green T4 on Red Yellow T3 37

4. Teljes vezérlő off Off do/blink on On T2 Yellow T1 Green T4 Red Yellow T3 H Red On ManualOff ManualOn Off Camera CarGo Shoot Count Count0 CarIn Count1 CarIn Count2 CarIn 38

Állapottérképek szerepe az UML 2 esetén Állapot alapú, eseményvezérelt működés leírása Aktív objektumok viselkedésének leírása Felhasználás: Viselkedés szintű kódgenerálás Viselkedés verifikációja Akciók formalizálása: UML 2 Action Semantics Metódushívás Attribútum olvasás, írás (sokféle művelet) Színezett Petri-hálókhoz hasonlító alapelvek (ld. később) 39

Állapottérképek alapjai (összefoglalás) Kiterjesztések Állapottérkép szintaxis Állapothierarchia Konkurens régiók Összetett átmenetek Emlékező állapotok Állapottérkép informális szemantika Átmenetek engedélyezettsége Tüzelőátmenetek kiválasztása Átmenetek tüzelése Új állapotkonfiguráció kialakulása 40

Állapottérképek egy formális szemantikája: Leképézés KTS-re hierarchikus automatákon keresztül (kiegészítő anyag) 41

Modellek a formális ellenőrzéshez Modellellenőrzés elvégezhető Mérnöki modellek Magasabb szintű formalizmusok SC, PN, CPN, DFN Alapszintű matematikai formalizmusok KS, LTS, KTS Modellleképzés 42

Szemantika hozzárendelés leképezéssel Hierarchikus automata KTS Állapottérkép Modellellenőrző Hierarchikus automata: Absztrakt szintaxis az UML állapottérképekhez Szintaktikai transzformáció Kripke tranzíciós rendszer UML állapottérkép formális szemantikája Formális verifikációra alkalmas formalizmus Modellellenőrzés A formális szemantika egy felhasználása 43

Hierarchikus automata Szekvenciális automata: A = (S, Act, T) Sállapotok halmaza, s0 S kezdőállapot Actaz állapotátmenetek címkéi (trigger, akció,...) Taz állapotátmenetek T S Act S Hierarchikus automata: HA = (F, E, r, B) Fszekvenciális automaták halmaza Eesemények halmaza rfinomítási reláció Bcímkék halmaza 44

Példa: TV hierarchikus állapottérkép On Image Picture Clock clk clk NoClock Off Sound off Standby SoundOn on snd mute out in txt txt Videotext SoundOff out Disconnected 45

Példa: TV hierarchikus automata Top On Image Picture Clock clk clk NoClock Off Sound off Standby SoundOn on snd mute out in On Off txt txt Videotext SoundOff out Disconnected Image Sound A1 Picture Videotext SoundOn SoundOff Standby Disconn. A2 Clock NoClock r(on) = {Image, Sound}, r(off) = A1 r(show) = A2 46

A hierarchikus automata átmeneteinek címkéi Az állapottérkép hierarchián átívelő átmenetei: Legkisebb közös ős szintjére vannak hozva Forrás állapotok (amiket elhagy) befoglalva Cél állapotok (ahová belép) befoglalva Így látszik, mit kell elhagyni és hová kell belépni Konfliktusok explicit megjelennek HA átmenet címkéjének elemei: Eredeti forrás állapot (mélyebben lehet): SR(t) Eredeti cél állapot (mélyebben lehet): TD(t) Trigger esemény: TG(t) Akciók: AC(t) Őrfeltétel: GD(t) 47

Példa: HA átmenetek címkéi Állapottérkép részlet: On on t1: Off Standby Disconn. Top HA részlet: On t1: Off Standby Disconn. t1 címkéje: (eredeti forrás, cél, trigger, akció, őrfeltétel) ({Standby},, on,, ) SR(t) = {Standby} 48

Állapot-hierarchia és prioritás Konfliktusok meghatározása: HA modellben az átmenet forrásának jelölése: SRC(t) t1és t2 átmenetek konfliktusban vannak, ha a finomítási hierarchiában (fában) azonos út mentén vannak, azaz SRC(t1) = SRC(t2) vagy SRC(t1) r*(src(t2)) vagy SRC(t2) r*(src(t1)) itt r* reláció kiterjesztett az alatta lévő teljes hierarchiára Állapotátmenetek prioritása: A mélyebben lévő SR(t) lehet a meghatározó Ha nincs SR(t) akkor SRC(t), egyébként SR(t) határozza meg: {s s SRC(t) ha SR(t)=0 } SR(t) 49

Prioritás kezelése Egy állapotátmenet tüzelésének feltétele: Nincs nagyobb prioritású engedélyezett átmenet a többi szekvenciális automatában HA hierarchia alsóbb szintjein: Nagyobb prioritású átmenetek vannak HA hierarchia felsőbb szintjein: SR miatt lehet nagyobb prioritású átmenet! Bevezetett jelölés: A P, P a felülről származó, de nagyobb prioritású engedélyezett átmenetek halmaza, mint kényszer az A automata tüzelésekor 50

A környezet modellezése Lehetőségek: Zárt rendszer: A környezetet is modellezzük Csak állapotgép(ek) állít(anak) elő új eseményeket Nyitott rendszer: A környezetet nem modellezzük Érkeznek külső események, amiknek a forrása nincs a modellben Továbbiakban: Zárt rendszerrel foglalkozunk Adatkezeléstől eltekintünk (csak események) Emlékező állapotok nincsenek 51

Szemantika: Kripke tranzíciós rendszer KTS = (S,, L) és Act S állapotok halmaza: (C,Q) C: állapotkonfigurációk ( top HA-tól indulva lefelé) Q: eseménysor állapotok s0kezdőállapot: (C0, Q0) kezdő állapotkonfiguráció és eseménysor L állapot címkézés: C állapotkonfigurációkhoz összegyűjtve átmenet reláció (lépés): (C,Q) (C,Q ) (1) Q = remove(e,q) (2) Top :: (C, {e}) T (C, Q ) (C,Q) (C, join(q,q )) 52

Szabálykészlet Kripke-struktúra relációjának megadása: HA T relációja segítségével történt T-ben lévő átmenetek tüzelnek a HA-ban Mely átmenetek lesznek T-ben? HA T relációjának megadása: A szekvenciális automaták tüzelése 3 szabály szerint történhet: Lépés ( progress ) Kompozíció ( composition ) Henyélés ( stuttering ) 53

1. A lépés szabálya Egy A P automata t átmenete lokálisan tüzel Feltételek: A t átmenet az automatában engedélyezett: SR(t), SRC(t) az aktuális konfiguráció része Nincs sem az SRC(t) alatt lévő HA-kban, sem P-ben (a felső szintű automatákban) nagyobb prioritású engedélyezett átmenet Következmény: A P :: (C, {e}) T (C, Q ) Ttüzelő átmenetek: T = {t} C új konfiguráció: t és TD(t) határozza meg Q új események: AC(t) 54

2. A kompozíció szabálya Egy A P automata nem tüzel, hanem összefogja az alacsonyabb szintű automaták tüzeléseit Feltételek: Az alatta lévő A i HA-k tüzelnek: A i P :: (C, {e}) T i (C i, Q i ) Vagy ha T i =, akkor lokálisan sem tüzel (P miatt) Következmények: Tüzelőátmenetek: T = j T i Új konfiguráció: {s} j C i (s az eredeti állapot) Új eseménysor: join_all i (Q i ) 55

3. A henyélés szabálya Egy A P automata nem tüzel, állapota nem változik Feltételek: Minden lokálisan engedélyezett átmenetnél van nagyobb prioritású P-ben, vagy Nincs alsóbb szintű automata, amit összefoghat Következmények: Tüzelőátmenetek: T = Új állapot: marad a régi... Új eseménysor: nincs új generált esemény 56

Szabályok használata Rekurzív jellegű feltételek: Kompozíció szabálya Egy adott automata tüzelése függ Hierarchiában alatta elhelyezkedő HA-któl: van-e engedélyezett átmenetük Hierarchiában fölötte elhelyezkedő HA-któl; P mint felülről származó kényszer (ld. kompozíció) Minden átmenet tüzel, amire van érvényes szabály 58

A szabályok áttekintése Állapottérkép Hierarchikus automata A P lépés A P kompozíció A P henyélés (C,Q) (C,Q ) KTS lépése Az állapottérkép szemantikája a KTS KTS: ((C,Q), L) 59

Mit kezdünk a formális modellekkel? Állapottérkép alapján: Forráskód generálása Több megvalósítási minta Futási idejű verifikáció: Monitorkód generálása Állapottérkép mint referencia (helyes vezérlési folyamat megadása az ellenőrzéshez) Modellellenőrzés PLTL testreszabható állapottérkép modellekre Tesztek generálása Modellellenőrzővel megvalósítható (ld. korábban) 60

Egy kis kitérő: Forráskód szintézis időzített automata modellek alapján 61

Az alkalmazás és a formalizmus Beágyazott vezérlők: Eseményvezérelt, állapot alapú Egyszerű akciók Elosztott is lehet Kommunikáció Valósidejű Időzített automaták: Véges automata alapú (állapotok, átmenetek) Akciók változókon Automaták hálózata Szinkron kommunikáció Óraváltozók használata 62

A kódgenerálás alapelvei 65

A kódgenerálás alapelvei 66

A kódgenerálás alapelvei 67

A formális szemantika leképzése forráskódra A generált kód felépítése: Folyamatos működés Állapothoz tartozó változók inicializálása, Csatornákra történő figyelés indítása Állapotátmenetek folyamatos ellenőrzése Állapotátmenet kezelése, Csatornafigyelések leállítása 69

Modell reprezentáció Konkrét modell reprezentáció: Eclipse Modelling Framework modell 70

A kódgenerálás megvalósítása Template alapú kódgenerálás: Java Emitter Templates (JET) Java utasítások: Modell bejárása Kódgenerálási minta: C kódrészletek kiírása <% Java utasítás %> <%= kiírandó Java utasítás %> <%for (Location loc : template.getlocations()) { %> void entertolocation<%= loc.getid() %> ( ) { statereg = <%= loc.getid() %>; waitfunc = &waitinlocation<%= loc.getid() %>; exitfunc = &exitfromlocation<%= loc.getid() %>; <%if (settings.getloggingmode() == SettingsHandler.LoggingModes.OFFLINE) { %> offlinelogfunction(<%=loc.getid()%>, locationlog); 71

A platformszolgáltatások megvalósítása Nem triviális kódrészleteket igényel (library) Időkezelés (hardver beállítása, interrupt, ) Kommunikáció (pl. szinkron kommunikáció) 72

A platformszolgáltatások beillesztése Szemantikához kötődő elvárások: Kommunikáció Órakezelés Ki- és bemenetek 73

A platformszolgáltatások beillesztése 74

A platformszolgáltatások beillesztése <?xml version="1.0" encoding="utf 8"?> <config> <communication> <implementation>../../api/api.c</implementation> </communication> <timing> <include>sdl/sdl.h</include> <waitfunction>sdl_delay(100)</waitfunction> <implementation>clockfunctions.c</implementation> <logging> <mode>online</mode> <implementation>logfunctions.c</implementation> </logging> 75

A platformszolgáltatások beillesztése <% if (settings.getloggingmode() == SettingsHandler.LoggingModes.OFFLINE) { %> offlinelogfunction(<%=loc.getid()%>, locationlog); <%} else if (settings.getloggingmode() == SettingsHandler.LoggingModes.ONLINE) {%> onlinelogfunction("<%=loc.getname()%>"); <%}%> 76

Forráskód szintézis állapottérkép specifikáció alapján 78

Cél: Megvalósítási minták Vezérlési struktúra szintézise Akciók részletezése: Akció nyelv szükséges Többféle megvalósítási minta Kettős elágazás HSM, QHSM EHA Különbségek Állapottérkép elemkészlet támogatása Memóriafoglalás Sebesség (eseményfeldolgozás, vezérlési struktúra) 79

Kettős elágazás megvalósítási minta TrafficLight state: State handler(event: Event) switch (state) { case GREEN: switch (event) { case tgreen: /* Yellow entry */ state = YELLOW; break; } } Egyszerű és hatékony Állapothierarchiát és konkurens viselkedést nem támogat 80

A State megvalósítási minta (Gamma, 1994) Modellezett osztály TrafficLight concretestates active State switchevt() carstopevt() Absztrakt osztály Eseménykezelő interfész Az Az eseménykezelő megvalósítása minden állapotban külön-külön Yellow switchevt() carstopevt() Green switchevt() carstopevt() 81

Hierarchikus állapotgép minta (Samek, 2002) Tagfüggvény pointer Eseménykezelők Minden állapothoz metódusok Az Az esemény feldolgozása (tran), vagy továbbítása a hierarchiában Absztrakt osztály Esemény propagálása a hierarchián QHsm Átmenetek megvalósítása state: QState (ki- (ki-és és belépési akciók) dispatch(event: QEvent) tran(target: QState) TrafficLight cameraon(event: QEvent): QState cameraoff(event: QEvent): QState OR jellegű finomítást támogat Konkurens viselkedést nem támogat 82

Kiterjesztett hierarchikus automata minta Structure State representation entry exit Action refinement Automaton State Configuration substate container associated entered enabling trigger Event Transition Guard disabling guard A statikus struktúra a hierarchikus automata metamodellje alapján <<ordered>> asszociációk (sorrend kötött a modell alapján) Pl. belépési sorrend, akció sorrend, Konfiguráció: aktív állapotok kijelölése 83

Kiterjesztett hierarchikus automata minta C struct Structure State representation entry exit Action C struct Enum C struct refinement associated Automaton State Configuration substate container C struct trigger Event Transition Guard disabling entered enabling guard Megvalósítás ANSI C-ben: C struktúrák 84

Kiterjesztett hierarchikus automata minta Structure Asszociációk: Azonosító tömbök tömbök refinement State representation entry Action Automaton State Configuration substate container trigger exit associated Event Transition Guard disabling entered C függvény mutatók Bitvektorok az az aktív aktívállapotokhoz (nem (nem konstans) C függvény mutató mutató enabling guard Megvalósítás ANSI C-ben: Függvény mutatók Azonosító tömbök 85

Közös interpreter funkció A minta megvalósítása Formális szemantikán alapul Állapot belépés: előre kiszámolva Állapot kilépés: rekurzív függvénnyel Paraméterek: Statikus struktúra: osztályonként egy Konfiguráció: példányonként egy-egy Feldolgozandó esemény Visszatérési érték: Új állapotkonfiguráció Statikus struktúra (TrafficLight) Állapotok azonosítóval hivatkozhatók pointer helyett; méret csökkenthető 86

Futásidejű monitor szintézise az állapottérkép specifikáció alapján 87

Futási idejű verifikáció: Bevezetés Tényleges viselkedés (programfutás) összevetése referencia viselkedéssel (modell vagy specifikáció) Tényleges viselkedésről futásidejű információ: Monitorozás vagy jelzőszámok átvitele az alkalmazásból Referencia viselkedésről tárolt információ: Állapottérkép modell vagy temporális logikai specifikáció Megvalósítási módok Végrehajtható ellenőrző kódrészletek (assertions) Külsőmonitor (watchdog) Állapottérkép mint referencia Állapotok sorrendjének és akcióinak ellenőrzése Vezérlést befolyásoló tranziens hibák detektálása 88

Belső viselkedés monitorozása Állapottérkép referencia Működési hibák (tranziens) (Kézi kódolás hibái) Eseménysor Monitor komponens Állapottérkép megvalósítás Fq Gs Gs Temporális logika Automatikus felműszerezés Jelzőszámok az az állapotokról, átmenetekről, akciókról,...... 90

Információáramlás a monitor (watchdog) felé 91

Ellenőrzés állapottérkép referencia alapján Szisztematikus transzparens felműszerezés: Explicit jelzések a monitor számára Elhagyott állapotok Végrehajtott akciók Belépett állapotok Megvalósítási példa: Aspektus-orientált programozás Run-time Monitor ObservedApp Monitor RTCContext TransitionContext 92

Ellenőrzés állapottérkép referencia alapján Szisztematikus transzparens Starting felműszerezés: Explicit jelzések a monitor számára Elhagyott állapotok Végrehajtott akciók Belépett állapotok Átmenet tüzelése transition üzenet Forrás konfiguráció elhagyása Megvalósítási példa: Akciók Aspektus-orientált végrehajtása programozás ObservedApp MessageQueue msgq Cél konfigurációba Run-time + sendtrstarting Monitor való belépés Monitor Transition finished üzenet RTCContext TransitionContext 93

Ellenőrzés állapottérkép referencia alapján public Szisztematikus public aspect transzparens aspect BehavioralMonitoring { felműszerezés: Explicit jelzések a monitor számára Elhagyott állapotok Végrehajtott akciók Belépett állapotok Megvalósítási példa: Aspektus-orientált programozás ObservedApp } Extra Extra kód kód átmenet tüzeléséhez (Java (Java AOP) AOP) // // Define Definepattern patternmatching pointcut firingtransitionpattern call call (StatechartBase+.fireTransition(Transition t)); t)); // // Define Defineinstrumentation to tobe be applied applied around(): firingtransitionpattern() { msgq.sendtrstarting(); proceed(); msgq.sendtrfinishing(); } Run-time Monitor Monitor RTCContext TransitionContext 94

A monitor struktúrája Monitor felépítése: Az állapotgép szemantika alapján végzett ellenőrzés RTC (run-to-completion) context Transition context RTC RTC kontextus Inicializálás Esemény-feldolgozás kezdete és és vége vége (állapotok) Átmenet kontextus részére üzenetek ObservedApp Run-time Monitor Monitor RTCContext Állapotátmenet kontextus Állapotból kilépés, állapotba belépés, akciók akciók TransitionContext 95

Run-to-completion context (RTCContext) Uninitialized initstarting initentry [ieok] initfinishing[ifok] Stable Initialization evtprocstarting [epsok] evtprocfinishing [epfok] trstarting [tsok] / createtrctx Transient dispatch 96

Run-to-completion context (RTCContext) Uninitialized Inicializálás közben initentry: A megfigyelt alkalmazás belépett egy egy kezdőállapotba ieokőrfeltétel: (i) (i) az az állapot állapot a kezdő kezdőállapotkonfigurációba tartozik, (ii) (ii) inaktív inaktív volt volt és és (iii) (iii) minden minden szülő szülőállapota is is aktív. aktív. initstarting initentry [ieok] initfinishing[ifok] Stable Initialization evtprocstarting [epsok] evtprocfinishing [epfok] trstarting [tsok] / createtrctx Transient dispatch 97

Run-to-completion context (RTCContext) initstarting initfinishing[ifok] Stable Uninitialized Inicializálás befejezése A megfigyelt alkalmazás initentry [ieok] belépett a kezdő kezdőállapotkonfigurácóba. Initialization ifok ifokőrfeltétel: A kezdő kezdőállapotkonfiguráció minden minden állapota aktív. aktív. evtprocstarting [epsok] evtprocfinishing [epfok] trstarting [tsok] / createtrctx Transient dispatch 98

Run-to-completion context (RTCContext) initstarting initfinishing[ifok] Stable Initialization Uninitialized initentry [ieok] evtprocstarting [epsok] evtprocfinishing [epfok] Eseményfeldolgozás indul indul A megfigyelt alkalmazás elkezdett feldolgozni egy egy eseményt. trstarting [tsok] / createtrctx Transient dispatch 99

Run-to-completion Átmenet context tüzelése (RTCContext) initstarting initfinishing[ifok] A megfigyelt alkalmazás elkezdte egy egy átmenet tüzelését. tsokőrfeltétel: (i) (i) a trigger triggeresemény az az éppen éppen feldolgozott esemény, (ii) (ii) forrás forrás állapotok aktívak, (iii) (iii) prioritások és és őrfeltételek Uninitialized megfelelőek. createtrctx akció: akció: új új átmenet kontextus létrehozása (transition context). Ebben Ebben folytatódik az az ellenőrzés (dispatch adja adja át át az az információt) Stable Initialization initentry [ieok] evtprocstarting [epsok] evtprocfinishing [epfok] trstarting [tsok] / createtrctx Transient dispatch 100

Run-to-completion context (RTCContext) Uninitialized Eseményfeldolgozás initstarting vége vége A megfigyelt alkalmazás befejezte az az Initialization eseményfeldolgozást. epfok epfokőrfeltétel: minden minden átmenet tüzelése befejeződött initfinishing[ifok] Stable initentry [ieok] evtprocstarting [epsok] evtprocfinishing [epfok] trstarting [tsok] / createtrctx Transient dispatch 101

Hibadetektálás az RTCContext esetén initstarting Uninitialized initentry [!ieok] initentry [ieok] Hibadetektálás Őrfeltétel hamis, hamis, vagy vagy nem nem várt várt üzenet üzenet jön jön initfinishing[!ifok] Fault detected initfinishing[ifok] Stable Initialization evtprocstarting [!epsok] evtprocstarting [epsok] evtprocfinishing [epfok] trstarting [tsok] / createtrctx Transient trstarting [!tsok] dispatch evtprocfinishing [!epfok] 102

Állapotátmenet kontextus (TransitionContext) Exiting states exitstate [xsok] / markinactive trassociated [taok] Entering states enterstate [esok] / markactive trfinishing [tfok] 103

Állapotátmenet elhagyása kontextus (TransitionContext) A megfigyelt alkalmazás elhagyott egy egy állapotot átmenet tüzelés tüzelés közben. Őrfeltétel: (i) (i) az az állapot állapot az az átmenet forrása forrása vagy vagy ennek ennek finomítása, (ii) (ii) az az állapot állapot aktív, aktív, (iii) (iii) egy egy finomítása sem sem aktív. aktív. Akció: Akció: a konfiguráció frissítése. Exiting states exitstate [xsok] / markinactive trassociated [taok] Entering states enterstate [esok] / markactive trfinishing [tfok] 104

Állapotátmenet kontextus (TransitionContext) Exiting states Az Az átmenet akciójának végrehajtása A forrás forrás állapotok elhagyása megtörtént és és az az akció akcióvégrehajtása valósul valósul meg. meg. Őrfeltétel: Minden Minden forrásállapot elhagyása megtörtént és és a megfelelő akció akciózajlik. exitstate [xsok] / markinactive trassociated [taok] Entering states enterstate [esok] / markactive trfinishing [tfok] 105

Állapotátmenet kontextus (TransitionContext) Exiting states Belépés a cél cél állapotokba A megfigyelt átmenet belép belép egy egy állapotba a tüzelése során.. során.. Őrfeltétel: (i) (i) az az állapot exitstate állapot a célállapotok [xsok] / egyike, egyike, (ii) (ii) inaktív inaktív és és (iii) (iii) minden markinactive minden szülő szülőállapota aktív. aktív. Akció: Akció: az az állapotkonfiguráció frissítése. trassociated [taok] Entering states enterstate [esok] / markactive trfinishing [tfok] 106

Állapotátmenet kontextus (TransitionContext) Exiting states exitstate [xsok] / markinactive trassociated [taok] Entering states Az Az átmenet tüzelés befejezése A megfigyelt átmenet tüzelése befejeződik. Őrfeltétel: minden minden célállapot aktív enterstate [esok] / aktív lett lett az az új új állapotkonfiguráció szerint. szerint. markactive trfinishing [tfok] 107

Hibadetektálás a TransitionContext esetén Exiting states Hibadetektálás Őrfeltétel hamis, hamis, vagy vagy nem nem megfelelő üzenet üzenet érkezik. exitstate [xsok] / markinactive exitstate [!xsok] trassociated [taok] trassociated [!taok] Fault detected Entering states trfinishing [tfok] enterstate [esok] / markactive enterstate [!esok] trfinishing [!tfok] 108

Állapottérkép szintaxis Összefoglalás Kiterjesztések az egyszerű állapotdiagramhoz képest Állapottérkép szemantika Informális szemantika Formális szemantika: Leképezés KTS-re kiterjesztett hierarchikus automaták alapján A formális modellek használata Forráskód generálás (szintézis) Futásidőbeli monitorozás állapottérkép referencia alapján 118