Http://jmfarvreWCRE DELFT MMIV BC Jean-Marie Favre Software Explorer and Language Archeologist...

Post on 15-Jan-2016

213 views 0 download

transcript

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