SlideShare uma empresa Scribd logo
1 de 75
Baixar para ler offline
DCNS2007-allrightsreserved/tousdroitsréservés
Emmanuel GRIVOT
Architecte logiciel
DCNS / Système Information et Sécurité / Direction Technique et Technologique
MDDAY 2010
25 novembre 2010
Model Driven Engineering +
Aspect Oriented Programming =
Agile Model Driven Architecture
2 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Resume
Emmanuel GRIVOT
Software architect
Naval defense industry
 Thomson CSF
 THALES Naval France
 DCNS : Système Information et Sécurité /
Direction Technique et Technologique
22 years background in
Combat Management System (CMS) software development.
emmanuel.grivot@dcnsgroup.com
3 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Summary
Model Driven Engineering +
Aspect Oriented Programming =
Agile Model Driven Architecture
ou comment réunir, avec succès,
le MDA pragmatique et l'agilité.
4 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. JACOMO component model
4. Demonstration with Modelio
5. UML tools REX
6. Perspectives, Q & A
5 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. JACOMO component model
4. Demonstration with Modelio
5. UML tools REX
6. Perspectives, Q & A
6 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
DCNS : Naval in Europe and worldwide
The DCNS Group is a leading European player
for naval defense systems.
DCNS acts as prime contractor of the armed vessels and their support.
12 200 employees working across France.
2,4 billion euros in turnover.
9,9 billion euros of backlog.
1 / 3 of its international business and cooperation.
21 Sites:
Paris, Bagneux, Cherbourg, Brest, Toulon, Lorient, Ruelle, …
7 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Different ships and submarines
HORIZON
FREMM
BPC
BARRACUDA
PA CDG
8 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Frigate
Communication
Combat Management
System
Optronic
sonar
Electronic Warfare
Surveillance radar
IR
sonar
Navigation radar
missiles
gunmissilesmissiles
9 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. JACOMO component model
4. Demonstration with Modelio
5. UML tools REX
6. Perspectives, Q & A
10 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Combat Management System (CMS)
Tailored information system
Network
Data Link
Navigation System Radar Navigation Radar Sonar IR
Electronic
Warfare
TLSMissiles SurfGunMissile AirDLS
Combat Management System
11 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. JACOMO component model
4. Demonstration with Modelio
5. UML tools REX
6. Perspectives, Q & A
12 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Agility and Model Driven Engineering ?
Agility as:
“ the ability to successfully respond to change ” *
Two kinds of change:
 Functional changes
 Technology changes
Solutions:
 Processes: agile method, scrum, xp, …
 Technologies: AOP, …
 Tools: MDE, MDA, UML, …
 …
* http://www.infoq.com/news/2010/06/c2-military-gets-agile
13 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
JACOMO component model
AOP : Quality of Services (SoC)
<<Remotable>>
CBSE : JACOMO composite component model
JACOMO Component
MDE : UML profile and middleware independence
<<ProvidedServices>> <<UsedServices>>
<<ConsumedEvent>> <<ProducedEvent>>
ED – SOA : Services and Events ports
*
0..1
14 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. JACOMO component model
4. Demonstration with Modelio
5. UML tools REX
6. Perspectives, Q & A
15 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Track:
 Domain entity concept
 User can Create, Read, Update and Delete Tracks (CRUD pattern)
HelloTracksWorld application
Track domain concept
Track
1
+identification
1
+kinematic
Identification
<<interface>>
Kinematic
<<interface>>
Track
<<Entity>>
16 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Tracks component decomposition:
Presentation, Logic and Data layers
TracksDataEvents
TrackId
Track
TracksData
<<ProducedComponentEvents>>
*
<<ProvidedComponentServices>>
theTracks
*
trackId
TracksLogic
TracksDataServices
<<UsedComponentServices>> 1
<<ProvidedComponentServices>>
TracksServices
TracksPresentation
TracksLogicServices
<<UsedComponentServices>>
0..1
<<ProvidedComponentServices>>
<<ConsumedComponentEvents>>
TracksEvents
<<ProducedComponentEvents>>
*
17 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
:TracksPresentation
Tracks components sequence diagram
:User :TracksData:TracksLogic
createTrack( )
createTrack( )
createTrack( )
notifyCreatedTrack( )
notifyCreatedTrack( )
18 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Tracks component:
MDE, CBSE, ED - SOA
TracksEventsTracksServices
Tracks
*
<<ProducedComponentEvents>><<ProvidedComponentServices>>
Watch tracks
Delete track
Modify track
Create track
User Manage Tracks
<<include>>
<<include>>
<<include>>
<<include>>
19 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
:Tracks:User
HelloTracksWorld Services and Events
CRUD pattern (Create Read Update Delete)
createTrack( )
Tracks
<<ProducedComponentEvents>>
*
<<ProvidedComponentServices>>
TracksEvents
<<interface, ComponentEvents>>
TracksServices
<<interface, ComponentServices>>
notifyDeletedTrack(in aTrackId : TrackId)
notifyUpdatedTrack(in aTrackId : TrackId, in aTrack : Track)
notifyCreatedTrack(in aTrackId : TrackId, in aTrack : Track)
deleteTrack()
updateTrack()
createTrack()
notifyCreatedTrack( )
20 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Tracks component decomposition:
CBSE, three layers components
Tracks Interface
Track
TracksPresentation TracksLogic
TracksData
trackId
*
theTracks
TracksServices TracksEvents
Tracks
1 1
1
*
21 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Tracks component decomposition:
Presentation, Logic and Data layers
TracksDataEvents
TrackId
Track
TracksData
<<ProducedComponentEvents>>
*
<<ProvidedComponentServices>>
theTracks
*
trackId
TracksLogic
TracksDataServices
<<UsedComponentServices>> 1
<<ProvidedComponentServices>>
TracksServices
TracksPresentation
TracksLogicServices
<<UsedComponentServices>>
0..1
<<ProvidedComponentServices>>
<<ConsumedComponentEvents>>
TracksEvents
<<ProducedComponentEvents>>
*
22 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
:TracksPresentation
Tracks components sequence diagram
:User :TracksData:TracksLogic
createTrack( )
createTrack( )
createTrack( )
notifyCreatedTrack( )
notifyCreatedTrack( )
23 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksPresentation component Overview:
<<Presentation layer>>
Tracks Interface
TracksPresentation
TracksLogic Interface
TracksData Interface
TracksServices TracksEvents
<<ProvidedComponentServices>> <<ProducedComponentEvents>>
*
TracksLogicServices
<<UsedComponentServices>>
0..1
TracksDataEvents
<<ConsumedComponentEvents>>
24 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksView component Detailed
Tracks Interface
TracksPresentation
<<ConsumedComponentEvents>>
0..1
<<UsedComponentServices>>
TracksLogicServices
<<interface, ComponentServices>>
TracksDataEvents
<<interface, ComponentEvents>>
TracksEventsTracksServices
deleteTrack(in aTrackId : TrackId)
updateTrack(in aTrackId : TrackId, in aTrack : Track)
createTrack(in aTrack : Track):TrackId
notifyDeletedTrack(in aTrackId : TrackId)
notifyUpdatedTrack(in aTrackId : TrackId, in aTrack : Track)
notifyCreatedTrack(in aTrackId : TrackId, in aTrack : Track)
<<ProvidedComponentServices>>
*
<<ProducedComponentEvents>>
25 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksLogic component Overview:
<<Logic layer>>
TracksLogicServices
TracksLogic
<<ProvidedComponentServices>>
TracksData Interface
TracksDataServices
<<UsedComponentServices>>
1
26 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksLogic component Detailed
TracksData Interface
TracksLogic
<<ProvidedComponentServices>>
TracksLogicServices
<<interface, ComponentServices>>
deleteTrack(in aTrackId : TrackId)
updateTrack(in aTrackId : TrackId, in aTrack : Track)
createTrack(in aTrack : Track):TrackId
<<UsedComponentServices>>1
TracksDataServices
<<interface, ComponentServices>>
deleteTrack(in aTrackId : TrackId)
updateTrack(in aTrackId : TrackId, in aTrack : Track)
createTrack(in aTrackId : TrackId, in aTrack : Track)
27 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksData component Overview:
<<Data layer>>
TracksDataEvents
TracksDataServices
TracksData
<<ProvidedComponentServices>>
<<ProducedComponentEvents>>
* Track
theTracks
*
trackId
28 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksData component Detailed
TracksData
<<ProvidedComponentServices>>
*
<<ProducedComponentEvents>>
theTracks
*
trackId
Track
TracksDataEvents
<<interface, ComponentEvents>>
TracksDataServices
<<interface, ComponentServices>>
notifyDeletedTrack(in aTrackId : TrackId)
notifyUpdatedTrack(in aTrackId : TrackId, in aTrack : Track)
notifyCreatedTrack(in aTrackId : TrackId, in aTrack : Track)
deleteTrack(in aTrackId : TrackId)
updateTrack(in aTrackId : TrackId, in aTrack : Track)
createTrack(in aTrackId : TrackId, in aTrack : Track)
29 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksData component unit tests:
black box and white box with JUnit
TracksDataServices
TracksData
0..1
tracksDataServices
0..1
tracksDataUnderTest
TracksDataServicesTest
testToDo()
Black Box Unit Test
description
TracksDataImpl
TracksDataServicesImplTest
setup()
White Box Unit Test
description
Annotations
@Before
30 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Local deployment HelloTracksWorld application
TracksPresentation
0..1
TracksDataEvents
TracksDataServices
TracksData
*
TracksLogicServices
TracksLogic
1
JVM
Locale interfaces.Locale interfaces.
Locale
interfaces.
31 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
TracksLogicServices
TracksLogic
1
Remote deployment HelloTracksWorld application:
<<Remotable>> QoS
Server
JVM 1
Client
JVM 2
TracksPresentation
0..1
TracksDataEvents
TracksDataServices
TracksData
*
Locale
interfaces.
Locale interfaces.Remote interfaces.
<<Remotable>>
comment
<<Remotable>>
comment
32 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
@ComponentEvents
public interface TracksDataEvents {
...
}
PSM +TracksDataEvents
<<ComponentEvents, >>
PIM
@ComponentServices
public interface TracksLogicServices {
...
}
PSM
+TracksLogicServices
<<ComponentServices, >>
PIM
Remote QoS components interface
@Remotable
@Remotable
@Remotable can be weaved to
1 RMI (default), 2 JGroups, … others : Web Services, socket, …
Remotable
Remotable QoS
Remotable
Remotable QoS
33 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
UML JACOMO component profile for
Architecture Description Language (ADL)
UML PIM JACOMO PSM
Analysis concepts:
 <<ComponentType>> @ComponentType
 <<ComponentServices>> @ComponentServices
 <<ComponentEvents>> @ComponentEvents
 ...
