Evolutions et outils du développement logiciel à base de ... · –Capitaliser le savoir faire...

26
1 1 Evolutions et outils du développement logiciel à base de modèles 12/11/2009 Didier Vojtisek Ingénieur de recherche INRIA Equipe Triskell

Transcript of Evolutions et outils du développement logiciel à base de ... · –Capitaliser le savoir faire...

1

1

Evolutions et outils du

développement logiciel

à base de modèles

12/11/2009

Didier Vojtisek

Ingénieur de recherche INRIA

Equipe Triskell

2

2

Plan

Contexte

IDM et Eclipse

Illustrations

4

44

Problématique du logiciel « moderne »

Importance des aspects non fonctionnels• systèmes répartis, parallèles et asynchrones• qualité de service : fiabilité, latence, performances...

Flexibilité accrue des aspects fonctionnels• notion de lignes de produits (espace, temps)

Versions

(Temps)

Variantes (Fonctionalités)

Time

to

Market!1.1

1.2

1.01.0 1.0 1.0 1.0 1.0

1.1 1.1 1.1 1.1 1.1

1.2 1.2 1.2 1.2 1.2

1.3 1.3 1.3 1.3 1.3

1.4 1.4 1.4 1.4 1.4

5

5

Enjeux de l'IDM

Répondre à des problématiques telles que :

• Maitriser la complexité croissante des applications

• Prise en compte de différents points de vue

– Adaptation aux rôles

– Réutilisation des bonnes pratiques (composants, framework, design

pattern, …)

• Diminuer les coûts

– Automatiser les tâches

– Capitaliser le savoir faire

• Augmenter la confiance dans le processus et les résultats

• Aider à la gestion des évolutions

• Réutiliser/s'appuyer les solutions existantes

• …

• Faire cohabiter ces préoccupations dans un environnement commun et

