Részletes szoftver tervek ellenőrzése

Hasonló dokumentumok
Alapszintű formalizmusok

Részletes tervek ellenőrzése

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

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

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ő

Modellellenőrzés. dr. Majzik István BME 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

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

Szoftverminőségbiztosítás

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

Modell alapú tesztelés mobil környezetben

Alapszintű formalizmusok

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

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

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

A formális módszerek szerepe

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

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

A formális módszerek szerepe

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

Formális módszerek GM_IN003_1 Bevezetés

Modellezési alapismeretek

Modellezési alapismeretek

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

Programfejlesztési Modellek

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

Sztochasztikus temporális logikák

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

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

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

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

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

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

Modellezési alapismeretek

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

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

Szoftver karbantartás

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

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

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

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

2.1.A SZOFTVERFEJLESZTÉS STRUKTÚRÁJA

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

Algoritmizálás, adatmodellezés tanítása 6. előadás

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

A helyességbizonyítás klasszikus módszerei

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

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

S01-7 Komponens alapú szoftverfejlesztés 1

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

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

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

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

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

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

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

Szoftver újrafelhasználás

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

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

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Modellezési alapismeretek

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

Kiterjesztések sek szemantikája

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

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

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

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

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

Adat és folyamat modellek

Véges automaták, reguláris nyelvek

Formális nyelvek - 9.

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

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

Objektum orientált programozás Bevezetés

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

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

Szoftverminőségbiztosítás

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

Programok értelmezése

A szoftverellenőrzés szerepe

Kogníció, koncepciók, modellek

Nagy bonyolultságú rendszerek fejlesztőeszközei

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

Folyamatmodellezés (BPMN) és alkalmazásai

Logikai ágensek. Mesterséges intelligencia március 21.

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

TERMÉKTERVEZÉS PANDUR BÉLA TERMÉKTERVEZÉS

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

A számítógépes nyelvészet elmélete és gyakorlata. Automaták

Időzített átmeneti rendszerek

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Objektumorientált paradigma és a programfejlesztés

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

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

Modellek fejlesztése

S0-02 Típusmodellek (Programozás elmélet)

Átírás:

Részletes szoftver tervek ellenőrzése Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.mit.bme.hu/~majzik/ Tartalomjegyzék A részletes tervek elkészítése Szoftver konstrukció Modul tervezés Ellenőrzések Verifikációs lépések Formális verifikáció Alapszintű formalizmusok KS, LTS, KTS Automaták

Szoftver konstrukció Szoftverkövetelményspecifikáció Szoftver konstrukció specifikáció Szoftver architektúra leírás Szoftver konstrukció Szoftver konstrukció igazolójelentés Szoftver minőségbiztosítási terv Lokális igazolás Szoftver integrációs tesztterv Integrációs tesztek Szoftver konstrukció Meghatározandó: Modulok közötti interfészek, globális adatstruktúrák Rendszerszintű algoritmusok (modulok együttműködése) Használt leíró nyelv: Információáramlás leírása (sorrendiség, időbeliség) Adatstruktúrák leírása Absztrakció és modularitás, verifikálhatóság Választható módszerek: Ld. követelmény specifikáció Formális, félformális, strukturált módszerek Speciális előírások biztonságkritikus rendszerekben: Modulméret korlátozás, információrejtés Paraméter mennyiségi korlátozás Egybemenetű és egykimenetű funkciók Teljesen meghatározott interfészek

Szoftvermodul tervezés Szoftver architektúra leírás Szoftver konstrukció specifikáció Szoftvermodul tervezés Szoftverkövetelményspecifikáció Szoftvermodultervezési specifikáció Szoftvermodul (terv) igazolójelentés Szoftver minőségbiztosítási terv Lokális igazolás Modul tesztek Szoftvermodultesztspecifikáció Szoftvermodul-tervezési specifikáció Modulok belső tervezése Algoritmusok Adatstruktúrák Használt leíró nyelv: Implementációközeli nyelvek Pl. pszeudo-kód Absztrakt(abb) nyelvek Formális, félformális, strukturált metodika Viselkedés leírás is hangsúlyos

