Tervminták megvalósítása B formális nyelven Papp Olga Vadász Péter Témavezető: Fóthi Ákos.

Slides:



Advertisements
Hasonló előadás
Rendszertervezés CAD.
Advertisements

Hatékonyságvizsgálat, dokumentálás
Programozás III STRING-XML.
Diagnosztika szabályok felhasználásával, diagnosztikai következtetés Modell alapú diagnosztika diszkrét módszerekkel.
Probléma formálisan specifikált: valós világ (domai) (hibás eredmény) ködös határ (félreértés, hiba) formális világ (megoldás) A specifikáció csak nagyvonalakban.
A Microsoft rendszermenedzsment víziója A Dynamic Systems Initiative A System Definition Model Az üzemeltetésre tervezett szoftverek A SDM jelentősége.
A webes tesztelés jövője
Állapotgépek (state machines)
Készítette: Vadász Péter
Helyességbizonyító eszközök alkalmazása funkcionális programok esetén
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
1.) A programfejlesztés hagyományos életciklus modellje és adattípus.
Programozási ismeretek oktatása: kód vagy algoritmus
K id’s P rogramming L anguage V 1.1 Gödöny Péter  Veres Ádám  ELTE IK, Pataky Szakközép.
Bevezetés a Java programozásba
Mozgó Objektumok Detektálása és Követése Robotkamera Segítségével
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
Szintézis Keresztes Péter, 2005 A GAJSKI-KUHN DIAGRAM Alapelv: Rendezzük a digitális- rendszerek leírásait célok és szintek szerint.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
Programozási nyelvek – Programozási paradigmák
ISZAM III.évf. részére Bunkóczi László
Az UML kiterjesztési lehetőségei
Szoftvertechnológia Rendszertervezés.
Bevezetés a C++ programozási nyelvbe
XML támogatás adatbázis-kezelő rendszerekben
Objektumorientált adatbázisok és szabványok Ispány Márton.
Objektumorientált tervezés és programozás II. 3. előadás
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.
Tervminták megvalósítása B formális nyelven Papp Olga Vadász Péter Témavezető: Fóthi Ákos egyetemi tanár.
Tervminták megvalósítása B formális nyelven Papp Olga Vadász Péter.
A problémamegoldás lépései
Modelltranszformációs szabályok automatikus generálása példák alapján Balogh Zoltán IV. évf. informatikus Konzulens: Dr. Varró Dániel Méréstechnika és.
Pókerágens fejlesztése játékelméleti alapokon
3.2. A program készítés folyamata Adatelemzés, adatszerkezetek felépítése Típus, változó, konstans fogalma, szerepe, deklarációja.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Rendszertervezés Alapfogalmak; Az informatikai rendszer
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 5.4 Szolgáltatói Keretrendszerek Prof. Dr. Gyimóthy Tibor,
Petri-hálón alapuló modellek analízise és alkalmazásai a reakciókinetikában Papp Dávid június 22. Konzulensek: Varró-Gyapay Szilvia, Dr. Tóth János.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
Egyenesvonalú (lineáris) adatszerkezetek
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Podoski Péter és Zabb László. Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök.
Fejlett grafikai algoritmusok Megvilágítás SZTE, 2010.
Adamkó Attila UML2 Adamkó Attila
A Visual Basic nyelvi elemei
Egy keretrendszer bevezetése Affentáller László MarkCon Informatikai Kft.
Programozási alapismeretek * A Zh-írás módszertana.
Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs
User Profiles Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Paraméter továbbítás. (parameter passing) Paraméteres specifikációk: Pl.: string(spec) : hasonló specifikációk családja; string(nat); string(data); string(integer);
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Paraméterátadó-morfizmus diagramja: p: tartalmazás SPEC SPEC 1 h : SPEC  SPEC' h 1 : SPEC 1  SPEC 1 ' SPEC' SPEC 1 ' p': tartalmazás SPEC: paraméter.
Példa. Az ábrázolás szemléltetése.  = ({stack, elem },{ create :  stack; push : stack elem  stack}),  = ( {vector, nat, elem}, { create c :  vector.
Egyszerű, osztott ütemező LISP nyelven
Alkalmazott Informatikai Tanszék
Kriptográfia egy hallgató szemszögéből
Bevezetés a programozásba Algoritmikus gondolkodás
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hálózatkezelés Java-ban
A piros sál a leghosszabb.
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Előadás másolata:

Tervminták megvalósítása B formális nyelven Papp Olga Vadász Péter Témavezető: Fóthi Ákos

Tartalom Tervminták B formális nyelv Példa tervminta megvalósítására (Singleton) Megvalósítási módszerek, hasonlóságok tervmintáknál A B nyelv előnyei tervminták implementálása esetén

Tervminták Objektumelvű tervezés Újrafelhasználható terv - általános, később alkalmazható terv - minimális újratervezés Bevált jó tervek, tervrészletek: tervminták Felépítés: - név - feladat - megoldás - következmények

Singleton és Memento tervminták Singleton static Singleon* uniqueInstance singletonData static Singleton* Instance() SingletonOperation() GetSingletonData() Originator state SetMemento(Memento m) CretaMemento() Memento state GetState() SetState() Caretaker

B formális nyelv (Jean-Raymond Abrial 1985) objektum alapú nyelv leírás absztrakt gépek segítségével alapgépek – probléma specifikációja finomító gépek – finomítás tetszőleges lépésben implementáció gépek – a program egy lehetséges megvalósítása (futtatható kód) elő- és utófeltételek definiálhatósága minden lépésben automatikus típusellenőrzés és helyességbizonyítás

A B nyelv szintaxisa MACHINE SINGLETON CONCRETE_VARIABLES exist, singletonData INVARIANT singletonData:NAT & exist:BOOL INITIALISATION singletonData::NAT || exist:=FALSE OPERATIONS singletonOp(adat)= PRE adat:NAT THEN SELECT exist=TRUE THEN singletonData:=adat WHEN exist=FALSE THEN exist:=TRUE || singletonData:=adat END END; data<--getSingletonDat = PRE exist=TRUE THEN data:=singletonData END; bbool<--isExist= bbool:=exist END

B-t támogató szoftverek jBTools - szövegszerkesztő, kibővítve egyszerű B típusellenőrzéssel, és fordítóval (Java, C#) - ingyenes, egyszerű, csökkentett utasításkészlet, kisebb hiányosságok B4Free - típusellenőrző és helyességbizonyító eszközrendszer - ingyenes, korlátozott helyességbizonyító eljárások, grafikus felülettel: Click’n’Prove

Singleton tervminta B-ben imports sees Singleton SingintfaceÍr KiírBT_IO Singleton static Singleon* uniqueInstance singletonData static Singleton* Instance() SingletonOperation() GetSingletonData()

Singleton megvalósítása B-ben MACHINE SINGLETON CONCRETE_VARIABLES exist, singletonData INVARIANT singletonData:NAT & exist:BOOL INITIALISATION singletonData::NAT || exist:=FALSE OPERATIONS singletonOp(adat)= PRE adat:NAT THEN SELECT exist=TRUE THEN singletonData:=adat WHEN exist=FALSE THEN exist:=TRUE || singletonData:=adat END END; data<--getSingletonDat = PRE exist=TRUE THEN data:=singletonData END; bbool<--isExist= bbool:=exist END IMPLEMENTATION SINGLETON_imp REFINES SINGLETON INITIALISATION exist:=FALSE; singletonData::NAT OPERATIONS singletonOp(adat)= BEGIN IF exist=TRUE THEN singletonData:=adat ELSE BEGIN exist:=TRUE; singletonData:=adat END END; data<--getSingletonDat = BEGIN data:=singletonData END; bbool<--isExist = BEGIN bbool:=exist END END MACHINE SINGINTFACE SEES SINGLETON OPERATIONS singletonOperation(adat)= PRE adat:NAT THEN skip END; data<--getSingletonData = data:=0 END IMPLEMENTATION SINGINTFACE_imp REFINES SINGINTFACE IMPORTS SINGLETON OPERATIONS singletonOperation(adat)= BEGIN singletonOp(adat) END; data<--getSingletonData = BEGIN data<--getSingletonDat END MACHINE IR SEES SINGINTFACE OPERATIONS beir = skip END IMPLEMENTATION IR_imp REFINES IR SEES SINGINTFACE OPERATIONS beir= BEGIN singletonOperation(1234) END MACHINE KIIR INCLUDES IR OPERATIONS main = skip END IMPLEMENTATION KIIR_imp REFINES KIIR IMPORTS BT_IO, IR, SINGINTFACE OPERATIONS main = VAR bb, ii IN beir; bb<--isExist; IF bb=TRUE THEN BEGIN writeString("RENDBEN"); ii<--getSingletonData; writeInteger(ii) END ELSE writeString ("HIBA") END END

Singleton és Memento B-ben imports sees Singleton SingintfaceÍr KiírBT_IO includes/ imports State Memento Originator Usememento BT_IO

MACHINE SINGINTFACE SEES SINGLETON OPERATIONS singletonOperation(adat)= PRE adat:NAT THEN skip END; data<--getSingletonData = data:=0 END IMPLEMENTATION SINGINTFACE_imp REFINES SINGINTFACE IMPORTS SINGLETON OPERATIONS singletonOperation(adat)= BEGIN singletonOp(adat) END; data<--getSingletonData = BEGIN data<--getSingletonDat END MACHINE ORIGINATOR INCLUDES os.STATE(NAT), mm.MEMENTO OPERATIONS create_memento = skip; set_memento = PRE mm.exist = TRUE THEN skip END; set_azon(az) = PRE az : NAT THEN skip END; set_adat(ad) = PRE ad : NAT THEN skip END; az<--get_azon = az<--os.get_azon; ad<--get_adat = ad:=1 END IMPLEMENTATION ORIGINATOR_imp REFINES ORIGINATOR IMPORTS os.STATE(NAT), mm.MEMENTO OPERATIONS … END

MACHINE STATE(AVAILABLE_STATE, zero) CONSTRAINTS card(AVAILABLE_STATE) > 0 & zero: AVAILABLE_STATE CONCRETE_VARIABLES azon, adat INVARIANT azon : NAT & adat : AVAILABLE_STATE INITIALISATION azon :=0 || adat :: AVAILABLE_STATE OPERATIONS az<--get_azon = az := azon; set_azon(az) = PRE az : NAT THEN azon := az END; ad<--get_adat = ad := adat; set_adat(ad) = PRE ad : AVAILABLE_STATE THEN adat := ad END Típusellenőrzés és helyességbizonyítás MACHINE STATE(AVAILABLE_STATE) CONSTRAINTS card(AVAILABLE_STATE): NAT1 CONCRETE_VARIABLES azon, adat INVARIANT azon : NAT & adat : AVAILABLE_STATE INITIALISATION azon :=0 || adat :: AVAILABLE_STATE OPERATIONS az<--get_azon = az := azon; set_azon(az) = PRE az : NAT THEN azon := az END; ad<--get_adat = ad := adat; set_adat(ad) = PRE ad : AVAILABLE_STATE THEN adat := ad END IMPLEMENTATION STATE_imp(AVAILABLE_STATE) REFINES STATE INITIALISATION azon :=0 ; adat ::AVAILABLE_STATE OPERATIONS az<--get_azon = BEGIN az := azon END; set_azon(az) = BEGIN azon := az END; ad<--get_adat = BEGIN ad := adat END; set_adat(ad) = BEGIN adat := ad END IMPLEMENTATION STATE_imp(AVAILABLE_STATE, zero) REFINES STATE INITIALISATION azon :=0 ; adat := zero OPERATIONS az<--get_azon = BEGIN az := azon END; set_azon(az) = BEGIN azon := az END; ad<--get_adat = BEGIN ad := adat END; set_adat(ad) = BEGIN adat := ad END

Tervminták megvalósítása B-ben specifikáció implementációk felírása futtatható (Java) kód generálása a tervmintát felhasználó programok specifikációja és implementációja tesztelhetőség ellenőrzések és helyességbizonyítás hasonló struktúrájú felírás

A B nyelv előnyei tervmintáknál specifikáció és lépésenkénti finomítás lépésenként típusellenőrzés és helyességbizonyítás adott problémára való alkalmazás esetén a tervminta implementációjának helyességbizonyítása a tervmintát felhasználó program és a tervminta kapcsolatának ellenőrzése minden absztrakciós szinten elő- és utófeltételek (alkalmazhatósági feltételek) ellenőrzése