1Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Métamodèles et Points de Variation Sémantique
workshop IDM: Semo’0729 mars 2007
Arnaud Cuccuru, Chokri Mraidha, François Terrier, Sébastien Gérard{firstName.lastName}@cea.frCEA-List / DTSI / SOL / L-LSP
2Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
PVS et IDM
Sémantique d’un langage Projection :
De la syntaxe (ici des métamodèles)… … vers un domaine sémantique Style : Dénotationnel, Axiomatique, Opérationnel
Point de Variation Sémantique (PVS) Aspect sémantique ouvert à interprétation… Projection partielle
“Popularisés” par UML PVS partie “statique”
“Precise semantics of shared aggregation varies by application area and modeler”. Superstructure v2.1.1 p.41
PVS partie “dynamique” “The behavior of an invocation of an operation when a precondition is not satisfied is a semantic variation point”. Super. p.107
PVS partie “temporelle” “No assumptions are made about the time intervals between event occurrence, event dispatching, and consumption”. Super. p.456
Généralisables à l’IDM En particulier au DSML
3Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Sommaire
Machines à états d’UML 2 Spécialisation avec les mécanismes du MOF
Profile Extension Merge
Spécialisation dans les approches “opérationnelles” Extension Surcharge
Proposition Identification par paramètres template Modularisation par le pattern “strategy” Fixation par liaison des paramètres
Conclusion
4Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Machine à états d’UML 2
StateMachine
Region
+region+stateMachine0..1
1..*
Vertex kind : TransitionKind
Transition
/isComposite : Boolean/isOrthogonal : Boolean/isSimple : Boolean/isSubmachineState
State
kind : PseudostateKind
PseudoStateBehavior
Trigger(from Communications)
Constraintsubvertex*
+
+transition*
+outgoing+source1 *
+incoming+target1 *
+effect0..1
+guard0..1
+trigger0..*
BehaviorStateMachines
*+deferrableTrigger
5Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Spécialisation avec les mécanismes du MOF
« profile »StateMachineSemanticVariationPoints
eventPolicy : EventSelectionPolicytransitionPolicy : TransitionSelectionPolicy
« stereotype »UnambiguousStateMachine
StateMachine(from
BehaviorStateMachines)
{required}
LIFOFIFO
« enumeration »EventSelectionPolicy
RANDOMSTOCHASTIC
« enumeration »TransitionSelectionPolicy
UnambiguousBehaviorStateMachines
StateMachine(from BehaviorStateMachine)
SpecializedStateMachineA
SpecializedStateMachineB
...
FIFO event selection policy,Random transition selection policy
LIFO event selection policy,Stochastic transition selection policy
UnambiguousBehaviorStateMachinesA
StateMachine
FIFO event selection policy,Random transition selection policy
UnambiguousBehaviorStateMachinesB
StateMachine
...LIFO event selection policy,Stochastic transition selection policy
StateMachine
Region
+region+stateMachine0..1
1..*
Vertex kind : TransitionKind
Transition
/isComposite : Boolean/isOrthogonal : Boolean/isSimple : Boolean/isSubmachineState
State
kind : PseudostateKind
PseudoStateBehavior
Trigger(from Communications)
Constraintsubvertex*
+
+transition*
+outgoing+source1 *
+incoming+target1 *
+effect0..1
+guard0..1
+trigger0..*
BehaviorStateMachines
*+deferrableTrigger
« merge » « merge »
« import »
6Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Spécialisation dans les approches ‘’opérationnelles’’
StateMachine
Region
+region+stateMachine0..1
1..*
Vertex kind : TransitionKind
Transition
/isComposite : Boolean/isOrthogonal : Boolean/isSimple : Boolean/isSubmachineState
State
kind : PseudostateKind
PseudoStateBehavior
Trigger(from Communications)
Constraintsubvertex*
+
+transition*
+outgoing+source1 *
+incoming+target1 *
+effect0..1
+guard0..1
+trigger0..*
BehaviorStateMachines
*+deferrableTrigger
+step()-selectRelevantEvents() : Event[*]-selectRelevantTransitions(event : Event) : Transitions[*]-fireTransition(transition : Transition)
-eventSelectionPolicy : ESP-transitionSelectionPolicy : TSP
StateMachine
Vertex
execute()
Behavior
TemplatedBehaviorStateMachines
EventEvenOccurence*
+evenPool{ordered} 1
+type
+currentState{subsets subvertex}1
« merge »
OperationalBehaviorStateMachines
7Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
StateMachine
Region
+region+stateMachine0..1
1..*
Vertex kind : TransitionKind
Transition
/isComposite : Boolean/isOrthogonal : Boolean/isSimple : Boolean/isSubmachineState
State
kind : PseudostateKind
PseudoStateBehavior
Trigger(from Communications)
Constraintsubvertex*
+
+transition*
+outgoing+source1 *
+incoming+target1 *
+effect0..1
+guard0..1
+trigger0..*
BehaviorStateMachines
*+deferrableTrigger
+step()-selectRelevantEvents() : Event[*]-selectRelevantTransitions(event : Event) : Transitions[*]-fireTransition(transition : Transition)
-eventSelectionPolicy : ESP-transitionSelectionPolicy : TSP
StateMachine
Vertex
execute()
Behavior
TemplatedBehaviorStateMachines
EventEvenOccurence*
+evenPool{ordered} 1
+type
+currentState{subsets subvertex}1
« merge »
// Local variable declarationsEvent[*] relevantEvents ;Event selectedEvent ;Transition selectedTransition ;
// Selection of the event to handlerelevantEvents := this.selectRelevantEvents() ;selectedEvent := this.selectEventToHandle(relevantEvents) ;
// Selection of the transition to fireselectionTransition := this.selectTransitionToFire(selectedEvent) ;
// the selected transition is firedfireTransition(selectedTransition) ;
OperationalBehaviorStateMachines
Spécialisation dans les approches ‘’opérationnelles’’
8Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Identification par paramètres templates
+step()-selectRelevantEvents() : Event[*]-selectRelevantTransitions(event : Event) : Transitions[*]-fireTransition(transition : Transition)
-eventSelectionPolicy : ESP-transitionSelectionPolicy : TSP
StateMachine
Vertex
execute()
Behavior
TemplatedBehaviorStateMachines
EventEvenOccurence*
+evenPool{ordered} 1
+type
+currentState{subsets subvertex}1
BehaviorStateMachines
« merge »
9Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Identification par paramètres templates
+step()-selectRelevantEvents() : Event[*]-selectRelevantTransitions(event : Event) : Transitions[*]-fireTransition(transition : Transition)
-eventSelectionPolicy : ESP-transitionSelectionPolicy : TSP
StateMachine
Vertex
execute()
Behavior
ESP TSP
TemplatedBehaviorStateMachinesESP > EventSelectionPolicyTSP > TransitionSelectionPolicy
EventEvenOccurence*
+evenPool{ordered} 1
+type
+currentState{subsets subvertex}1
BehaviorStateMachines
« merge »
10Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Modularisation par le pattern ‘’Strategy’’
+selectEventToHandle(events : Event[*]) : Event
EventSelectionPolicy
+selecTransitionToFire(transitions Transition[*]) : Transition
TransitionSelectionPolicy
FIFOEventSelectionPoliciy
LIFOEventSelectionPolicy
And many other user specific policies...
RandomTransitionSelectionPolicy
StochasticTransitionSelectionPolicy
11Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Fixation par liaison des paramètres
TemplatedBehaviorStateMachines
ESP > EventSelectionPolicyTSP > TransitionSelectionPolicy
FIFO_Random_StateMachines
« bind »<ESP->FIFOEventSelectionPolicy,
TSP->RandomTransitionSelectionPolicy>my_FIFO_RandomStateMachine : StateMachine
<ESP->FIFOEventSelectionPolicy,TSP->RandomTransitionSelectionPolicy>
Liaison au niveau M2 Liaison au niveau M1
12Semo’07, Mars 2007 – A. Cuccuru (CEA-List)DTSI
Conclusion
Contribution : Principalement méthodologique Identification / résolution explicite des PVS
PVS “fonctionnels” (statique ou dynamique) Identification par paramètres templates Modularisation par strategy classes Résolution explicite par binding
Support des outils (Kermeta, Meta-GME, etc.) : Déclaration des paramètres : OK Liaison des paramètres
Niveau M2 : OK Niveau M1 : KO
Pistes : Extension de Ecore ? Ecore -> UML2, UML2 -> Ecore
Support annoncé Wait and see…
Top Related