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

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

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Modell alapú tesztelés mobil környezetben

Nagy bonyolultságú rendszerek fejlesztőeszközei

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

OOP. Alapelvek Elek Tibor

ISA szimulátor objektum-orientált modell (C++)

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

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

Programozási nyelvek Java

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

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

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

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

UML (Unified Modelling Language)

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Vizuális adatelemzés - Gyakorlat. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Bevezetés. Dr. Iványi Péter

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás C és C++ -ban

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

BASH script programozás II. Vezérlési szerkezetek

Bevezetés a programozásba. 9. Előadás: Rekordok

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Mintavételes szabályozás mikrovezérlő segítségével

Kiterjesztések sek szemantikája

Adatbázis rendszerek. dr. Siki Zoltán

Rendszermodellezés: házi feladat bemutatás

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

Modellek fejlesztése

1. SZÁMÚ FÜGGELÉK MŰSZAKI LEÍRÁS

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Modellek ellenőrzése

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

Metamodellezés. Simon Balázs BME IIT, 2011.

Programozási nyelvek Java

Occam 1. Készítette: Szabó Éva

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Pénzügyi algoritmusok

Tartalom Platform-független modellezés Alkalmazás-modellezés A DECOS hardver platform Platform modellezés Hardver-szoftver integráció Implementáció 2

Informatika terméktervezőknek

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

OOP #14 (referencia-elv)

Modellek fejlesztése

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Operációs Rendszerek II. labor. 2. alkalom

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

Java II. I A Java programozási nyelv alapelemei

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

Java II. I A Java programozási nyelv alapelemei

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Funkcionális Nyelvek 2 (MSc)

Modellezési alapismeretek

Strukturális modellezés

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Fordító Optimalizálás

The modular mitmót system. DPY kijelző kártya C API

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

AWK programozás, minták, vezérlési szerkezetek

DECOS Nemzeti Nap. DECOS Nemzeti Nap. DECOS Nemzeti Nap

Informatikai rendszertervezés

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

Modellek ellenőrzése és tesztelése

eseményvezérelt megoldások Vizuális programozás 5. előadás

C++ programok fordítása

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Bevezetés a C++ programozási nyelvbe

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

Programozási nyelvek (ADA)

Elemi alkalmazások fejlesztése I.

Programozási nyelvek (ADA)

A C programozási nyelv III. Pointerek és tömbök.

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

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Objektum orientált programozás Bevezetés

Utolsó módosítás:

Entity Framework alapú adatbáziselérés

Apple Swift kurzus 3. gyakorlat

A C programozási nyelv III. Pointerek és tömbök.

Szoftver újrafelhasználás

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

3. Osztályok II. Programozás II

Informatikai rendszertervezés

7. fejezet: Mutatók és tömbök

Nagy HF u tmutato 2011/2012 II. fe le v

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programozás II gyakorlat. 6. Polimorfizmus

Tartalomjegyzék. Előszó... 10

Programozási nyelvek II.: JAVA

C++ programozási nyelv Konstruktorok-destruktorok

Átírás:

Modellező eszközök, kódgenerálás Budapesti Műszaki és Gazdaságtudományi Egyetem Hibatűrő Rendszerek Kutatócsoport Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 1

Modellező eszközök funkciói Modell Megjelenítés Visszavezetés Nézet Nézetek Szerkesztés Szöveges Grafikus Egyéb szerkesztőfelületek Demo internal: event A event B 2

Modellező eszközök funkciói Modell Megjelenítés Visszavezetés Nézet Nézetek Szerkesztés Funkcionális leírás Transzformáció + Információ: Hogyan generáljunk (fájlnevek, stratégia, ) Dokumentáció Konfiguráció Forráskód Rendszer leírása Különböző beállítások, elrendezések Leírásnak megfelelő program 3

Modellező eszközök funkciói Modell Megjelenítés Visszavezetés Nézet Nézetek Szerkesztés Rendszer leírás Szimuláció Megjelenítés Interakció + Információ: Rendszer paraméterei, környezete Lehetséges lefutások útvonala Rendszer paraméterek hangolása Tapasztalat 4

MODELLEZŐESZKÖZÖK 5

Yakindu modellezési funkciói Konkrét szintaxis (Szerkesztők) Grafikus Szintaxis Szemantika Modellező funkciók Ellenőrzés Kódgenerálás Szöveges Demo internal: event A event B Modell (Absztrakt szintaxis) 6 (Forráskód, dokumentáció, konfiguráció)

Absztrakt szintaxis Definíció: a szerkesztés alatt álló rendszermodell strukturális modellje. o A modell felépítésének modellje??? Modellező program kezeli Emlékeztető: strukturális modell = gráf o csomópontok, élek és tulajdonságok gráfja Switch Router Server Workstation Workstation Printer Workstation 7

Absztrakt szintaxis példa: Yakindu Kérdés: Hogyan készítenénk modellező programot? Példa: Yakindu modell Absztrakt szintaxis 8

Absztrakt szintaxis példa: Yakindu Kérdés: Hogyan készítenénk modellező programot? Példa: Yakindu modell Neveket String-ként tároljuk name = "X" Absztrakt szintaxis Modellelemeket objektumként Kapcsolatokat pointerekkel Válasz: objektum-orientált program + Extra funkciók 9

