Upload
elizabeth-benson
View
214
Download
0
Embed Size (px)
Citation preview
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Jean-Marie FavreJean-Marie Favre Software ExplorerSoftware Explorer
and Language Archeologistand Language Archeologist
University University of Grenobleof Grenoble
Looking from the past ... to build the Looking from the past ... to build the futurefuture
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
MessagesMessages
Metamodels are first class entities (MDE)Metamodels are first class entities (MDE) Metaware is everywhereMetaware is everywhere Metamodels are keys to Reverse EngineeringMetamodels are keys to Reverse Engineering Reverse Engineering is key to Model Driven Reverse Engineering is key to Model Driven
EngineeringEngineering
... Read the paper(s)... Read the paper(s)
WCRE 2004 DELFT MMIV BCwww-adele.imag.fr/~jmfavre
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e .oclIsKindOf(Mapplet))and let maplets = e lement.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e .oclIsKindOf(TransformsIn))element->forall( e | e .oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf
: ElementOf
: ConformsTo
: IsTransformedIn
: Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Metaware Reverse Metaware Reverse EngineeringEngineering
Metaware Reverse Metaware Reverse EngineeringEngineering
MetaModel-Driven Reverse MetaModel-Driven Reverse EngineeringEngineering
MetaModel-Driven Reverse MetaModel-Driven Reverse EngineeringEngineering
MetaModel-Driven Architecture MetaModel-Driven Architecture RecoveryRecovery
MetaModel-Driven Architecture MetaModel-Driven Architecture RecoveryRecovery
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Metaware Reverse Metaware Reverse EngineeringEngineering
Metaware Reverse Metaware Reverse EngineeringEngineering
Metaware Reverse Engineering
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Metaware Reverse Metaware Reverse EngineeringEngineering
Metaware Reverse Metaware Reverse EngineeringEngineering
Metaware Reverse Engineering
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Metaware Reverse Metaware Reverse EngineeringEngineering
Metaware Reverse Metaware Reverse EngineeringEngineering
Metaware Reverse Engineering
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
CaCaccOphOphooNyNy : :
MetaModel-Driven MetaModel-Driven
Software Architecture Software Architecture
ReconstructionReconstruction
CaCaccOphOphooNyNy : :
MetaModel-Driven MetaModel-Driven
Software Architecture Software Architecture
ReconstructionReconstruction
OMG Standard for Model Driven
Architecture
MetaModel-DrivenMetaModel-Driven
IEEE Standard for Software
Architecture
IEEE IEEE 14711471
Software ArchitectureSoftware Architecture
Standard Terminology for Reverse Engineering
ReconstructionReconstruction
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Another companion paperAnother companion paper
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Symphony vs. CaSymphony vs. CaccOphOphooNy ?Ny ?
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Symphony and CaSymphony and CaccOphOphooNy : Ny : Same GoalsSame Goals
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Symphony and CaSymphony and CaccOphOphooNy : Ny : Same GoalsSame Goals
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
NOKIA
SIEMENS
DASSAULT SYSTEMES
Symphony and CaSymphony and CaccOphOphooNy : Ny : Experiences Experiences DistilledDistilled
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Symphony or CaSymphony or CaccOphOphooNy ?Ny ?
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Symphony or CaSymphony or CaccOphOphooNy ?Ny ?
Just ask what is software architecture?Just ask what is software architecture?
165 definitions of "software architecture"[SEI]
"Architecture is a domain where everybody disagree with everybody"
[SETRA2004 speaker]
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
CacOphoNy, CacOphoNy, no Symphonyno Symphony
Software architectureSoftware architecture
is about controlled Cais about controlled CaccOphOphooNyNy
"Whether something is part of the architecture is entirely based on whether the developers think it is important. Architecture is a social construct because it doesn"t just depend on the software, but on what part of the software is considered important by group consensus."
Martin Fowler
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Symphony vs. CaSymphony vs. CaccOphOphooNy : Ny : ApproachApproach
IEEE IEEE 14711471
IEEE IEEE 14711471
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Symphony vs. CaSymphony vs. CaccOphOphooNy : Ny : ApproachApproach
IEEE IEEE 14711471
CacOphoNy
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BCThis is not This is not Bézivin' Guest Bézivin' Guest TalkTalk
Everythingis a
model
HypothesisHypothesisHypothesisHypothesis
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
HypothesisHypothesis
"Everything is a "Everything is a modelmodel""
(from Bézivin' Guest (from Bézivin' Guest Talk)Talk)
This is not Bézivin' Talk
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
HypothesisHypothesis
"Everything is a "Everything is a modelmodel""
(from Bézivin' Guest (from Bézivin' Guest Talk)Talk)
Ceci n'est pas letableau de Magritte
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
"Everything is a "Everything is a modelmodel""
(from Bézivin' Guest (from Bézivin' Guest Talk)Talk)
HypothesisHypothesis
Ceci n'est pas untableau de Magritte
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Ceci n'est pas untableau de Magritte
"Everything is a "Everything is a modelmodel""
HypothesisHypothesis
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Ceci n'est pas uneoeuvre de Kozuth
"Everything is a "Everything is a modelmodel""
HypothesisHypothesis
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
National Research Project "Action Spécifique MDA"National Research Project "Action Spécifique MDA"
7 University + 1 Research Institute 7 University + 1 Research Institute Final report available soon at http://www-adele.imag.fr/mdaFinal report available soon at http://www-adele.imag.fr/mda
Research QuestionsResearch Questions
Foundations of Foundations of Model Driven EngineeringModel Driven Engineering?? Is MDE the next Software Engineering Is MDE the next Software Engineering
Paradigm?Paradigm? Is MDE new?Is MDE new? Why it might work this time?Why it might work this time?
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Dassault Système (DS)Dassault Système (DS) World leader in CAD/CAMWorld leader in CAD/CAM One of the largest software companOne of the largest software companiesies in Europe in Europe Pioneer with Microsoft in component engineeringPioneer with Microsoft in component engineering
A 7 years Case Study...A 7 years Case Study...
CATIA softwareCATIA software 70 000+ classes70 000+ classes 3 000+ DLLs3 000+ DLLs 8 000+ 8 000+
"components""components" 5 000+ "interfaces"5 000+ "interfaces" 800+ "frameworks"800+ "frameworks" xxxxxx "solutions" "solutions" zzzzzz "médias"… "médias"… tttttt "products" "products"
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Concrete Results in Reverse EngineeringConcrete Results in Reverse Engineering
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Concrete Results in Reverse EngineeringConcrete Results in Reverse Engineering
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
A Metamodel Driven Reverse A Metamodel Driven Reverse Engineering Env.Engineering Env.
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
A Metamodel Driven Reverse A Metamodel Driven Reverse Engineering Env.Engineering Env.
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
A Metamodel Driven Reverse Engineering A Metamodel Driven Reverse Engineering EnvironmentEnvironment
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
CacOphoNy
Towards a unifying megamodelTowards a unifying megamodel
IEEE IEEE 14711471Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDA
M0M1
M2M3
MDA MDA Pyramidal ArchitecturePyramidal Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
Integrated MegamodelIntegrated Megamodel
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
IEEE IEEE 14711471Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDA
M0M1
M2M3
MDA MDA Pyramidal ArchitecturePyramidal Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
IEEE 1471 Std for Software ArchitectureIEEE 1471 Std for Software Architecture
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
IEEE 1471 Std for Software ArchitectureIEEE 1471 Std for Software Architecture
frame borrowed from Jean-Bézivin
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
frame borrowed from Jean-Bézivin
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Nobody agreed about a standard definitions of architectureNobody agreed about a standard definitions of architecture Nobody really caredNobody really cared Reverse engineering environment for a large component-based Reverse engineering environment for a large component-based
software engineeringsoftware engineering
Experience distiled => Metamodel driven methodologyExperience distiled => Metamodel driven methodology
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE Standard for Software
Architecture
IEEE IEEE 14711471
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
Integrated MegamodelIntegrated Megamodel
Contribution fromContribution from
IEEE Standard for Software
Architecture
IEEE IEEE 14711471
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Integrating MegamodelIntegrating Megamodel
IEEE IEEE 14711471Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDA
M0M1
M2M3
MDA MDA Pyramidal ArchitecturePyramidal Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Integrating MegamodelIntegrating Megamodel
IEEE IEEE 14711471Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDA
M0M1
M2M3
MDA MDA Pyramidal ArchitecturePyramidal Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
OMG' Model Driven ArchitectureOMG' Model Driven Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
OMG' Model Driven ArchitectureOMG' Model Driven Architecture
Ceci est le MDA
M0M1
M2M3
Saqqara "step-pyramid" 2630 B.C, First stone building on earth
MDA MDA Pyramidal ArchitecturePyramidal Architecture
Photo by John Bodsworth
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Ceci est le MDA
MDA MDA MegamodelMegamodel
OMG' Model Driven ArchitectureOMG' Model Driven Architecture
OMG' MDA Guide Verion 1.02
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e .oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e .oclIsKindOf(TransformsIn))element->forall( e | e .oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Model Driven EngineeringModel Driven Engineering
http://www-adele.imag.fr/mda
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e .oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e .oclIsKindOf(TransformsIn))element->forall( e | e .oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
Ceci est le MDE
MDE MDE MegamodelMegamodel
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
Integrated MegamodelIntegrated Megamodel
IEEE Standard for Software
Architecture
IEEE IEEE 14711471Contribution fromContribution from
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Integrating MegamodelIntegrating Megamodel
IEEE IEEE 14711471Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDA
M0M1
M2M3
MDA MDA Pyramidal ArchitecturePyramidal Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Integrating MegamodelIntegrating Megamodel
IEEE IEEE 14711471Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDA
M0M1
M2M3
MDA MDA Pyramidal ArchitecturePyramidal Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Reverse EngineeringReverse Engineering
Ceci est la etro-ingénierie
Reverse EngineeringReverse Engineering
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BCCeci est la etro-ingénierie
Ce n'est pas Elliot
IEEE SoftwareJanuary 1990
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
Integrated MegamodelIntegrated Megamodel
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Integrating MegamodelIntegrating Megamodel
IEEE IEEE 14711471Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est l 'Architecture
IEEE 1471 IEEE 1471 MegamodelMegamodelIEEE 1471 IEEE 1471 MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDA
M0M1
M2M3
MDA MDA Pyramidal ArchitecturePyramidal Architecture
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
MDA MDA Pyramidal Architecture"Pyramidal Architecture"
Ceci est le MDA
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
Ceci est le MDE
MDE MDE MegamodelMegamodel
model *
sus *
RepresentationOfRepresentationOf
cmodel *
metamodel *
/ConformsTo
source *
target *
Mapplet
Set
Mapping
ElementOfelement *
set *
1 rangedomain 1
**
SystemDecomposedIn
* composite
* part
IsTransformedIn Denotes SemanticsTransformation
element->forall( e | e.oclIsKindOf(Mapplet))and let maplets = element.oclAsType(Set(Mapplet)) in
mapplets->forall( m | self.domain.element->includes(m.source)and self.range.element->includes(m.target))and not mapplets->exist( m2 |
m2 != m1 and m2.target = m1.target)))
confomantModel.sus->notEmpty()and metamodel =
conformantModel.set.model->asSet()
element->forall( e | e.oclIsKindOf(TransformsIn))element->forall( e | e.oclIsKindOf(TransformsIn))
element->forall( e | e.oclIsKindOf(Denotes))
Shortcuts:
: DecomposedIn
: RepresentationOf: ElementOf
: ConformsTo
: IsTransformedIn : Denotessus : systemUnderStudycmodel : conformantModele : elementc : compositep : part
MDE MDE MegamodelMegamodel
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy *
*descr ibedBy
Metamodel
Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has
**
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
Stakeholder
Concernconfor msTo
confor msTo
consistsOf
View*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
*
*descr ibedBy
*
*descr ibedBy
Metamodel Model
StakeholderStakeholder
Concernconfor msTo
confor msTo
consistsOf
ViewView*1
* *
consistsOf
**
has*
*
Meta-usecase
executes*
*
MetawareItem
implementedBy
ViewpointViewpointusedToCover
**
*
*
*
isBasedOn
*
AppliwareItemhandledBy
* *
Integrated MegamodelIntegrated Megamodel
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Stakeholder MetaUsecaseex ecutes
**
Developer PromoteChange
ValidateChangesClusterProduct
Build
Integrator SynchWorkspaces ProductManagerRetireProduct
Metaware EngineeringMetaware Engineering
Architectural EnvironmentArchitectural Environment
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
FramewkModule
Product
TeamGroup
Bug
TestMod
TestFwrk
TestResult
TestCase
MetamodelMeta-usecase*
isBasedOn
* *
ex ecutes*
StakeholderStakeholder
Architect
CheckDependencies
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
FramewkModule
Product
TeamGroup
Bug
TestMod
TestFwrk
CheckDependenciesArchitectArchitect
integrated (virtual) metaware ex isting (o r legacy ) metaware
Product
Framewk
wrappers
*
*describedBy
MetamodelStakeholderStakeholder Meta-usecaseex ecutes
**
Metaw areItem
implementedBy
*
*
*
isBasedOn
*
**
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
Future ResearchFuture Research
Meta-model Driven Reverse EngineeringMeta-model Driven Reverse Engineering Meta-model Driven VisualizationMeta-model Driven Visualization Meta-model Driven ExtractionMeta-model Driven Extraction Meta-model Driven AnalysisMeta-model Driven Analysis Operational Megamodel for Architecture RecoveryOperational Megamodel for Architecture Recovery
Operational Megamodel for Reverse EngineeringOperational Megamodel for Reverse Engineering
Operational Megamodel for Model Driven EngineeringOperational Megamodel for Model Driven Engineering......
Towards an engineering discipline for METAWARETowards an engineering discipline for METAWARE
http://www-adele.imag.fr/~jmfarvre WCRE DELFT MMIV BC
2nd International Workshop on
Metamodels, Schemas, and Grammars for Reverse Engineering
Tomorrow