Futásidőbeli verifikáció

Hasonló dokumentumok
Futásidőbeli verifikáció

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

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

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

Alapszintű formalizmusok

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

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

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

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

Modell alapú tesztelés mobil környezetben

Részletes szoftver tervek ellenőrzése

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

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

Részletes tervek ellenőrzése

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

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

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

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

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

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

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

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

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

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

R3-COP. Resilient Reasoning Robotic Co-operating Systems. Autonóm rendszerek tesztelése egy EU-s projektben

Szoftverminőségbiztosítás

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

A modell-ellenőrzés gyakorlata UPPAAL

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

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

Alapszintű formalizmusok

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

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

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

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

Időzített átmeneti rendszerek

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

Szoftverminőségbiztosítás

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

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

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

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

Hibatűrés. Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Nagy bonyolultságú rendszerek fejlesztőeszközei

Java II. I A Java programozási nyelv alapelemei

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

Biztonságkritikus rendszerek Gyakorlat: Architektúrák

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

Kiterjesztések sek szemantikája

Java II. I A Java programozási nyelv alapelemei

Mintapélda: Rendszertesztelés a SAFEDMI projektben

Struktúra alapú teszttervezési módszerek

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

A KUTATÁS EREDMÉNYEI ZÁRÓJELENTÉS

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

Formális módszerek GM_IN003_1 Bevezetés

UML (Unified Modelling Language)

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

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

1. Jelölje meg az összes igaz állítást a következők közül!

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

A formális módszerek szerepe

Architektúra tervezési példák: Architektúrák biztonságkritikus rendszerekben

Sztochasztikus temporális logikák

Követelmények formalizálása: Temporális logikák

Struktúra alapú teszttervezési módszerek

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

V & V Feladatok. V & V Feladatok

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

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

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

Szoftver újrafelhasználás

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Norway Grants. Az akkumulátor mikromenedzsment szabályozás - BMMR - fejlesztés technológiai és műszaki újdonságai. Kakuk Zoltán, Vision 95 Kft.

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

ködös határ (félreértés, hiba)

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

BUDAPESTI MÛSZAKI EGYETEM Méréstechnika és Információs Rendszerek Tanszék. SPIN Mérési útmutató. Készítette: Jávorszky Judit

A hibakezelés tesztelése: Hibainjektálás

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

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

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

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

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Szoftverminőségbiztosítás

IoT alapú mezőgazdasági adatgyűjtő prototípus fejlesztési tapasztalatok

Dr. Mileff Péter

Összeállította Horváth László egyetemi tanár

Biztonságkritikus rendszerek architektúrája

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

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

Bokor Péter. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Alapszintű formalizmusok

Modell alapú tesztelés

Átírás:

Futásidőbeli verifikáció Szoftver- és rendszerellenőrzés előadás dr. Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Tartalomjegyzék Célkitűzések Használati esetek Futásidőbeli verifikációs technikák o Verifikáció referencia automaták alapján o Verifikáció temporális logikai követelmények alapján o Verifikáció LSC követelmények alapján o Verifikáció scenario követelmények alapján Implementációs tapasztalatok 2

Célkitűzések és használati esetek

Mit jelent a futásidejű verifikáció? Definíció: o Rendszerek viselkedésének ellenőrzése o működés közben (on-line), o formálisan specifikált követelmények alapján Motiváció o Megbízhatósági és biztonsági elvárások Biztonságkritikus rendszer: Elviselhető veszélygyakoriság IT infrastruktúra: Szolgáltatási szint biztosítása, o Futásidőbeli hibák elkerülhetetlenek Hardver komponensek véletlen hibái Szoftver tervezési, implementációs, konfigurálási hibák 4

Cél: Futásidőbeli hibadetektálás Futásidőbeli hibadetektálás a hibakezelés alapja o Klasszikus: Hardver hibák detektálása a forráskód alapján Pl. CFG ellenőrzés (watchdog processzorok) Csak működési hibákra, implementáció alapján o Ellenőrzés a követelmények alapján Szisztematikus (tervezési, kódolási, konfigurációs) hibákra is o Futásidőbeli verifikáció formalizált követelmények alapján Precíz követelmény megfogalmazás Automatikus ellenőrző (monitor) szintézisének lehetősége Példa: Reaktív hibakezelés o Hibadetektálás majd beavatkozás (pl. helyreállítás, biztonságos állapot beállítása, ) 5

