II - Exercice UML (8 points) Dans les voitures modernes, la plupart des fonctions sont pilotées par du logiciel. On s’intéresse ici au logiciel qui pilote les essuie-glaces. À côté du volant se trouve une manette à quatre positions : 1. essuie-glace à l’arrêt ; 2. essuie-glace intermittent ; 3. essuie-glace vitesse normale ; 4. essuie-glace vitesse rapide. Pour simplifier, on supposera que la manette passe instantanément d’une des quatre positions à n’importe quelle autre, sans s’arrêter sur les positions intermédiaires, et qu'elle reste dans la position où le conducteur l'a placée. En vitesse normale et en vitesse rapide, l’essuie-glace effectue des allers-retours successifs, à la vitesse choisie, sans s’arrêter. En mode intermittent, l’essuie-glace effectue un aller-retour à vitesse normale, s’arrête en position « fin de course », reste au repos pendant une certaine durée, puis effectue un nouvel aller-retour, et ainsi de suite. On représentera par une constante la durée de pause entre deux balayages. Lorsque le conducteur active l’essuie-glace, celui-ci obéit immédiatement : si c’est un balayage intermittent qui a été demandé, l’aller-retour est immédiat ; si c’est la vitesse lente ou rapide qui est sélectionnée, elle est activée sans attendre. En revanche, lorsque le conducteur désactive l’essuie-glace, la commande n’est pas toujours prise en compte instantanément : si le balayage est en cours, l’effet de la commande est retardé jusqu’au prochain passage par la position « fin de course. » En particulier, en mode intermittent, l'essuie-glace termine le balayage en cours et se remet à l'arrêt. L'interface logiciel avec l'électronique de contrôle de l'essuie-glace comporte : 1. un interface de commande, qui accepte deux commandes : démarrer le moteur (à l'une des deux vitesses possibles), arrêter le moteur ; 2. un capteur qui signale, à chaque passage, que les essuie-glaces sont en position « fin de course. » Question 1 (1 point) Identifier les acteurs impliqués à partir de la description fonctionnelle ci-dessus. Question 2 (2 points) Dessiner les diagrammes de séquence correspondant aux deux scénarios suivants : Scénario 1 : dépassement sur autoroute par temps de pluie : – le conducteur sélectionne le mode « vitesse normale » – au bout de quelques balayages, le conducteur sélectionne le mode « vitesse rapide » – au bout de quelques balayages, le conducteur repasse les essuie-glace à l’arrêt. Exercice UML révision PA3 6/3/2005 Page 1 Scénario 2 : petite pluie – le conducteur sélectionne le mode « intermittent » ; – l’essuie-glace effectue deux allers-retours ; – au milieu du troisième aller-retour, le conducteur demande l’arrêt des essuie-glaces ; – l’essuie-glace s’arrête lorsqu’il a atteint la position « fin de course. » Question 3 (3 points) Déduire des deux diagrammes précédents le diagramme d’état du logiciel qui contrôle l’essuie-glace. Question 4 (2 points) On se préoccupe maintenant de la gestion de la fonction lave-glace, dont voici la description fonctionnelle : – le conducteur actionne le lave-glaces en tirant (horizontalement) la manette vers lui. Cette action est indépendante des 4 positions (verticales) de balayage, c'est-à-dire qu'elle peut être activée pour tous les choix de balayage (y compris l'arrêt) ; – tant que la manette est tirée, la pompe de lave-glace envoie du liquide sur le pare-brise. En même temps, les essuie-glaces balayent à vitesse rapide ; – dès que la manette est relâchée, la pompe s'arrête ; – après l'arrêt de la pompe, les essuie-glaces effectuent encore 4 balayages complets à vitesse rapide, puis reprennent le fonctionnement déterminé par la position de la manette. Modifier le diagramme d'état de la question 3 pour prendre en compte le lave-glace. On pourra utiliser le pseudo-état « history » expliqué ci-dessous Annexe : le pseudo-état « history » L’activation du pseudo-état « history » permet à un super-état de se souvenir du dernier sousétat séquentiel qui était actif avant une transition sortante. Une transition vers l’état « history » rend à nouveau actif le dernier sous-état actif, au lieu de ramener vers le sous-état initial. Exemple 1 : 1. Le système se situe dans le sous-état B de l’état X ; 2. Un événement active la transition qui conduit à l’état Y ; 3. La transition sortant de Y conduit au pseudo-état « history » ; 4. Le pseudo-état « history » active à nouveau le sous-état B dans le super-état X. Exemple 2 : 1. Le système se situe dans le sous-état C de l’état X ; 2. Un événement active la transition qui conduit à l’état Y ; 3. La transition sortant de Y conduit au pseudo-état « history » ; 4. Le pseudo-état « history » active à nouveau le sous-état C dans le super-état X. X A B Y C Exercice UML révision PA3 Sur la figure, conformément à la norme UML, le pseudo-état « history » est représenté par le symbole H H 6/3/2005 Page 2