• Aucun résultat trouvé

Concepts de base

1.1 Le langage ASTD

Le langage ASTD [23] est une notation formelle qui combine une représentation gra-phique et les opérateurs des notations telles que CSP [31] et LOTOS [8]. La définition complète des structures ASTD, incluant la représentation mathématique et graphique des structures et des états ASTD ainsi que la sémantique formelle, est disponible dans le rapport [21]. Une spécification ASTD est un ensemble fini de structures ASTD dont l’une, nommée main, est marquée comme la structure ASTD principale. L’exécution d’une spécification ASTD est intuitive. L’état initial de la structure ASTD principale est calculé et les événements reçus de l’environnement font évoluer l’état courant de la

AUT1, aut

q0 t1 q1 t2 q2

(a) Structure automate

q0 q1 q2

AUT1, aut

t1 t2

(b) États successifs de l’automate

Figure 1.1 – Exemple d’une structure ASTD automate

spécification vers un nouvel état en fonction de la spécification elle-même (l’ensemble des structures ASTD qui la composent). Il existe neuf structures ASTD.

Une structure ASTD peut être de type automate (aut). Dans ce cas, l’automate contient des structures élémentaires ou encore d’autres structures ASTD qui sont liées par des transitions t(�→x)[„], où t est l’événement ou l’action, �→x est l’ensemble des paramètres de l’événement et „ est un prédicat optionnel qui doit être évalué à vrai pour déclencher la transition. Une structure ASTD automate est, dans sa ver-sion simplifiée, un système d’états-transitions avec la possibilité de paramétrer les transitions par des variables et d’ajouter des conditions d’exécution à celles-ci. La figure 1.1a illustre une structure ASTD automate nommée AUT1. Elle a deux transi-tions sans paramètres t1 et t2 qui doivent être exécutées en séquence. La figure 1.1b montre l’évolution de l’état de cette structure ASTD depuis l’état initial après les occurrences des événements t1 et t2. L’état initial de la structure ASTD automate de l’exemple est q0 comme le montre le jeton présent dans cet état dans la partie gauche de la figure 1.1b. D’après la spécification à la figure 1.1a, seule la transition t1 est possible dans cet état. Après l’occurrence de l’événement t1, il y a un changement d’état de q0 à q1 comme le montre le jeton dans l’état q1 (voir la partie médiane de la figure 1.1b). De même, après l’occurrence de l’événement t2, l’état courant de la structure ASTD automate passe de l’état q1 à l’état q2 et le jeton se retrouve dans ce dernier état comme l’illustre la partie droite de la figure 1.1b.

Une structure ASTD séquence ( ) permet l’exécution l’une après l’autre de deux structures ASTD qui en sont membres. L’état de la structure ASTD séquence est celui de la structure en cours d’exécution. Quant cet état est celui de la première

sous-1.1. Le langage ASTD SEQ1,

AUT1, aut

q0 t1 q1 q2 t2 q3

AUT2, aut

(a) Structure séquence

q0 q1 q3

AUT1, aut AUT2, aut

t1 t2

SEQ1,

(b) États successifs de la séquence

Figure 1.2 – Exemple d’une structure ASTD séquence

structure, le passage à l’état initial de la seconde sous-structure est possible si l’état de la première sous-structure est final. Dans l’exemple présenté par la figure 1.2a, la structure ASTD principale est la séquence SEQ1 et elle comporte deux sous-structures ASTD automate qui seront exécutées en séquence. La figure 1.2b illustre l’évolution de l’état de la structure ASTD séquence depuis son état initial jusqu’à son état final. Cette évolution se fait à la suite des occurrences successives des événements t1 et t2. Une structure ASTD choix (�) permet l’exécution au choix d’une structure parmi plusieurs sous-structures ASTD membres. Une telle structure ASTD offre la possibi-lité d’exécuter les transitions de toutes les sous-structures et, une fois le choix de la sous-structure à exécuter effectué, les autres sous-structures sont ignorées lors d’oc-currences futures d’événements. Le choix de la sous-structure est déterminé par la première occurrence d’un événement acceptable.

Une structure ASTD fermeture de Kleene (�) spécifie l’exécution répétitive de sa sous-structure ASTD. Son état est celui de la sous-structure. Pour que l’exécution puisse repartir depuis son état initial, il faut que l’état courant soit final.

Une structure ASTD garde (⇒) est composée d’une sous-structure ASTD et d’un prédicat. Ce dernier doit être évalué à vrai pour que la sous-structure puisse s’exécuter. La structure ASTD appel (��) est l’équivalent de l’appel d’une fonction d’un langage de programmation. En effet, celle-ci permet d’exécuter une structure ASTD définie dans la spécification englobante, en lui passant les paramètres requis.

Book 1 0..* Lend 0..* 1 Member Figure 1.3 – Diagramme de classes d’un système d’information

Une structure ASTD synchronisation paramétrée (� [{�}] �) permet l’exécution de plusieurs sous-structures ASTD tout en synchronisant cette exécution sur les événe-ments spécifiés dans un ensemble d’événeévéne-ments synchrones . Cette structure a une version quantifiée (� [{�}] � x ∶ T) qui comporte une unique sous-structure ASTD, c’est-à-dire qu’elle permet d’exécuter, en parallèle ou de manière entrelacée (9 x ∶ T), la sous-structure pour différentes valeurs de la variable de quantification.