Futásidőbeli verifikáció Használati eset 1: Futásidőbeli verifikáció Monitorok használata futásidőbeli hibadetektálásra o Formalizált követelmények ellenőrzése Pl. reaktív hibakezelés támogatása o A működési, konfigurációs és környezeti hibák detektálása Követelmények Monitor szintézis Működő rendszer Monitor 1 Monitor 2 Monitor n 6

Teszt oracle Használati eset 2: Teszt kimenet értékelése Monitorok használata mint teszt oracle o Teszt követelmények teljesítésének kiértékelése o Tervezési és megvalósítási hibák detektálása Követelmények Monitor szintézis Teszt végrehajtó Tesztelt rendszer (SUT) Monitor 1 Monitor 2 Monitor n 7

Ellenőrzési módszerek Kihívások o Követelmények formalizálása o Verifikációs algoritmusok kidolgozása Felműszerezés o Ellenőrzéshez szükséges információ megfigyelhetővé tétele o Erőforrásigény minimalizálása Elméleti eredmények gyakorlati aspektusai o Monitor szintézis o Kis erőforrásigényű, skálázható megvalósítás Alkalmazás beágyazott biztonságkritikus rendszerekben 8

Kihívások Ellenőrzési módszerek o Követelmények formalizálása ovégrehajtási Ellenőrzési algoritmusok szekvencia (trace) és ezek alapján megvalósítása specifikált temporális tulajdonságok ellenőrzése Felműszerezés Temporális logikák Referencia automaták o Ellenőrzéshez szükséges információ megfigyelhetővé tétele o Overhead Reguláris minimalizálás kifejezések Szerződés (design-by-contract) alapú monitorozás Kiértékelhető állítások (executable assertions) Elméleti eredmények mérnöki aspektusai Általános (specification-less) elvárások monitorozása o Monitor szintézis Konkurens végrehajtás követelményei (pl. holtpont, versenyhelyzet, sorosíthatósági konfliktus detektálása) o Kis erőforrás igényű, skálázható megvalósítás o Alkalmazás beágyazott biztonságkritikus rendszerekben 9

Kihívások Ellenőrzési módszerek o Követelmények formalizálása o Ellenőrzési algoritmusok és ezek megvalósítása Felműszerezés o Ellenőrzéshez szükséges információ megfigyelhetővé tétele oaktív Overhead és passzív minimalizálás felműszerezés Aktív: kódrészletek beillesztése Passzív: beavatkozás nélküli megfigyelés Elméleti eredmények mérnöki aspektusai Aktív felműszerezés megvalósítási technológiák Aspektus-orientált programozás (AOP) Tracematch: AspectJ kiterjesztés esemény-mintákhoz o Monitor szintézis o Kis erőforrás igényű, skálázható megvalósítás Szinkron és aszinkron monitorozás o Alkalmazás beágyazott biztonságkritikus rendszerekben 11

Példa: Keretrendszer monitor szintézishez MOP: Monitoring-Oriented Programming o FSM -- Finite State Machines o ERE -- Extended Regular Expressions o CFG -- Context Free Grammars o PTLTL -- Past Time Linear Temporal Logic o LTL -- Linear Temporal Logic o PTCaRet -- Past Time LTL with Calls and Returns o SRS -- String Rewriting Systems 13

Az itt bemutatott megoldások Alkalmazás: Vezérlés-orientált esetekben o Állapot alapú, eseményvezérelt viselkedés o Pl. biztonsági funkciókhoz (protokollokhoz) Hierarchikus (skálázható) futásidőbeli verifikáció o Lokális: Egy-egy komponens (vezérlő, ECU) viselkedése Referencia automata: vezérlési és egyszerű adathibák Lokális temporális logikai (TL) követelmények o Rendszerszintű: Komponensek interakciója Rendszerszintű temporális követelmények Scenario (LSC) alapú követelmények Kapcsolódás a modellvezérelt fejlesztéshez o Modell alapú kódgenerálás, felműszerezéssel 14

Hierarchikus monitorozás Rendszerkövetelmények Modellellenőrzés LSC monitor szintézis TL monitor szintézis Rendszerszintű monitorok Formális modell Tervezési verifikáció CFG monitor szintézis Automatikus kódgenerálás Felműszerezés Lokális vezérlési folyam monitorok Felműszerezett komponens Futásidőbeli verifikáció 16

Futásidejű verifikáció referencia automaták alapján Időzített automata modell alapján Állapottérkép modell alapján

