Olivier Le Goaër
olivier.legoaer@univ-pau.fr
GDR-GPL # Session IDM
Bordeaux, 2015
Adaptation d'exécutionAdaptation d'exécution
de modèlesde modèles
Vers des iDSML adaptablesVers des iDSML adaptables
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
iDSMLiDSML
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)
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 »)
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)
Olivier Le Goaer @ GDR-GPL 2015
Exemple de PDLExemple de PDL
 Langage de description de processus (PDL)
Instant t
Instant t+1
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
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
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
iDSML adaptableiDSML adaptable
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
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
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
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
Olivier Le Goaer @ GDR-GPL 2015
iDSML adaptableiDSML adaptable
 iDSML adaptable = iDSML augmenté par
spécialisation
● Partie adaptation + CHECK + ACTION
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
Famille d'iDSML adaptableFamille d'iDSML adaptable
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
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
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 !
Olivier Le Goaer @ GDR-GPL 2015
Diagramme pour l'exemple PDLDiagramme pour l'exemple PDL
Orchestration d'adaptationOrchestration d'adaptation
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
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)
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
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
PerspectivesPerspectives
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
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
Questions ?Questions ?

Adaptation d'exécution de modèles : vers des iDSML adaptables

  • 1.
    Olivier Le Goaër olivier.legoaer@univ-pau.fr GDR-GPL# Session IDM Bordeaux, 2015 Adaptation d'exécutionAdaptation d'exécution de modèlesde modèles Vers des iDSML adaptablesVers des iDSML adaptables
  • 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
  • 3.
  • 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
  • 11.
  • 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
  • 18.
  • 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
  • 23.
  • 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
  • 28.
  • 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
  • 31.