1/13
2/13
3/13
Exercice2
4/13
Exercice 3
5/13
6/13
Exercice 4
Exercice 5
Nous avons ajouté au diagramme précédent les actions internes importantes du Publiphone, telles que la vérification des
pièces et la gestion du solde de l’appelant :
• incrémentation lors de l’introduction de pièces ;
• décrémentation lors du début de communication et à chaque UT.
7/13
Pour parfaire la préparation du diagramme d’états, nous allons maintenant répertorier l’ensemble des messages qui sont émis
et surtout ceux qui sont reçus par le Publiphone. En effet, les messages reçus vont devenir des événements qui déclenchent
des transitions entre états et les messages émis vont donner lieu à des actions sur les transitions.
Le diagramme de séquence système réalisé à l’étape 2 liste un certain nombre de messages. Nous visons maintenant en la
matière à l’exhaustivité et à la « généricité ». Dans cette optique, nous préconisons de représenter graphiquement l’ensemble
des messages échangés par le système avec ses acteurs sous la forme d’un diagramme de communication appelé diagramme
Publicité
de contexte dynamique4
En partant des deux diagrammes de séquence système, nous avons répertorié les messages échangés entre le système et ses
acteurs. Puis nous les avons généralisés en ajoutant des paramètres quand c’était nécessaire :
• introPièce(0,2 !) devient un message paramétré : « introPiece(p) » ;
• composerNumero(0562475200) devient « composerNumero(num) » ;
• tonalité (libre) devient « tonalité(type) » pour prendre en compte l’occupation de la ligne, etc.
8/13
Pour le cas d’utilisation Téléphoner, l’état initial nominal du Publiphone est à « raccroché en service ». Quand l’appelant
décroche le combiné, il doit ensuite introduire un minimum de 0,2 ! pour pouvoir composer son numéro. Une fois qu’un
numéro valide est composé, le Publiphone attend la réponse du standard, puis que l’appelé décroche. La conversation est
alors établie jusqu’à ce que l’un des deux raccroche. Le Publiphone revient alors à son état initial.
Traduisons ce texte en un premier squelette de diagramme d’états.
ÉVÉNEMENT INTERNE : « WHEN »
On notera que la plupart des événements qui déclenchent les transitions entre états correspondent à la réception d’un message
émis par un acteur. Nous avons d’ailleurs utilisé les mêmes noms pour les événements que pour les messages correspondants
(sauf pour numeroValide qui est plus lisible que le rigoureux validiteNumero(vrai)).
Seul le passage de l’état « Attente pièces » à l’état « Attente numéro » est provoqué par un événement interne au Publiphone :
la détection du dépassement du seuil des 0,2 !. UML propose un mot-clé pour distinguer ces changements d’états internes : «
when », suivi d’une expression booléenne dont le passage de faux à vrai déclenche la transition.
Il y a (comme souvent) deux façons de procéder : la triviale et l’élégante ! La solution triviale consiste à ajouter des
transitions déclenchées par l’événement raccrocherCombiné et sortant de tous les états pour amener vers l’état
Publicité
« Raccroché ». Mais le diagramme paraît soudain bien chargé…
La solution élégante consiste à introduire un super-état5, « Décroché », ce qui permet de factoriser la transition de sortie vers
l’état « Raccroché ».
9/13
Pour le moment, le crédit de l’appelant n’intervient que dans l’expression booléenne associée à l’événement interne « when
». Cependant, pour que le crédit atteigne 0,2 !, il faut que l’appelant introduise une ou plusieurs pièces.
Nous pouvons donc placer une transition propre (qui ramène vers l’état de départ) sur l’état « Attente pièces ». Dès que le
crédit dépasse 0,2 !, le Publiphone doit passer dans l’état « Attente numéro ».
Si nous ne souhaitons utiliser que des événements de réception de messages, probablement introduirons-nous des conditions
sur les transitions comme cela est illustré sur la figure 5-16.
10/13
Reprenons les choses par le début. Admettons que le fait de décrocher le combiné fasse tomber les éventuelles pièces qui
auraient été introduites auparavant. Le crédit doit donc être initialisé à « 0 » sur cette transition. Ensuite, pour que le crédit
atteigne 0,2 !, il faut que l’appelant introduise une ou plusieurs pièces. Nous avons donc placé une transition propre sur l’état
« Attente pièces ». Dès que le crédit dépasse 0,2 !, la transition de changement « when » amène le Publiphone en l’état «
Attente numéro ». Le crédit n’évolue plus jusqu’à ce que l’appelé décroche, ce qui est traduit par le message débuterComm
émis par le standard. En effet, à partir de ce moment là, le crédit est décrémenté régulièrement comme l’indique la phrase 5 («
Le Publiphone consomme de l’argent dès que l’appelé décroche et à chaque unité de temps [UT] générée par le standard »).
L’action taxer représente la chute d’une pièce à chaque impulsion. Enfin, il ne faut pas oublier de rendre les pièces non
utilisées quand l’appelant raccroche.
La prise en compte de tous ces éléments donne le schéma présenté ci-après. On notera l’introduction du nouvel état « Fin
Publicité
communication » pour parer au cas où la communication est interrompue par le Publiphone faute de crédit suffisant.
11/13
Il nous reste encore à modéliser la dernière phrase : on peut ajouter des pièces à tout moment. Là encore, plusieurs solutions
sont possibles, mais une seule va s’avérer tout à la fois correcte et élégante. La première idée consiste à introduire une
transition propre identique à celle de « Attente pièce » sur chaque sous-état de « Décroché ». Cette façon de procéder est
correcte, mais le dispositif est très lourd, et nous allons plutôt chercher à factoriser au moyen du super-état. N’est-il pas
possible de transférer la transition propre au niveau même de « Décroché », comme cela est illustré sur le schéma ci-après ?
À retenir TRANSITION PROPRE OU TRANSITION INTERNE ?
Dans le cas d’une transition propre, l’objet quitte son état de départ pour le retrouver. Cela peut avoir des effets secondaires
non négligeables comme l’interruption puis le redémarrage d’une activité durable, la réalisation d’effets en entrée (« entry »)
ou en sortie (« exit ») de l’état, etc. De plus, quand un état est décomposé en sous-états, une transition propre ramène
forcément l’objet dans le sous-état initial. Ici, chaque introduction de pièce ramènerait le Publiphone dans l’état « Attente
pièce », qui est implicitement sous-état initial de « Décroché » ! Pour résoudre ce problème courant, il existe en UML la
notion de transition interne ; elle représente un couple (événement/effet) qui n’a aucune influence sur l’état courant. La
transition interne est ainsi notée à l’intérieur du symbole de l’état. C’est l’approche que nous allons utiliser pour notre étude
de cas.
12/13
13/13
Exercice 6
14/13