A formális módszerek szerepe

Hasonló dokumentumok
A formális módszerek szerepe

Formális módszerek. A formális modellezés és a formális verifikáció alapjai. dr. Bartha Tamás BME Közlekedés- és Járműirányítási Tanszék

A formális módszerek szerepe

Részletes szoftver tervek ellenőrzése

Formális módszerek. A formális modellezés és a formális verifikáció alapjai. dr. Bartha Tamás BME Közlekedés- és Járműirányítási Tanszék

A formális módszerek szerepe a rendszerek biztonságának növelésében

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

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

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

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

Részletes tervek ellenőrzése

Alapszintű formalizmusok

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

Modell alapú tesztelés mobil környezetben

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

Verifikáció és validáció Általános bevezető

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

Korlátos 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

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

Szoftverminőségbiztosítás

Autóipari beágyazott rendszerek. Kockázatelemzés

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

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

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

A szoftverellenőrzés szerepe

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

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

Alapszintű formalizmusok

Alapszintű formalizmusok

A fejlesztési szabványok szerepe a szoftverellenőrzésben

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

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

Nagy bonyolultságú rendszerek fejlesztőeszközei

Formális módszerek GM_IN003_1 Bevezetés

Magasabb szintű formalizmus: Állapottérképek (statecharts) 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

Modellezési alapismeretek

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

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

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

Modellezési alapismeretek

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

S01-7 Komponens alapú szoftverfejlesztés 1

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

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

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

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

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

Digitális eszközök típusai

A szoftverellenőrzés szerepe Alapfogalmak

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

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

Szoftver értékelés és karbantartás

Szoftvertechnológia ellenőrző kérdések 2005

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

Biztonsági folyamatirányító. rendszerek szoftvere

Szoftver karbantartás

Informatikai rendszertervezés

UML (Unified Modelling Language)

Sztochasztikus temporális logikák

Specifikáció alapú teszttervezési módszerek

Informatikai rendszertervezés

Specifikáció alapú teszttervezési módszerek

Szoftverminőségbiztosítás

Absztrakció a szoftvertervezésben az Alloy specifikációs nyelv segítségével

Tartalom. Konfiguráció menedzsment bevezetési tapasztalatok. Bevezetés. Tipikus konfigurációs adatbázis kialakítási projekt. Adatbázis szerkezet

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

01. gyakorlat - Projektalapítás

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

Informatikai technológiák szakirány Rendszertervezés ágazat

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

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

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

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

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

S01-8 Komponens alapú szoftverfejlesztés 2

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

Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Folyamatmodellezé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

Számítógép-rendszerek fontos jellemzői (Hardver és Szoftver):

Modellezési alapismeretek

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

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

IK Algoritmusok és Alkalmazásaik Tsz, TTK Operációkutatás Tsz. A LEMON C++ gráf optimalizálási könyvtár használata

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

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

Modellek fejlesztése

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

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

8.3. AZ ASIC TESZTELÉSE

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

A szoftver tesztelés célja

Szoftver újrafelhasználás

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

Ráth István. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Ráth István. A fejlesztés evolúciója

Az előadás vázlata. A SPIN modellellenőrző rendszer. Motivációk. (,,Ha a Microsoft autókat gyártana )

Átírás:

A formális módszerek szerepe dr. Majzik István dr. Bartha Tamás dr. Pataricza András BME Méréstechnika és Információs Rendszerek Tanszék 1

Matematikai technikák, Formális módszerek elsősorban diszkrét matematika és matematikai logika használata arra, hogy elkészítsük és ellenőrizzük hardver és szoftver rendszerek specifikációját (követelményeit), terveit (modelljeit), implementációját (megvalósítását), dokumentációját. 2

Mire jók a formális módszerek? Egy jellegzetes példa: Algoritmus ellenőrzése 3

Egy mérnöki feladat Többprocesszes alkalmazás Egy hardver erőforráshoz egyszerre csak egy processz férhessen hozzá (kölcsönös kizárás kell) Példa: Kommunikációs csatorna használata Védendő kritikus szakasz a programban A platform (OS, futtató rendszer) nem ad ehhez támogatást: nincs szemafor, monitor, stb. Csak megosztott változók (egy művelettel olvashatók vagy írhatók) használhatók Hogyan valósítsuk meg? Klasszikus megoldások Saját algoritmus 4

