dcns mdday2010

75
DCNS 2007 - all rights reserved / tous droits ré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

Upload: md-day

Post on 26-Jun-2015

1.607 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Dcns mdday2010

DC

NS

20

07

-a

ll r

igh

ts r

ese

rve

d / to

us d

roits r

ése

rvé

s

Emmanuel GRIVOTArchitecte 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

Page 2: Dcns mdday2010

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 inCombat Management System (CMS) software development.

[email protected]

Page 3: Dcns mdday2010

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é.

Page 4: Dcns mdday2010

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

Page 5: Dcns mdday2010

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

Page 6: Dcns mdday2010

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, …

Page 7: Dcns mdday2010

7 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

Different ships and submarines

HORIZON

FREMM

BPC

BARRACUDA

PA CDG

Page 8: Dcns mdday2010

8 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

Frigate

Communication

Combat Management

System

Optronic

sonar

Electronic Warfare

Surveillance radarIR

sonar

Navigation radar

missiles

gunmissilesmissiles

Page 9: Dcns mdday2010

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

Page 10: Dcns mdday2010

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 IRElectronic

Warfare

TLSMissiles SurfGunMissile AirDLS

Combat Management System

Page 11: Dcns mdday2010

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

Page 12: Dcns mdday2010

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

Page 13: Dcns mdday2010

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

Page 14: Dcns mdday2010

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

Page 15: Dcns mdday2010

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>>

Page 16: Dcns mdday2010

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

TracksPresentationTracksLogicServices

<<UsedComponentServices>>

0..1

<<ProvidedComponentServices>>

<<ConsumedComponentEvents>>

TracksEvents

<<ProducedComponentEvents>>

*

Page 17: Dcns mdday2010

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( )

Page 18: Dcns mdday2010

18 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

Tracks component:

MDE, CBSE, ED - SOA

TracksEventsTracksServicesTracks

*

<<ProducedComponentEvents>> <<ProvidedComponentServices>>

Watch tracks

Delete track

Modify track

Create track

User Manage Tracks

<<include>>

<<include>>

<<include>>

<<include>>

Page 19: Dcns mdday2010

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( )

Page 20: Dcns mdday2010

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 TracksEventsTracks

1 1

1

*

Page 21: Dcns mdday2010

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

TracksPresentationTracksLogicServices

<<UsedComponentServices>>

0..1

<<ProvidedComponentServices>>

<<ConsumedComponentEvents>>

TracksEvents

<<ProducedComponentEvents>>

*

Page 22: Dcns mdday2010

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( )

Page 23: Dcns mdday2010

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>>

Page 24: Dcns mdday2010

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>>

Page 25: Dcns mdday2010

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

Page 26: Dcns mdday2010

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)

Page 27: Dcns mdday2010

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

Page 28: Dcns mdday2010

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)

Page 29: Dcns mdday2010

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

TracksDataImplTracksDataServicesImplTest

setup()

White Box Unit Test

description

Annotations

@Before

Page 30: Dcns mdday2010

30 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

Local deployment HelloTracksWorld application

TracksPresentation

0..1

TracksDataEvents

TracksDataServices

TracksData

*

TracksLogicServicesTracksLogic

1

JVM

Locale interfaces.Locale interfaces.

Locale

interfaces.

Page 31: Dcns mdday2010

31 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

TracksLogicServicesTracksLogic

1

Remote deployment HelloTracksWorld application:

<<Remotable>> QoS

ServerJVM 1

ClientJVM 2

TracksPresentation

0..1

TracksDataEvents

TracksDataServices

TracksData

*

Locale

interfaces.

Locale interfaces.Remote interfaces.

<<Remotable>>

comment

<<Remotable>>

comment

Page 32: Dcns mdday2010

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

Page 33: Dcns mdday2010

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

...

Page 34: Dcns mdday2010

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

Page 35: Dcns mdday2010

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

Page 36: Dcns mdday2010

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, …

Page 37: Dcns mdday2010

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

Page 38: Dcns mdday2010

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

Page 39: Dcns mdday2010

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.”

Page 40: Dcns mdday2010
Page 41: Dcns mdday2010

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 Programminghttp://www.devx.com/enterprise/Article/27703/1954?pf=true

The Role of Aspect-Oriented Programmingin OMG’s Model-Driven Architecturehttp://www.aspectprogramming.com/papers/AOP and MDA.pdf

Le point sur la programmation par aspectshttp://www.emn.fr/z-info/ledoux/Publis/tsi01.pdf

Page 42: Dcns mdday2010

42 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

Annexes

The following slides are provided for more details

information.

Page 43: Dcns mdday2010

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 arein time, in budget and answer to the specifications

(down to 9% for large software)

Why is this?

complexity

Page 44: Dcns mdday2010

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

Page 45: Dcns mdday2010

45 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

Essential and Accidental complexity

Essential complexityis caused by the problem to be solved.Essential complexity must be mastered.

To solve essential complexity

without introducing accidental complexity.

Accidental complexityis 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

Page 46: Dcns mdday2010

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

Page 47: Dcns mdday2010

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

Page 48: Dcns mdday2010

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 approachbase on the Model Driven Engineering.

It was launched by the Object Management Group (OMG)in 2001.

MDA provide an approach to the challengeof business and technology change.

MDA separates application logic fromunderlying platform technology inside two different models:

Platform Independent Model (PIM) focus on business logic

Platform Specific Model (PSM) focus on platform technology

Page 49: Dcns mdday2010

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?

Page 50: Dcns mdday2010

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

Page 51: Dcns mdday2010

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 transformationand code generation

Fat PSM model (x3 to x4 size of PIM)

behavior code depends on Corba classes!

Complex tools and not scalable!

Page 52: Dcns mdday2010

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

Page 53: Dcns mdday2010

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

Page 54: Dcns mdday2010

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

Page 55: Dcns mdday2010

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

Page 56: Dcns mdday2010

56 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

JACOMO component

CBSE

Component

Based

Software

Engineering

AOPAspect

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

Page 57: Dcns mdday2010

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

Page 58: Dcns mdday2010

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

Page 59: Dcns mdday2010

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

Page 60: Dcns mdday2010

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 Platformdependency

Page 61: Dcns mdday2010

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

Page 62: Dcns mdday2010

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

Page 63: Dcns mdday2010

63 / 34 | 25 nov 2010 | Model Driven Day 2010 : Agile Model Driven Architecture

JACOMO component modelis 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

Page 64: Dcns mdday2010

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

Page 65: Dcns mdday2010

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

Page 66: Dcns mdday2010

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:

JVM6: 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:

Page 67: Dcns mdday2010

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).

Page 68: Dcns mdday2010

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

Page 69: Dcns mdday2010

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

Page 70: Dcns mdday2010

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

Page 71: Dcns mdday2010

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

Page 72: Dcns mdday2010

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 costreduce

accidental

complexity

Metrics

master

essential

complexity

Page 73: Dcns mdday2010

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

Page 74: Dcns mdday2010

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.

Page 75: Dcns mdday2010

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