extensible (Ie. appliquer l'IDM à elle-même !)

6

Modeling in Science & Engineering

A Model is a simplified representation of an aspect

of the World for a specific purpose

M0(the world)

M1(modelingspace) Is represented by

Specificity of Engineering:

Model something not yet

existing (in order to build it)+Applicant()

+ApplicantInfo()

+MakeApplication()

-companyName : CString

-experience : CString

-reference1 : CString

-reference2 : CString

-reference3 : CString

Applicant

+Person()

+PersonInfo()

-personID : unsigned long

-surname : CString

-givenName : CString

-middleInitial : char

-streetAddress : CString

-postCode : CString

-countryname : CString

-eMailAddress : CString

Person

-is taught by

1

-teaches

0..*

+CourseSession()

+CourseSessionInfo()

-courseSessionID : unsigned long

-courseDate : unsigned long

-courseID : unsigned long

-courseLocation : CString

CourseSession

+AppStatus()

+AppStatusInfo()

-statusCode : char

-statusName : CString

AppStatus

+CourseRegistration()

+CourseRegistrationInfo()

-registrationDate : unsigned long

-completionFlag : bool

-confirmedDate : unsigned long

CourseRegistration

+Test()

+TestInfo()

-testScore : unsigned long

Test

+Application()

+ApplicationInfo()

-productNr : unsigned long

-certificationLevel : unsigned long

-applicationDate : unsigned long

Application

+PermittedStatusChange()

+StatusChangeInfo()

-fromStatus : char

-toStatus : char

PermittedStatusChange

+ExamSession()

+ExamSessionInfo()

-examSession : unsigned long

-examlocation : CString

-examDate : unsigned long

ExamSession

-gives0..*

-is achieved1

-is made by

1

-makes

0..*

-allows change in

0..*

-has a

1..*

-is taken by1

-takes0..*

-is made by a1

-made a1..*

-is in1

-is filled by0..*

-uses

1

-is used in

0..*

-applies to a0..*

-is for a1

+Exam()

+ExamInfo()

-examID : unsigned long

-certificationLevel : unsigned long

Exam

+Employee()

+GetCurrentAge()

+EmployeeInfo()

-jobType : CString

-roomNr : unsigned long

-department : CString

-division : CString

-jobTitle : CString

-manager : unsigned long

-headsDept : CString

-headsDivision : CString

-mobileNr : CString

-birthDate : unsigned long

Employee

+registrationform()

RegistrationForm

-uses**

ApplicantApplicantList PersonList

findApplicant()

ApplicationRegForm

Applicant()

findPerson()

addPerson()

addApplication()

Application()

MakeApplication()

ApplicationList

7

7

Donner du sens aux modèlesSi un modèle n'est plus juste

• De jolies images pour décorer la pièce

• Une syntaxe graphique pour C++/Java/C#/Eiffel...

Alors les outils doivent être aptes à manipuler des modèles• Utilisons les modèles pour exprimer se que sont les modèles

• => meta-modeling

– & meta-meta-modeling..

– Utilisons le Meta-ObjectFacility (MOF) pour éviterla Meta-recursion infinie

ConstraintNamespace

Package

GeneralizableElement

0..*

0..*

+supertype

{ordered}0..*

+subtype

0..*

Generalizes

Classifier

Class AssociationDataType

Feature

BehavioralFeature StructuralFeature

Operation

AssociationEnd

Reference

0..*

1

+referent0..*

+referencedEnd1

RefersTo

MofAttribute

ModelElement

0..*0..1

+containedElement

{ordered}

0..*

+container

0..1

Contains

0..*

1..*

0..*

+constrainedElement

1..*Constrains

8

8

L'IDM s'appuie donc sur des outils

• Des spécifications non ambiguës de modèles

• Constituent la base des tous les autres outils

• Des outils de transformation de modèles

• Des outils d'édition de modèle à l'aide de différentes syntaxes

• Graphiques

• Textuelles

• Des techniques et outils de validation et vérification de modèles (test,

simulation, models @ runtime, …)

• Des spécifications des plateformes cibles (idéalement sous forme de

modèle aussi)

Qui permettent la mise en place de méthodologies propres à votre

processus

9

9

Modelling activity

Naive Model Driven Engineering

Safety

Reliability

Security, survivability,

robustness

Functionality

Code Model

Fault tolerance

10

10

Aspect Oriented ModellingDistribution

« Service Provider

Manager »

Notification

Alternate Manager

« Recovery Block

Manager »

Complaint

Recovery Block

Manager

« Service

Provider

Manager »

Notification

Manager

« Service Provider

Manager »

Complaint Alternate

Manager

« Service

Provider

Manager »

Complaint

Manager

« Acceptance

Test Manager »

Notification

Acceptance Test

Manager

« Acceptance

Test Manager »

Complaint

Acceptance Test

Manager

« Recovery

Block Manager »

Notification

Recovery Block

Manager

« Client »

User Citizen

Manager

Fault tolerance

Roles

ActivitiesViews

Contexts

Security

Functional behavior

Bookstate : StringUser

borrow

return

deliver

setDamaged

reser

ve

Use case model

Platform

ModelDesign

Model

Code

Model

11

11

Concrètement : IDM et outils Eclipse

Eclipse est devenue une platforme d'intégration de nombreux outils

IDM grâce à son framework EMF

Sert de base à

• de nombreux projets open source

– Souvent issus de partenariats industriel et académique

– Ex: OpenEmbeDD, topcased, …

– Soit directement au sein de sous projets eclipse, soit dans des

initiatives indépendantes

• des implémentations commerciales

12

12

Eclipse Modeling Framework

Support commun pour la construction

d'outils autour du méta-méta-modèle

Ecore

Fourni déjà quelques outils génériques

• Editeur arborescent

– Pour tous les modèles et métamodèles

– Facilement personnalisable

• Editeur de modèle Ecore

– Version graphique du projet Eclipse Ecore

Tools issue des travaux Topcased et

Openembedd

13

13

Intégration des outils

Graphical configuration

Support to edit

graphic

Tree editor

API to navigate in

models

Metamodel(in Ecore)

Other tools(ATL, Kermeta, …)

Graphical Editor

Graphical editor

configurator

EMF generatorTopcased

generator

Other generators

(documentation,

checker, simulation,

transformation, … )

14

14

quelques projets Eclipse utiles à l'IDM (Liste non exhautive !)

Eclipse Modeling Project

Eclipse Modeling Framework (EMF)

Graphical Modeling Framework

Eclipse Model Framework Technology (EMFT)

Model Development Tools (MDT)

Textual Modeling Framework

Model-to-Model Transformation (M2M)

Model To Text (M2T)

Generative Modeling Technologies (GMT)

Modeling Amalgamation Project

Eclipse Presentation Modeling Framework

SDO, Compare, Query,

Transaction,Validation,

CDO,…

Ecore Tools, Search,

EMFatic, Modeling

Workflow, Index,

Temporality, …

ATL, QVT, …

JET, Acceleo,

Xpand, M2T core,…

Official research

incubator projects

BPMN, OCL,

Papyrus, UML2,

XSD, …

15

15

Autres projets utiles

• Topcased

• Papyrus (en cours de migration vers MDT)

• Kermeta

• OpenArchitectureWare

• …

Sans compter les projets

non officialisés par Eclipse

foundation !

16

16

Exemple de processus : Mopcom pour le

SoC/SoPC• Etapes du processus

TLM / PV

RTL / MARTE

Functional Appli MARTE APA / MARTE

EPA / MARTE

DPA / MARTE

C / MARTE Soft Driver Hard Driver

Allocation

Functional Appli MARTE

Functional Appli MARTE

TLM / PVTAllocation

Allocation TLM / CC

17

17

Exemple de scénario

Conception d'un langage dédié ou DSL (Domain Specific Language)

• Intérêt : simplifier l'usage pour les non initiés tout en leur fournissant des

services avancés d'édition, de vérification, d'exécution, d'analyse, de

traduction vers d'autre domaines, etc

Ex : Tortue Logo

Par exemple pour des programmes LOGO de la forme:

repeat 3 [ pendown forward 3 penup forward 4 ]

to square :width

repeat 4 [ forward :width right ]

end

pendown square 7 * 7

18

18

Cas d'étude: Construction d'un environnment

de programmation pour le Logo

Avec

• Edition en environnment Eclipse

• Simulation à l'écran

• Compilation pour un robot Lego

Mindstorms

19

19

Processus pour le Model Driven

Language Engineering

Spécifier la syntaxe abstraite

Construire les éditeurs spécifiques

Spécifier la sémantique statique

Spécifier la sémantique dynamique

Construire un simulateur

Compiler vers une plateforme spécifique

20

20

Meta-Modelisation de programmes LOGO

Construisons un méta-modèle pour LOGO

• En se concentrant sur la syntaxe abstraite

• Chercher les concepts: instructions, expressions…

• Trouver les relations entre ces concepts

– C'est similaire à de la modélisation UML !

Défini en tant que modèle ECore

– En utilisant les outils et les éditeurs EMF

21

21

Syntaxe ConcrèteA base des outils standard

d'EMF

Version textuelle en

utilisant Sintaks

• Ou les plus récents

xText, EMF-Text

Version Graphique en

utilisant GMF ou

TopCased

22

22

Sémantique statique avec OCL

Ajout de règles de bonne formation au métamodèle (Well-

Formedness Rules), Contrats e.g.;• Deux paramètres d'une procédure ne peuvent avoir le même nom:

context ProcDeclaration

inv unique_names_for_formal_arguments :

args -> forAll ( a1 , a2 | a1. name = a2.name

implies a1 = a2 )

Exprimé en OCL (Object Constraint Language)• OCL est un langage d'expressions typées.

• Une contrainte est une expression OCL valide de type Boolean.

• Une contrainte est une restriction sur une ou plusieurs valeurs d'un (ou d'une partie) modèle orienté objet ou d'uns système.

