CONCEPTION des SYSTÈMES d’INFORMATION UML 4 : Analyse organique Epitech 3 – Automne 2007 Bertrand LIAUDET SOMMAIRE ANALYSE ORGANIQUE 2 Diagrammes de séquence 3 Exemple de diagramme de séquence 8 Diagramme de collaboration 12 Diagramme d’objets 15 Diagramme d’Etats-transitions 16 EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 1/18- Bertrand LIAUDET ANALYSE ORGANIQUE Il est facile de décrire la méthode encore que son application exige à coup sûr savoir et pratique. Modèle UML Diagramme UML Modèle statique Classes (objet) Objets Modèle dynamique Séquence ANALYSE (objet) Collaboration ORGANIQUE Modèle dynamique Etats-transitions (non objet) Activités ANALYSE DES DONNEES L’analyse organique avec UML va essentiellement consister à créer les diagrammes de séquence objet qui sont une reprise des diagrammes de séquence système, mais en montrant quels sont les méthodes des objets qui sont en jeu pour chaque scénario. Les diagrammes de collaboration sont une autre façon de représenter la même chose. Les diagrammes d’états-transitions et d’activités permettent de faire des zooms sur certains objets à fonctionnement particulier. On utilise plus souvent des diagrammes d’états-transitions au niveau de l’analyse organique et des diagrammes d’activités au niveau de l’analyse fonctionnelle. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 2/18- Bertrand LIAUDET Diagrammes de séquence Modèle UML Diagramme UML Modèle statique Classes (objet) Objets Modèle dynamique Séquence ANALYSE (objet) Collaboration ORGANIQUE Modèle dynamique Etats-transitions (non objet) Activités ANALYSE DES DONNEES Notions générales sur les diagrammes de séquence et formalisme UML • Un diagramme de séquence est la représentation graphique d’un scénario. • Il montre des interactions entre des objets dans un enchaînement temporel. • Il montre les objets et les classes impliqués dans le scénario ainsi que les messages échangés pour réaliser la fonctionnalité du scénario. • Il peut être transformé en diagramme de collaboration. • C’est un diagramme orienté « client » plutôt que développeur. Représentation d’un appel de procédure emboîtée A B C procédure sous-procédure retour implicite A est un objet La ligne verticale en pointillé est appelée : ligne de vie. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 3/18- Bertrand LIAUDET Le rectangle sur la ligne de vie représente la période d’activité de l’objet. Représentation du paramètre de retour B A val :=calcule() Ou encore : B A calcule() val Représentation de la récursivité A récursion() Pour représenter la récursivité, on dédouble la bande rectangulaire : dans le déroulement du message, on fait appel au message. Envoi d’un message réflexif A message réflexif EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 4/18- Bertrand LIAUDET Il y a message réflexif quand un message d’un objet fait appel à un autre message du même objet. Représentation de contraintes temporelles B A C Message x (y-x < 3s) y Message (z-y < 1s) z Représentation des boucles A B while X loop Message end loop Ou encore : B A *[X] Message La boucle est symbolisée par le “*” place devant la condition entre crochets. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 5/18- Bertrand LIAUDET Représentation des tests A if X Message 1 else Message 2 B C B C endif Ou encore : A [X] Message 1 [non X] Message 2 EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 6/18- Bertrand LIAUDET Diagramme de séquence d’un scénario : Ascenseur : Usager : Porte appel extérieur déplacement ouverture ouverte { < 9 sec.} fermeture fermée Le diagramme de séquence d’un scénario représenté au niveau de l’analyse architectonique fait apparaître les premiers objets du système. C’est à partir de ces premiers objets, d’une analyse des données type MCD, et d’une démarche d’abstraction, qu’on va pouvoir construire le diagramme de classes. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 7/18- Bertrand LIAUDET Exemple de diagramme de séquence L’hôtel On repart du diagramme des classes correspondant à la situation suivante : Un hôtel est composé d’au moins deux chambres. Chaque chambre dispose d’une salle d’eau qui peut être une douche ou une salle de bain. L’hôtel héberge des personnes. Il peut employer du personnel et est dirigé par un des employés. L’hôtel a les caractéristiques suivantes : une adresse, le nombre de pièces, la catégorie. Une chambre est caractérisée par le nombre et le type de lits, le prix et le numéro. On peut calculer le chiffre d’affaires et le prix de la chambre en fonction du nombre d’occupants. On gère aussi la réservation des chambres. On peut connaître à tout moment la disponibilité des chambres. (d’après UML-2, édition Pearson Education). Hotel -Nom : string -Adresse : string -Catégorie : int +calculCA() : float +disponibilitéChambre() : Liste de Chambre +réserverChambre() +facturerOccupation() Chambre 1 2..* -Numéro : int -nbLitSimple : int -nbLitDouble : int -nbLitEnfant : int -salleDEau : string facturation Occupation * * -dateArrivée : Date -dateDépart : Date -nbAdulte : int -nbEnfant : int -coût : float +calculCoût() emploie est dirigé par Personne -Nom : string -Prénom : string -Adresse : string * 1..* -employés -directeur Client Employé 1 EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 8/18- Bertrand LIAUDET Explications complémentaires : • L’hôtel est composé de chambres. Si on détruit l’objet hôtel, les objets chambres sont aussi détruits. Ceci veut dire qu’on ne se sert jamais des objets chambres sans avoir un objet hôtel. La composition crée une liste de référence par valeurs (et non pas par adresse comme dans le cas de l’agrégation simple). Par contre, on considère que la destruction de l’objet hôtel n’engendre pas la destruction des objets « employés », ni celle des objets « occupation ». Ceci est a préciser en fonction de l’usage réel du logiciel. • Tous les liens qui partent de l’hôtel ne sont navigables que dans le sens de l’hôtel vers les classes liées. En effet, c’est à partir de l’hôtel quelles sont les chambres de l’hôtel, quelles sont les chambres disponibles, quelles sont les employés de l’hôtel. On pourra aussi calculer le chiffre d’affaire à partir de l’occupation des chambres. • Les réservations sont gérées comme des occupations. • DisponibilitéChambre renvoie la liste des chambres. On l’utilisera pour faire la réservation. • RéserverChambre ne ressort rien : on met à jour les données et c’est tout. • Facturer l’occupation ne renvoie rien : le résultat est directement affecté à l’attribut coût de l’occupation. • CalculCA renvoie le résultat. On en fera ensuite ce qu’on veut. • Personnes est une classe abstraite (en italique). Elle n’est jamais instanciée. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 9/18- Bertrand LIAUDET Diagramme de séquence de la réservation :Hotel :Client :Occupation :Hotelier réserverChambre() ListeChambre:=disponibilitéChambre() Afficher(ListeChambre) LireRésa(Chambre, NomCli, NbAdult, NbEnfant, DateDeb, DateFin) Client:=ChercherClient(NomCli) si ChercherClient = NULL alors : Client:=NouveauClient(Nom, Prénom, Adresse) occupation := créerOccupation(Client, Chambre, NbAdult, NbEnfant, DateDéb, DateFin): ajoutListeOccupation(occupation) Fin de réserverChambre() EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 10/18- Bertrand LIAUDET Diagramme des classes ajusté : On a du ajouter de nouvelles opérations dans le diagramme de classes : chercherClient, lireRésa, nouveauClient. A noter que l’accès aux opérations des classes-association est problématique dans Visio. Hotel -Nom : string -Adresse : string -Catégorie : int +calculCA() : float 1 +disponibilitéChambre() : Liste de Chambre +réserverChambre() +facturerOccupation() +LireRésa(entrée NumCham, entrée NomCli, entrée NbAdult, entrée NbEnfant, entrée DateDeb, entrée DateFin) +ChercherClient(entrée NomCli) : Client +ajoutListeOccupation(entrée occupation) facturation * Occupation est dirigé par emploie -dateArrivée : Date -dateDépart : Date -nbAdulte : int -nbEnfant : int -coût : float +calculCoût() +créerOccupation(entrée Chambre, entrée Client, entrée NbAdult, entrée NbEnfant, entrée DateDeb, entrée DateFin) : <non spécifié> 2..* Chambre Personne 1 1..* -directeur -Numéro : int -nbLitSimple : int -nbLitDouble : int -nbLitEnfant : int -salleDEau : string -Nom : string -Prénom : string -Adresse : string -employés Employé * Client * +NouveauClient(entrée Nom, entrée Prénom, entrée Adresse) : Client A noter que certains éléments de Visio ne sont pas du tout ergonomiques ! EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 11/18- Bertrand LIAUDET Diagramme de collaboration Modèle UML Diagramme UML Modèle statique Classes (objet) Objets Modèle dynamique Séquence ANALYSE (objet) Collaboration ORGANIQUE Modèle dynamique Etats-transitions (non objet) Activités ANALYSE DES DONNEES • Un diagramme de collaboration est la représentation graphique d’un scénario. • Il montre des interactions entre des objets. • Il se concentre sur l’organisation des objets et sur les messages envoyés. • Il peut être transformé en diagramme de séquence. • C’est un diagramme orienté développeur. Exemple A 1 :X C B 3 :Z 2 :Y Le scénario débute par un objet A qui envoie un message X à un objet B, puis l’objet B envoie un message Y à un objet C, et enfin C s’envoie un message Z. Avantages Les diagrammes de collaboration sont particulièrement indiqués pur la phase exploratoire qui correspond à la recherche des objets et des classes. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 12/18- Bertrand LIAUDET Inconvénients Seule une petite collaboration est représentable. S’il y a beaucoup de messages échangés, le diagramme est peu lisible. 3 :M3 5 :M5 A 7 :M7 C 6 :M6 8:M8 9 :M9 1 :M1 B 2:M2 4 :M4 10 :M10 Remplacement par un diagramme de séquence Si le diagramme de collaboration est trop dense, il vaut mieux utiliser un diagramme de séquence. Le passage d’un diagramme de collaboration à un diagramme de séquence est automatique. B A C M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 13/18- Bertrand LIAUDET On peut aussi représenter les périodes d’activité des objets : A B C M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 14/18- Bertrand LIAUDET Diagramme d’objets Modèle UML Diagramme UML Modèle statique Classes (objet) Objets Modèle dynamique Séquence ANALYSE (objet) Collaboration ORGANIQUE Modèle dynamique Etats-transitions (non objet) Activités ANALYSE DES DONNEES • Le diagramme d’objets montre les objets et leurs liens à un moment de l’exécution du programme. • C’est un instantané, une photo, d’un sous-ensemble d’objets d’un système à un instant de la vie du système. • Il permet de rendre plus concrètes et plus claires certaines parties du diagramme de classe. • C’est un diagramme orienté développeur. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 15/18- Bertrand LIAUDET Diagramme d’Etats-transitions Modèle UML Diagramme UML Modèle statique Classes (objet) Objets Modèle dynamique Séquence ANALYSE (objet) Collaboration ORGANIQUE Modèle dynamique Etats-transitions (non objet) Activités ANALYSE DES DONNEES • Le digramme d’états-transitions montre les différents états et transitions possibles des objets d’une classe à l’exécution. Notions générales sur les diagrammes d’Etats-transitions et formalisme UML Automate d’états finis Le comportement de divers éléments de modélisation peut être spécifié par des automates d’états finis, aussi appelés simplement automates ou automates d’états ou bien machine à états. Etat • Un état est une situation donnée durant la vie d’un objet. C’est une situation plus ou moins durable. • Un état peut 1. satisfaire à certaines conditions, 2. réaliser des actions 3. être en attente d’évènements • Un état dépend des états précédents et des événement survenus. • La série des états d’un objet est décrite dans un automate. Etat UML : EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 16/18- Bertrand LIAUDET Transition • Une transition relie deux états de manière unidirectionnelle. • La transition matérialise le passage d’un état à un autre. • Une transition est déclenchée par un événement. • Les transitions indiquent les chemins dans les graphes des états. Transition UML : Etat initial • L’état initial est la première situation modélisée. • Dans un diagramme d’états-transitions, il y a toujours un et un seul état initial. • C’est un pseudo-état relié au premier état effectif par une pseudo-transition. Etat final • L’état final est la dernière situation modélisée. • Dans un diagramme d’états-transitions, il peut y avoir 0 ou plusieurs états finaux (0 dans le cas d’un système qui ne s’arrête jamais). • C’est un pseudo-état relié au dernier état effectif par une pseudo-transition. Etats initial et final UML : Evénement • Un événement est une situation remarquable dans la vie de l’objet. • Un événement est une situation qui ne dure pas, contrairement à un état. • Un événement peut déclencher le passage d’un état à un autre, via une transition. • Un événement peut porter des paramètres qui matérialise le flot d’informations ou de données entre les objets. Condition de garde • Une condition de garde est une condition booléenne dont dépend le déclenchement d’une transition lors de l’occurrence d’un événement. Effet (action, activité, opération) • Un effet est une action ou activité qui s’exécute lorsqu’une transition se déclenche. • L’effet est déclenché après l’évaluation à « vrai » de la condition de garde. EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 17/18- Bertrand LIAUDET Transitions composites Etats composites Transition entre états composites Sous-états concurrents Transition entre sous-états concurrents EPITECH - CSI - UML – Analyse organique - 2007-2008 - page 18/18- Bertrand LIAUDET