2. Olivier Le Goaer @ GDR-GPL 2015
Plan de la présentationPlan de la présentation
Contexte : iDSML
Problématique : iDSML adaptable
Vers la notion de famille
Orchestration d'adaptation
Perspectives
4. Olivier Le Goaer @ GDR-GPL 2015
CompilationCompilation vs.vs. interprétationinterprétation
Le modèle de
mon système
S
Mon système
exécutable
IN
TER
PR
ETATIO
N
Mon système exécutable
=
le modèle à l’exécution
Design-timeDesign-time
Run-timeRun-time
C
O
M
PILATIO
N
</xml>
sub{ }
MDA ®
MM
exec(M)exec(M)
5. Olivier Le Goaer @ GDR-GPL 2015
Métaphore Harry PotterMétaphore Harry Potter
« Carte du maraudeur » (i.e. modèle)
Usage statique du modèle
(design-time)
Usage dynamique du modèle
(run-time)
● Informe sur la
structure du château
Poudlard (pièces et
passages)
● Informe sur les
déplacements des
personnes en temps
réel (leurs « pas »)
6. Olivier Le Goaer @ GDR-GPL 2015
iDSML :iDSML : interpreted DSMLinterpreted DSML
Et si on animait/actionnait les modèles ?
● Simulation, V&V, prototypage rapide...
● Sauter carrément la phase d'implémentation
Moteur d'exécution (ou interpréteur)
● Implémente une sémantique d'exécution donnée sous une forme
opérationnelle (i.e. qui va manipuler le modèle)
– Par le biais d'un langage « d'animation » ou « d'action »Par le biais d'un langage « d'animation » ou « d'action »
– Par le biais d'un langage de transformation (non abordé ici)Par le biais d'un langage de transformation (non abordé ici)
Nature exécutable des modèles (CIEL2015)
● Comportement du système incarné pleinement par le modèle
● Notion d'état courant (inclue celui initial)
● Notion de « pas » d’exécution (calcul du prochain état)
7. Olivier Le Goaer @ GDR-GPL 2015
Exemple de PDLExemple de PDL
Langage de description de processus (PDL)
Instant t
Instant t+1
8. Olivier Le Goaer @ GDR-GPL 2015
Le iDSML « PDL »Le iDSML « PDL »
iDSML = Metamodèle augmenté
● Partie statique : sert à représenter la structure du modèle (AST)
● Partie dynamique (état courant) + sémantique opérationnelle
9. Olivier Le Goaer @ GDR-GPL 2015
Le iDSML « PDL »Le iDSML « PDL »
iDSML = Metamodèle augmenté
● Partie statique : sert à représenter la structure du modèle (AST)
● Partie dynamique (état courant) + sémantique opérationnelle
Opération d'exécution
(sémantique)
Partie dynamique
10. Olivier Le Goaer @ GDR-GPL 2015
Le iDSML « PDL »Le iDSML « PDL »
iDSML = Metamodèle augmenté
● Partie statique : sert à représenter la structure du modèle (AST)
● Partie dynamique (état courant) + sémantique opérationnelle
Opération d'exécution
(sémantique)
Partie dynamique
12. Olivier Le Goaer @ GDR-GPL 2015
Model@run.timeModel@run.time
Terme surchargé
● Traite majoritairement de
l'adaptation logicielle
Avantage
● Offre un support de
raisonnement (abstraction)
pour l'adaptation
Inconvénient
● Maintenir le lien causal : M
doit rester le reflet fidèle de S
M
S
adaptation ?
représentation modification
Boucle d'adaptation
13. Olivier Le Goaer @ GDR-GPL 2015
Model@run.time + iDSMLModel@run.time + iDSML
Traiter le cas particulier où le système
considéré est un modèle à l’exécution
Aplatir la boucle est un choix raisonnable
● évacue la problématique du lien causal...
● ...mais fait naître un modèle M'' plus riche (moins abstrait ?)
M
S = exec(M')
adaptation ?
représentation modification S = exec(M'')
adaptation ?
modification
flatteningflattening
14. Olivier Le Goaer @ GDR-GPL 2015
Execution – Check – ActionExecution – Check – Action
« Au cours de l'exécution de mon processus,
si je suis en retard, alors je dois y remédier »
Détecter la nécessiter
d'adapter
Opération booléenne de
vérification (CHECK)
Entreprendre une
adaptation
Opération de modification
(ACTION)
Orchestrer l'adaptation
Lier CHECKs et ACTIONs
avec les opérations
d'exécution existantes
EECCAA
Execution – Check – Action
15. Olivier Le Goaer @ GDR-GPL 2015
Soyons pragmatique...Soyons pragmatique...
Comment savoir si je suis en retard ?
● En l'état, rien ne me permet de détecter cette situation
– « Exige de confronter la réalité de l'exécution avec ce qui est modélisé »« Exige de confronter la réalité de l'exécution avec ce qui est modélisé »
Et si oui, que dois-je faire ?
● Sauter une activité ? La supprimer ?... cela a-t-il même un sens ?
● Pas facile de savoir avec aussi peu d'information
Plus le métamodèle PDL est spécialisé
(étendu + contraint), plus il est aisé de faire
émerger des CHECK et des ACTIONS
CONSTAT
16. Olivier Le Goaer @ GDR-GPL 2015
iDSML adaptableiDSML adaptable
iDSML adaptable = iDSML augmenté par
spécialisation
● Partie adaptation + CHECK + ACTION
17. Olivier Le Goaer @ GDR-GPL 2015
Matrice exécution/adaptationMatrice exécution/adaptation
OpérationOpération
d'exécutiond'exécution
Opération d'adaptationOpération d'adaptation
ACTIONS
Partie statique Read only Create/Update/Delete
Partie dynamique Create/Update/Delete Create/Update/Delete
Partie adaptation Read only Create/Update/Delete
Opération d'exécution N/A Substitute
Opération d'adaptation N/A Substitute
Bilan des manipulations de modèle autorisées
ÉlémentsdeÉlémentsde
metamodèlemetamodèle
19. Olivier Le Goaer @ GDR-GPL 2015
Regroupement familial...Regroupement familial...
Devient rapidement compliqué de gérer tous
les éléments introduits par spécialisation
● Quel métamodèle ? Avec quels E, pour quels C, avec quels A ?
Solution : regrouper tous les éléments
connexes dans une brique de base
réutilisable appelée famille
● Une famille est liée à un métamodèle donné
● Elle offre la garantie que les E, C et A ont été prévus pour
s'appliquer à tout modèle instance de ce métamodèle
● L'ingénieur logiciel « pioche » dans les E,C et A pour définir la
sémantique d'adaptation de son choix
20. Olivier Le Goaer @ GDR-GPL 2015
Hiérarchies de famillesHiérarchies de familles
Famille X
{Uri metamodèle X}
Diagramme de
famille
● Syntaxe « à la UML »
● Héritage multiple possible
Hiérarchie
● Principe de substitution :
une adaptation écrite pour X
est valable aussi pour X'
● Degré de réutilisation
inversement proportionnel
au niveau de profondeur
Famille X'
{Uri metamodèle X'}
E
C
A
E
C
A
21. Olivier Le Goaer @ GDR-GPL 2015
Adaptation génériqueAdaptation générique vs.vs. métiermétier
Générique
● Stéréotypé « domain »
● C et A s'écrivent de manière
totalement indépendante du
contenu du modèle
● Haut degré de réutilisation.
Plus difficile à identifier.
Métier
● Stéréotypé « business »
● C et/ou A s'écrivent en
présupposant le contenu du
modèle
● Faible de degré de
réutilisation. Très facile à
trouver.
« Si je suis en retard dans mon
processus, je saute la prochaine
activité qui l'autorise »
« Si je suis en retard dans ma
'préparation des légumes', je saute
l'activité 'aiguiser couteaux' »
Fonctionne quel que soit le
processus modélisé (dev.
logiciel, recette cuisine, ...)
Ne fonctionne que pour les
recettes de cuisine !
22. Olivier Le Goaer @ GDR-GPL 2015
Diagramme pour l'exemple PDLDiagramme pour l'exemple PDL
24. Olivier Le Goaer @ GDR-GPL 2015
OrchestrationOrchestration
La sémantique d'adaptation naît de
l'orchestration des ECA ensemble
● Intercepter l'exécution E
● Vérifier les conditions C
● Appliquer les actions A le cas échéant
Techniques envisageables
● Programmation classique
– E,C et A mélangés à travers le langage d'actionE,C et A mélangés à travers le langage d'action
● Programmation par contrat
– Précondition (C) sur opération d'exécution (E) avec branchement vers bloc APrécondition (C) sur opération d'exécution (E) avec branchement vers bloc A
● Programmation par aspect
– Point cut (E&C) et advice around (A)Point cut (E&C) et advice around (A)
E
A
C
25. Olivier Le Goaer @ GDR-GPL 2015
iDSML d'orchestration ?iDSML d'orchestration ?
L'orchestration de l'adaptation est écrite
programmatiquement par l'ingénieur
● Manque d'abstraction
● Difficile à changer. Impossible de le faire « à chaud »
Aller plus loin en la modélisant à son tour
● Externaliser l'orchestration de l'adaptation dans un modèle à part,
conforme à un metamodèle
● Ce modèle DOIT être exécutable : nécessite un iDSML
Le moteur d’exécution sera écrit une fois pour
toute
● Sémantique d'exécution opérationnelle … d'adaptation (o_O)
26. Olivier Le Goaer @ GDR-GPL 2015
Co-exécution de modèlesCo-exécution de modèles
Moteur pour Ω
Moteur pour Ω
Modèle de
type Ω
Modèle de
type Ω
Modèle
d'orchestration
d'adaptation de Ω
Modèle
d'orchestration
d'adaptation de Ω
Moteur
d'orchestration
CallBack()
sur C et A et E
Délégation sur E
Modèle
d'orchestration
d'adaptation de Ω
Modèle
d'orchestration
d'adaptation de Ω
Modèle de
type Ω
Modèle de
type Ω
iDSML Ω iDSML d'orchestration
27. Olivier Le Goaer @ GDR-GPL 2015
Modèle d'orchestrationModèle d'orchestration
Inspiré des langages workflows
● Flot de contrôle minimaliste entre les E, les C et les A
● + système de « tags » pour le flot de données (travaux en cours)
E A
C
Process::run()
Instant t
29. Olivier Le Goaer @ GDR-GPL 2015
Le graal de l'adaptation...Le graal de l'adaptation...
Moteur pour Ω
Moteur pour Ω
Modèle de
type Ω
Modèle de
type Ω
Modèle
d'orchestration
d'adaptation de Ω
Modèle
d'orchestration
d'adaptation de Ω
Moteur
d'orchestration
CallBack()
sur C et A et E
Délégation sur E
Modèle
d'orchestration
d'adaptation de Ω
Modèle
d'orchestration
d'adaptation de Ω
Modèle de
type Ω
Modèle de
type Ω
Modèle
d'orchestration
d'adaptation de Ω
Modèle
d'orchestration
d'adaptation de Ω
Moteur
d'orchestration
CallBack()
sur C et A et E
Délégation sur E
Modèle
d'orchestration
d'orchestration
Modèle
d'orchestration
d'orchestration
30. Olivier Le Goaer @ GDR-GPL 2015
Modèle
d'orchestration
d'orchestration
Modèle
d'orchestration
d'orchestration
Le graal de l'adaptation...Le graal de l'adaptation...
Modèle
d'orchestration
d'adaptation de Ω
Modèle
d'orchestration
d'adaptation de Ω
Moteur
d'orchestration
Modèle
d'orchestration
d'adaptation de Ω
Modèle
d'orchestration
d'adaptation de Ω
Moteur pour Ω
Moteur pour Ω
Modèle de
type Ω
Modèle de
type Ω
CallBack()
sur C et A et E
Délégation sur E
Modèle de
type Ω
Modèle de
type Ω
Modèle
d'orchestration
d'orchestration
Modèle
d'orchestration
d'orchestration