IFT 3901 Analyse et Conception des Logiciels Analyse et
Transcription
IFT 3901 Analyse et Conception des Logiciels Analyse et
Automne 2001 Petko Valtchev ! #"$$% 1 ! #"$$% 2 1 Cas d’Utilisation (Scénarios) Diarg. Classes (Analyse) Diarg. Classes (Conception) Diarg. Interactions (Conception) Conception Diarg. Activités* Diagr. composants Diarg. Interactions* (Analyse) Scénarios détaillés* * = élément optionnel ! #"$$% ! " # 3 $ % Énoncé: l Un logiciel embarqué de contrôle pour l’ascenseur d’un immeuble de m étages. L’ascenseur se déplace entre les étages selon les contraintes suivantes: 1. L’ascenseur a m boutons, un par étage. Lorsque appuyé, un bouton s’allume et force l’ascenseur à visiter l’étage correspondant. A l’arrivée à cet étage, le bouton s’éteint. 2. Chaque étage, à l’exception du premier et du dernier, ont deux boutons pour appeler l’ascenseur, l’un afin de monter plus haut et l’autre afin de descendre. Lorsque appuyé, un tel bouton s’allume et ne s’éteint que lorsque l’ascenseur visite l’étage pour ensuite s’en aller dans la bonne direction. 3. Lorsqu’il est vide et n’est pas demandé à un étage, l’ascenseur reste sur l’étage actuel avec ses portes fermées. ! #"$$% 4 2 % & $ Le diagramme de contexte: l CdU « Appel de l’ascenseur » l CdU « Indication de l’étage désiré » l CdU « Utilisation complète de l’ascenseur » Ascenseur « includes » Appel ascenseur Utilisation ascenseur Usager « includes » Indication étage ' 1. ! #"$$% ( % 5 ) * Usager A (User A) appuie sur le bouton (floor button) Up à l’étage X afin de se rendre à l’étage Y. 2. Le bouton Up est allumé. 3. L’ascenseur (elevator) arrive à l’étage X. 4. Le bouton Up est éteint. 5. Les portes de l’ascenseur (elevator doors) s’ouvrent. 6. Le compteur de temps d’arrêt est actionné. Usager A entre dans l’ascenseur. 7. Usager A appuie sur le bouton (elevator button ) pour l’étage Y. 8. Le bouton Y est allumé. 9. Les portes se ferment après la fin du temps d’arrêt. 10. L’ascenseur monte à l’étage Y. 11. Le bouton Y est éteint. 12. Les portes de l’ascenseur s’ouvrent. 13. Le compteur de temps d’arrêt est actionné. Usager A descend de l’ascenseur. 14. Les portes se ferment après la fin du temps d’arrêt. ! #"$$% 6 3 % & $ + , Le diagramme de transitions d’états 10 états, dont : • Attente événement (1) • Traitement requête (2) • Test du besoin d’arrêt (3) • Mouvement continu (4) • Arrêt (5) 12 événements, dont : • Bouton (ét./asc.) appuyé • Bouton non allumé • Ascenseur arrêté • Étage-cible atteint % ! #"$$% & $ 7 + , Le diagramme des classes d’Analyse (cas général : n ascenseurs) Système à dominance matériel Classes (A) = dispositifs matériel Classes domaine incluent: • le contrôle (Contrôleur Asc.) • l’interface (Bouton Ét./Asc.) ! #"$$% 8 4 % & $ Diagramme de Séquence système + , Contracts des Opérations Système (effet sur le modèle domaine) Ascenseur Usager Allumer Bouton Up; Mettre en marche Ascenseur; Arrêter Ascenseur à l’étage X; Éteindre Bouton Up; Ouvrir Portes ascenseur; Actionner Compteur temps d’arrêt. pressFloorButton(X) elevatorAtRequestedFloor pressElevatorButton(Y) elevatorAtRequestedFloor Allumer Bouton Y; Fermer Portes à la fin du temps d’arrêt; Mettre en marche Ascenseur; Arrêter Ascenseur à l’étage Y; Éteindre Bouton Y; Ouvrir Portes ascenseur; Actionner Compteur temps d’arrêt; Fermer Portes à la fin du temps d’arrêt; % ! #"$$% & $ 9 + , Les CRC des classes métier Qui (c’est-à-dire, quelle classe?) fait quoi (c.-à-d., quel message?) afin de remplir le contrat? Ex. Elevator Controller ! #"$$% 10 5 Cas d’Utilisation (Scénarios) Diarg. Classes (Analyse) Diarg. Interactions (Conception) Conception Diarg. Classes (Conception) Détails Algorithmiques Cartes CRC (Analyse) Une Approche : 1. Construire les diagrammes d’interaction pour chaque scénario 2. Construire le diagramme de classes détaillé (conception) 3. Faire la conception détaillée de chaque classe 1. Structures de données (types) pour les attributs 2. Algorithmes pour les méthodes ! #"$$% - ' 1. 11 ( ( ( Usager A (User A) appuie sur le bouton (floor button) Up à l’étage X afin de se rendre à l’étage Y. 2. Le bouton Up informe le contrôleur (elevator controller) de la requête. 3. Le contrôleur envoie un message au bouton Up pour qu’il s’allume. 4. Le contrôleur envoie une série de messages à l’ascenseur pour qu’il se déplace à l’étage X. 5. Le contrôleur envoie un message au bouton Up pour qu’il s’éteigne. 6. Le contrôleur envoie un message aux portes (elevator doors) pour qu’elles s’ouvrent. 7. Le contrôleur actionne le compteur de temps d’arrêt. Usager A entre dans l’ascenseur. 8. Usager A appuie sur le bouton (elevator button ) pour l’étage Y. 9. Le bouton Y informe le contrôleur de la requête. 10. Le contrôleur envoie un message au bouton Y pour qu’il s’allume. 11. Le contrôleur envoie un message aux portes pour qu’elles se ferment après le délai d’arrêt. 12. Le contrôleur envoie une série de messages à l’ascenseur pour qu’il se déplace à l’étage Y. 13. Le contrôleur envoie un message au bouton Y pour qu’il s’éteigne. 14. Le contrôleur envoie un message aux portes pour qu’elles s’ouvrent afin de laisser A sortir. 15. Le contrôleur actionne le compteur de temps d’arrêt. 16. Le contrôleur envoie un message aux portes pour qu’elles se ferment après le délai d’arrêt. ! #"$$% 12 6 . % # # ( / Attention, numérotation non-standard! . ! #"$$% % 0 13 ! #"$$% % 14 7 0 1 Aspects complémentaires de la conception d’une classe (objet) : l Description de protocole : établit l’interface d’un objet l l l les messages qu’il peut recevoir, les opération qu’il exécute en réponse d’un message. Description d’implantation : présente les détails d’implantation pour chaque opération associée à un message. l l l informations sur la partie dissimulée de l’objet, détails internes concernant les structures de données qui représentent les attributs de l’objet, détails des procédures qui réalisent les opérations qu’elles soient exportées par le protocole ou bien cachées. ! #"$$% . 15 % ! #"$$% 16 8