View
215
Download
0
Category
Preview:
Citation preview
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
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
Recommended