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



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

Utolsó módosítás:

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT 6. kurzus

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

Az UML2 és a modell-vezérelt alkalmazásfejlesztés

Domain- specifikus modellezés az Eclipse Modeling Framework használatával

Utolsó módosítás:

Programozás 1. 2.gyakorlat

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

Miért is transzformáljunk modelleket? Varró Dániel

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Modell alapú tesztelés mobil környezetben

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

OOP: Java 8.Gy: Abstract osztályok, interfészek

Objektum Vezérelt Szoftverek Analízise

problémák elvárások megoldások EAI MDA MOF CWM köztes Sw eszközök hatékonyság konklúzió 09:09 problémák elvárások megoldások EAI MDA MOF CWM

UML (Unified Modelling Language)

Közösség, projektek, IDE

UML Feladatok. UML Feladatok

OOP és UML Áttekintés

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Előzmények

Modellalkotás UML-ben

Modellezés és metamodellezés

Programozási technológia

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

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

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

MODELL ALAPÚ MEGKÖZELÍTÉS TESZT ÚJRAFELHASZNÁLÁSHOZ INTELLIGENS OTTHON ESETÉN

Modellezés és metamodellezés

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

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

DEBRECENI EGYETEM INFORMATIKAI KAR. Az UML gyakorlati alkalmazásának bemutatása az AutoWorld rendszer tervezésén keresztül

Interfészek. PPT 2007/2008 tavasz.

Már megismert fogalmak áttekintése

10-es Kurzus. OMT modellek és diagramok OMT metodológia. OMT (Object Modelling Technique)

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

Szakterület-specifikus modellezés

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Objektumelvű programozás

JAVA PROGRAMOZÁS 3.ELŐADÁS

Modell Alapú Szoftverfejlesztés Eclipse-szel

Enterprise JavaBeans 1.4 platform (EJB 2.0)

WEBALKALMAZÁSOK MODELLVEZÉRELT KÉSZÍTÉSE. Kollár Lajos Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék.

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Ismeretanyag Záróvizsgára való felkészüléshez

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

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

Programozási nyelvek Java

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Osztálytervezés és implementációs ajánlások

S01-8 Komponens alapú szoftverfejlesztés 2

Osztálytervezés és implementációs ajánlások

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Szoftvertechnológia 2008/2009. tanév 2. félév 2. óra. Szoftvertechnológia

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

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

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

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Komplex záróvizsga témakörök Gazdaságinformatikus szak Pénzintézeti informatikus szakirány 2018

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

WEBES INFORMÁCIÓS RENDSZEREK MODELLEZÉSE. Adamkó Attila Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék.

Név: Neptun kód: Pontszám:

Integrált keretrendszer

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

A SZOFTVERTECHNOLÓGIA ALAPJAI

Programozási nyelvek Java

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

III. OOP (objektumok, osztályok)

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

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

Java programozási nyelv 5. rész Osztályok III.

Komponens rendszerek modell alapú tesztelése

JAVA SE/ME tanfolyam tematika

Alternatív adatbázisok Gráfadatbázisok

Book Template Title. Author Last Name, Author First Name

Programozás I. 2. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Folyamatmodellezés (BPMN) és alkalmazásai

Programozási Technológia előadás bevezetés. Előadó: Lengyel Zsolt

Vállalati alkalmazások integrációja Objektum- és architektúraszemléletű fejlesztési stratégia

Programfejlesztési Modellek

RIA Rich Internet Application

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Objektumorientált paradigma és a programfejlesztés

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

Objektum orientált software fejlesztés (Bevezetés)

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

ANALYSIS PATTERNS MARTIN FOWLER ANALYSIS PATTERNS. Általános ismertető és Accountability Patterns

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

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

