Etude de cas UML Diagramme états-Transition : videoprojecteur

Modélisez le comportement du vidéoprojecteur lors d’une session de formation.

Commencez par identifier les états et transitions « nominaux ». Ajoutez les périodes de préchauffage et de refroidissement de la lampe. Représentez ensuite le fait qu’il faut appuyer successivement deux fois en moins de 5 s sur le bouton power pour interrompre la vidéoprojection. Envisagez enfin la panne de la lampe…

Solution 


Commençons par identifier le scénario nominal d’utilisation du vidéoprojecteur : le brancher, puis l’allumer (bouton power), puis connecter l’ordinateur. Ensuite, l’éteindre, puis le débrancher. Si nous ajoutons la possibilité de l’éteindre alors qu’il est allumé ou connecté, puis celle de le débrancher intempestivement, nous arrivons au diagramme de la figure 1.

Figure 1. Première version du diagramme d’états du vidéoprojecteur




Ajoutons le comportement suivant : si l’on éteint le vidéoprojecteur sans le déconnecter de sa source, il repassera directement dans l’état Connecté quand on le rallumera. Les deux états Allumé et Connecté intègrent chacun une activité durable : respectivement la projection d’un écran bleu ou de la source d’entrée. Le diagramme devient alors comme indiqué sur la figure 2.

Figure 2.Deuxième version du diagramme d’états du vidéoprojecteur 




Ajoutons maintenant les activités continues de préchauffage et de refroidissement de la lampe. Il est donc nécessaire d’introduire deux états supplémentaires autour de l’état Éteint.

Comment sortir de ces états supplémentaires : soit en utilisant un évènement de changement (when) testant la température de la lampe, soit plus simplement une transition automatique. Nous utiliserons cette dernière solution, plus simple et n’obligeant pas à spécifier les températures visées.

Vérifions que nous avons pris en compte tous les scénarios : d’abord le comportement nominal en début de session de formation : Débranché – brancher – Éteint – power – Préchauffage – [source absente] – Allumé – connecter source – Connecté. Puis, à la pause, le formateur éteint le projecteur : Connecté – power – Refroidissement – Éteint. Ensuite, de retour dans la salle, il rallume le projecteur et n’a pas besoin de reconnecter la source : Éteint – power – Préchauffage – [source présente] – Connecté.

Figure 3. Troisième version du diagramme d’états du vidéoprojecteur




Pour éviter de perdre trop de temps lors d’un appui intempestif sur power dans l’état Connecté, les vidéoprojecteurs modernes demandent une confirmation sous la forme d’un deuxième appui sur power en moins de 5 s.

Nous avons vu lors de l’exercice précédent l’événement temporel after (délai)qui va nous servir ici, associé à un nouvel état transitoire d’attente de confirmation.

Figure 4. Quatrième version du diagramme d’états du vidéoprojecteur 




Ajoutons enfin l’événement redouté : la lampe peut griller dès lors que le projecteur n’est pas éteint. Le plus simple consiste à introduire un nouvel état composite à l’intérieur de Branché mais excluant Éteint. Il suffit alors d’introduire une transition factorisée déclenchée par l’événement interne de changement when (état lampe = grillée), qui amène vers un état de panne. 

Le diagramme complété est représenté sur la figure 5.

Figure 5. Version du diagramme d’états du vidéoprojecteur avec états de panne

   

En fait, la confirmation pour éteindre le vidéoprojecteur est également obligatoire depuis l’état Prêt. On peut donc introduire un super-état englobant Prêt et Connecté, mais il faut alors utiliser un pseudo-état History (H) pour savoir dans quel sous-état revenir quand la temporisation tombe. Le schéma finalisé est montré sur la figure suivante.

Figure 6. Version du diagramme d’états du vidéoprojecteur







Sourcehttp://javasqlphp.blogspot.com/

Article plus récent Article plus ancien

Leave a Reply