Design concepts: Quality of Service (QoS)
 << Remotable >> @Remotable
 << Persistable >> @Persistable
 << Asynchronous >> @Asynchronous
 ...
34 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. JACOMO component model
4. Demonstration with Modelio
5. UML tools REX
6. Perspectives, Q & A
35 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Objecteering and Modelio UML tools
Model Driven Engineering need UML tool :
We use objecteering since 2000 for Model Driven Engineering.
100% of the code is inside the UML tool.
JACOMO profile, wizard since 2004.
THALES Systèmes aéroportés collaboration since 2004.
DoD* documents generation (SRS, IRS).
First MDA experiment with AOP since 2005.
Modelio migration: 2010 (JACOMO wizard + SDD)
*DoD: Department of Defense
by
36 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
MDE: the lesson we learn
“raise the level of abstraction of the UML model”
MDE: Raise the level of abstraction:
 Put your domain, pattern, frameworks, … inside UML tool.
 Don’t use UML tool only to input Java code (IDE tools are better).
 Use UML for the analysis model only, and keep the code conform
to the model, to the architecture.
MDA + AOP: Productivity Advantages
 The UML profile and wizard are simple to implement.
 Use AOP to weave technical code outside the UML model.
 Up to 70% of the technical code for the PSM is removed.
Agility
 Functional change, simple code change
 Technology change, only AOP weaver change
 Pair modeling, Tests first, stand-up meeting, …
37 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. JACOMO component model
4. Demonstration with Modelio
5. UML tool REX
6. Perspectives, Q & A
38 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Perspectives
Modelio deployment
 medium-scale team and model support (svn)
Some metrics
 Total of 1500 JACOMO components (now 700)
 Expects to raise productivity x 20 to build software architecture
with JACOMO wizard and modelio
UML 2 migration
 Native <<component>> for PIM and PSM
 JACOMO UML2 profile and wizard for PIM and PSM
by
39 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Questions & Answers
Solve essential complexity
without introducing accidental complexity *:
“The best UML model
is the one you didn’t need to build **.”
Thank You
* Frederick P. Brooks
** “The best line of code is the one you didn't need to write.”
41 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
References
References:
Agile Modeling :
http://www.agilemodeling.com
Explore Model Driven Architecture and Aspect-oriented
Programming
http://www.devx.com/enterprise/Article/27703/1954?pf=true
The Role of Aspect-Oriented Programming
in OMG’s Model-Driven Architecture
http://www.aspectprogramming.com/papers/AOP and MDA.pdf
Le point sur la programmation par aspects
http://www.emn.fr/z-info/ledoux/Publis/tsi01.pdf
42 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Annexes
The following slides are provided for more details
information.
43 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Software's Chronic Crisis
31% of software are cancel before delivery (Gartner 2002)
52% of software are out of budget: (up to +189% Gartner 2002)
50% of software doesn’t answer to the specification (Gartner 2002)
80% of software are later: (up to x 2..3 Aberdeen)
16% of software are
in time, in budget and answer to the specifications
(down to 9% for large software)
Why is this?
complexity
44 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
The Cost of Complexity
Complexity augments more quickly than any metrics
Complexity
• more SLoC (Source Line of Code) => more complex
• more complex => more expensive
80..100 KSLoC
SLoC
e1,5
45 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Essential and Accidental complexity
Essential complexity
is caused by the problem to be solved.
Essential complexity must be mastered.
To solve essential complexity
without introducing accidental complexity.
Accidental complexity
is caused by the approach chosen to solve the problem.
Accidental complexity must be reduced.
Frederick P. Brooks
The Mythical Man-Month (1975-1995)
Essence and Accidents of Software Engineering
46 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Platform 1 Pf 2 Pf 3 Pf 4 Pf 5
C++, Java, C#, ADA, CORBA, CCM, COM/DCOM, EJB, .NET, XML, Web services, SCA, OSGi, Spring…
Rapid technological evolution
Non-functional requirements evolution
Response time, security, fault tolerance, availability, transactions, persistence …
Non functional
requirements 1
Non functional
requirements 2
Non functional
requirements 3
Non functional
requirements 4
The Three Lifecycles to connect
Business Model 1 BM 2 BM 3
Functional requirements quasi-stability
Function coverage 1, Function coverage 2…
System lifetime
10-30 years
Non functional lifetime
10-20 years
Platform lifetime
5-10 years
47 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. Model Driven Architecture approach
4. Aspect Oriented Programming approach
5. JACOMO technology
6. Objecteering UML tool
7. Perspectives, Q & A
48 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Model Driven Architecture approach:
How software systems will be build
Model Driven Architecture (MDA)
is a software design approach
base on the Model Driven Engineering.
It was launched by the Object Management Group (OMG)
in 2001.
MDA provide an approach to the challenge
of business and technology change.
MDA separates application logic from
underlying platform technology inside two different models:
 Platform Independent Model (PIM) focus on business logic
 Platform Specific Model (PSM) focus on platform technology