Hierarchikus monitorozás Rendszerkövetelmények Modellellenőrzés LSC monitor szintézis TL monitor szintézis Rendszerszintű monitorok Formális modell Tervezési verifikáció CFG monitor szintézis Automatikus kódgenerálás Felműszerezés Lokális vezérlési folyam monitorok Felműszerezett komponens Futásidőbeli verifikáció 18

Monitorozás időzített automata alapján Monitor komponens Automata referencia Működési hibák (tranziens) (Kézi kódolás hibái) Interakciók (szinkron kommunikáció) Belső megvalósítás Automatikus felműszerezés: Jelzőszámok az állapotokról 19

Automatikus kódgenerálás Időzített automata (formalizmus) Formális szintaxis (metamodell) Formális szemantika (jelentés) Konkrét modell reprezentáció Forráskód minták Platform szolgáltatások Olvassa és bejárja Összeállítja Hivatkozza Kódgenerátor 20

Felműszerezés a forráskódban Inicializálás Rendszerciklus Felműszerezés Belépő függvény Állapotváltozók beállítása Csatornák figyelése Időzítések beállítása + Jelzőszámok küldése monitornak Várakozó függvény Felműszerezés Kilépő függvény Automata szint Állapot szint 21

Jelzőszám alapú monitorozás Komponens Felműszerezés Jelzőszámok: állapotok Detektálható hibák: Hibás állapot / átmenet szekvencia Leragadás (timeout) Időzítések megsértése Lokális vezérlési folyam monitor Referencia automata Kódgenerálás alapja Referencia automata 22

Monitorozás állapottérkép alapján Monitor komponens Állapottérkép referencia Működési hibák (tranziens) (Kézi kódolás hibái) Eseménysor Állapottérkép megvalósítás Automatikus felműszerezés: Jelzőszámok az állapotokról, átmenetekről, akciókról,... 23

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

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

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

Ellenőrzés állapottérkép referencia alapján Szisztematikus transzparens felműszerezés: o Explicit jelzések a monitor számára Elhagyott állapotok, belépett állapotok Végrehajtott akciók RTC kontextus Inicializálás Esemény-feldolgozás kezdete és vége (állapotok) Átmenet kontextus részére o Megvalósítási példa: Aspektus-orientált programozás üzenetek ObservedApp Run-time Monitor Monitor RTCContext Állapotátmenet kontextus Állapotból kilépés, állapotba belépés, akciók TransitionContext 28 28

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

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

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ő állapotkonfigurácóba. Initialization ifok őrfeltétel: A kezdő állapotkonfiguráció minden állapota aktív. evtprocstarting [epsok] evtprocfinishing [epfok] trstarting [tsok] / createtrctx Transient dispatch 31 31

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

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

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

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

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

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

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

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

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

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

Futásidejű verifikáció temporális követelmények alapján Lineáris temporális logikai követelmények UPPAAL CTL követelmények (teszteléshez is)

Hierarchikus monitorozás Rendszerkövetelmények Modellellenőrzés LSC monitor szintézis TL monitor szintézis Rendszerszintű monitorok Formális modell Tervezési verifikáció CFG monitor szintézis Automatikus kódgenerálás Felműszerezés Lokális vezérlési folyam monitorok Felműszerezett komponens Futásidőbeli verifikáció 43

TL követelmények ellenőrzése TL követelmények Felműszerezés Felműszerezés Felműszerezés Komponens 1 Komponens 2 Komponens 3 Trace: Jelzőszámok: atomi kijelentések elemei (állapotok, változók, órák) TL monitor szintézis TL monitor 45

Monitorozás LTL kifejezések alapján Egy LTL kifejezés ellenőrzése a trace egy lépése esetén o Függőség az aktuális lépéstől: Boole logikai operátorok a lokális atomi kijelentéseken + lokális ( jelen idejű ) része a temporális operátoroknak o Függőség jövőbeli lépésektől: jövő idejű része a temporális operátoroknak A temporális kifejezés újraírása: Részkifejezések elválasztása o Az aktuális lépésben (Boole operátorokkal) kiértékelhető részkifejezések o A következő lépésben (egy X operátor után) kiértékelhető részkifejezések exp1 U exp2 = exp2 (exp1 X(exp1 U exp2)) Következő állapotra vonatkozó kifejezések 46