Konkrét szintaxis: Szöveges szintaxis Cél: konkrét megjelenítés mögöttes modell Szöveges szintaxis (programozási nyelv) o Feladat: Szöveg Modell o Nyelvtani szabályok alapján Nyelvtan <Statechart>::= <Name> <Interface>* <Interface>::= ("internal" <Name>) ":" <Event>* <Event>::= "event" <Name> <Name>::= 10 Statechart Demo event Demo internal: event A event B Megfelelő technológiákkal (pl. Xtext) könnyű saját modellező / programozási nyelvet csinálni! A Absztrakt Szintaxis internal event B

Konkrét szintaxis: Grafikus szintaxis Grafikus szintaxis (Diagram) o Feladat: Diagram Modell o Könnyebben átlátható, nehezebben írható o Nézeti modell szabályok Feltétel a modellen Diagram elem létrehozása Feltétel a modellben teljesül Diagram elem létrejön Diagram változik Modell változik 12

Konkrét szintaxis: Grafikus szintaxis Eredmény: Megfelelő technológiákkal (pl. Sirius) könnyű saját modellező / programozási nyelvet csinálni! 13

Modellek validálása: szintaxisellenőrzés Szintaktikai ellenőrzés: modellező eszközök összekötik a logikailag egymásra épülő modellelemeket Deklarálás interfészen: var clock: integer = 60 Szintaxisvezérelt szerkesztő Használat modellben: after 1 s [clock>0]/ clock -= 1 o Szerkesztés közben hiba Couldn t resolve reference o Fejlett szerkesztőeszköz (például lehetőségek felkínálása) Kód és diagram együtt Programozás: Modellezés: szerkesztés közben hibás szerkesztés közben helyes (legalább az alapvető struktúrája) 14

Modellek validálása: strukturális helyesség Strukturális ellenőrzés: modell gráf vizsgálata Hibaminták keresése szerkesztés közben Például elérhetetlen állapot: Node is not reachable. További ellenőrzések: hiányzó kezdőállapot, holtpont, változó értékadások, stb. 15

KÓDGENERÁLÁS BEMUTATÓ 16

Kódgenerálás feladatai Feladat: modellnek megfelelő viselkedésű program automatikus előállítása Több megoldás létezik tervezői döntések o Interpretált: modellt beolvassuk és végrehajtjuk Generatív: forráskód szintézise o Programozási nyelvek: Java, C, C++ o Optimalizálás: memória vs CPU Megfigyelhetőség vs Teljesítmény o Hogyan kapcsoljunk saját kódot a generálthoz? Kódgenerátor: paraméterezhető + kiterjeszthető 17

Kódgenerátor példán keresztül: Feldadat: Generáljunk C kódot Yakindu állapotgépekből Demo internal: event A event B Írjunk olyan függvényt: kap egy Modell objektumot visszaad egy szöveget A szöveg egy Demo.c fájlba kerül Fordító lefordítja 18

Sablon alapú kódgenerátor (Xtend) Cél: Állapotok Enum Összevágunk egy char*-ba a kimenetet, %s helyére írjuk az X,Y neveket Megoldás: C program sprintf(result, "enum states {\n\tstate%s,\nstate%s\n};", state1->name, state2->name); Sablon (Xtend): ''' enum_states { State«state1.name», State«state2.name» }''' Megírjuk a sablonosan 19 enum states { StateX, StateY }; Ez egyből működik! nehezen átlátható. Kiemeljük (escape) a változások helyét Könnyebb írni Átláthatóbb Könnyű módosítani +1 technológia

Kódgenerátor példa: Állapotok Várt C kód: //States of the statemachine enum states { StateX, StateY }; Lehetséges állapotok: Enumként felsorolva Sablon: //States of the statemachine enum_states { «FOR state : states SEPARATOR ','» State«state.name» «ENDFOR» }; 20 Demo internal: event A event B 1.Összes állapoton végigmegyünk 2.Vesszővel elválasztva írjuk ki: State«név» Pl: StateX,StateY

Kódgenerátor példa: kezdőállapot Várt C kód: // The actual state // First = initial state. enum states currentstate = StateX Aktuális állapot = kezdőállapot Demo internal: event A event B Sablon: // The current state. // Initial value = the entry state. enum states currentstate = State«findEntry(states).name» 1.Megkeressük a kezdőelemet 2.Kiírjuk a nevét 21

Kódgenerátor példa: Állapotátmenet Várt C kód: // Execute "A" event void doa() { switch(currentstate) { case StateX: A / X Y } } currentstate = StateY; break; case StateY: break; A / - Egy (egyszerű) állapotgéphez ennyi a kódgenerátor! 22 Demo internal: event A event B Sablon (vázlatosan): 1. Minden eseményhez egy do«esemény neve» függvény 2. A tranzíciók alapján mást csinál a függvény

Kódgenerátor Összefoglalás Kódgenerálás = Fordító Ugyanaz a lépés: Állapotgép C Assembly Gépi kód Jóslat: tegnap tervezési minta ma kódgenerátor holnap nyelvi elem A problémát a saját nyelvén: Produktivitás ++ Sok unalmas, bonyolult kód automatikusan Teljesítmény ++ Ellenőrizzük a saját nyelvén: Megbízhatóság ++ Tanszékünkön fejlesztett projektek: 23 akár 95% generált kód