49 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Model Driven Architecture: two different flavors
Translationist
 PIM abstracts out execution platform technology details
 PSM or code is not edited: all behavior expressed in PIM model
 Translationist MDA requires executable UML: Action Semantics …
Elaborationist
 PIM abstracts out execution platform technology details
 PSM is an elaboration (i.e. fills in the platform detail)
 PSM or code can be edited: to add behavior
A long way to improve the tools?
50 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
UML tool
Model Driven Architecture tools
Platform Independent Model:
UML
Platform Definition Model:
Java, C#, Ada, Corba, RMI, …
Platform Specific Model:
UML
Code:
Java, C#, Ada, …
Models
transformations
bind a domain model
to a technology
(Query / View / Transformation)
code generation
Runtime:
binary
compilation
execution
51 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Model Driven Architecture
Large project : we use elaborationist process
Large MDA project feedback:
UML 1.4 Platform Independent Model (PIM)
 1200 domain classes (data tier)
Platform Definition Model = Corba Component Model
UML 1.4 Platform Specific Model (PSM)
 UML -> IDL -> Java: 1200 x 3 = 3600 Java classes
 Code edition to add behavior (logic tier)
Drawbacks
 2..3 days non stop for PIM to PSM model transformation
and code generation
 Fat PSM model (x3 to x4 size of PIM)
 behavior code depends on Corba classes!
Complex tools and not scalable!
52 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. Model Driven Architecture approach
4. Aspect Oriented Programming approach
5. JACOMO technology
6. Objecteering UML tool
7. Perspectives, Q & A
53 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Aspect Oriented Software Development
AOSD involves three distinct development steps:
1. Aspectual de-composition
Decompose the requirements to identify different aspects.
3. Aspectual re-composition
The re-composition process, also known as weaving.
2. Aspect implementation
Implement each aspect separately
54 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Bind the Domain Model to the Runtime Platform
Raise the level of abstraction: omitting detail
MDA and AOP solve this problem differently
MDA says: “let's add another abstraction layer”
AOP says: “no, let's not. In fact, let's remove some”
Domain classes*
platform classes
aspects
weaving
AOP approach
Domain classes
platform classes
models
transformation
MDA approach
Analysis:
Runtime:
*Plain Ordinary Java Object
55 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. Model Driven Architecture approach
4. Aspect Oriented Programming approach
5. JACOMO component
6. Objecteering UML tool
7. Perspectives, Q & A
56 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
JACOMO component
CBSE
Component
Based
Software
Engineering
AOP
Aspect
Oriented
Programming
(Separation of
Concerns)
ED - SOA
Event Driven -
Service
Oriented
Architecture
(multi-tier
architecture)
MDE
Model Driven
Engineering
(Model Driven
Architecture)
The four puzzles
to build JACOMO component
57 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
UML class diagram to Java code:
shared abstraction, shared vocabulary
package demo;
public class B extends A implements I {
public int att1 = 10;
protected boolean att2 = true;
float att3; // = 0.0
private String att4; // = null
public B att5; // = null
public void operation() {};
public static void operation1() {};
}
Only one Java file “./demo/B.java”
demo
A I
+ operation()
B
+ operation ()
+ operation1 ()
+ att5
0..1
<<implements>>
<<extends>>
+ att1 : integer = 10
# att2 : boolean = true
~ att3 : real
- att4 : string
One B UML class
Java PSM close to
class diagram PIM
58 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
The middleware include the platform technical code advices,
 multi-threading, transaction,
 logging and debugging,
 remote,
 state replication, state persistence,
 asynchronous,
 …
All code advices are put inside middleware layer
Component =
domain logic +
technical concerns
59 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Architectures:
Functional and Technical Y cycle separation
Design
Engineering
Analysis Technology
Technical
Architecture
Technical
solutions
Software
Architecture
Technical
aspects
Functional
Architecture
Logical
Architecture
Use Cases
Software
components
Architectural
Principles
Deployed
Architecture
System
ArchitectureSoftware
platform
Physical
platform
60 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Domain Logic gap with the Runtime Platform:
How to fill the gap?
Ideal:
Domain Logic
Runtime Platform
MDA models transformation:
Domain Logic
Runtime Platform
Platform gap:
Domain Logic
Runtime Platform
AOP weaving:
Domain Logic
Runtime Platform
dependency
61 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Problem of dependency:
Application depend on middleware API
middleware X
What goes wrong with classical application layering?
• Application code is build on top of middleware
• No transparency (design dependency on middleware API)
Runtime Platform
If you change the middleware,
you must change some application code.
Application depend on middleware.
Application
middleware Y
Application
Strong dependency with middleware API
62 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
+ middleware configuration
middleware X
middleware X bindingmiddleware Y binding
middleware Y
Dependency Inversion:
Application doesn’t depend on middleware
Separate the modules dependency
• Application code is build beside of middleware
Runtime Platform
Application
You can change the middleware without modifying the
application code: separation of concerns.
Application can be used with different
middleware at the same time: interoperability
NO dependency with the PDM API
63 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
JACOMO component model
is middleware agnostic to promote
Model Driven Architecture
QoS
 events notification between component
 remote services and events between components.
 asynchronous invocation for services and events .
 persistence for components parameters.
 component state replication.
 software transaction memory.