HOGYAN HASZNÁLHATJUK FEL A VIZUÁLIS PROGRAMOZÁS (.NET C#) TANÍTÁSÁHOZ AZ UML-ALAPÚ MODELLEZÉST?

Osztályok. 4. gyakorlat

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

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Fogalmi modellezés. Ontológiák Alkalmazott modellező módszertan (UML)

Átírás:

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

Bevezetés Metamodellezés EMF & ecore Tartalom (C) Simon Balázs, BME IIT, 2011. 2

Hétfő: Simon Balázs Bevezetés hetente felváltva: előadás és gyakorlat metamodellezés kódgenerálás fordítóelmélet Csütörtök: Dr. László Zoltán kéthetente (C) Simon Balázs, BME IIT, 2011. 3

Célok Fejlett modellező eszköz használata Saját metamodell tervezése Kódgenerátorok készítése Programkódok feldolgozása Fordítóelmélet alapjainak megismerése A fenti módszerek használata a szoftverfejlesztés egyes fázisaiban (C) Simon Balázs, BME IIT, 2011. 4

Metamodellezés (C) Simon Balázs, BME IIT, 2011. 5

Világ Kép Modell Modell Kutya <<instanceof>> Bodri: Kutya <<instanceof>> Tacsi: Kutya (Bodri) (Tacsi) (C) Simon Balázs, BME IIT, 2011. 6

Modellezés Model Abstraction az adott környezet számára érdektelen információk figyelmen kívül hagyása Classification a közös tulajdonsággal rendelkező fontos információk csoportosítása Metamodel modellezési nyelv modellje megadja a modellek egy családjának építőelemeit, struktúráját, szemantikáját és kényszereit (C) Simon Balázs, BME IIT, 2011. 7

Világ Object UML Metamodellezés??? <<instanceof>> Kutya <<instanceof>> Bodri: Kutya <<instanceof>> Tacsi: Kutya (Bodri) (Tacsi) (C) Simon Balázs, BME IIT, 2011. 8

Metamodellezés UML Unified Modeling Language (M2) use-case diagram osztálydiagram szekvencia diagram MOF MetaObject Facility (M3) ebben van leírva az UML legfelső meta-szint önleíró az UML egy kicsi részhalmaza XMI XML Metadata Interchange modellek cseréje eszközök között XML formátumban (C) Simon Balázs, BME IIT, 2011. 9

Metaszintek Metaszint Leírás Elemek M3 MOF meta-metamodell (önmaga metamodellje) MOF: Class, Property, Association stb. M2 UML metamodell UML: Class, Property, Association, State, Activity stb. M1 UML modell Kutya nevű osztály M0 objektumok és adatok: az M1 réteg elemeinek példányai Bodri nevű Kutya típusú objektum (C) Simon Balázs, BME IIT, 2011. 10

Metamodellezés UML (M2): nem mindig elegendő pl. gráfok, fák, egyéb speciális alkalmazási területek DSL Domain Specific Language (M2) szakterület-specifikus nyelvek speciális szakterületre kialakított nyelvek az absztrakt szintaxis (modell struktúrája, elemei és kényszerei) MOF-ban leírva a konkrét szintaxis (felhasználó számára) lehet: szöveges (speciális programnyelv) grafikus (speciális dobozok és vonalak) előny: a felhasználó a saját fogalmaiból építkezik (C) Simon Balázs, BME IIT, 2011. 11

Metaszintek Metaszint Leírás Elemek M3 M2 M1 M0 MOF meta-metamodell (önmaga metamodellje) a MOF által leírt metamodellek: a MOF elemeinek példányai az M2 réteg metamodelljei által leírt modellek: az M2-es metamodellelemek példányai objektumok és adatok: az M1 réteg elemeinek példányai MOF: Class, Property, Association stb. UML: Class, Property, Association, State stb.; DSL metamodell Kutya nevű osztály; DSL modell Bodri nevű Kutya típusú objektum; DSL objektumok Megjegyzés: Két egymás feletti metaszint közötti kapcsolat relatív, így tetszőlegesen sok metaszint létezhet! (C) Simon Balázs, BME IIT, 2011. 12

MDA: Model Driven Architecture (C) Simon Balázs, BME IIT, 2011. 13

MDA: Model Driven Architecture Platform futtatási környezet specifikálása modellek egy halmazára legalább egy implementáció pl. Java,.NET; Windows, Linux; Oracle, MySQL PIM: Platform Independent Model PSM: Platform Specific Model Mapping leképzés, függvény: PIM-ből a PSM előállítása Marker ez alapján dől el, milyen platformra készül a PSM A leképzés plusz bemenete, nem része a PIM-nek! (C) Simon Balázs, BME IIT, 2011. 14

MDA: Model Driven Architecture Unmarked PIM Unmarked PIM Marks for Platform A Marks for Platform B Unmarked PIM Marks for Platform A Marks for Platform B Unmarked PIM Marks for Platform A Marks for Platform B Mapping Mapping Unmarked PSM Unmarked PSM (C) Simon Balázs, BME IIT, 2011. 15

MDA: Model Driven Architecture Model elaboration a modell általában nem teljes: finomítani kell kiindulás: magas absztrakciós szintű modell átmenet: köztes modellek kimenet: alacsonyabb absztrakciós szintű modell példák: get-set metódusok automatikus hozzáadása a modellhez Java kód generálása modellből Reverse engineering modell visszafejtése az absztrakciós szint emelése példa: Java kód alapján UML osztálydiagram előállítása (C) Simon Balázs, BME IIT, 2011. 16

Transzformációk Modell feldolgozását igényli: modelltranszformáció, kódgenerálás Programkód megértését igényli: aspektusszövés, pretty printing, reverse engineering, fordítás modelltranszformáció aspektusszövés, pretty printing kódgenerálás fordítás Modell Programkód Gépi kód reverse engineering (C) Simon Balázs, BME IIT, 2011. 17

Gyakorlatok (C) Simon Balázs, BME IIT, 2011. 18

Mi ez? (C) Simon Balázs, BME IIT, 2011. 19

Mi ez? (C) Simon Balázs, BME IIT, 2011. 20

Context Diagram & Data Flow Diagram (C) Simon Balázs, BME IIT, 2011. 21

Context & Data Flow Diagram Data-flow: adat Process: folyamat Store: tár Terminator: külső forrás/nyelő (C) Simon Balázs, BME IIT, 2011. 22

Feltételek Store csak process-hez kapcsolható Context diagramon nincs store Egy store több szinten is előfordulhat (C) Simon Balázs, BME IIT, 2011. 23

Gyakorlatok MOF (EMF ecore) 1. CD & DFD programnyelv 2., 3. 4. CD & DFD metamodell 5. CD & DFD grafikus eszközkészlet CD & DFD szöveges reprezentáció CD & DFD modell CD & DFD grafikus reprezentáció (C) Simon Balázs, BME IIT, 2011. 24

Eclipse Modeling Framework (EMF) (C) Simon Balázs, BME IIT, 2011. 25

Eclipse Modeling Framework (EMF) Java alapú keretrendszer strukturált modellező nyelvek létrehozására EMF ecore: az EMF magja a MOF-nak felel meg, de kicsit eltér Saját modellező nyelv létrehozása: ecorera építve Létezik EMF-re épülő UML metamodell is Modell mentése, visszatöltése: XMI (C) Simon Balázs, BME IIT, 2011. 26

Követelmények Tervezéshez: Eclipse Helios (3.6) + Modeling/EMF Eclipse Modeling Framework SDK plugin telepítése Egyszerű felhasználáshoz Java kódból: Saját metamodellből generált.jar fájl org.eclipse.emf.ecore.jar org.eclipse.emf.common.jar Összetettebb felhasználáshoz (grafikus editorral): Eclipse fejlesztőkörnyezet (C) Simon Balázs, BME IIT, 2011. 27

ecore (C) Simon Balázs, BME IIT, 2011. 28

ecore (C) Simon Balázs, BME IIT, 2011. 29

Saját metamodell létrehozása Négy lehetséges módszer: Java interfészek kommentbe írt annotációkkal UML osztálydiagramszerű grafikus editor XMI XML Schema Végül mindegyik a Java osztályokra képződik le kicsit megtévesztő: nem Java 1.5-ös annotációk, hanem kommentbe írt speciális karakterláncok (C) Simon Balázs, BME IIT, 2011. 30

Grafikus editor (C) Simon Balázs, BME IIT, 2011. 31

Java annotations 1. Java csomag létrehozása 2. Csomagon belül interfészek létrehozása: minden metamodell-beli elemnek egy-egy interfészek elé komment: (implementációja osztály lesz) használható még az abstract módosító: (implementációja absztrakt osztály lesz) /** * @model */ /** * @model abstract= true */ többszörös öröklődés megengedett (interfész szinten) (C) Simon Balázs, BME IIT, 2011. 32

Java annotations 3. Interfészeken belül: getter függvények fejléce, ezekből lesznek az implementáló osztály attribútumai getter-ek előtt komment: lehetséges módosítók: default=" " (alapértelmezett érték megadása) changeable="false" (csak olvasható attribútum) containment="true" /** * @model */ (lista esetén: kompozíció) (C) Simon Balázs, BME IIT, 2011. 33

package tree.model; import java.util.list; /** * @model */ Példa package tree.model; public interface Composite extends Node { /** * @model containment="true" */ public List<Node> getchildren(); } /** * @model */ public interface Node { /** * @model */ public Composite getparent(); } (C) Simon Balázs, BME IIT, 2011. 34

Java annotations Az interfészek alapján az Eclipse generálni tudja az implementációt Csak a @model-lel annotált elemeket veszi figyelembe, minden mást változatlanul hagy A gyökérinterfészeket az EObject-ből származtatja, implementációjukat pedig EObjectImpl-ből A listákat lecseréli EList-re Ha változtatható az attribútum, setter-t is generál (kivéve listáknál) (C) Simon Balázs, BME IIT, 2011. 35

Generált implementáció A saját csomagon belül: ModelFactory interfész ModelPackage interfész két alcsomag: [saját csomag].impl [saját csomag].util Az impl alcsomag tartalma: minden eredeti interfészhez egy [interfésznév]impl nevű implementáló osztály sok generált függvény @generated annotációval ellátva ezeket újrageneráláskor felülírja az annotációt eltávolítva saját kód is írható ModelFactoryImpl osztály ModelPackageImpl osztály (C) Simon Balázs, BME IIT, 2011. 36

ModelFactory A modell példányosításáért felel Singleton, elérése: ModelFactory.eINSTANCE Minden definiált interfészhez egy.create[interfésznév]() függvény Példa: ModelFactory factory = ModelFactory.eINSTANCE; Node node = factory.createnode(); (C) Simon Balázs, BME IIT, 2011. 37

Metamodellezés Transzformációk: Összefoglalás metamodell kódgenerálás refaktorálás grafikus modellezés Saját metamodell készítése: EMF (C) Simon Balázs, BME IIT, 2011. 38