Kölcsönös kizárás algoritmus (pszeudo-kód) 2 résztvevőre, 3 megosztott változóval (H. Hyman, 1966) blocked0: Első résztvevő (P0) be akar lépni blocked1: Második résztvevő (P1) be akar lépni turn: Ki következik belépni (0 esetén P0, 1 esetén P1) P0 while (true) { blocked0 = true; while (turn!=0) { while (blocked1==true) { skip; turn=0; // Critical section (cs) blocked0 = false; // Do other things P1 while (true) { blocked1 = true; while (turn!=1) { while (blocked0==true) { skip; turn=1; // Critical section (cs) blocked1 = false; // Do other things Helyes-e ez az algoritmus? 5

Mikor helyes az algoritmus? Kölcsönös kizárás biztosított: Egyszerre csak az egyik processz (P0 vagy P1) lehet a kritikus szakaszban Lehetséges az elvárt viselkedés: P0 egyáltalán beléphet a kritikus szakaszba P1 egyáltalán beléphet a kritikus szakaszba Nincs kiéheztetés : P0 mindenképpen be fog lépni a kritikus szakaszba P1 mindenképpen be fog lépni a kritikus szakaszba Holtpontmentesség: Nem alakul ki kölcsönös várakozás (leállás) 6

Hogyan ellenőrizhetjük a követelményeket? Megvalósítással és annak tesztelésével Létre tudunk-e hozni minden lehetséges végrehajtást (azaz lehetséges átlapoló utasítássorrendet) lefedő teszt eseteket? A problémás esetek figyeléséhez külön ellenőrző kell A hiba drágán javítható (csak az implementáció után derül ki) Modellezéssel és a modell szimulációjával Tudunk-e szimulálni minden lehetséges végrehajtást? A problémás esetek detektálása nagy odafigyelést igényel A hibák viszont olcsóbban javíthatók modell szinten 7

Készítsünk formális modellt! Automata formalizmus: Állapotok és állapotátmenetek Változók, konstansok Változókon kiértékelhető feltételek az átmenetek végrehajtásához Értékadás akciók az átmenetek végrehajtása során Szintaxis példa (diagram): 8

Deklarációk: bool blocked0; bool blocked1; int[0,1] turn=0; system P0, P1; A P0 automata: A P0 processz formális modellje while (true) { P0 blocked0 = true; while (turn!=0) { while (blocked1==true) { skip; turn=0; // Critical section blocked0 = false; // Do other things 9

Deklarációk: bool blocked0; bool blocked1; int[0,1] turn=0; system P0, P1; A P1 automata: A P1 processz formális modellje while (true) { P1 blocked1 = true; while (turn!=1) { while (blocked0==true) { skip; turn=1; // Critical section blocked1 = false; // Do other things 10

Hogyan ellenőrizhetjük a követelményeket? Megvalósítással és annak tesztelésével Létre tudunk-e hozni minden lehetséges végrehajtást (azaz lehetséges átlapoló utasítássorrendet) lefedő teszt eseteket? A problémás esetek figyeléséhez külön ellenőrző kell A hiba drágán javítható (csak az implementáció után derül ki) Modellezéssel és a modell szimulációjával Tudunk-e szimulálni minden lehetséges végrehajtást? A problémás esetek detektálása nagy odafigyelést igényel A hibák viszont olcsóbban javíthatók modell szinten Modellezéssel és az állapottér teljes ellenőrzésével Minden lehetséges végrehajtást ellenőriz: Modell állapottér bejárás szisztematikus algoritmussal, gombnyomásra Automatikusan ellenőrzött követelmények: Leíró nyelv és hatékony ellenőrző algoritmus kell Modell szinten javítható hibák: Hiba esetén (ellen)példát ad 11

Egy jellegzetes formális ellenőrzés (verifikáció) Alacsony szintű, vagy magasabb szintű, vagy mérnöki modell Automatikusan ellenőrizhető, precíz követelmények Formális modell Formalizált követelmények i Automatikus modellellenőrző n OK Ellenpélda 12

Az algoritmus javítása Peterson algoritmusa: P0 résztvevőre (P1 hasonlóan): Hyman: Peterson: while (true) { blocked0 = true; while (turn!=0) { while (blocked1==true) { skip; turn=0; // Critical section blocked0 = false; // Do other things while (true) { blocked0 = true; turn=1; while (blocked1==true && turn!=0) { skip; // Critical section blocked0 = false; // Do other things 13

A formális módszerek szerepe (áttekintés) 14

Mit szeretnénk elérni? Valós probléma formális vizsgálata: 1. Probléma formalizálása, <- feltételezések, absztrakció formális modell készítése 2. Formális modell analízise <- automatikus eszközök is 3. Eredmények értelmezése, felhasználása Mi kell ehhez? 1. Formális nyelv a probléma leírására 2. Eljárás a formális modell analízisére <- alkalmazhatóság 3. Eredmények érvényessége (ld. feltételezések, eszközök) 15

Első lépés: Formális nyelv A formalizálás célja: Matematikai precizitással megadni Modelleket: terveket, tervezői döntéseket (modellezési nyelv) Követelményeket: elvárt tulajdonságokat (követelmény leíró nyelv) Formális nyelvek felépítése Formális szintaxis Jelölésmód: milyen nyelvi elemek és kapcsolatok vannak Formális szemantika A jelölésmód interpretációja: mit értek alatta Mit szeretnénk leírni formális nyelvekkel? Funkcionalitás (viselkedés, feltételek, elvárások, ) Struktúra, interfészek Extra-funkcionális aspektusok is: Teljesítmény, megbízhatóság, A formális nyelv használatának előnyei Egyértelműség, ellenőrizhetőség Automatikus feldolgozhatóság 16

Továbblépés: Formális módszerek Formális módszer: A formális modellről ismeretet adó matematikai eljárás Eszközökkel támogatható A formális modell végrehajtása Szimuláció A formális modell ellenőrzése: Formális verifikáció Önmagában való vizsgálat Konzisztencia, ellentmondás-mentesség Teljesség, zártság Megfelelés vizsgálata Modellek között Modellek és elvárt tulajdonságok között (implementáció specifikáció) A formális modell alapján történő szintézis: Szoftver (programkód, konfiguráció) generálása Hardver tervek generálása 20

Mire szeretnénk használni a formális módszereket? Milyen problémákkal nézünk szembe? Miben segíthetnek a formális módszerek? 22

Egy tanulságos történet Vasa svéd hadihajó, 1628: Elsüllyedt közvetlenül a vízrebocsátás után Problémák: Változó követelmények (II. Gusztáv Adolf király) Hiányzó pontos specifikáció (Henrik Hybertsson építő) Ellenőrizetlen tervek (Johan Isbrandsson alvállalkozó) Figyelmeztetések figyelmen kívül hagyása (Fleming admirális) Dokumentáció: The Vasa: A Disaster Story with Software Analogies. By Linda Rising. The Software Practitioner, January-February 2001. Why the Vasa Sank: 10 Problems and Some Antidotes for Software Projects. By Richard E. Fairley and Mary Jane Willshire. IEEE Software, March-April 2003. 23

Komplex rendszerek tervezése - Minimális tervezés - Implicit folyamat - Egyszerű eszközök - Alapos tervezés - Definiált folyamat - Hatékony eszközök - Ellenőrzött tervek - Meghatározott folyamat - Automatikus eszközök 25

Tipikus kódméret: Szoftver minőségi krízis 10 kloc 1000 kloc Fejlesztési ráfordítás: 0,1-0,5 mérnökév / kloc (nagyméretű szoftver) 5-10 mérnökév / kloc (kritikus szoftver) Hiba eltávolítás (ellenőrzés, tesztelés, javítás): 45-75% ráfordítás Hibasűrűség változása: 10-200 hiba / kloc jön létre a fejlesztés során Ellenőrzés, debuggolás, javítás 0,01-10 hiba / kloc maradhat az üzembe helyezésig 26

IT alkalmazások fejlesztésének kihívásai Jó minőségű specifikáció és tervek készítése Teljes Ellentmondás-mentes, egyértelmű Ellenőrizhető Tervek ellenőrzése Tervezői döntések igazolása Bizonyítottan helyes tervek a továbblépés alapjai Hibák elkerülése vagy korai felderítése Minőség költség fejlesztési idő optimalizálás Bizonyított helyességű tervezői eszközök használata Forráskód, konfiguráció, teszt és monitor szintézis Ezek alapjait a formális módszerek adhatják! 27

Verifikáció és validáció összehasonlítása Verifikáció (igazolás) Jól építjük-e a rendszert? Összhang ellenőrzése a fejlesztési fázisokban, illetve ezek között Fejlesztési lépések során használt tervek (modellek) és specifikációjuk közötti megfelelés ellenőrzése Objektív folyamat; formalizálható, automatizálható Felderíthető hibák: Tervezési, implementációs hibák Nincs rá szükség, ha automatikus a leképzés követelmény és implementáció között Validáció (érvényesítés) Jó rendszert építettünk-e? A fejlesztés eredményének ellenőrzése A kész rendszer és a felhasználói elvárások közötti megfelelés ellenőrzése Szubjektív elvárások lehetnek; elfogadhatósági ellenőrzés Felderíthető hibák: Követelmények hiányosságai is Nincs rá szükség, ha a specifikáció tökéletes (elég egyszerű) 37

Modellek a formális ellenőrzéshez Rendszermodellek Mérnöki modellek: Pl. UML diagramok (fél-)formális szemantikával Magasabb szintű modellek: Vezérlés orientált: Automata, Petri-háló, Adatfeldolgozás orientált: Adatfolyam háló, Kommunikáció orientált: Processz algebra, Alapszintű matematikai modellek: KS, LTS, KTS, automaták, Büchi automaták Tulajdonság leírások Magasabb szintű: Idődiagram, üzenet szekvencia diagram (MSC) Alapszintű: Elsőrendű logika, temporális logika, referencia automata 38

A tárgy felépítése Tipikusan ezeket a szinteket használjuk Mérnöki modellek Modelltranszformációk Verifikációs algoritmus szintje Magasabb szintű formalizmusok PN, CPN, DFN, SC Alapszintű matematikai formalizmusok KS, LTS, KTS 39

Klasszikus alkalmazások USA TCAS-II forgalomirányító rendszer RSML nyelven specifikált; teljesség és ellentmondás-mentesség ellenőrzése Philips Audio Protocol 1994: manuális verifikáció, majd 1996: automatikus ellenőrzés (HyTech) Lockheed C130J repülési szoftvere Programfejlesztés helyességbizonyítással (CORE spec. nyelv + Ada) Költség nem nőtt a tesztelés egyszerűsödése miatt IEEE Futurebus+ szabvány Carnegie Mellon SMV: cache koherencia protokoll hibájának kiderítése Hardver projektek: ACL2 automatikus tételbizonyító Motorola DSP Complex Arithmetic Processor mag (250 regiszter): DSP algoritmusok ellenőrzése AMD 5K86 processzor: Lebegőpontos osztás algoritmusának ellenőrzése Intel i7 processzor For the recent Intel CoreTM i7 design we used formal verification as the primary validation vehicle for the core execution cluster Szimbolikus szimuláció az adatutak teljes vizsgálatára (2700 mikroutasítás, 20 mérnökévnyi munka) Binary Decision Diagram alkalmazása Modell alapú szoftverfejlesztéshez kapcsolódó eszközök IBM, Esterel, Prover, Mentor, Telelogic, 40

Forráskódhoz illeszkedő formális verifikáció Java Bandera, PathFinder: modell absztrakció Java VM formalizálása: Abstract State Machine Ada SPARK Ada verification condition generator tételbizonyítóhoz C BLAST: Szoftver modellellenőrző C programokhoz (absztrakció) CBMC: C alapú korlátos modellellenőrző C#, Visual Basic.Net Zing (MS Visual Studio-hoz): Konkurens szoftver modellellenőrzése Spec# (C# superset) MS Research Boogie 2: Specifikációs nyelvi kiterjesztések Helyességi kritériumok ellenőrzése: program absztrakcióval és tételbizonyítóval (Z3) Microsoft Windows Driver Kit (WDK) Static Driver Verifier Research Platform, SLAM 2 eszköz Windows API használati feltételeinek statikus ellenőrzése 41

Összefoglalás Mik a formális módszerek? Formalizmus, formális nyelv Formális módszerek és eszközök: Szimuláció, formális verifikáció, szintézis Mire használhatók? Motiváció: Szoftver minőségi kihívások A formális módszerek lehetőségei Mit várhatunk? Korlátok Sikertörténetek 42