Tartalomjegyzék A részletes tervek elkészítése Szoftver konstrukció Modul tervezés Ellenőrzések Verifikációs lépések Formális verifikáció Alapszintű formalizmusok KS, LTS, KTS Automaták Verifikációs lépések Ellenőrizendők az igazolási fázisokban: Lokális tulajdonságok és megfelelőségek Teljesség, ellentmondás-mentesség, megvalósíthatóság, ellenőrizhetőség Megfelelőségek: Előző fázisok alapján Teszt tervek teljessége Verifikációs módszerek: Statikus elemzés Ellenőrzőlisták, hibabecslés Vezérlési folyam elemzés (strukturáltság) Adatáramlás elemzés (hozzáférési sorrend) Határérték elemzés Alattomos komponensek elemzése (nemkívánatos információáramlás) Szimbolikus végrehajtás Dinamikus elemzés Prototípus készítés és animáció Szimuláció Formális verifikáció

Formális verifikáció Matematikai eszközök használata Diszkrét matematika, matematikai logika Formális nyelv: Formális szintaxis és szemantika Tulajdonság leírás (követelmények, specifikáció) Viselkedés leírás (terv, implementáció) Algoritmusok a verifikációhoz Önmagában való vizsgálat (pl. ellentmondás-mentesség) Változások vizsgálata (pl. tervezői döntések) Tulajdonság leírás és viselkedés leírás összevetése Kritikus pont: A valós probléma formalizálása Nem automatizálható Egyszerűsítés, absztrakció gyakran szükséges Ideális formális verifikáció: Feltételezések teljesülésének ellenőrzése Verifikációs eszközök korrektségének belátása Matematikai definíciók: Formális szintaxis (áttekintés) KS = ( S, R, L) és AP, ahol AP= P,Q,R,... { } { } S= s,s,s,...s R S S L: S 2 AP 1 2 3 n BNF: HML ::= true false p q p q [a]p <a>p Metamodell: Absztrakt szintaxis (nyelvtani szabályok) és konkrét szintaxis (megjelenítés)

Formális szemantika (áttekintés) Műveleti (operációs) szemantika: Programozóknak Megadja, mi történik a számítások során Egyszerűbb formalizmusra épít: pl. állapotok, akciók Axiomatikus szemantika: Helyességbizonyításhoz Állítás nyelv + axiómakészlet + következtetési szabályok Elő- és utófeltételek adják meg a jelentést Pl. automatikus tételbizonyító rendszerekhez Denotációs szemantika: Fordítóprogramokhoz Szintaxis által meghatározott jel -> jelölt dolog leképzés A jelölt dolog tipikusan mint matematikai domén adott Számítási szekvencia, vezérlési gráf, állapothalmaz, és ezeken definiált műveletek (összefűzés, unió, ) A modellek vizsgálata a mögöttes matematikai objektum vizsgálatára vezethető le Komponálható szemantika: P op Q = op ( P, Q ) A legelterjedtebb formális verifikációs technikák Modell / technika Modellellenőrzés Viselkedés leírás (alapszintű) Kripke-struktúra Tulajdonság leírás (alapszintű) Temporális logika (elsőrendű logika) Ekvivalencia ellenőrzés LTS (Labeled Transition System), automata LTS, automata (referencia viselkedés) Tételbizonyítás Statikus analízis (absztrakt interpretáció) Dedukciós rendszer Kripke-struktúra (programból absztrakcióval) Elsőrendű logika (bizonyítandó tétel) Elsőrendű logika, assertion

A technikák előnyei és korlátai Modell ellenőrzés, ekvivalencia ellenőrzés Teljesen automatikus, explicit kimerítő (teljes) vizsgálat Ellenpélda generálás (debuggoláshoz) Állapottér robbanás (részben kezelhető) Tételbizonyítás Skálázható (pl. indukció) Nagy kifejezőerő Interaktív (segítséget igényel, pl. ciklus invariánsok megtalálása, bizonyítási stratégia megadása) Nincs ellenpélda Statikus analízis (absztrakt interpretáció) Állapottér csökkentés Absztrakció nehezen automatizálható Verifikációs technikák szerepe Üzemeltetés, karbantartás Követelmények elemzése Rendszer validáció Rendszer specifikálás Modell ellenőrzés Rendszer verifikáció Architektúra tervezés Rendszer integrálás Tételbizonyítás Ekvivalencia ellenőrzés Tételbizonyítás Modul tervezés Modul verifikáció Modul implementáció Absztrakt interpretáció