JACOMO is middleware agnostic
64 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
UML tool
AOP tool
Aspect-Oriented Model Driven Architecture (AO-MDA)
and tools connection
code compilation
Platform Independent Model: (no behavior)
UML + Component profile
Platform Specific Model 1: no middleware
Java code + @nnotation + behavior
custom Java
code generator
AOP
weaver
Platform Specific Model 2: with middleware
JVM runtime: behavior + middleware aspects
@nnotation
(point cut)
middleware
(code advice)
code execution
Platform Definition Model:
Java + middleware
<< stereotype >>
{ tag }
@nnotations
1 / 12 LoC
1 / 4 LoC
4 / 4 LoC
65 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Component-Based Software Engineering
with component model profile
<<ComponentType>>
<<provided
Services>>
<<produced
Events>>
<<consumed
Events>>
<<used
Services>>
<<provided
Parameters>>
<<used
Parameters>>
JACOMO
Component
Multi-tier Event Driven Service Oriented Architecture
66 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AOP tool
UML tool
JAva COmponent MOdel :
the 7 step process
<<ComponentImpl>>
CompAImpl
<<ComponentType>>
CompA
1: Platform Independent Model:
Domain analysis
Design: QoS
2: Platform Specific Model 1:
Design
Implementation (behavior)
7: runtime:
JVM
6: code compilation
and weaving
3: custom code
generation
@ComponentImpl
public class CompAImpl { ... }
@ComponentType
public interface CompA { ... }
@ComponentImpl
public class CompAImpl {
}
4: add behavior with IDE
{ Remotable }
public void m() { ... }
5:
67 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
JACOMO PSM
raise the PSM level of abstraction
JAva COmponent MOdel
is an Domain Specific Language (internal DSL)
for Java platform, which is an
Architecture Description Language (ADL)
with Separation of Concerns (SoC)
for multi-tier
Event Driven Service Oriented Architecture
(EDSOA) for
Component-Based Software Engineering (CBSE).
68 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
PIM UML <<stereotype>> and PSM JACOMO @nnotations
specification and analysis
UML Java
<<ComponentType>> @ComponentType
<<ComponentServices>> @ComponentServices
<<ComponentEvents>> @ComponentEvents
<<ComponentParameters>> @ComponentParameters
<<ProvidedComponentServices>> @ProvidedComponentServices
<<UsedComponentServices>> @UsedComponentServices
<<ProducedComponentEvents>> @ProducedComponentEvents
<<ConsumedComponentEvents>> @ConsumedComponentEvents
<<ProvidedComponentParameters>> @ProvidedComponentParameters
<<UsedComponentParameters>> @UsedComponentParameters
<<AggregatedComponent>> @AggregatedComponent
<<ComposedComponent>> @ComposedComponent
69 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
PSM UML <<stereotype>> and PSM JACOMO @nnotations
PSM design and implementation
UML Java
<<ComponentImpl>> @ComponentImpl
<<ComponentItem>> @ComponentItem
<<UsedComponentEventsSubscribe>>
@UsedComponentEventsSubscribe
<<UsedComponentEventsSubscribeDelegate>>
@UsedComponentEventsSubscribeDelegate
<<UsedComponentContext>> @UsedComponentContext
<<Resource>> @Resource
70 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
UML <<stereotype>> and JACOMO @nnotations: QoS
PIM design
UML Java
<< Remotable >> @Remotable
<< Synchronous >> @Synchronous
<< Asynchronous >> @Asynchronous
<< Replicable >> @Replicable
<< NotReplicable >> @NotReplicable
<< Reconfigurable >> @Reconfigurable
71 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
UML << stereotype >> and JACOMO @nnotations : QoS
PSM design and implementation
UML Java
<< SingleThreaded >> @SingleThreaded
<< MultiThreaded >> @MultiThreaded
<< SynchronizedRead >> @SynchronyzedRead
<< SynchronizedReadWrite >> @SynchronyzedReadWrite
<< Transactional >> @Transactional
72 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
Architecture to master the cost
To solve essential complexity
without introducing accidental complexity.
Complexity
• To reduce accidental complexity =>
• reduce cost
reduce
accidental
complexity
Metrics
master
essential
complexity
73 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
AGENDA
1. DCNS
2. Combat Management System
3. Model Driven Architecture approach
4. Aspect Oriented Programming approach
5. JACOMO technology
6. Objecteering UML tool
7. Perspectives, Q & A
74 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
THALES Systèmes aéroportés collaboration
Since 2003, share same point of view
 MDA Processes
 Architecture: multi-tier SOA and EDA
 Component based architecture
Since 2004, co-development,
 Technical and domain JACOMO components for HCI
 Tools: (UML tool with profile, maven, eclipse plugin, sonar)
UML tool: Objecteering
 Model Driven Engineering: all is inside the UML tool
(specification, analysis, design, implementation code, unit tests).
 Unique global id of the tool allows diff / merge between
concurrent development.
75 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture
More than 1200 JACOMO components from 8 projects
Metrics for one project
 78 JACOMO components, 171kLoc (2,19kLoc / component).
 40% code generated from UML tool (class diagram).
 60% body of the methods hand written inside IDE (eclipse).
 17% Loc for components interface.
 48% Loc for components implementation.
 35% Loc for components unit tests.
 100% code inside the UML tool, include unit tests.
Comparison with data distribution traditional MDA approach
 Remove up to 70% LoC for component state replication QoS
Some JACOMO Metrics
with objecteering tool

Mais conteúdo relacionado

Semelhante a Dcns mdday2010

Tamino Mobile - XML based Integration, Development and Application Services f...
Tamino Mobile - XML based Integration, Development and Application Services f...Tamino Mobile - XML based Integration, Development and Application Services f...
Tamino Mobile - XML based Integration, Development and Application Services f...
mfrancis
 
Semantic Integration Patterns for Industry 4.0
Semantic Integration Patterns for Industry 4.0Semantic Integration Patterns for Industry 4.0
Semantic Integration Patterns for Industry 4.0
Georg Guentner
 

Semelhante a Dcns mdday2010 (20)

System engineering capabilities of 3 dexperience platform for nuclear market ...
System engineering capabilities of 3 dexperience platform for nuclear market ...System engineering capabilities of 3 dexperience platform for nuclear market ...
System engineering capabilities of 3 dexperience platform for nuclear market ...
 
"KillTech project: through innovation to a winning capability", Yelyzaveta B...
"KillTech project: through innovation to a winning capability",  Yelyzaveta B..."KillTech project: through innovation to a winning capability",  Yelyzaveta B...
"KillTech project: through innovation to a winning capability", Yelyzaveta B...
 
CPaaS.io Y1 Review Meeting - Platform Architecture
CPaaS.io Y1 Review Meeting - Platform ArchitectureCPaaS.io Y1 Review Meeting - Platform Architecture
CPaaS.io Y1 Review Meeting - Platform Architecture
 
Intland Software | codeBeamer ALM: What’s in the Pipeline for the Automotive ...
Intland Software | codeBeamer ALM: What’s in the Pipeline for the Automotive ...Intland Software | codeBeamer ALM: What’s in the Pipeline for the Automotive ...
Intland Software | codeBeamer ALM: What’s in the Pipeline for the Automotive ...
 
Tamino Mobile - XML based Integration, Development and Application Services f...
Tamino Mobile - XML based Integration, Development and Application Services f...Tamino Mobile - XML based Integration, Development and Application Services f...
Tamino Mobile - XML based Integration, Development and Application Services f...
 
Private Cloud Platform as a Service
Private Cloud Platform as a ServicePrivate Cloud Platform as a Service
Private Cloud Platform as a Service
 
What is it (good for)? - MiCADO webinar No.1/4 - 09/2019
What is it (good for)? - MiCADO webinar No.1/4 - 09/2019What is it (good for)? - MiCADO webinar No.1/4 - 09/2019
What is it (good for)? - MiCADO webinar No.1/4 - 09/2019
 
MOdel-Driven Approach for design and execution of applications on multiple Cl...
MOdel-Driven Approach for design and execution of applications on multiple Cl...MOdel-Driven Approach for design and execution of applications on multiple Cl...
MOdel-Driven Approach for design and execution of applications on multiple Cl...
 
UNICORN PROJECT - DELIVERABLE 1.2 - 'Unicorn Reference Architecture'
UNICORN PROJECT - DELIVERABLE 1.2 - 'Unicorn Reference Architecture'  UNICORN PROJECT - DELIVERABLE 1.2 - 'Unicorn Reference Architecture'
UNICORN PROJECT - DELIVERABLE 1.2 - 'Unicorn Reference Architecture'
 
Rightsizing with Cloud Services
Rightsizing with Cloud ServicesRightsizing with Cloud Services
Rightsizing with Cloud Services
 
Sip@iPLM 2016
Sip@iPLM 2016 Sip@iPLM 2016
Sip@iPLM 2016
 
FNEC per Catrin.pptx
FNEC per Catrin.pptxFNEC per Catrin.pptx
FNEC per Catrin.pptx
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
BDE SC3.3 Workshop - BDE review: Scope and Opportunities
 BDE SC3.3 Workshop -  BDE review: Scope and Opportunities BDE SC3.3 Workshop -  BDE review: Scope and Opportunities