La dernière structure ASTD est le choix quantifié (� x ∶ T) qui permet l’exécution de la sous-structure pour une unique valeur de la variable de quantification (d’où l’appellation choix quantifié).

La méthode de spécification ASTD, qui inclut le langage ASTD, a été proposée dans la perspective d’être utilisée pour modéliser des systèmes d’information. La spé-cification complète d’un système comprend en plus de la description des ASTD, un modèle UML des entités du système et la définition des attributs de ces entités. Dans cet ensemble de modèles, la spécification ASTD vient préciser le comportement des différentes entités du système et chaque transition de la spécification modifie éven-tuellement des attributs de ces entités. Le diagramme de classes de la figure 1.3 montre la relation entre les entités Book et Member du système d’information d’une bibliothèque. Pour modéliser le comportement du processus de prêt de livres de cette bibliothèque, on peut lui ajouter la spécification ASTD de la figure 1.4. La structure ASTD automate de la figure 1.4b montre le comportement des instances de l’entité Book : un livre est acquis (événement Acquire), ensuite il peut être emprunté un certain nombre de fois (structure ASTD loan) et enfin il est retiré de la bibliothèque (événement Discard). La spécification ASTD automate de la figure 1.4d modélise le cycle d’un prêt. Celui-ci débute par l’emprunt d’un livre par un membre (événement Lend). Le prêt peut être ensuite renouvelé un certain nombre de fois (événement

1.1. Le langage ASTD

9mId ∶ int �

member(mId) book(bId) 9bId ∶ int � main, ∥

(a) Structure principale

book(bId ∶ int), aut

� � mId ∶ int loan(bId, mId) Acquire(bId)

Discard(bId)

(b) Structure ASTD pour un livre

member(mId ∶ int), aut 9bId ∶ int �

loan(bId, mId) Register(mId)

Unregister(mId)

(c) Structure ASTD pour un membre

loan(bId ∶ int, mId ∶ int), aut

Lend(bId, mId) Renew(bId)

Return(bId)

(d) Structure ASTD pour un prêt

Figure 1.4 – Spécification ASTD d’une bibliothèque [21]

Renew) et, enfin, le livre est retourné à la bibliothèque et le prêt se termine (événe-ment Return). La spécification du comporte(événe-ment d’un membre de la bibliothèque (voir la figure 1.4c) est semblable à celle du comportement d’un livre. La structure main est une structure ASTD synchronisation paramétrée (voir la figure 1.4a) qui met en parallèle les structures ASTD des entités précédemment mentionnées. Dans les spécifications de la figure 1.4 il faut noter l’utilisation des variables identifiantes bId et mId pour différencier les instances des entités Book et Member.

Le langage ASTD présente une structure hiérarchique qui se prête bien au format de données XML. Une spécification ASTD peut aisément être écrite dans un document XML. La structure ASTD automate AUT1 de la figure 1.1 correspond au document XML du programme 1.1. Le programme liste les états q0, q1 et q2 de l’automate aux lignes 3 à 13. La liste des transitions t1 et t2 de l’automate complète la spécification de l’automate aux lignes 14 à 33. L’attribut N0 à la ligne 2 spécifie quel est l’état initial de l’automate.

1 <Specification> 2 <Automaton Name="AUT1" N0="q0"> 3 <States> 4 <State Name="q0"> 5 <Elementary Final="false"/> 6 </State> 7 <State Name="q1"> 8 <Elementary Final="false"/> 9 </State> 10 <State Name="q2"> 11 <Elementary Final="true"/> 12 </State> 13 </States> 14 <Transitions> 15 <Transition Final="false"> 16 <Phi> 17 <Predicate> 18 <Boolean>true</Boolean> 19 </Predicate> 20 </Phi> 21 <LocalArrow N1="q0" N2="q1"/> 22 <Event Name="t1"/> 23 </Transition> 24 <Transition Final="false"> 25 <Phi> 26 <Predicate> 27 <Boolean>true</Boolean> 28 </Predicate> 29 </Phi> 30 <LocalArrow N1="q1" N2="q2"/> 31 <Event Name="t2"/> 32 </Transition> 33 </Transitions> 34 </Automaton> 35 </Specification>

Programme 1.1 – Document XML d’une structure ASTD automate

Pour pouvoir valider le document XML d’une spécification ASTD, il est important d’avoir un modèle de référence, c’est-à-dire un métamodèle du langage ASTD. Il décrit la forme de chacune des constructions de ce langage. Le programme 1.2 illustre une partie de ce métamodèle. La version complète du document XSD est disponible à l’annexe A dans le programme A.1. Il inclut une spécification d’éléments XML pour chacune des structures ASTD et chacun des états qui leur sont associés. Il inclut également une spécification des variables et de leurs types. Développer ce métamodèle dans le cadre de cette thèse a permis de valider que chaque spécification ASTD est syntaxiquement bien formée. Aux lignes 6 à 24 du programme 1.2, le métamodèle précise qu’un automate (élément Automaton) contient un élément States qui à son tour contient une liste, possiblement vide, d’éléments State. Le contenu de l’élément Statepeut être un élément Elementary ou un élément ASTD. De même que pour les états, l’élément Automaton contient un élément Transitions qui à son tour contient une liste, possiblement vide, d’éléments Transition (lignes 25 à 31). Le document XSD dans le programme 1.2 contient aussi la définition d’un métamodèle pour les états d’une spécification ASTD. Ce schéma de données est discuté plus en détails à la section 6.2.