FAME - Meta-Modeling at Runtime
-
Upload
esug -
Category
Technology
-
view
216 -
download
0
description
Transcript of FAME - Meta-Modeling at Runtime
![Page 1: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/1.jpg)
ESUG 2008 Adrian Kuhn 1
FAME Meta-Modeling at Runtime
![Page 2: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/2.jpg)
ESUG 2008 Adrian Kuhn 2
How to Model an Eternal Beer Store?
![Page 3: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/3.jpg)
ESUG 2008 Adrian Kuhn 3
An eternal system can be extended at runtime.
![Page 4: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/4.jpg)
ESUG 2008 Adrian Kuhn 4
An eternal application grows with your business.
![Page 5: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/5.jpg)
ESUG 2008 Adrian Kuhn 5
![Page 6: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/6.jpg)
ESUG 2008 Adrian Kuhn 6
instance of
Heineken
name = 'Heineken' alc_vol = 5 price = 0.60 size = 0.33
![Page 7: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/7.jpg)
ESUG 2008 Adrian Kuhn 7
Beer
properties = { name : String, alc_vol : Number, price : Number, size : Number }
instance of
Heineken : Beer
name = 'Heineken' alc_vol = 5 price = 0.60 size = 0.33
inst
![Page 8: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/8.jpg)
ESUG 2008 Adrian Kuhn 8
Beer : Fame-Class
properties = { name:String, …, … }
instance ofHeineken : Beer
inst
Fame-Class
properties = { properties:Property[] }
inst
name = 'Heineken' …
![Page 9: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/9.jpg)
ESUG 2008 Adrian Kuhn 9
Beer : Fame-Class
instance ofHeineken : Beer
FM3.Class : Fame-Class
inst
inst
inst
![Page 10: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/10.jpg)
ESUG 2008 Adrian Kuhn 10
Metamodel
Model
Meta-Metamodel
conf
conforms to
conf
modeled by
![Page 11: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/11.jpg)
ESUG 2008 Adrian Kuhn 11
Application Fame
Application Model
Application Metamodel
FM3 BackendFrontend
MSE
MSE
Architecture of a typical Fame-based system.
![Page 12: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/12.jpg)
ESUG 2008 Adrian Kuhn 12
heineken : HNK.Beer
name = 'Heineken' alc_vol = 5 in_stock = 1000 price = 0.60 vol = 0.33
joe : HNK.Customer
name = 'Joe Example' address = 'Levittown' orders = { anOrder, … }
anOrder : HNK.Order
\total = 3.60
anOrder : HNK.Order
amount = 12 customer = joe date = 2008-08-26 10:20 item = heineken \total = 7.20
![Page 13: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/13.jpg)
ESUG 2008 Adrian Kuhn 13
((HNK.Beer (id: 1) (name 'Heineken') (alc_vol 5) (in_stock 1000) (price 0.6) (vol 0.33))(HNK.Order (id: 2) (amount 12) (customer (ref: 4)) (date '2008-08-26 10:20') (item (ref: 1))(HNK.Order (id: 3) (amount 6) (customer (ref: 4)) (date '2008-08-23 13:45') (item (ref: 1))(HNK.Customer (id: 3) (name = 'Joe Example') (address = 'Levittown') (orders (ref: 2)))
MSE File of Model
![Page 14: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/14.jpg)
ESUG 2008 Adrian Kuhn 14
HNK.Beer
name:String alc_vol:Number in_stock:Number price:Number vol:Number
HNK.Customer
name:String address:String orders:Order[]
HNK.Order
amount:Number customer:Customer date:String item:Beer /total:Number
![Page 15: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/15.jpg)
ESUG 2008 Adrian Kuhn 15
((FM3.Package (id: 1) (name 'HNK') (classes (FM3.Class (name 'Beer') (properties (FM3.Property (name 'name') (type (ref: 'String')) (FM3.Property (name 'alc_vol') (type (ref: 'Number')) (FM3.Property (name 'in_stock') (type (ref: 'Number')) (FM3.Property (name 'price') (type (ref: 'Number')) (FM3.Property (name 'vol') (type (ref: 'Number')))) (FM3.Class (id: 2) (name 'Order') (properties (FM3.Property (name 'amount') (type (ref: 'Number')) (FM3.Property (name 'customer) (type (ref: 3)) (FM3.Property (name 'date') (type (ref: 'String')) (FM3.Property (name 'item')
MSE File of Metamodel
![Page 16: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/16.jpg)
ESUG 2008 Adrian Kuhn 16
FM3.Element FM3.Class
FM3.Package
FM3.Property
name:String /fullname:String
derived:Boolean keyed:Boolean multivalued:Boolean
opposite
superclass
package extensiontype
FM3 Meta-Metamodel
![Page 17: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/17.jpg)
ESUG 2008 Adrian Kuhn 17
FM3 Host-ClassesFM3 Instances
any Instances
FM3 Instances any Host-ClassesFront/Backend
Front/Backend
select
update
update
select pragma processing
refactor
bootstrapping
conf
conf
inst
inst
conf
Fame- and Smalltalk classes are causallyconnected.
![Page 18: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/18.jpg)
ESUG 2008 Adrian Kuhn 18
any InstancesFront/Backend
select
update
pragma processing
conf
inst
Runtime pragma processing makes the systemself-aware of its structure.
any Fame-Classes any Host-Classes
![Page 19: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/19.jpg)
ESUG 2008 Adrian Kuhn 19
any InstancesFront/Backend
select
update
update
pragma processing
refactor
conf
inst
The system adapts to new data structures usingruntime code generation.
FM3 Instances any Host-ClassesFront/Backend
![Page 20: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/20.jpg)
ESUG 2008 Adrian Kuhn 20
any Instances
FM3 Instances any Host-ClassesFront/Backend
Front/Backend
select
update
update
select pragma processing
refactor
bootstrapping
conf
conf
inst
inst
conf
The top-most layer is self-described.
FM3 Host-ClassesFM3 Instances
![Page 21: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/21.jpg)
ESUG 2008 Adrian Kuhn 21
any Instances
any Host-Classes
"operate"
"update"
instan
ce of
"select"
Do objects dream of virtual sheep?
REPL loopfor applications
SOUL =Select OperateUpdate Loop
![Page 22: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/22.jpg)
ESUG 2008 Adrian Kuhn 22
DEMO Nothing tops a running example.
![Page 23: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/23.jpg)
ESUG 2008 Adrian Kuhn 23
Fame.Repository
Fame.Tower FM3.Package
FM3.Class
FM3.Property
FM3.Element
Fame.MSEPrinter
Fame.MetamodelInferencer
Fame.RepositoryBuilder
Fame.ParseClient
Fame.MetaRepository
Fame.Parser
accepts
accept
s
contains
creates
creates
2
1
*
Core classes of the FAME framework.
![Page 24: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/24.jpg)
ESUG 2008 Adrian Kuhn 24
MSE Files allow you to exchange any data.
any Instances
any Host-Classes
Backend
import
instan
ce of
export
![Page 25: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/25.jpg)
ESUG 2008 Adrian Kuhn 25
any Instances
any Host-Classes
Frontend
update
instan
ce of
display
The FAME API allows you to browse any data.
![Page 26: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/26.jpg)
ESUG 2008 Adrian Kuhn 26
Extend your application at runtime.
![Page 27: FAME - Meta-Modeling at Runtime](https://reader033.fdocuments.us/reader033/viewer/2022060202/559c72bf1a28ab88088b4640/html5/thumbnails/27.jpg)
ESUG 2008 Adrian Kuhn 27
FAME Meta-Modeling at Runtime
Available at http://smallwiki.unibe.ch/fame