23

23

Spécifier la sémantique dynamique

• Définir le comportement de référence du DSL

• Construire un simulator/interpreter• Permet d'obtenir le comportement de référence (exécutable)

• Utile durant les phases de conception du DSL et de ses outils

• Sélectionner une plateforme cible• Transformer le DSL en modèles ou en code qui prend compte les spécificités de

la platform cible

• Les techniques de tissage d'aspect simplifient grandement ce type de processus• Par ex. avec Kermeta

• Dans certains cas, l'exécution via l'interpréteur du DSL est suffisante (à cause du coût de maintenance et d'évolution des compilateurs)

24

24

Du LOGO jusqu'au Mindstorms

Static constraints in OCL

Simulator in Kermeta

Result of a simulation

interpreted with

Kermeta

Input

scenario

Embedded NXC source

code inside the robot

Result of a

real execution

Transformation written in Kermeta

Interaction between

the current simulation

(Kermeta) and the

GUI (Java)

Logo Semantic

in Kermeta

25

25

Résumé Logo

Intègre de manière cohérente tous les aspects

• syntaxe / sémantiques / outils

Utilisation des langages appropriés

• MOF pour la syntaxe abstraite

• OCL pour la sémantique statique

• Kermeta pour la sémantique dynamique

• Java pour l'interface graphique de simulation

• ...

Maintien de la séparation des préoccupations

• Pour la maintenabilité et les évolutions

26

26

Conclusion

• Disponibilité d'outils de plus en plus matures

• Simplification des tâches

• Capitalisation du savoir faire des experts

• Tend vers une clarification des processus et une prise en

compte de différentes préoccupations

• Point de convergence de communautés très diverses qui

essaient de communiquer entre elles via ce paradigme

• Il faut encore faire son choix parmi les outils et DSL existants

si l'on veut créer son propre processus

27

27

Des questions ?

Sponsoring disponible

New modularity concepts, methods and techniques for software systems

Merci

http://aosd.net/2010