Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense,...
Transcript of Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense,...
![Page 1: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/1.jpg)
Model-Driven Language Engineering
Franck Fleureye-mail : [email protected]
http://www.fleurey.com/franck
INF 5120 – 31/01/2011
![Page 2: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/2.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 2
Outline Introduction to Model Driven Engineering
Designing Meta-models: the LOGO example
Static Semantics with OCL
Operational Semantics with Kermeta
Building a Compiler: Model transformations
Conclusion and Wrap-up
![Page 3: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/3.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 3
From the object as the only one concept– As e.g. in Smalltalk
To a multitude of concepts
Once upon a time…software development looked simple
Design patterns
Collaborations
Required port Provided Port
<<Component>>Decoder
DecoderIReceiverI
DaDataI
ComponentsCOM+DCOM
CORBAIIOP
MicrosoftC# & .Net
XMLSOAP
Sun’s Java &EJB
HTTPHTML
+ until the next ultimate middleware platform (~2005)
ProprietaryMiddleware(eg. automotive)
It's difficult -- in fact, next to impossible – for a large enterprise to standardize on a single middleware platform. (R. Soley)
Middleware (middle war)
Aspects
![Page 4: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/4.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 4
Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of
something in place of something else for some cognitive purpose. It allows us to use something that is simpler, saferor cheaper than reality instead of reality for some purpose.
A model represents reality for the given purpose; the model is an abstraction of reality in the sense that it cannot represent all aspects of reality. This allows us to deal with the world in a simplified manner, avoiding the complexity, danger and irreversibility of reality.
Jeff Rothenberg.
![Page 5: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/5.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 5
Modeling in Science & Engineering A Model is a simplified representation of an aspectof the World for a specific purpose
M0(the world)
M1(modelingspace) Is represented by
Specificity of Engineering:Model something not yet existing (in order to build it)
+Applicant()+ApplicantInfo()+MakeApplication()
-companyName : CString-experience : CString-reference1 : CString-reference2 : CString-reference3 : CString
Applicant
+Person()+PersonInfo()
-personID : unsigned long-surname : CString-givenName : CString-middleInitial : char-streetAddress : CString-postCode : CString-countryname : CString-eMailAddress : CString
Person
-is taught by
1
-teaches
0..*+CourseSession()+CourseSessionInfo()
-courseSessionID : unsigned long-courseDate : unsigned long-courseID : unsigned long-courseLocation : CString
CourseSession
+AppStatus()+AppStatusInfo()
-statusCode : char-statusName : CString
AppStatus
+CourseRegistration()+CourseRegistrationInfo()
-registrationDate : unsigned long-completionFlag : bool-confirmedDate : unsigned long
CourseRegistration
+Test()+TestInfo()
-testScore : unsigned longTest
+Application()+ApplicationInfo()
-productNr : unsigned long-certificationLevel : unsigned long-applicationDate : unsigned long
Application
+PermittedStatusChange()+StatusChangeInfo()
-fromStatus : char-toStatus : char
PermittedStatusChange
+ExamSession()+ExamSessionInfo()
-examSession : unsigned long-examlocation : CString-examDate : unsigned long
ExamSession
-gives0..*
-is achieved1
-is made by
1
-makes
0..*
-allows change in
0..*
-has a
1..*
-is taken by1
-takes0..*
-is made by a1
-made a1..*
-is in1
-is filled by0..*
-uses
1
-is used in
0..*
-applies to a0..*
-is for a1
+Exam()+ExamInfo()
-examID : unsigned long-certificationLevel : unsigned long
Exam
+Employee()+GetCurrentAge()+EmployeeInfo()
-jobType : CString-roomNr : unsigned long-department : CString-division : CString-jobTitle : CString-manager : unsigned long-headsDept : CString-headsDivision : CString-mobileNr : CString-birthDate : unsigned long
Employee
+registrationform()
RegistrationForm
-uses**
ApplicantApplicantList PersonList
findApplicant()
ApplicationRegForm
Applicant()
findPerson()
addPerson()
addApplication()
Application()
MakeApplication()
ApplicationList
![Page 6: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/6.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 6
Model and Reality in Software Sun Tse: Do not take the map for the reality Magritte
Software Models: from contemplative to productive
![Page 7: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/7.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 7
Modeling and Weaving
DesignModel
Use CaseModel
SecurityModel
QoSModel Business
Model
ObjectModel
TestModel
UIModel
PlatformModel
CodeModel
tester
Challenges:-Product Families-Reuse of Weaving Process
-Automatic Weaving
![Page 8: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/8.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 8
Assigning Meaning to Models If a model is no longer just
– fancy pictures to decorate your room– a graphical syntax for C++/Java/C#/Eiffel...
Then tools must be able to manipulate models– Let’s make a model of what a model is!– => meta-modeling
» & meta-meta-modeling..» Use Meta-Object
Facility (MOF) to avoidinfinite Meta-recursion
ConstraintNamespace
Package
GeneralizableElement
0..*
0..*+supertype
{ordered}0..*
+subtype
0..*Generalizes
Classifier
Class AssociationDataType
Feature
BehavioralFeature StructuralFeature
Operation
AssociationEnd
Reference
0..*
1
+referent0..*
+referencedEnd1
RefersTo
MofAttribute
ModelElement
0..*0..1
+containedElement
{ordered}
0..*+container
0..1
Contains
0..*
1..*
0..*
+constrainedElement
1..* Constrains
![Page 10: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/10.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 10
Generalizations
© OMG
NB: Tell you nothing about:•generalization being acyclic, •or semantics of dynamic binding
*
![Page 12: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/12.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 12
Comparing Abstract Syntax Systems
Pascal LanguageGrammar
A specificPascal Program
A specificexecution
of a Pascal program
EBNF MOF
The UMLmeta-Model
A Specificphenomenon
corresponding toa UML Model
A SpecificUML Model
Technology #2(MOF + OCL)
M3
M2
M1
Technology #1(formal grammars
attribute grammars,etc.)
A XMLdocument
A XML DTDOr Schema
A XMLdocument
A XML DTDor Schema
Technology #3(XML Meta-Language)
KIFTheories
Upper LevelOntologies
Technology #4(Ontology engineering)
[XMI=MOF+XML+OCL]
+DescriptionLogics
+ConceptualGraphs+etc.
+ Xlink, Xpath, XSLT+ RDF, OIL, DAML+ etc.
(From J. Bézivin)
![Page 13: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/13.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 13
MDA: the OMG vision"OMG is in the ideal position to provide the model-based standards that are necessary to extend integration beyond the middleware approach… Now is the time to put this plan into effect. Now is the time for the Model Driven Architecture."
Richard Soley & OMG staff, MDA Whitepaper Draft 3.2
November 27, 2000
![Page 14: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/14.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 14
Mappings to multiple and evolving platforms
COM+DCOM
CORBA C#.Net XML
SOAP
JavaEJB HTTP
HTML
MOF & UML as the core
Organization assets expressed as models
Model transformations to map to technology specific platforms
Platform neutral models basedon UML & MOF
![Page 15: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/15.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 15
The core idea of MDA:PIMs & PSMs
MDA models– PIM: Platform Independent Model
» Business Model of a system abstracting away the deployment details of a system
» Example: the UML model of the GPS system– PSM: Platform Specific Model
» Operational model including platform specific aspects» Example: the UML model of the GPS system on .NET
Possibly expressed with a UML profile (.NET profile for UML)
– Not so clear about platform models» Reusable model at various levels of abstraction
CCM, C#, EJB, EDOC, …
![Page 16: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/16.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 16
Model Driven Engineering : Summary
Modeling to master complexity– Multi-dimensional and aspect oriented by definition
Models: from contemplative to productive– Meta-modeling tools, meta-models used to define languages
Model Driven Engineering– Weaving aspects into a design model
» E.g. Platform Specificities
Model Driven Architecture (PIM / PSM): just a special case of Aspect Oriented Design
Related: Generative Prog, Software Factories
![Page 17: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/17.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 17
Outline Introduction to Model Driven Engineering
Designing Meta-models: the LOGO example
Static Semantics with OCL
Operational Semantics with Kermeta
Building a Compiler: Model transformations
Conclusion and Wrap-up
![Page 18: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/18.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 18
Meta-Models as Shared Knowledge Definition of an Abstract Syntax in E-MOF
– Repository of models with EMF– Reflexive Editor in Eclipse– JMI for accessing models from Java– XML serialization for model exchanges
Applied in more and more projects– SPEEDS, OpenEmbedd,DiVA…
![Page 19: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/19.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 19
Example with StateMachines
S1 S3S2
a/b x/y
b/a
y/x
run() reset()
FSM
name: EString
step()
State input: EStringoutput: EString
fire()
Transition
initialState
1
owningFSM 1 ownedState*currentState
0..1
source
1
outgoingTransition
*target
1
incomingTransition
0..1
Model
Meta-Model
![Page 20: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/20.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 20
Breathing life into Meta-Models
// MyKermetaProgram.kmt// An E-MOF metamodel is an OO program that does nothing
require "StateMachine.ecore" // to import it in Kermeta// Kermeta lets you weave in aspects
// Contracts (OCL WFR)require “StaticSemantics.ocl”// Method bodies (Dynamic semantics)require “DynamicSemantics.kmt”// Transformations
run() reset()
FSM
name: EString
step()
State input: EStringoutput: EString
fire()
Transition
initialState
1
owningFSM 1 ownedState*currentState
0..1
source
1
outgoingTransition
*target
1
incomingTransition
0..1
Context FSM inv: ownedState->forAll(s1,s2|s1.name=s2.name implies s1=s2)
aspect class FSM {operation reset() : Void {
currentState := initialState}}class Minimizer {
operation minimize (source: FSM):FSM {…}}
![Page 21: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/21.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 21
DIY with LOGO programs Consider LOGO programs of the form:
repeat 3 [ pendown forward 3 penup forward 4 ]
to square :width repeat 4 [ forward :width right 90]
endpendown square 10 *10
http://en.wikipedia.org/wiki/Logo_(programming_language)
![Page 22: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/22.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 22
Fractals in LOGO; lefthilbertto lefthilbert :level :size
if :level != 0 [left 90righthilbert :level-1 :sizeforward :sizeright 90lefthilbert :level-1 :sizeforward :sizelefthilbert :level-1 :sizeright 90forward :sizerighthilbert :level-1 :sizeleft 90
]end
; righthilbertto righthilbert :level :size
if :level != 0 [right 90lefthilbert :level-1 :sizeforward :sizeleft 90righthilbert level-1 :sizeforward :sizerighthilbert :level-1 :sizeleft 90forward :sizelefthilbert :level-1 :sizeright 90
]end
![Page 23: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/23.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 23
Case Study: Building a Programming Environment for Logo
Featuring– Edition in Eclipse
– On screen simulation
– Compilation for a Lego Mindstorms robot
![Page 24: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/24.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 24
Model Driven Language Engineering : the Process
Specify abstract syntax Specify concrete syntax Build specific editors Specify static semantics Specify dynamic semantics Build simulator Compile to a specific platform
![Page 25: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/25.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 25
Meta-Modeling LOGO programs
Let’s build a meta-model for LOGO– Concentrate on the abstract syntax– Look for concepts: instructions, expressions…– Find relationships between these concepts
» It’s like UML modeling !
Defined as an ECore model– Using EMF tools and editors
![Page 28: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/28.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 28
Concrete syntax
Any regular EMF based tools Textual using Sintaks Graphical using GMF or TopCased
logo.sts
![Page 29: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/29.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 29
EMFText http://www.emftext.org Tutorial, documentation and lots of example
on the web site. Annotations for expressions
![Page 30: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/30.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 30
Outline Introduction to Model Driven Engineering
Designing Meta-models: the LOGO example
Static Semantics with OCL
Operational Semantics with Kermeta
Building a Compiler: Model transformations
Conclusion and Wrap-up
![Page 31: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/31.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 31
Static Semantics with OCL Complementing a meta-model with Well-
Formedness Rules, aka Contracts e.g.;– A procedure is called with the same number of arguments
as specified in its declaration Expressed with the OCL (Object Constraint
Language)– The OCL is a language of typed expressions.– A constraint is a valid OCL expression of type Boolean.– A constraint is a restriction on one or more values of (part
of) an object-oriented model or system.
![Page 32: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/32.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 32
Contracts in OO languages
Inspired by the notion of Abstract Data Type
Specification = Signature +– Preconditions – Postconditions – Class Invariants
Behavioral contracts are inherited in subclasses
![Page 33: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/33.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 33
OCL Can be used at both
– M1 level (constraints on Models)» aka Design-by-Contract (Meyer)
– M2 level (constraints on Meta-Models)» aka Static semantics
Let’s overview it with M1 level exemples
![Page 34: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/34.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 34
Simple constraints
Customer
name: Stringtitle: Stringage: IntegerisMale: Boolean
title = if isMale then ‘Mr.’ else ‘Ms.’ endif
age >= 18 and age < 66
name.size < 100
![Page 35: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/35.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 35
Non-local contracts: navigating associations
Each association is a navigation path– The context of an OCL expression is the starting point– Role names are used to select which association is to be
traversed (or target class name if only one)
Person Car1 owner ownings *ownership
Context Car inv:self.owner.age >= 18
![Page 36: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/36.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 36
Navigation of 0..* associations Through navigation, we no longer get a scalar
but a collection of objects OCL defines 3 sub-types of collection
– Set : when navigation of a 0..* association» Context Person inv: ownings return a Set[Car]» Each element is in the Set at most once
– Bag : if more than one navigation step» An element can be present more than once in the Bag
– Sequence : navigation of an association {ordered}» It is an ordered Bag
Many predefined operations on type collection Syntax::
Collection->operation
![Page 37: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/37.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 37
Collection hierarchy
Collection
Set Bag Sequence
minussymmetricDifferenceasSequenceasBag
firstlastat(int)appendprependasBagasSet
asSequenceasSet
![Page 38: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/38.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 38
Basic operations on collections
isEmpty– true if collection has no element
notEmpty– true if collection has at least one element
size– Number of elements in the collection
count (elem)– Number of occurrences of element elem in the collection
Context Person inv: age<18 implies ownings->isEmpty
![Page 39: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/39.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 39
select Operation possible syntax
– collection->select(elem:T | expr)– collection->select(elem | expr) – collection->select(expr)
Selects the subset of collection for which property expr holds
e.g.
shortcut:
context Person inv:ownings->select(v: Car | v.mileage<100000)->notEmpty
context Person inv:ownings->select(mileage<100000)->notEmpty
![Page 40: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/40.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 40
forAll Operation possible syntax
– collection->forall(elem:T | expr)– collection->forall(elem | expr) – collection->forall(expr)
True iff expr holds for each element of thecollection
e.g.
shortcut:
context Person inv:ownings->forall(v: Car | v.mileage<100000)
context Person inv:ownings->forall(mileage<100000)
![Page 41: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/41.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 41
Operations on CollectionsOperation Descriptionsize The number of elements in the collectioncount(object) The number of occurences of object in the collection.includes(object) True if the object is an element of the collection.includesAll(collection) True if all elements of the parameter collection are present
in the current collection.isEmpty True if the collection contains no elements.notEmpty True if the collection contains one or more elements.iterate(expression) Expression is evaluated for every element in the collection.sum(collection) The addition of all elements in the collection.exists(expression) True if expression is true for at least one element in the
collection.forAll(expression) True if expression is true for all elements.
![Page 42: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/42.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 42
Static Semantics for LOGO No two formal parameters of a procedure may
have the same name:
A procedure is called with the same number of arguments as specified in its declaration:
![Page 43: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/43.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 43
Static Semantics for LOGO No two formal parameters of a procedure may
have the same name:context ProcDeclaration
inv unique_names_for_formal_arguments :args -> forAll ( a1 , a2 | a1. name = a2.name
implies a1 = a2 ) A procedure is called with the same number of
arguments as specified in its declaration:context ProcCall
inv same_number_of_formals_and_actuals :actualArgs -> size = declaration .args -> size
![Page 44: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/44.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 44
EMF Validation Framework http://www.eclipse.org/modeling/emf/?project=validation Tutorial available in the EMF documentation
![Page 45: Model-Driven Language Engineering...Why modeling: master complexity Modeling, in the broadest sense, is the cost-effective use of something in place of something else for some cognitive](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fae1f736ab4562c8408de0a/html5/thumbnails/45.jpg)
INF5120 – 2011 – Franck Fleurey ([email protected]) 45
OBLIG 1: – “MDE tools in practice”
1a. Training in EMF and EMF Validation Framework
The goal of this exercise is to create a meta-model for the LOGO language and to implement its static semantics using the EMF Validation Framework.
You can choose any version of the logo language you want to implement (see http://en.wikipedia.org/wiki/Logo_(programming_language)) but it should have at least procedure definitions and calls in addition to the basic constructions.
1b. Training in EMFText
The EMFText tool allow to specify textual concrete syntax for domain specific modelling languages. The eclipse plugin, documentation and many examples can be found at http://www.emftext.org.
The goal of the exercise is to create a text editor for your LOGO language. Your textual syntax should include proper parsing of expressions with correct priorities of operators and without the need for redundant parenthesis. Hint: make use of the operators annotations available in the latest version of emftext. Your parser should ensure proper scoping of variables and especially procedure parameters.
45