BDE SC3.3 Workshop - BDE review: Scope and Opportunities
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
 
Application of SHAPE Technologies in Production and Process Optimization
Application of SHAPE Technologies in Production and Process OptimizationApplication of SHAPE Technologies in Production and Process Optimization
Application of SHAPE Technologies in Production and Process Optimization
 
Break the monolith with (B)VIPER Modules
Break the monolith with (B)VIPER ModulesBreak the monolith with (B)VIPER Modules
Break the monolith with (B)VIPER Modules
 
Microservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaMicroservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and Kafka
 
MODES Route - 27may98
MODES Route - 27may98MODES Route - 27may98
MODES Route - 27may98
 
Semantic Integration Patterns for Industry 4.0
Semantic Integration Patterns for Industry 4.0Semantic Integration Patterns for Industry 4.0
Semantic Integration Patterns for Industry 4.0
 

Mais de MD DAY

Sogeti mdday2010
Sogeti mdday2010Sogeti mdday2010
Sogeti mdday2010
MD DAY
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
MD DAY
 
Etatdegeneve mdday2010
Etatdegeneve mdday2010Etatdegeneve mdday2010
Etatdegeneve mdday2010
MD DAY
 
Intro mdday2010
Intro mdday2010Intro mdday2010
Intro mdday2010
MD DAY
 
W4 mdday2010
W4 mdday2010W4 mdday2010
W4 mdday2010
MD DAY
 
Stevecook uml mdday2010
Stevecook uml mdday2010Stevecook uml mdday2010
Stevecook uml mdday2010
MD DAY
 
Capgemini mdday2010
Capgemini mdday2010Capgemini mdday2010
Capgemini mdday2010
MD DAY
 
Sodius cassidian mdday2010
Sodius cassidian mdday2010Sodius cassidian mdday2010
Sodius cassidian mdday2010
MD DAY
 
Objetdirect redsen
Objetdirect redsenObjetdirect redsen
Objetdirect redsen
MD DAY
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010
MD DAY
 
Obeo mdday2010
Obeo mdday2010Obeo mdday2010
Obeo mdday2010
MD DAY
 
Microsoft mdday2010
Microsoft mdday2010Microsoft mdday2010
Microsoft mdday2010
MD DAY
 
Soyatec mdday2010
Soyatec mdday2010Soyatec mdday2010
Soyatec mdday2010
MD DAY
 
Britair mdday2010
Britair mdday2010Britair mdday2010
Britair mdday2010
MD DAY
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
MD DAY
 
Jaxio mdday2010
Jaxio  mdday2010Jaxio  mdday2010
Jaxio mdday2010
MD DAY
 
BluAge sopra mdday2010
BluAge sopra mdday2010BluAge sopra mdday2010
BluAge sopra mdday2010
MD DAY
 
Aspectize mdday2010
Aspectize mdday2010Aspectize mdday2010
Aspectize mdday2010
MD DAY
 

Mais de MD DAY (18)

Sogeti mdday2010
Sogeti mdday2010Sogeti mdday2010
Sogeti mdday2010
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
Etatdegeneve mdday2010
Etatdegeneve mdday2010Etatdegeneve mdday2010
Etatdegeneve mdday2010
 
Intro mdday2010
Intro mdday2010Intro mdday2010
Intro mdday2010
 
W4 mdday2010
W4 mdday2010W4 mdday2010
W4 mdday2010
 
Stevecook uml mdday2010
Stevecook uml mdday2010Stevecook uml mdday2010
Stevecook uml mdday2010
 
Capgemini mdday2010
Capgemini mdday2010Capgemini mdday2010
Capgemini mdday2010
 
Sodius cassidian mdday2010
Sodius cassidian mdday2010Sodius cassidian mdday2010
Sodius cassidian mdday2010
 
Objetdirect redsen
Objetdirect redsenObjetdirect redsen
Objetdirect redsen
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010
 
Obeo mdday2010
Obeo mdday2010Obeo mdday2010
Obeo mdday2010
 
Microsoft mdday2010
Microsoft mdday2010Microsoft mdday2010
Microsoft mdday2010
 
Soyatec mdday2010
Soyatec mdday2010Soyatec mdday2010
Soyatec mdday2010
 
Britair mdday2010
Britair mdday2010Britair mdday2010
Britair mdday2010
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
 
Jaxio mdday2010
Jaxio  mdday2010Jaxio  mdday2010
Jaxio mdday2010
 
BluAge sopra mdday2010
BluAge sopra mdday2010BluAge sopra mdday2010
BluAge sopra mdday2010
 
Aspectize mdday2010
Aspectize mdday2010Aspectize mdday2010
Aspectize mdday2010
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