Kifejezések újraírása Definíció: Csatlakoztatási normálforma o A kifejezésben szereplő összes Until (U) temporális operátor valamely Next (X) temporális operátor hatókörében van, és o a kifejezés minden olyan része, amely nem esik Next temporális operátor hatókörébe, kizárólag And, valamint Not operátorokat tartalmaz Átalakítás csatlakoztatási normálformára o Boole operátorokra: De Morgan azonosságok o Temporális operátorokra: Visszavezetés X és U operátorokra Átalakítás: P U Q = Q (P X(P U Q)) = ( Q (P X(P U Q))) 48

Kiértékelő blokkok Belső logika: Az aktuális lépés kiértékelése (Boole logika) Kimenet: A trace jelen lépésében a kifejezés kiértékelése Bemenetek: o Lokális atomi kijelentések o Következő lépésben történő kiértékelés eredménye Ez a trace következő lépésében, az X operátor utáni kifejezéseket kiértékelő blokkok kimenete lesz (így blokkok láncolata képezhető) G(r (pud)) r d p T X(pUd) X(TU(rÙÙ(pUd))) 49

Példa: Kiértékelés a trace lépésein 1 2 s 0 s 1 s 2 d r d Ù d pud Ù G(r (pud)) Ù Ù Ù T X(TU(rÙÙ(pUd))) Ù p X(pUd) Ù X(pUd) pud Ù Ù X(pUd) p p r d TU(rÙÙ(pUd)) Ù Ù Ù Ù T X(TU(rÙÙ(pUd))) d Ù X(pUd) p pud Ù Ù X(pUd) p r TU(rÙÙ(pUd)) Ù Ù Ù Ù T X(TU(rÙÙ(pUd))) d Ù X(pUd) p Példa: G(r (pud)) felírása A G operátor definíciója Az U operátor felbontása e 1 Ue 2 = e 2 (e 1 X(e 1 Ue 2 )) = ( e 2 (e 1 X(e 1 Ue 2 ))) Normál forma: U csak X argumentumaként r Ù d G(r (pud)) Ù Ù p Ù T X(TU(rÙÙ(pUd))) Ù X(pUd) 50

Példa: A blokkok optimalizálása Ismétlődő részkifejezések egyszeri kiértékelése 51

Példa: Blokk típusok azonosítása s 0 1 s 1 2 s 2 r p d r p d r p d X(pUd) pud X(pUd) pud X(pUd) G(r (pud)) X(TU(r (pud))) TU(r (pud)) X(TU(r (pud))) TU(r (pud)) X(TU(r (pud))) 52

A blokk típusok meghatározása 53

Műveletek háromértékű logikával Blokk belseje: Háromértékű (ternáris) logika o A következő lépésben történő kiértékelés eredménye ismeretlen o Az ismeretlen legkésőbb a trace végén feloldható Műveletek háromértékű logikával: 54

Működési logika: 1. lépés G(r (pud)) r, p s 0 L(s 0 ) r d p T X(pUd) X(TU(rÙÙ(pUd))) False Unknown True 56

Működési logika: 2. lépés G(r (pud)) r, p s 0 L(s 0 ) r d p T X(pUd) X(TU(rÙÙ(pUd))) pud TU(rÙÙ(pUd)) p r T s 1 L(s 1 ) d p X(pUd) X(TU(rÙÙ(pUd))) False Unknown True 57

Működési logika: 3. lépés (trace vége) G(r (pud)) r, p s 0 L(s 0 ) r d p T X(pUd) X(TU(rÙÙ(pUd))) pud TU(rÙÙ(pUd)) p r T s 1 L(s 1 ) d p X(pUd) X(TU(rÙÙ(pUd))) pud TU(rÙÙ(pUd)) False Unknown True d s 2 L(s 2 ) r d p T X(pUd) X(TU(rÙÙ(pUd))) 58

Működési logika: Ismeretlenek feloldása G(r (pud)) r, p s 0 L(s 0 ) r d p T X(pUd) X(TU(rÙÙ(pUd))) pud TU(rÙÙ(pUd)) p r T s 1 L(s 1 ) d p X(pUd) X(TU(rÙÙ(pUd))) pud TU(rÙÙ(pUd)) False Unknown True d s 2 L(s 2 ) r d p T X(pUd) X(TU(rÙÙ(pUd))) 59