Tervek és modellek szerepe a formális verifikációban Viselkedés leírás (modell) Alapszintű: KS, LTS, KTS, automaták, Büchi automaták Magasabb szintű: Vezérlés orientált: Hierarchikus automata, Petri-háló Adatfeldolgozás orientált: Adatfolyam háló Kommunikáció orientált: Processz algebrák Mérnöki modellek: UML diagramok formális szemantikával Tulajdonság leírás (követelmény) Alapszintű: Elsőrendű logika, temporális logika, referencia automata Magasabb szintű: MSC, LSC, Tartalomjegyzék A részletes tervek elkészítése Szoftver konstrukció Modul tervezés Ellenőrzések Verifikációs lépések Formális verifikáció Alapszintű formalizmusok KS, LTS, KTS Automaták

Alapszintű formalizmusok (áttekintés) Kripke-struktúrák (KS) Állapotok, állapotátmenetek Állapotok lokális tulajdonságai mint címkék Címkézett tranzíciós rendszerek (LTS) Állapotok, állapotátmenetek Állapotok lokális tulajdonságai mint címkék Kripke tranzíciós rendszerek (KTS) Állapotok, állapotátmenetek Állapotok és lokális tulajdonságai mint címkék Automaták (Elfogadó) automaták véges hosszúságú szavakon Büchi automaták végtelen hosszúságú szavakon KS, Kripke-structure: 1. Kripke-struktúra Állapotok tulajdonságait fejezzük ki: címkézés atomi kijelentésekkel Egy állapothoz sok címke rendelhető Alkalmazás: Algoritmusok leírása KS = ( S, R, L) és AP, ahol AP= P,Q,R,... atomi kijelentések halmaza (specifikus) { } { } S= s,s,s,...s 1 2 3 n állapotok halmaza R S S: állapotátmeneti reláció AP L: S 2 állapotok címkézése atomi kijelentésekkel

Kripke-struktúra példa Közlekedési lámpa vezérlője AP={Zöld, Sárga, Piros, Villogó} S = {s1, s2, s3, s4, s5} {Zöld} {Sárga} {Piros} {Piros, Sárga} s1 s2 s3 s4 s5 {Villogó} 2. Címkézett tranzíciós rendszer LTS, Labeled Transition System: Állapotátmenetek tulajdonságait fejezzük ki: címkézés akciókkal Egy átmeneten csak egy akció szerepelhet Alkalmazás: Kommunikáció, protokollok modellezése LTS = ( S, Act, ), ahol { 1 s,...s 2 n} {,c,...} S= s, Act= a,b S Act S állapotok halmaza akciók (címkék) halmaza címkézett tranzíciók. Tranzíciók szokásos jelölés e : s a s 1 2

LTS példák pénz pénz pénz kávé tea kávé tea 3. Kripke tranzíciós rendszer KTS, Kripke Transition System: Állapotok és átmenetek tulajdonságait is kifejezzük: címkézés atomi kijelentésekkel és akciókkal Egy állapothoz sok címke rendelhető, egy átmenethez egy címke rendelhető KTS = ( S,, L) és AP, Act, ahol AP atomi kijelentések halmaza (specifikus) Act = { P, Q, R,... } = { a, b, c,... } {,,,... } S = s s s s 1 2 3 S Act S n akciók halmaza állapotok halmaza tranzíció reláció AP L: S 2 állapotok címkézése atomi kijelentésekkel

KTS példák {Start} pénz kávé {Választ} tea {Stop} {Stop} 4. Automaták véges szavakon A=(Σ, S, S 0, ρ, F) ahol Σ az ábécé, S állapotok, S 0 kezdőállapotok ρ az állapotátmeneti reláció, ρ: S Σ 2 S Faz elfogadó állapotok halmaza. Az automata futása: Egy beérkező w=(a 0, a 1, a 2, a n ) betűsorozat hatására egy r=(s 0, s 1, s 2, s n ) állapotsorozat relfogadó futás: s n F Egy w szót elfogad az automata, ha létezik rá elfogadó futás L(A)={ w Σ* w elfogadott } az automata által elfogadott nyelv

Automaták végtelen hosszúságú szavakon Nem ellenőrizhető, hogy a végállapot elfogadó-e Büchi elfogadási kritérium: Egy beérkező w=(a 0, a 1, a 2, ) betűsorozat hatására egy r=(s 0, s 1, s 2, ) végtelen állapotsorozat lim(r)={s s előfordul végtelenül sokszor, azaz nincs olyan j, hogy k>j:s s k } Elfogadó futás: lim(r) F 0 Egy w szót elfogad az automata, ha létezik rá elfogadó futás (azaz végtelen sokszor érint elfogadó állapotot) L(A)={w Σ* w elfogadott} az automata által elfogadott nyelv