Dcns mdday2010

  • 1. DCNS2007-allrightsreserved/tousdroitsréservés Emmanuel GRIVOT Architecte logiciel DCNS / Système Information et Sécurité / Direction Technique et Technologique MDDAY 2010 25 novembre 2010 Model Driven Engineering + Aspect Oriented Programming = Agile Model Driven Architecture
  • 2. 2 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Resume Emmanuel GRIVOT Software architect Naval defense industry  Thomson CSF  THALES Naval France  DCNS : Système Information et Sécurité / Direction Technique et Technologique 22 years background in Combat Management System (CMS) software development. emmanuel.grivot@dcnsgroup.com
  • 3. 3 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Summary Model Driven Engineering + Aspect Oriented Programming = Agile Model Driven Architecture ou comment réunir, avec succès, le MDA pragmatique et l'agilité.
  • 4. 4 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. JACOMO component model 4. Demonstration with Modelio 5. UML tools REX 6. Perspectives, Q & A
  • 5. 5 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. JACOMO component model 4. Demonstration with Modelio 5. UML tools REX 6. Perspectives, Q & A
  • 6. 6 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture DCNS : Naval in Europe and worldwide The DCNS Group is a leading European player for naval defense systems. DCNS acts as prime contractor of the armed vessels and their support. 12 200 employees working across France. 2,4 billion euros in turnover. 9,9 billion euros of backlog. 1 / 3 of its international business and cooperation. 21 Sites: Paris, Bagneux, Cherbourg, Brest, Toulon, Lorient, Ruelle, …
  • 7. 7 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Different ships and submarines HORIZON FREMM BPC BARRACUDA PA CDG
  • 8. 8 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Frigate Communication Combat Management System Optronic sonar Electronic Warfare Surveillance radar IR sonar Navigation radar missiles gunmissilesmissiles
  • 9. 9 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. JACOMO component model 4. Demonstration with Modelio 5. UML tools REX 6. Perspectives, Q & A
  • 10. 10 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Combat Management System (CMS) Tailored information system Network Data Link Navigation System Radar Navigation Radar Sonar IR Electronic Warfare TLSMissiles SurfGunMissile AirDLS Combat Management System
  • 11. 11 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. JACOMO component model 4. Demonstration with Modelio 5. UML tools REX 6. Perspectives, Q & A
  • 12. 12 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Agility and Model Driven Engineering ? Agility as: “ the ability to successfully respond to change ” * Two kinds of change:  Functional changes  Technology changes Solutions:  Processes: agile method, scrum, xp, …  Technologies: AOP, …  Tools: MDE, MDA, UML, …  … * http://www.infoq.com/news/2010/06/c2-military-gets-agile
  • 13. 13 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture JACOMO component model AOP : Quality of Services (SoC) <<Remotable>> CBSE : JACOMO composite component model JACOMO Component MDE : UML profile and middleware independence <<ProvidedServices>> <<UsedServices>> <<ConsumedEvent>> <<ProducedEvent>> ED – SOA : Services and Events ports * 0..1
  • 14. 14 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. JACOMO component model 4. Demonstration with Modelio 5. UML tools REX 6. Perspectives, Q & A
  • 15. 15 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Track:  Domain entity concept  User can Create, Read, Update and Delete Tracks (CRUD pattern) HelloTracksWorld application Track domain concept Track 1 +identification 1 +kinematic Identification <<interface>> Kinematic <<interface>> Track <<Entity>>
  • 16. 16 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Tracks component decomposition: Presentation, Logic and Data layers TracksDataEvents TrackId Track TracksData <<ProducedComponentEvents>> * <<ProvidedComponentServices>> theTracks * trackId TracksLogic TracksDataServices <<UsedComponentServices>> 1 <<ProvidedComponentServices>> TracksServices TracksPresentation TracksLogicServices <<UsedComponentServices>> 0..1 <<ProvidedComponentServices>> <<ConsumedComponentEvents>> TracksEvents <<ProducedComponentEvents>> *
  • 17. 17 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture :TracksPresentation Tracks components sequence diagram :User :TracksData:TracksLogic createTrack( ) createTrack( ) createTrack( ) notifyCreatedTrack( ) notifyCreatedTrack( )
  • 18. 18 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Tracks component: MDE, CBSE, ED - SOA TracksEventsTracksServices Tracks * <<ProducedComponentEvents>><<ProvidedComponentServices>> Watch tracks Delete track Modify track Create track User Manage Tracks <<include>> <<include>> <<include>> <<include>>
  • 19. 19 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture :Tracks:User HelloTracksWorld Services and Events CRUD pattern (Create Read Update Delete) createTrack( ) Tracks <<ProducedComponentEvents>> * <<ProvidedComponentServices>> TracksEvents <<interface, ComponentEvents>> TracksServices <<interface, ComponentServices>> notifyDeletedTrack(in aTrackId : TrackId) notifyUpdatedTrack(in aTrackId : TrackId, in aTrack : Track) notifyCreatedTrack(in aTrackId : TrackId, in aTrack : Track) deleteTrack() updateTrack() createTrack() notifyCreatedTrack( )
  • 20. 20 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Tracks component decomposition: CBSE, three layers components Tracks Interface Track TracksPresentation TracksLogic TracksData trackId * theTracks TracksServices TracksEvents Tracks 1 1 1 *
  • 21. 21 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Tracks component decomposition: Presentation, Logic and Data layers TracksDataEvents TrackId Track TracksData <<ProducedComponentEvents>> * <<ProvidedComponentServices>> theTracks * trackId TracksLogic TracksDataServices <<UsedComponentServices>> 1 <<ProvidedComponentServices>> TracksServices TracksPresentation TracksLogicServices <<UsedComponentServices>> 0..1 <<ProvidedComponentServices>> <<ConsumedComponentEvents>> TracksEvents <<ProducedComponentEvents>> *
  • 22. 22 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture :TracksPresentation Tracks components sequence diagram :User :TracksData:TracksLogic createTrack( ) createTrack( ) createTrack( ) notifyCreatedTrack( ) notifyCreatedTrack( )
  • 23. 23 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksPresentation component Overview: <<Presentation layer>> Tracks Interface TracksPresentation TracksLogic Interface TracksData Interface TracksServices TracksEvents <<ProvidedComponentServices>> <<ProducedComponentEvents>> * TracksLogicServices <<UsedComponentServices>> 0..1 TracksDataEvents <<ConsumedComponentEvents>>
  • 24. 24 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksView component Detailed Tracks Interface TracksPresentation <<ConsumedComponentEvents>> 0..1 <<UsedComponentServices>> TracksLogicServices <<interface, ComponentServices>> TracksDataEvents <<interface, ComponentEvents>> TracksEventsTracksServices deleteTrack(in aTrackId : TrackId) updateTrack(in aTrackId : TrackId, in aTrack : Track) createTrack(in aTrack : Track):TrackId notifyDeletedTrack(in aTrackId : TrackId) notifyUpdatedTrack(in aTrackId : TrackId, in aTrack : Track) notifyCreatedTrack(in aTrackId : TrackId, in aTrack : Track) <<ProvidedComponentServices>> * <<ProducedComponentEvents>>
  • 25. 25 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksLogic component Overview: <<Logic layer>> TracksLogicServices TracksLogic <<ProvidedComponentServices>> TracksData Interface TracksDataServices <<UsedComponentServices>> 1
  • 26. 26 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksLogic component Detailed TracksData Interface TracksLogic <<ProvidedComponentServices>> TracksLogicServices <<interface, ComponentServices>> deleteTrack(in aTrackId : TrackId) updateTrack(in aTrackId : TrackId, in aTrack : Track) createTrack(in aTrack : Track):TrackId <<UsedComponentServices>>1 TracksDataServices <<interface, ComponentServices>> deleteTrack(in aTrackId : TrackId) updateTrack(in aTrackId : TrackId, in aTrack : Track) createTrack(in aTrackId : TrackId, in aTrack : Track)
  • 27. 27 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksData component Overview: <<Data layer>> TracksDataEvents TracksDataServices TracksData <<ProvidedComponentServices>> <<ProducedComponentEvents>> * Track theTracks * trackId
  • 28. 28 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksData component Detailed TracksData <<ProvidedComponentServices>> * <<ProducedComponentEvents>> theTracks * trackId Track TracksDataEvents <<interface, ComponentEvents>> TracksDataServices <<interface, ComponentServices>> notifyDeletedTrack(in aTrackId : TrackId) notifyUpdatedTrack(in aTrackId : TrackId, in aTrack : Track) notifyCreatedTrack(in aTrackId : TrackId, in aTrack : Track) deleteTrack(in aTrackId : TrackId) updateTrack(in aTrackId : TrackId, in aTrack : Track) createTrack(in aTrackId : TrackId, in aTrack : Track)
  • 29. 29 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksData component unit tests: black box and white box with JUnit TracksDataServices TracksData 0..1 tracksDataServices 0..1 tracksDataUnderTest TracksDataServicesTest testToDo() Black Box Unit Test description TracksDataImpl TracksDataServicesImplTest setup() White Box Unit Test description Annotations @Before
  • 30. 30 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Local deployment HelloTracksWorld application TracksPresentation 0..1 TracksDataEvents TracksDataServices TracksData * TracksLogicServices TracksLogic 1 JVM Locale interfaces.Locale interfaces. Locale interfaces.
  • 31. 31 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture TracksLogicServices TracksLogic 1 Remote deployment HelloTracksWorld application: <<Remotable>> QoS Server JVM 1 Client JVM 2 TracksPresentation 0..1 TracksDataEvents TracksDataServices TracksData * Locale interfaces. Locale interfaces.Remote interfaces. <<Remotable>> comment <<Remotable>> comment
  • 32. 32 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture @ComponentEvents public interface TracksDataEvents { ... } PSM +TracksDataEvents <<ComponentEvents, >> PIM @ComponentServices public interface TracksLogicServices { ... } PSM +TracksLogicServices <<ComponentServices, >> PIM Remote QoS components interface @Remotable @Remotable @Remotable can be weaved to 1 RMI (default), 2 JGroups, … others : Web Services, socket, … Remotable Remotable QoS Remotable Remotable QoS
  • 33. 33 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture UML JACOMO component profile for Architecture Description Language (ADL) UML PIM JACOMO PSM Analysis concepts:  <<ComponentType>> @ComponentType  <<ComponentServices>> @ComponentServices  <<ComponentEvents>> @ComponentEvents  ... Design concepts: Quality of Service (QoS)  << Remotable >> @Remotable  << Persistable >> @Persistable  << Asynchronous >> @Asynchronous  ...
  • 34. 34 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. JACOMO component model 4. Demonstration with Modelio 5. UML tools REX 6. Perspectives, Q & A
  • 35. 35 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Objecteering and Modelio UML tools Model Driven Engineering need UML tool : We use objecteering since 2000 for Model Driven Engineering. 100% of the code is inside the UML tool. JACOMO profile, wizard since 2004. THALES Systèmes aéroportés collaboration since 2004. DoD* documents generation (SRS, IRS). First MDA experiment with AOP since 2005. Modelio migration: 2010 (JACOMO wizard + SDD) *DoD: Department of Defense by
  • 36. 36 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture MDE: the lesson we learn “raise the level of abstraction of the UML model” MDE: Raise the level of abstraction:  Put your domain, pattern, frameworks, … inside UML tool.  Don’t use UML tool only to input Java code (IDE tools are better).  Use UML for the analysis model only, and keep the code conform to the model, to the architecture. MDA + AOP: Productivity Advantages  The UML profile and wizard are simple to implement.  Use AOP to weave technical code outside the UML model.  Up to 70% of the technical code for the PSM is removed. Agility  Functional change, simple code change  Technology change, only AOP weaver change  Pair modeling, Tests first, stand-up meeting, …
  • 37. 37 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. JACOMO component model 4. Demonstration with Modelio 5. UML tool REX 6. Perspectives, Q & A
  • 38. 38 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Perspectives Modelio deployment  medium-scale team and model support (svn) Some metrics  Total of 1500 JACOMO components (now 700)  Expects to raise productivity x 20 to build software architecture with JACOMO wizard and modelio UML 2 migration  Native <<component>> for PIM and PSM  JACOMO UML2 profile and wizard for PIM and PSM by
  • 39. 39 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Questions & Answers Solve essential complexity without introducing accidental complexity *: “The best UML model is the one you didn’t need to build **.” Thank You * Frederick P. Brooks ** “The best line of code is the one you didn't need to write.”
  • 40.
  • 41. 41 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture References References: Agile Modeling : http://www.agilemodeling.com Explore Model Driven Architecture and Aspect-oriented Programming http://www.devx.com/enterprise/Article/27703/1954?pf=true The Role of Aspect-Oriented Programming in OMG’s Model-Driven Architecture http://www.aspectprogramming.com/papers/AOP and MDA.pdf Le point sur la programmation par aspects http://www.emn.fr/z-info/ledoux/Publis/tsi01.pdf
  • 42. 42 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Annexes The following slides are provided for more details information.
  • 43. 43 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Software's Chronic Crisis 31% of software are cancel before delivery (Gartner 2002) 52% of software are out of budget: (up to +189% Gartner 2002) 50% of software doesn’t answer to the specification (Gartner 2002) 80% of software are later: (up to x 2..3 Aberdeen) 16% of software are in time, in budget and answer to the specifications (down to 9% for large software) Why is this? complexity
  • 44. 44 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture The Cost of Complexity Complexity augments more quickly than any metrics Complexity • more SLoC (Source Line of Code) => more complex • more complex => more expensive 80..100 KSLoC SLoC e1,5
  • 45. 45 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Essential and Accidental complexity Essential complexity is caused by the problem to be solved. Essential complexity must be mastered. To solve essential complexity without introducing accidental complexity. Accidental complexity is caused by the approach chosen to solve the problem. Accidental complexity must be reduced. Frederick P. Brooks The Mythical Man-Month (1975-1995) Essence and Accidents of Software Engineering
  • 46. 46 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Platform 1 Pf 2 Pf 3 Pf 4 Pf 5 C++, Java, C#, ADA, CORBA, CCM, COM/DCOM, EJB, .NET, XML, Web services, SCA, OSGi, Spring… Rapid technological evolution Non-functional requirements evolution Response time, security, fault tolerance, availability, transactions, persistence … Non functional requirements 1 Non functional requirements 2 Non functional requirements 3 Non functional requirements 4 The Three Lifecycles to connect Business Model 1 BM 2 BM 3 Functional requirements quasi-stability Function coverage 1, Function coverage 2… System lifetime 10-30 years Non functional lifetime 10-20 years Platform lifetime 5-10 years
  • 47. 47 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. Model Driven Architecture approach 4. Aspect Oriented Programming approach 5. JACOMO technology 6. Objecteering UML tool 7. Perspectives, Q & A
  • 48. 48 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Model Driven Architecture approach: How software systems will be build Model Driven Architecture (MDA) is a software design approach base on the Model Driven Engineering. It was launched by the Object Management Group (OMG) in 2001. MDA provide an approach to the challenge of business and technology change. MDA separates application logic from underlying platform technology inside two different models:  Platform Independent Model (PIM) focus on business logic  Platform Specific Model (PSM) focus on platform technology
  • 49. 49 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Model Driven Architecture: two different flavors Translationist  PIM abstracts out execution platform technology details  PSM or code is not edited: all behavior expressed in PIM model  Translationist MDA requires executable UML: Action Semantics … Elaborationist  PIM abstracts out execution platform technology details  PSM is an elaboration (i.e. fills in the platform detail)  PSM or code can be edited: to add behavior A long way to improve the tools?
  • 50. 50 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture UML tool Model Driven Architecture tools Platform Independent Model: UML Platform Definition Model: Java, C#, Ada, Corba, RMI, … Platform Specific Model: UML Code: Java, C#, Ada, … Models transformations bind a domain model to a technology (Query / View / Transformation) code generation Runtime: binary compilation execution
  • 51. 51 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Model Driven Architecture Large project : we use elaborationist process Large MDA project feedback: UML 1.4 Platform Independent Model (PIM)  1200 domain classes (data tier) Platform Definition Model = Corba Component Model UML 1.4 Platform Specific Model (PSM)  UML -> IDL -> Java: 1200 x 3 = 3600 Java classes  Code edition to add behavior (logic tier) Drawbacks  2..3 days non stop for PIM to PSM model transformation and code generation  Fat PSM model (x3 to x4 size of PIM)  behavior code depends on Corba classes! Complex tools and not scalable!
  • 52. 52 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. Model Driven Architecture approach 4. Aspect Oriented Programming approach 5. JACOMO technology 6. Objecteering UML tool 7. Perspectives, Q & A
  • 53. 53 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Aspect Oriented Software Development AOSD involves three distinct development steps: 1. Aspectual de-composition Decompose the requirements to identify different aspects. 3. Aspectual re-composition The re-composition process, also known as weaving. 2. Aspect implementation Implement each aspect separately
  • 54. 54 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Bind the Domain Model to the Runtime Platform Raise the level of abstraction: omitting detail MDA and AOP solve this problem differently MDA says: “let's add another abstraction layer” AOP says: “no, let's not. In fact, let's remove some” Domain classes* platform classes aspects weaving AOP approach Domain classes platform classes models transformation MDA approach Analysis: Runtime: *Plain Ordinary Java Object
  • 55. 55 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. Model Driven Architecture approach 4. Aspect Oriented Programming approach 5. JACOMO component 6. Objecteering UML tool 7. Perspectives, Q & A
  • 56. 56 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture JACOMO component CBSE Component Based Software Engineering AOP Aspect Oriented Programming (Separation of Concerns) ED - SOA Event Driven - Service Oriented Architecture (multi-tier architecture) MDE Model Driven Engineering (Model Driven Architecture) The four puzzles to build JACOMO component
  • 57. 57 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture UML class diagram to Java code: shared abstraction, shared vocabulary package demo; public class B extends A implements I { public int att1 = 10; protected boolean att2 = true; float att3; // = 0.0 private String att4; // = null public B att5; // = null public void operation() {}; public static void operation1() {}; } Only one Java file “./demo/B.java” demo A I + operation() B + operation () + operation1 () + att5 0..1 <<implements>> <<extends>> + att1 : integer = 10 # att2 : boolean = true ~ att3 : real - att4 : string One B UML class Java PSM close to class diagram PIM
  • 58. 58 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture The middleware include the platform technical code advices,  multi-threading, transaction,  logging and debugging,  remote,  state replication, state persistence,  asynchronous,  … All code advices are put inside middleware layer Component = domain logic + technical concerns
  • 59. 59 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Architectures: Functional and Technical Y cycle separation Design Engineering Analysis Technology Technical Architecture Technical solutions Software Architecture Technical aspects Functional Architecture Logical Architecture Use Cases Software components Architectural Principles Deployed Architecture System ArchitectureSoftware platform Physical platform
  • 60. 60 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Domain Logic gap with the Runtime Platform: How to fill the gap? Ideal: Domain Logic Runtime Platform MDA models transformation: Domain Logic Runtime Platform Platform gap: Domain Logic Runtime Platform AOP weaving: Domain Logic Runtime Platform dependency
  • 61. 61 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Problem of dependency: Application depend on middleware API middleware X What goes wrong with classical application layering? • Application code is build on top of middleware • No transparency (design dependency on middleware API) Runtime Platform If you change the middleware, you must change some application code. Application depend on middleware. Application middleware Y Application Strong dependency with middleware API
  • 62. 62 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture + middleware configuration middleware X middleware X bindingmiddleware Y binding middleware Y Dependency Inversion: Application doesn’t depend on middleware Separate the modules dependency • Application code is build beside of middleware Runtime Platform Application You can change the middleware without modifying the application code: separation of concerns. Application can be used with different middleware at the same time: interoperability NO dependency with the PDM API
  • 63. 63 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture JACOMO component model is middleware agnostic to promote Model Driven Architecture QoS  events notification between component  remote services and events between components.  asynchronous invocation for services and events .  persistence for components parameters.  component state replication.  software transaction memory. JACOMO is middleware agnostic
  • 64. 64 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture UML tool AOP tool Aspect-Oriented Model Driven Architecture (AO-MDA) and tools connection code compilation Platform Independent Model: (no behavior) UML + Component profile Platform Specific Model 1: no middleware Java code + @nnotation + behavior custom Java code generator AOP weaver Platform Specific Model 2: with middleware JVM runtime: behavior + middleware aspects @nnotation (point cut) middleware (code advice) code execution Platform Definition Model: Java + middleware << stereotype >> { tag } @nnotations 1 / 12 LoC 1 / 4 LoC 4 / 4 LoC
  • 65. 65 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Component-Based Software Engineering with component model profile <<ComponentType>> <<provided Services>> <<produced Events>> <<consumed Events>> <<used Services>> <<provided Parameters>> <<used Parameters>> JACOMO Component Multi-tier Event Driven Service Oriented Architecture
  • 66. 66 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AOP tool UML tool JAva COmponent MOdel : the 7 step process <<ComponentImpl>> CompAImpl <<ComponentType>> CompA 1: Platform Independent Model: Domain analysis Design: QoS 2: Platform Specific Model 1: Design Implementation (behavior) 7: runtime: JVM 6: code compilation and weaving 3: custom code generation @ComponentImpl public class CompAImpl { ... } @ComponentType public interface CompA { ... } @ComponentImpl public class CompAImpl { } 4: add behavior with IDE { Remotable } public void m() { ... } 5:
  • 67. 67 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture JACOMO PSM raise the PSM level of abstraction JAva COmponent MOdel is an Domain Specific Language (internal DSL) for Java platform, which is an Architecture Description Language (ADL) with Separation of Concerns (SoC) for multi-tier Event Driven Service Oriented Architecture (EDSOA) for Component-Based Software Engineering (CBSE).
  • 68. 68 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture PIM UML <<stereotype>> and PSM JACOMO @nnotations specification and analysis UML Java <<ComponentType>> @ComponentType <<ComponentServices>> @ComponentServices <<ComponentEvents>> @ComponentEvents <<ComponentParameters>> @ComponentParameters <<ProvidedComponentServices>> @ProvidedComponentServices <<UsedComponentServices>> @UsedComponentServices <<ProducedComponentEvents>> @ProducedComponentEvents <<ConsumedComponentEvents>> @ConsumedComponentEvents <<ProvidedComponentParameters>> @ProvidedComponentParameters <<UsedComponentParameters>> @UsedComponentParameters <<AggregatedComponent>> @AggregatedComponent <<ComposedComponent>> @ComposedComponent
  • 69. 69 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture PSM UML <<stereotype>> and PSM JACOMO @nnotations PSM design and implementation UML Java <<ComponentImpl>> @ComponentImpl <<ComponentItem>> @ComponentItem <<UsedComponentEventsSubscribe>> @UsedComponentEventsSubscribe <<UsedComponentEventsSubscribeDelegate>> @UsedComponentEventsSubscribeDelegate <<UsedComponentContext>> @UsedComponentContext <<Resource>> @Resource
  • 70. 70 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture UML <<stereotype>> and JACOMO @nnotations: QoS PIM design UML Java << Remotable >> @Remotable << Synchronous >> @Synchronous << Asynchronous >> @Asynchronous << Replicable >> @Replicable << NotReplicable >> @NotReplicable << Reconfigurable >> @Reconfigurable
  • 71. 71 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture UML << stereotype >> and JACOMO @nnotations : QoS PSM design and implementation UML Java << SingleThreaded >> @SingleThreaded << MultiThreaded >> @MultiThreaded << SynchronizedRead >> @SynchronyzedRead << SynchronizedReadWrite >> @SynchronyzedReadWrite << Transactional >> @Transactional
  • 72. 72 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture Architecture to master the cost To solve essential complexity without introducing accidental complexity. Complexity • To reduce accidental complexity => • reduce cost reduce accidental complexity Metrics master essential complexity
  • 73. 73 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture AGENDA 1. DCNS 2. Combat Management System 3. Model Driven Architecture approach 4. Aspect Oriented Programming approach 5. JACOMO technology 6. Objecteering UML tool 7. Perspectives, Q & A
  • 74. 74 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture THALES Systèmes aéroportés collaboration Since 2003, share same point of view  MDA Processes  Architecture: multi-tier SOA and EDA  Component based architecture Since 2004, co-development,  Technical and domain JACOMO components for HCI  Tools: (UML tool with profile, maven, eclipse plugin, sonar) UML tool: Objecteering  Model Driven Engineering: all is inside the UML tool (specification, analysis, design, implementation code, unit tests).  Unique global id of the tool allows diff / merge between concurrent development.
  • 75. 75 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture More than 1200 JACOMO components from 8 projects Metrics for one project  78 JACOMO components, 171kLoc (2,19kLoc / component).  40% code generated from UML tool (class diagram).  60% body of the methods hand written inside IDE (eclipse).  17% Loc for components interface.  48% Loc for components implementation.  35% Loc for components unit tests.  100% code inside the UML tool, include unit tests. Comparison with data distribution traditional MDA approach  Remove up to 70% LoC for component state replication QoS Some JACOMO Metrics with objecteering tool