Monitor szintézis LTL alapú monitorozáshoz Monitor szintézis lépései o Kiértékelő blokk típusok generálása az LTL kifejezés átírása alapján (csatlakoztatási normál forma) o A kiértékelő blokk típusok belső logikájához tartozó forráskód generálása (adatstruktúra és kiértékelő fügvények háromértékű logikával) o Kiértékelő kontextus generálása a kiértékelő blokk típusok futásidőbeli példányosítására (a blokkok láncának építése) A monitorozás memóriaigénye o Legfeljebb lineáris a trace hosszával o Ismétlődő blokkok redukálhatók Összevetés más implementációkkal: o Symbolic term-rewriting: 30 160-szor lassabb o Alternating automata: 15 40-szer lassabb 60

CTL alapú monitorozás (UPPAAL TCTL) Használható trace-ek halmazának ellenőrzésére o Útvonal kvantorok: A: Minden útvonal, E: Létezik útvonal A monitorok mint teszt oracle használhatók egy teszt készlet esetén a lefutások halmazának ellenőrzésére o Speciális események: <New trace>, <End of last trace> Monitor szintézis o Egy trace ellenőrzése: Mint az LTL alapú ellenőrzés o Trace-ek sorozatának ellenőrzése (test suite): Megfigyelő automata Példa: Megfigyelő automata AF temporális operátorhoz 63

Futásidejű verifikáció LSC követelmények alapján Live Sequence Charts követelmények verifikációja

Hierarchikus monitorozás Rendszerkövetelmények Modellellenőrzés LSC monitor szintézis TL monitor szintézis Rendszerszintű monitorok Formális modell (időzített automaták) Tervezési verifikáció CFG monitor szintézis Automatikus kódgenerálás Felműszerezés Lokális vezérlési folyam monitorok Felműszerezett komponens Futásidőbeli verifikáció 65

LSC alapú követelmények Cél: Interakciók ellenőrzése intuitív leírás alapján o Szinkronizáció, üzenetek küldése és fogadása, lokális feltételek Formalizmus: Live Sequence Charts variáns o Message Sequence Chart kiterjesztése (Damm és Harel, 2001) o Precíz szemantika (UPPAAL: korlátozásokkal) o LSC alaptípusok, aktiválási módok, hideg és forró feltételek Prechart Main chart 66

LSC követelmények ellenőrzése LSC követelmények Felműszerezés Felműszerezés Felműszerezés Komponens 1 Komponens 2 Komponens 3 Trace: Jelzőszámok: interakciók elemei (üzenetek, állapotok, változók, órák) LSC monitor szintézis LSC monitor 67

LSC alapú monitor szintézise LSC követelmény Megfigyelő automata Monitor forráskód LSC monitor példány LSC monitor végrehajtási környezet 68

LSC alapú monitor szintézise A 1 2 3 A B 2 C 4 5 1 3 B C 5 C B 4 69

LSC monitorok végrehajtása Ütemező (végrehajtási környezet) szükséges o Egy-egy monitor indítása, leállítása o Visszajelzések kiértékelése, továbbítása LSC alaptípusok támogatása o Egzisztenciális: minta viselkedés (lefutásokra) o Univerzális: szükséges viselkedés (minden lefutásra) LSC aktiválási módok támogatása o Kezdeti o Invariáns o Iteratív 71

Futásidejű verifikáció scenario követelmények alapján Kontextusfüggő viselkedés monitorozása

Speciális kihívások Autonóm rendszerek (pl. robotok) ellenőrzése o Kontextusfüggő viselkedés (környezet érzékelése) o Adaptív rendszer (célok, végrehajtási stratégia) Követelmények specifikálása: Scenariok o Viselkedés: Események és akciók szekvenciája; Feltétel rész és kötelező (assert) rész o Hivatkozások a kontextusra (szituációkra) Kontextusfüggő viselkedés monitorozása: o Megfigyelni a futásidőbeli kontextus változásait o Ellenőrizni a rendszer viselkedését 73

A monitorozás szerepe vagy Követelmények Valós teszt környezet Megfigyelt események, akciók, kontextus változások Futási trace-ek Szimulátor Kihívás: Egy-egy trace hatékony ellenőrzése a scenario követelmények alapján Kiértékelés a monitorral 74

Követelmények formalizálása MSC (vagy LSC) alapú esemény- és akció szekvenciák Kiterjesztve kontextus hivatkozásokkal Kontextus (objektumok és relációk) egy adott lépésben Események az érzékelőktől Akciók a beavatkozók felé CF2 sd REQ2 Perception SUT : Robot Actuators SUT : Robot tooclose L : LivingBeing AE : AppearEvent assert loop(0,*) { Context: CF2 } hornbell Referencia egy kontextus fragmensre CF3 SUT : Robot near L : LivingBeing { Context: CF3 } Kontextus nézet (kontextus fragmensek) Scenario nézet (események és akciók sorozata) 75 Kötelező viselkedés

