400 likes | 477 Views
Modellellenőrzés. Varró-Gyapay Szilvia Formális módszerek az informatikában Dr. Varró Dániel fóliái alapján. A modellellenőrző, mint fekete doboz. Rendszermodell (tranzíciós rendszer). Követelmény/ Kérdés / Tulajdonság (TL formula). Igaz. Hamis + Ellenpélda. A modellellenőrzés definíciója.
E N D
Modellellenőrzés Varró-Gyapay Szilvia Formális módszerek az informatikában Dr. Varró Dániel fóliái alapján Formális módszerek az informatikában 2006/2007. Révkomárom
A modellellenőrző, mint fekete doboz Rendszermodell(tranzíciós rendszer) Követelmény/ Kérdés / Tulajdonság(TL formula) Igaz Hamis + Ellenpélda Formális módszerek az informatikában 2006/2007. Révkomárom
A modellellenőrzés definíciója • Definíció: • Adott a rendszer egy véges állapotú modellje (M) és egy temporális logikai tulajdonság (p) • A modellellenőrzésegy olyan automatikus módszer, mely szisztematikusan ellenőrzi, hogy e tulajdonság fennáll-e a rendszerben, azaz M |= p • Matematikailag: • M: tranzíciós rendszer (szintaxis) + Kripke struktúra (szemantika) • p: egy temporális logikai kifejezés • Kielégíthetőség: • Létezik olyan M melyre M |= p Formális módszerek az informatikában 2006/2007. Révkomárom
Globális avagy lokális modellellenőrzés • Globális modellellenőrzés • Adott M és p, • Keressük az összes olyan állapotot (értsd: amelyből indítva a rendszert), melyre pigaz • Az eredmény tehát állapothalmaz • Lokális modellellenőrzés • Adott M, p és egy s0 kezdőállapot • Igaz-e, hogy a kezdőállapotban igaz p (kezdőállapotból indítva a rendszert, igaz lesz p ) • A globális modellellenőrzés nyilvánvalóan megoldja a lokális problémát Formális módszerek az informatikában 2006/2007. Révkomárom
Verifikáció, validáció, hibakutatás • A modellellenőrzés alkalmazásának „végletei”: • verifikáció: bizonyítsuk be, hogy a tervezés alatt álló rendszer M modellje teljesíti a követelményekben megfogalmazott p tulajdonságo(ka)t • hibakutatás (debugging): keressünk automatikusan hibákat az M rendszermodellben • A modellellenőrzés akkor a leghatékonyabb, ha kombináljuk e két végletet • A követelmények „helyessége”: • validáció: egy adott temporális logikai formula hűen reprezentál-e egy p tulajdonságot • ha nem: a verifikáció értelmét veszti Formális módszerek az informatikában 2006/2007. Révkomárom
Modellellenőrzés a rendszertervezésben Formális módszerek az informatikában 2006/2007. Révkomárom
Klasszikus modellellenőrzés Formális módszerek az informatikában 2006/2007. Révkomárom
Modern modellellenőrzés • Középpontban: absztrakció (szándékos információvesztés) az állapottérrobbanást elkerülendő Formális módszerek az informatikában 2006/2007. Révkomárom
A modellellenőrzés előnyei • Lehetővé teszi nagy méretű állapotterek kezelését (hagyományosan 10120; újabban 21000) • Általánosan alkalmazható véges állapotterű rendszerekben (HW, SW, protokollok, …) • A követelmények formálisan és egyesével ellenőrizhetők • Kereskedelmi termékekben: teljesen automatizált (gombnyomásos), nem igényel intuíciót Formális módszerek az informatikában 2006/2007. Révkomárom
A modellellenőrzés hátrányai • Állapottérrobbanás • A bejárt állapotok explicit eltárolása szükséges • Túl sok állapot - Túl kevés memória • Elsősorban vezérlés-orientált alkalmazásokhoz való • Komplex adatstruktúrák: még 21000 is nagyon kicsi • Követelmények és a modell megalkotása problematikus egy átlagos szoftvermérnök számára • vajon konzisztens-e a verifikációs modell a rendszerrel? • A kapott eredményt nehéz általánosítani • 2 processzre jó, vajon jó-e N processzre is? • Követelmények teljessége nem ellenőrizhető Formális módszerek az informatikában 2006/2007. Révkomárom
A verifikációs rendszermodellek Tranzíciós rendszerek és Kripke struktúra Formális módszerek az informatikában 2006/2007. Révkomárom
A verifikációs (rendszer)modellek • Matematikai formalizmusok: • Szintaxis: Tranzíciós rendszer • Ezt használjuk amikor leírjuk/specifikáljuk a rendszert • Program • Szemantika:Kripke struktúra • A tranzíciós rendszer által kifeszített állapottér • Egy program összes lehetséges lefutása • Analógia • Szintaxis (Nyelvi elemek felépítése) nagyon alacsony szintű programozási nyelv • Szemantika (Nyelvi elemek jelentés) véges automata Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: páros - páratlan Tranzíciós rendszer • Állapotok, változók és értéktartományaik: • sv : {prs, prtl} • x : int • Kezdőállapot: • sv = prs AND • x = 0 • Átmenetek: • sv = prs sv’ = prtl; x’ = x + 1; • sv = prtl sv’ = prs; x’ = x + 1; Formális módszerek az informatikában 2006/2007. Révkomárom
Tranzíciós rendszer TS = (V, PC, T,Init) • V = állapotváltozók halmaza: {v1, v2, v3,...} • PC= a programszámláló lehetséges értékhalmaza{l1, l2, l3,...} • T= tranzíciók halmaza {1, 2, 3,... } • k felépítése li: guard v1’ = e1, v2’ = e2, v3’ = e3,... • Init = kezdőállapotot leíró predikátum Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja • Egy elosztott rendszerben két, azonos típusú és egyenrangú processzor időnként szinkron módon kommunikál egymással • Ha az egyik processzor hívást kezdeményezett (ring), és a másik processzor várakozik (wait), akkor egyszerre lépnek a szinkron kommunikációt jelző talk állapotba. • Egy processzor az első adandó alkalommal megkezdi a kommunikációt, amennyiben a másik fél rácsengetett. • A szinkron kommunikáció után mindkét processzor várakozó „álláspontra” jut. • A processzorok szabadidejükben számítási feladatokat végezhetnek, majd visszatérnek a várakozó állapotba. Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean INITIALIZATION p1.wait = T; p1.ring = F; p1.calc = F; p1.talk = F; p2.wait = T; p2.ring = F; p2.calc = F; p2.talk = F; Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean INITIALIZATION p1.wait = T; p1.ring = F; p1.calc = F; p1.talk = F; p2.wait = T; p2.ring = F; p2.calc = F; p2.talk = F; TRANSITIONS t1a: (p1.wait) p1.wait’=F; p1.ring’ = T; t1b: (p2.wait) p2.wait’=F; p2.ring’ = T; Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean INITIALIZATION p1.wait = T; p1.ring = F; p1.calc = F; p1.talk = F; p2.wait = T; p2.ring = F; p2.calc = F; p2.talk = F; TRANSITIONS t1a: (p1.wait) p1.wait’=F; p1.ring’ = T; t1b: (p2.wait) p2.wait’=F; p2.ring’ = T; t2a: (p1.wait) p1.wait’ = F; p1.calc’ = T; t2b: (p2.wait) p2.wait’ = F; p2.calc’ = T; Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean INITIALIZATION p1.wait = T; p1.ring = F; p1.calc = F; p1.talk = F; p2.wait = T; p2.ring = F; p2.calc = F; p2.talk = F; TRANSITIONS t1a: (p1.wait) p1.wait’=F; p1.ring’ = T; t1b: (p2.wait) p2.wait’=F; p2.ring’ = T; t2a: (p1.wait) p1.wait’ = F; p1.calc’ = T; t2b: (p2.wait) p2.wait’ = F; p2.calc’ = T; t3a: (p1.calc) p1.calc’ = F; p1.wait’ = T; t3b: (p2.calc) p2.calc’ = F; p2.wait’ = T; Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean INITIALIZATION p1.wait = T; p1.ring = F; p1.calc = F; p1.talk = F; p2.wait = T; p2.ring = F; p2.calc = F; p2.talk = F; TRANSITIONS t1a: (p1.wait) p1.wait’=F; p1.ring’ = T; t1b: (p2.wait) p2.wait’=F; p2.ring’ = T; t2a: (p1.wait) p1.wait’ = F; p1.calc’ = T; t2b: (p2.wait) p2.wait’ = F; p2.calc’ = T; t3a: (p1.calc) p1.calc’ = F; p1.wait’ = T; t3b: (p2.calc) p2.calc’ = F; p2.wait’ = T; t4a: (p1.wait && p2.ring) p1.wait’=F; p2.ring’ = F; p1.talk’ = T; p2.talk’ = T; t4b: (p2.wait && p1.ring) p2.wait’=F; p1.ring’ = F; p2.talk’ = T; p1.talk’ = T; Rossz: nem kezd azonnalkommunikálni, ha amásik fél csenget Formális módszerek az informatikában 2006/2007. Révkomárom
Processzorok (javított változat) VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean INITIALIZATION p1.wait = T; p1.ring = F; p1.calc = F; p1.talk = F; p2.wait = T; p2.ring = F; p2.calc = F; p2.talk = F; TRANSITIONS t1a: (p1.wait && !p2.ring) p1.wait’=F; p1.ring’ = T; t1b: (p2.wait && !p1.ring) p2.wait’=F; p2.ring’ = T; t2a: (p1.wait && !p2.ring) p1.wait’ = F; p1.calc’ = T; t2b: (p2.wait && !p1.ring) p2.wait’ = F; p2.calc’ = T; t3a: (p1.calc) p1.calc’ = F; p1.wait’ = T; t3b: (p2.calc) p2.calc’ = F; p2.wait’ = T; t4a: (p1.wait && p2.ring) p1.wait’=F; p2.ring’ = F; p1.talk’ = T; p2.talk’ = T; t4b: (p2.wait && p1.ring) p2.wait’=F; p1.ring’ = F; p2.talk’ = T; p1.talk’ = T; t5: (p1.talk && p2.talk) p1.talk’ = F; p2.talk’ = F; p1.wait’ = T; p2.wait’ = T; Formális módszerek az informatikában 2006/2007. Révkomárom
Példa: Processzorok kommunikációja 2 VARIABLES p1.wait, p1.ring, p1.calc, p1.talk: Boolean p2.wait, p2.ring, p2.calc, p2.talk: Boolean INITIALIZATION p1.wait = T; p1.ring = F; p1.calc = F; p1.talk = F; p2.wait = T; p2.ring = F; p2.calc = F; p2.talk = F; TRANSITIONS t1a: (p1.wait && !p2.ring) p1.wait’=F; p1.ring’ = T; t1b: (p2.wait && !p1.ring) p2.wait’=F; p2.ring’ = T; t2a: (p1.wait && !p2.ring) p1.wait’ = F; p1.calc’ = T; t2b: (p2.wait && !p1.ring) p2.wait’ = F; p2.calc’ = T; t3a: (p1.wait && p2.ring) p1.wait’=F; p2.ring’ = F; p1.talk’ = T; p2.talk’ = T; t3b: (p2.wait && p1.ring) p2.wait’=F; p1.ring’ = F; p2.talk’ = T; p1.talk’ = T; t4a: (p1.calc) p1.calc’ = F; p1.wait’ = T; t4b: (p2.calc) p2.calc’ = F; p2.wait’ = T; t5: (p1.talk && p2.talk) p1.talk’ = F; p2.talk’ = F; p1.wait’ = T; p2.wait’ = T; Nemdeterminizmus Nemdeterminizmus Formális módszerek az informatikában 2006/2007. Révkomárom
Melyek a programunk lehetséges lefutásai? Formális módszerek az informatikában 2006/2007. Révkomárom
A processzorok Kripke modellje {p1.wait, p2.wait} 1 Formális módszerek az informatikában 2006/2007. Révkomárom
A processzorok Kripke modellje 1 állapotátmenet (lépés) =1 utasítás végrehajtása {p1.wait, p2.wait} 1 2 3 {p1.ring, p2.wait} {p1.wait, p2.ring} Formális módszerek az informatikában 2006/2007. Révkomárom
A processzorok Kripke modellje {p1.wait, p2.wait} 1 2 3 {p1.ring, p2.wait} {p1.wait, p2.ring} 4 {p1.talk, p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom
A processzorok Kripke modellje Szinkronizáció {p1.wait, p2.wait} 1 2 3 {p1.ring, p2.wait} {p1.wait, p2.ring} 4 {p1.talk, p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom
A processzorok Kripke modellje {p1.wait, p2.calc} {p1.calc, p2.wait} 5 6 {p1.wait, p2.wait} 1 2 3 {p1.ring, p2.wait} {p1.wait, p2.ring} 4 {p1.talk, p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom
A processzorok Kripke modellje {p1.calc, p2.calc} 7 {p1.wait, p2.calc} {p1.calc, p2.wait} 5 6 {p1.wait, p2.wait} 1 2 3 {p1.ring, p2.wait} {p1.wait, p2.ring} 4 {p1.talk, p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom
A processzorok Kripke modellje {p1.calc, p2.calc} 7 {p1.wait, p2.calc} {p1.calc, p2.wait} 5 6 {p1.wait, p2.wait} 8 1 9 {p1.calc, p2.ring} {p1.ring, p2.calc} 2 3 {p1.ring, p2.wait} {p1.wait, p2.ring} 4 {p1.talk, p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom
Tranzíciós rendszer Kripke modellje KS = (S, R, I, L) • S: állapotok véges halmaza • a V állapotváltozóknak összes lehetséges lekötése • R S S: állapotátmeneti reláció • Acti(V, V’) (pc = li) guard v1’ = e1 … vn’ = en (pc = lj) • R • I S: kezdőállapotok halmaza • L: S 2AP az állapotok cimkézése atomi kijelentésekkel • egy állapot több cimkét is tartalmazhat • true L(s) és false L(s) Formális módszerek az informatikában 2006/2007. Révkomárom
Processzorok (egyszerűsített változat) Figyelem! Ez a megoldás azért működik,mert egy processzorra minden állapotban maximum egy igaz címke volt a Kripkemodellben TYPE State_Type = {wait, ring, calc, talk}; VARIABLES p1.state, p2.state: State_Type; INITIALIZATION p1.state = wait; p2.state = wait; TRANSITIONS t1a: (p1.state = wait && !p2.state = ring) p1.state’ = ring; t1b: (p2.state = wait && !p1.state = ring) p2.state’ = ring; t2a: (p1.state = wait && !p2.state = ring) p1.state’ = calc; t2b: (p2.state = wait && !p1.state = ring) p2.state’ = calc; t3a: (p1.state = calc) p1.state’ = wait; t3b: (p2.state = calc) p2.state’ = wait; t4a: (p1.state = wait && p2.state = ring) p1.state’=talk; p2.state’ = talk; t4a: (p2.state = wait && p1.state = ring) p1.state’=talk; p2.state’ = talk; t5: (p1.state = talk && p2.state = talk) p1.state’ = wait; p2.state’ = wait; Miért jobb ez a megoldás gyakorlati szemszögből? Formális módszerek az informatikában 2006/2007. Révkomárom
Processzorok (egyszerűsített változat?) Figyelem! A Kripke modell természetesenazonos mindkét esetben. {p1.state=calc, p2.state=calc} 7 {p1.state = wait, p2.state = calc} {p1.state = calc, p2.state = wait} 5 6 {p1.state= wait, p2.state =wait} {p1.state = calc, p2.state = ring} {p1.state = ring, p2.state = calc} 8 1 9 2 3 {p1.state = ring, p2.state = wait} {p1.state = wait, p2.state = ring} 4 {p1.state = talk, p2.state = talk} Formális módszerek az informatikában 2006/2007. Révkomárom
Több folyamat Kripke modellje(Átlapolás, Szinkronizáció) Formális módszerek az informatikában 2006/2007. Révkomárom
Egy processzor Kripke modellje Őrfeltétel {p1.calc} {p2.calc} 4 D [!p2.ring] [!p1.ring] {p2.wait} {p1.wait} 1 A [!p2.ring] [!p1.ring] 2 B {p1.ring} {p2.ring} Szinkronizáció Szinkronizáció 3 C {p1.talk} {p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom
Folyamat- és rendszerszintű Kripke modellek/automaták (KA) Probléma: • A rendszert konkurensen futó folyamatok alkotják • Hogyan származtassuk a rendszerszintű Kripke modellt az egyes folyamatok Kripke modelljeiből? Alapfogalmak: • Átlapolás: a két folyamat közül pontosan az egyik lép • Szinkronizáció: a két folyamat egyszerre lép • Őrfeltétel: megnézzük, hogy a másik automata aktuális állapotában igaz-e a logikai feltétel(atomi kijelentések + Boole logikai operátorok) Formális módszerek az informatikában 2006/2007. Révkomárom
Rendszerszintű KA generálása Naív módszer: • Vegyük az állapothalmaz direkt szorzatát • Vizsgáljuk meg a tranzíciókat • sima tranzíció: átlapolás, tehát lép a rendszer KA • őrfeltételes tranzíció: a feltétel függvényében lép a rendszer KA • szinkronizált tranzíció: mindkét KA egyszerre lép • Probléma: nem elérhető állapotokat is generálunk Továbbfejlesztés (on-the-fly): • Mélységi gráfbejárás a teljes állapottér (direkt szorzat) generálása helyett Formális módszerek az informatikában 2006/2007. Révkomárom
A komponensek Kripke automatája {p1.calc} {p2.calc} 4 D [!p2.ring] [!p1.ring] {p2.wait} {p1.wait} 1 A [!p2.ring] [!p1.ring] 2 B {p1.ring} {p2.ring} 3 C {p1.talk} {p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom
A rendszer Kripke modellje {p1.calc, p2.calc} 4D {p1.wait, p2.calc} {p1.calc, p2.wait} 4A 1D {p1.wait, p2.wait} 4B 1A 2D {p1.calc, p2.ring} {p1.ring, p2.calc} 2A 1B {p1.ring, p2.wait} {p1.wait, p2.ring} 3C {p1.talk, p2.talk} Formális módszerek az informatikában 2006/2007. Révkomárom