A monitor feladatai Megfigyelt trace: Események és akciók a SUT-tól A kontextus konkrét konfigurációi sd REQ2 Perception SUT : Robot Actuators CF2 sd REQ2 assert { Context: CF2 } SUT : Robot tooclose L : LivingBeing assert loop(0,*) hornbell AE : AppearEvent loop(0,*) CF3 { Context: CF3 } SUT : Robot near L : LivingBeing Események, akciók illesztése: Megfigyelő automata Kontextus fragmensek illesztése: Gráfminta illesztés 76

A megfigyelő automata konstrukciója Egy-egy megfigyelő automata a követelmény scenariokhoz o Állapotok: vágások a diagramon (mint az LSC esetén) o Tranzíciók: események, akciók, kontextus változások o Állapot típusok: teljesítve / megsértve / nem triggerelt sd REQ1 alt assert SUT : Robot { Context: CF1 humandetected animaldetected stop 0 1 t5:?humandetected t4:?animaldetected 2 3 t6: true 4 5 t9:!stop t1: true t2: context(cf1) t3: ~(?humandetected) ~(?animaldetected) t7: true t8: ~(!stop) A követelmény nem triggerelt A követelmény megsértve, ha itt áll meg A követelmény teljesítve, ha itt áll meg 77

Gráfminta illesztés A trace-ben megfigyelt kontextus szekvencia illesztése o A kontextusok gráf alapú reprezentálása o Gráf minták (követelmény kontextus fragmensek) illesztése gráf szekvenciákhoz (megfigyelt kontextus a trace-ben) Kontextus fragmens (követelmény): CF3 SUT : Robot near L : LivingBeing Megfigyelt kontextus sorozat: robot1 chair23 robot1 chair23 robot1 chair23 human2 table23 dog4 table23 dog4 table23 78

Megoldandó problémák Minden követelmény scenario illesztése egy trace-hez o A kontextus fragmensek dekompozíciója a közös részek egyszeres tárolásához és illesztéséhez A követelmény kontextus fragmensek illesztése egy trace minden lépésében o Konkurens monitorok indítása, amennyiben illeszkedik Az absztrakt relációk (pl. közel ) és az objektum hierarchia (pl. az asztal egy bútor ) feloldása o A trace előfelfolgozása az absztrakt relációk származtatásához o A típusok kompatibilitásának kezelése a kontextus elemek illesztésekor 79

Megvalósítási tapasztalatok Erőforrásigények felmérése

Megvalósítás Beágyazott platformokon o mitmót moduláris beágyazott rendszer vezetéknélküli kommunikációval Ipari esettanulmány: bit szinkronizációs protokoll o mbed mikrokontroller gyors prototípuskészítéshez Oktatási demonstrátor környezet 82

Jellemző erőforrásigények Az ellenőrzés időigénye (mbed platform) (50.000 state change) Kisebb, mint 12% többletidő (500.000 state change) Nagy overhead gyors vezérlési funkciókra 83

Jellemző erőforrásigények Kódméret növekedés (mbed platform) Kisebb, mint 5% kódméret növekedés 84

Scenario alapú monitorozás Prototípus megvalósítás o Scenario követelmények: Eclipse UML2 alapon o Monitor (teszt oracle): Java alkalmazás Komplexitás: a gráfminták illesztése o Legjobb eset: O(IM), legrosszabb eset: O(NI M M 2 ) N: a követelmény gráf minták száma M: a követelmény gráf minták átlagos mérete I: a trace-ben illesztendő kontextus gráf csúcsainak száma o A követelmény gráf minták (kontextus fragmensek) általában kicsik (így M értéke alacsony) 85

Összefoglalás Monitor szintézis futásidőbeli verifikációhoz o Automata alapú referencia viselkedés ellenőrzés Időzített automata modellek alapján UML állapottérkép modellek alapján: Monitorozás precíz szemantika szerint o LTL követelmények hatékony verifikációja Ellenőrző blokkok konstrukciója és példányosítása o LSC követelmények futásidőbeli verifikációja o Kontextusfüggő viselkedés ellenőrzése scenario követelmények alapján Események, akciók és kontextus fragmensek illesztése 87