Introduction au langage de modélisation UML
![Introduction au langage de modélisation UML](/images/remos_downloads/CoursUml-id5142.5142.pdf_thumb_prev.jpg)
Introduction au langage de modélisation UML
Denis Conan, Chantal Taconet, Christian Bac
CSC 4002Octobre 2012
Revision : 632
Sommaire
1 Objectifs de ce cours de modélisation orientée objet .3 2 Généralités sur la modélisation orienté objet et sur UML 4
3 Analyse, vues cas d’utilisation et processus .. 19
4 Analyse et conception, aspects statiques de la vue logique 35 5 Analyse et conception, aspects dynamiques de la vue logique 64 6 Conception, aspects langage et technique 95 7 Conception, vues développement et physique .. 116 8 Conclusion . 129 9 Bibliographie .. 130
1 Objectifs de ce cours de modélisation orientée objet
? Introduire la modélisation à base de graphiques des systèmes informatiques
? Introduire la modélisation orientée objet
? Introduire la notation UML
? Différents types de diagrammes avec leurs notations
? Rôles complémentaires des types de diagrammes
? Cohérence entre diagrammes de même type ou de types différents
? Présenter des éléments méthodologiques d’utilisation de ces types de diagrammes dans un processus de développement
? Présentation dans le cours d’une première étude de cas
? Mise en pratique lors des bureaux d’étude avec une autre étude de cas
? Évaluation de l’acquisition lors d’un examen sur table avec une troisième étude de cas
2 Généralités sur la modélisation orienté objet et sur UML
2.1 Principes de la modélisation .5
2.2 Rôles du modèle du système 6
2.3 Pourquoi et comment modéliser en orienté objet .. 7
2.4 Unified Modelling Language (UML) .. 8
2.5 Cinq façons de voir un système informatique : les 4+1 vues de Kruchten .. 11
2.6 Phases de la modélisation, cycle en V .. 12
2.7 Rôle de l’expression des besoins .. 13
2.8 Rôle de l’analyse . 16
2.9 Rôle de la conception 17
2.1 Principes de la modélisation
? Objectif principal de la modélisation = maîtriser la complexité
? Modéliser = abstraire la réalité pour mieux comprendre le système à réaliser / réalisé
? Le modèle doit être relié au monde réel
? Par exemple : l’existant avant les travaux, le réalisé, le restant à réaliser
? Un modèle peut être exprimé avec différents niveaux d’abstraction / raffinement
? Par analogie : répartition électrique de l’immeuble, de la cage d’escalier, de l’appartement, de la pièce
? Une seule « vue » du système n’est pas suffisante
? Les intervenants multiples du projet informatique possèdent des préoccupations multiples
? Par analogie : plan de masse, vues de face et de côté, schéma électrique, plan de plomberie, plan de calculs de construction
2.2 Rôles du modèle du système
? Le modèle permet de :
1. Spécifier le système à réaliser/réalisé
2. Valider le modèle vis-à-vis des clients
3. Fournir un guide pour la construction du système
? Organiser les structures de données et le comportement du système
4. Documenter le système et les décisions prises
2.3 Pourquoi et comment modéliser en orienté objet
? Relier le modèle au monde réel par la notion d’objet
? Orienté objet = abstraire et décomposer le système informatique en objets
? Le monde réel est constitué d’objets physiques ou immatériels
? Tracer les objets virtuels de modélisation depuis les objets du monde réel
? Relier les objets (réels) du problème et les objets (virtuels) de la solution
? Favoriser les abstractions naturelles du monde réel utilisables en modélisation
? Objets vus comme des « boîtes noires » : seules les propriétés visibles de l’extérieur intéressent
? Objets possédant un nom, qualifiables, classables, polymorphes, dé-/composables, interagissants avec d’autres objets, etc.
? Apports de la modélisation orientée objet
? Meilleure indépendance du modèle par rapport aux fonctions demandées
? Meilleure capacité d’adaptation et d’évolution du modèle lorsque des fonctionnalités sont modifiées ou ajoutées
2.4 Unified Modelling Language (UML)
? Systèmes d’informations des entreprises
? Banques et services financiers
? Télécommunications
? Transports
? Défense et aérospatiale
? Calculs scientifiques
? Applications réparties en réseau, services Web Internet
2 Généralités sur la modélisation orienté objet et sur UML 2.4 Unified Modelling Language (UML)
2.4.1 UML, un langage
? UML n’est pas une méthode
? UML est un langage de modélisation orientée objet
? UML a été adopté par toutes les méthodes orientées objet ? UML est dans le domaine public, c’est un standard ? UML est un langage pour :
? Visualiser
? Chaque symbole graphique possède une sémantique
? Spécifier
? De manière précise et complète, sans ambiguïté
? Construire
? Une partie du code des classes peut être généré automatiquement
? Documenter
? Les différents diagrammes, notes, contraintes, exigences sont conservés dans un document
2 Généralités sur la modélisation orienté objet et sur UML 2.4 Unified Modelling Language (UML)
2.4.2 Les 10 principaux diagrammes UML
Principaux diagrammes étudiés
Classes | Machine à états | Communications | Paquetages | ||
Cas
d’utilisation
Activité Objets Séquence Composants Déploiement
2.5 Cinq façons de voir un système informatique : les 4+1 vues de Kruchten
2.6 Phases de la modélisation, cycle en V
2.7 Rôle de l’expression des besoins
? Permettre une meilleure compréhension du système
? Comprendre et structurer les besoins du client
? Clarifier, filtrer et organiser les besoins, ne pas chercher l’exhaustivité ? Une fois identifiés et structurés, ces besoins :
? Définissent le contour du système à modéliser
? Précisent le but à atteindre
? Permettent d’identifier les fonctionnalités principales (critiques) du système
2 Généralités sur la modélisation orienté objet et sur UML 2.7 Rôle de l’expression des besoins
2.7.1 Exemple de cahier des charges : Studs
? Studs : Application d’aide à la planification de réunions et de prise de décision.
? L’objectif est de permettre d’exprimer des préférences parmi plusieurs choix.
? Les choix sont de deux types : (1) des plages horaires (dates avec heures de début et de fin) et (2) des votes concernant une liste de choix.
? L’organisatrice, crée un scrutin, renseigne les plages horaires possibles (type 1) et ajoute les participants à la réunion.
? Les participants peuvent exprimer dans un bulletin leurs préférences en indiquant pour chaque plage horaire s’ils votent « pour » (ils sont disponibles et annoncent leur intention de participer) ou « contre ».
? L’organisatrice récupère les résultats du scrutin à la fin du vote et annonce la plage horaire choisie.
? L’organisatrice participe au scrutin qu’elle gère.
? La procédure est similaire pour le type 2, c.-à-d. pour les scrutins concernant des propositions (chaînes de caractères quelconques) à choisir.
2 Généralités sur la modélisation orienté objet et sur UML 2.7 Rôle de l’expression des besoins
2.7.2 Règles de gestion et contraintes de l’application Studs
? Toutes les personnes peuvent être organisatrices.
? L’organisatrice est de facto une participante au scrutin.
? Seule l’organisatrice est autorisée à gérer un scrutin.
? Seuls les participants enregistrés peuvent participer au scrutin et consulter les résultats.
? Pour que les participants puissent voter, il faut que le scrutin soit ouvert
(dateDuJour?dateDebutScrutin).
? La durée d’ouverture du scrutin est limitée.
? L’organisatrice doit indiquer la date de destruction automatique du scrutin.
? Toutes ces dates permettent de gérer de manière automatique le cycle de vie d’un scrutin.
? Les transitions du cycle de vie peuvent aussi être effectuées à la demande de l’organisatrice.
2.8 Rôle de l’analyse
? Le but de l’analyse est de traduire dans un langage qui se rapproche doucement de celui des informaticiens les modèles exprimés dans l’expression des besoins
? Cependant, pour rester compréhensible par les clients ou utilisateurs, elle ne prend en considération que des entités du domaine (métier)
? Elle sert d’interface, avec l’expression des besoins, aux dialogues avec les clients et les utilisateurs
? L’analyse doit servir de support pour la conception, l’implantation et la maintenance
? Le modèle de l’analyse décrit le problème (ce que doit faire le système et comment il le fait tel que vu d’un point de vue métier) sans spécifier la solution technique (avec les canevas logiciels)
2.9 Rôle de la conception
? Le but de la conception est de fixer les choix techniques et de préparer l’implantation
? Le modèle de la conception décrit la solution (comment le problème est résolu)
? La conception doit servir de support pour l’implantation et la maintenance
? Le modèle de la conception n’est pas destiné à être compréhensible par les utilisateurs mais par les développeurs
QCM
1. Le code source d’une application est-il un modèle de l’application?
2. UML est-il un processus de développement?
3. Un client demandant une informatisation est-il censé comprendre les diagrammes
UML?
4. Un développeur / programmeur est-il censé comprendre les diagrammes UML?
5. La phase d’expression des besoins est-elle étudiée dans ce module?
3 Analyse, vues cas d’utilisation et processus
3.1 Modèle de l’analyse . 20
3.2 Diagrammes de cas d’utilisation ..21
3.3 Diagrammes d’activité ..29
3 Analyse, vues cas d’utilisation et processus
3.1 Modèle de l’analyse
? Vision de l’extérieur du système, le problème :
? Vue cas d’utilisation = ce que fait le système, les fonctionnalités
? Vue processus = ce que fait le système, les règles de gestion
3 Analyse, vues cas d’utilisation et processus
3.2 Diagrammes de cas d’utilisation
3.2.1 Introduction .22
3.2.2 Acteur 23
3.2.3 Relation de généralisation entre acteurs ..24
3.2.4 Cas d’utilisation, lien de communication et système .. 25
3.2.5 Relations entre cas d’utilisation 26
3.2.6 Exemple de diagramme de cas d’utilisation ..27
3.2.7 Éléments de méthodologie .. 28
3.2.1 Introduction
? Les fonctionnalités sont modélisées par des cas d’utilisation ? Un diagramme de cas d’utilisation définit :
? Le système
? Les acteurs
? Les cas d’utilisation (fonctionnalités)
? Les liens entre acteurs et cas d’utilisation ? Quel acteur accède à quel cas d’utilisation?
? Un modèle de cas d’utilisation se définit par :
? Des diagrammes de cas d’utilisation
? Une description textuelle des scénarios d’utilisation
3.2.2 Acteur
? Un acteur représente une personne, un périphérique ou un autre système qui joue un rôle (interagit) avec le système
? « L’organisatrice, crée un scrutin, renseigne les plages horaires possibles et ajoute les participants à la réunion. »
? « Les participants peuvent exprimer leurs préférences en indiquant pour chaque plage horaire s’ils votent “pour” (ils sont disponibles et annoncent leur intention de participer) ou “contre”. »
|
organisatrice
3.2.3 Relation de généralisation entre acteurs
? La généralisation spécialisation est aussi appelée héritage
? « L’organisatrice participe au scrutin qu’elle gère. »
? Une organisatrice est une participante
3.2.4 Cas d’utilisation, lien de communication et système
? Un cas d’utilisation est un moyen de représenter les différentes possibilités d’un système
? Il correspond à une suite d’interactions entre un acteur et le système
? Il définit une fonctionnalité utilisable par un acteur
3.2.5 Relations entre cas d’utilisation
? «include» = réutilisation complète sans changement
? Généralisation spécialisation ou héritage = spécialisation de certaines actions du cas d’utilisation d’origine
? «extend»a = ajout de fonctionnalité facultative
a. Sémantique très controversée, donc évitez d’utiliser «extend»
3.2.6 Exemple de diagramme de cas d’utilisation
3.2.7 Éléments de méthodologie
? Identifier les acteurs qui utilisent, gèrent et exécutent des fonctionnalités spécifiques
? Organiser les acteurs par relation de généralisation spécialisation si c’est pertinent
? Pour chaque acteur, rechercher les cas d’utilisation du système
? Si besoin, organiser ces interactions par généralisation spécialisation et par inclusion, mais éviter la relation d’extension
Introduction au langage de modélisation UML 3 Analyse, vues cas d’utilisation et processus
3.3 Diagrammes d’activité
3.3.1 Scénarios d’un cas d’utilisation . 30
3.3.2 Actions et choix 31
3.3.3 Concurrence .32
3.3.4 Autres notations du diagramme d’activité 33
3.3.1 Scénarios d’un cas d’utilisation
? La description d’un cas d’utilisation se fait par des scénarios qui définissent la suite logique des actions qui constituent ce cas
? Il est possible de définir des scénarios simples ou des scénarios plus détaillés faisant intervenir les variantes, les cas d’erreurs, etc.
? La description du scénario précise ce que fait l’acteur et ce que fait le système
? En plus de descriptions textuelles, le scénario peut être représenté en utilisant un diagramme d’activité
? Le diagramme d’activité permet de :
? Présenter « l’algorithme », c’est-à-dire les étapes de la fonctionnalité
? Visualiser l’aspect temporel des interactions
? Connaître le sens des interactions (acteur vers système ou inverse)
? Distinguer le cas nominal des variantes (p.ex. avec traitement des erreurs)
3.3.2 Actions et choix
3.3.3 Concurrence
3.3.4 Autres notations du diagramme d’activité
attente X secondes
date / heure de démarrage
Signal X reçu par le système Signal Y émis par le système
3 Analyse, vues cas d’utilisation et processus
QCM
1. Dans un diagramme de cas d’utilisation, est-il pertinent d’ajouter des cas d’utilisation ne faisant pas partie du système?
2. Quelles entités peuvent être dessinées dans un diagramme de cas d’utilisation? (a) système
(b) opération
(c) acteur
(d) fusion
(e) généralisation spécialisation
(f) action
3. Dans une généralisation spécialisation entre acteurs, l’acteur spécialisé a-t-il accès à toutes les fonctionnalités de l’acteur généralisé?
4 Analyse et conception, aspects statiques de la vue logique
4.1 Diagrammes communs à l’analyse et à la conception 36
4.2 Diagramme de classes .. 37
4.3 Diagramme d’objets . 53
4.4 Concepts avancés du diagramme de classes 55
4 Analyse et conception, aspects statiques de la vue logique
4.1 Diagrammes communs à l’analyse et à la conception
? Vue logique
? Aspects statiques = structure du problème et de la solution
? Diagrammes de classes et d’objets
? Aspects dynamiques = comportement des éléments de la structure ? Diagrammes de séquence, de communications et de machine à états
Diagrammes d’interactions (séquences et communications)
Diagramme de machine à états
4 Analyse et conception, aspects statiques de la vue logique
4.2 Diagramme de classes
? Diagramme au cœur de l’analyse et de la conception orientées objet ? Abstraction
? Abstraire = ignorer / cacher des caractéristiques non significatives
? Ne garder que les caractéristiques d’une classe importantes pour l’intervenant
? Analyste versus architecte ou concepteur
? Encapsulation comme mécanisme d’abstraction
? Cacher des détails en les rendant « privés » (non visibles)
? Par exemple, en analyse, montrer le « quoi » qui est « public » (visible)
Puis, en conception, détailler en ajoutant les éléments pour le « comment »
=? Protège l’analyse des changements effectués lors de la conception dans la partie « privée » en ne remettant pas en cause ce qui est exposé
« publiquement » au niveau métier
? Par exemple, l’analyse spécifie que tel élément est un ensemble
La conception précise que c’est une liste doublement chaînée
? Classe = famille d’objets ayant les mêmes caractéristiques et le même comportement
? Attributs = caractéristiques (données membres, informations, propriétés)
? Opérations = comportement (méthodes, fonctions, procédures, messages, services)
| |||
|
? Instanciation = création d’un objet à partir d’une classe
? Objet = instance de classe
? Le nombre total de participations est une caractéristique des personnes (classe), donc applicable à Julien Dupont (objet)
? L’opération getNbTotalParticipations() utilise la valeur de l’attribut nbTotalParticipations connue par la classe
? Cette opération peut être appliquée directement à la classe Personne et bien sûr aussi aux objets / instances de Personne
? Attribut dérivé = attribut dépendant d’autres attributs
? Association (binaire) = relation entre (deux) classes
? Le sens de lecture est facultatif lorsqu’il n’y a pas d’ambiguïté
4.2.7 Nom de rôle et multiplicité
? Nom de rôle = indication sur la participation de la classe à l’association
? Multiplicité = contrainte sur le nombre d’objets associés
? Factorisation de caractéristiques (attributs et opérations)
? Polymorphisme :
? Un objet d’une classe enfant peut prendre plusieurs formes
? L’objet peut être utilisé partout où un objet de la classe parente est attendu
? Exprimant ainsi que la classe enfant est une spécialisation de la classe parente
? Liaison dynamique ou tardive :
? Soient p un objet d’une classe P et o() une opération de P
? Soient e un objet d’une classe E, enfant de la classe P et o() l’opération redéfinie dans E
? Soit r une référence sur un objet de type P
? Le polymorphisme autorise à affecter à r la valeur e : r ? e
? Si l’opération o() est appelée sur la référence r : r.o() et s’il y a liaison dynamique (ce qui est toujours le cas en Java p.ex.)
? C’est l’opération redéfinie dans la classe enfant qui est appelée soit l’opération o() redéfinie dans E
? Agrégation = une association exprimant un couplage fort lié à une relation de subordination
? Elle est asymétrique du type « ensemble / élément » ou « contenant / contenu » ? Règles permettant de choisir une agrégation :
? Est-ce une partie de?
? Les opérations appliquées à l’ensemble sont-elles appliquées à l’élément? ? Les changements d’états sont-ils liés? ? Attention :
? Un élément agrégé peut être lié à d’autres classes
? La suppression de l’ensemble n’entraîne pas celle de l’élément
? Analysez le texte pour rechercher les noms qui sont des classes métier et les verbes qui les relient qui sont des associations
? Construisez un premier diagramme de classes à partir de ces noms
? Enrichissez ce diagramme avec les associations à l’aide des verbes obtenus
? Affinez le diagramme en éliminant les associations redondantes, en simplifiant le schéma dès lors qu’il respecte les spécifications de l’énoncé
? Ne cherchez les généralisations et spécialisations qu’à la fin, c’est-à-dire lorsque les classes sont déjà bien établies
? Ne cherhez les agrégations qu’à la fin
? Terminez cette première version du diagramme de classes en ajoutant les multiplicités
? Dans une seconde itération seulement, ajoutez les attributs et les opérations
? Pensez à vérifier que tous les concepts métier sont présents
? Pensez à vérifier que vous pouvez réaliser les cas d’utilisation par parcours du graphe de classes
4.3 Diagramme d’objets
? Illustration des liens entre objets dans un scénario / une configuration donnée
QCM
1. Quelles entités peuvent être dessinées dans un diagramme de classes? (a) opération
(b) acteur
(c) généralisation spécialisation
(d) action
(e) association
2. Une classe est-elle une instance d’objet?
3. Dans un diagramme de classes, tous les attributs d’une classe doivent-ils être spécifiés?
4. Sans multiplicité spécifiée explicitement, est-il supposé par défaut « * »?
5. La généralisation spécialisation est-elle représentée par une relation avec un triangle blanc à une extrémité?
6. Soit E une classe enfant de la classe parente P, tout objet de classe E peut-il être utilisé là où un objet de type P est attendu?
4.4 Concepts avancés du diagramme de classes
4.4.1 Navigabilité . 56
4.4.2 Classe d’association .. 57
4.4.3 Association qualifiée .. 58
4.4.4 Composition : agrégation forte . 59
4.4.5 Classe abstraite 60
4.4.6 Interface . 61
4.4.7 Classe paramétrée / générique . 62
4.4.8 Exemple de diagramme de classes avancé 63
4.4.1 Navigabilité
? Par défaut, une association est bidirectionnelle
? Il est possible de réduire la portée en la rendant unidirectionnelle
? En général, ce choix se fait dans la phase de conception
4.4.2 Classe d’association
4.4.3 Association qualifiée
? numéroCompte et nom sont des attributs des classes CompteBancaire et Fichier, respectivement
? numéroCompte et nom sont les clefs de leur classe respective
? Le choix de l’association qualifiée peut être laissé à la phase de conception
gère
4.4.4 Composition : agrégation forte
? La composition est une agrégation forte qui lie les cycles de vie entre le composé (ensemble) et les composants (éléments)
? Le choix entre composition et agrégation peut être pris lors de la phase de conception
4.4.5 Classe abstraite
? Un Média peut être transporté, dupliqué, affiché. Le transport et la duplication sont indépendants du type de Média (copie de fichiers). Par contre, tout Média peut être affiché et ce n’est pas la même chose pour le Livre, la Vidéo, le Graphique ou le Texte. Un Média ne peut pas définir comment il s’affiche tant qu’il ne sait pas ce qu’il est.
? Il n’y pas d’instance de la classe Média. Un Média n’existe qu’en tant que Livre, Texte, Graphique ou Vidéo.
4.4.6 Interface
? Une interface n’est pas une classe, c’est une liste d’opérations
? Une interface, comme une classe abstraite, ne peut pas servir à créer un objet ? Une interface exprime un savoir-faire, un contrat à respecter par les classes qui
« réalisent » cette interface
4.4.7 Classe paramétrée / générique
? Classe paramétrée / générique = paramétrée par des types ? Attributs génériques = typés avec le type en paramètre
? Opérations génériques = arguments et / ou type de retour génériques
4.4.8 Exemple de diagramme de classes avancé
5 Analyse et conception, aspects dynamiques de la vue logique
5.1 Rappel : diagrammes communs à l’analyse et à la conception .65
5.2 Modèle dynamique de l’analyse et de la conception ..66
5.3 Diagramme de séquence 67
5.4 Diagramme de communications .. 76
5.5 Diagramme de machine à états .. 86
5.1 Rappel : diagrammes communs à l’analyse et à la conception
? Vue logique
? Aspects statiques = structure du problème et de la solution
? Diagrammes de classes et d’objets
? Aspects dynamiques = comportement des éléments de la structure ? Diagrammes de séquence, de communications et de machine à états
Diagrammes d’interactions (séquences et communications)
Diagramme de machine à états
5.2 Modèle dynamique de l’analyse et de la conception
? Le modèle dynamique montre le comportement du système et l’évolution des objets dans le temps
? Le modèle dynamique identifie les différents événements venant du monde externe et montre l’enchaînement dans le système que provoquent ces événements ? Objectifs du modèle dynamique :
? Trouver les relations temporelles et événementielles entre les objets
? Montrer les interactions entre les objets
? Définir les états des objets qui déterminent une réaction différente face à un événement
? Les différents diagrammes du modèle dynamique de l’analyse et de la conception sont :
? Diagramme de séquence : ordre des interactions entre objets
? Diagramme de communications : répartition des interactions sur les liens entre objets
? Diagramme de machine à états : comportement des objets selon leurs états
5.3 Diagramme de séquence
5.3.1 Modéliser l’ordre des interactions ..68
5.3.2 Participant, temps et message ..69
5.3.3 Exemple de diagramme de séquence « Ouvrir un scrutin » .. 70
5.3.4 Spécification et types de messages .71
5.3.5 Création / suppression d’objets .72
5.3.6 Fragments de séquence « ref » et « opt » 73
5.3.7 Fragment de séquence « loop » 74
5.3.1 Modéliser l’ordre des interactions
? Le diagramme de séquence capture l’aspect temporel des échanges entre participants
? Un diagramme de séquence spécifie le comportement d’un cas d’utilisation ou d’une partie de celui-ci
5.3.2 Participant, temps et message
5.3.3 Exemple de diagramme de séquence « Ouvrir un scrutin »
|
|
|
5.3.4 Spécification et types de messages
? Syntaxe complète
? attribut = nom_message(arguments) : type_retour
? attribut peut être un attribut de l’objet appelant ou une variable locale
? nom_message est une opération de l’objet appelé
? Synchrone : l’expéditeur est bloqué pendant le traitement
? Le retour d’appel est optionnel (implicite)
? Asynchrone : l’expéditeur continue son exécution pendant le traitement du message
:Client | :Serveur |
:AutreServeur
5.3.5 Création / suppression d’objets
5.3.6 Fragments de séquence « ref » et « opt »
? ref : sous-séquence détaillée dans un autre diagramme de séquence
? opt : sous-séquence optionnelle exécutée sous condition de garde
poc ? « pour ou contre »
5.3.7 Fragment de séquence « loop »
? loop : boucle un nombre maximum de fois tant que la condition est vraie ? loop(valeur initiale, maximum, condition)
pv? « peut voter », av? « a voté »
Introduction au langage de modélisation UML 5 Analyse et conception, aspects dynamiques de la vue logique
QCM
1. Quelles entités peuvent être dessinées dans un diagramme de séquence? (a) fragment
(b) instance
(c) message
(d) condition
(e) opération
2. Un objet se distingue-t-il d’une classe parce qu’il est souligné?
3. Pendant un message synchrone, l’expéditeur est-il bloqué en attente d’une réponse?
4. En réponse à un message synchrone, l’appelé renvoie-t-il un seul retour d’appel?
5. Un fragment de séquence est-il une partie optionnelle d’une séquence?
6. Un objet se distingue-t-il d’une classe parce qu’il est nommé?
Introduction au langage de modélisation UML 5 Analyse et conception, aspects dynamiques de la vue logique
5.4 Diagramme de communications
5.4.1 Modéliser les liens d’interactions .. 77
5.4.2 Participant, lien d’interaction, message .. 78
5.4.3 Message conditionné, messages en séquence 79
5.4.4 Messages emboîtés 80
5.4.5 Itération de messages .81
5.4.6 Collection et recherche dans une collection ..82
5.4.7 Messages concurrents * ..83
5.4.8 Choix entre séquence et communications 84
5.4.1 Modéliser les liens d’interactions
? Le diagramme de communications montre la structure spatiale des interactions entre participants
? L’attention est mise sur les liens d’interactions, qui ne sont qu’implicites dans le diagramme de séquence
5.4.2 Participant, lien d’interaction, message
5.4.3 Message conditionné, messages en séquence
5.4.4 Messages emboîtés
5.4.5 Itération de messages
5.4.6 Collection et recherche dans une collection
5.4.7 Messages concurrents *
5.4.8 Choix entre séquence et communications
? Les plus du diagramme de séquence :
? Montrer l’ordre des interactions : le premier objectif du diagramme
? Montrer les messages asynchrones : différents types de messages ? Montrer les parties optionnelles, les itérations : concept de fragments ? Les plus du diagramme de communications :
? Montrer les liens entre participants : le premier objectif du diagramme
? Lien visuel direct avec le graphe des classes du diagramme de classes
? Montrer les participants : l’un des objectifs du diagramme
? Un peu plus facile à construire et à adapter : numérotation plutôt que séquencement
? Les deux sont équivalents pour :
? Montrer la signature des messages / opérations
? Montrer le parallélisme
? Diagramme de séquence : concept de fragment de séquence
? Diagramme de communications : numérotation des messages
Introduction au langage de modélisation UML 5 Analyse et conception, aspects dynamiques de la vue logique
QCM
1. Quelles entités peuvent être dessinées dans un diagramme de communications? (a) fragment
(b) message
(c) condition
(d) ligne de vie
(e) lien d’interaction
(f) classe
2. Est-ce que plusieurs messages peuvent transiter sur un même lien d’interaction?
Introduction au langage de modélisation UML 5 Analyse et conception, aspects dynamiques de la vue logique
5.5 Diagramme de machine à états
5.5.1 Modéliser l’état des objets d’une classe .. 87
5.5.2 Types d’états, événement et transition 88
5.5.3 Transition implicite 89
5.5.4 Événement, condition et action d’une transition 90
5.5.5 Exemple de diagramme de machine à états de la classe Scrutin 91
5.5.6 Actions liées à un état 92
5.5.7 Éléments de méthodologie .. 93
5.5.8 État composite * .. 94
5.5.1 Modéliser l’état des objets d’une classe
? Certaines classes sont plus complexes et influent de manière plus importante sur le comportement général du système
? Il est important de décrire les événements provoquant les changements d’états des objets de ces classes
? Les changements d’états sont décrits dans des machines à états
? Une machine à états décrit les états des objets d’une classe
? Une machine à états est spécifiée par classe
5.5.2 Types d’états, événement et transition
? L’état d’un objet est lié aux valeurs de ses attributs et des interactions avec les autres objets
? Il s’agit de ne conserver que les états significatifs
? La réponse d’un objet à un événement dépend de l’état dans lequel cet objet se trouve
? Un objet passe dans un état donné par l’événement qui modifie ses attributs, et quitte cet état par un autre événement qui les modifie à nouveau.
5.5.3 Transition implicite
5.5.4 Événement, condition et action d’une transition
? Syntaxe complète
? événement[condition]/action
? La transition est déclenchée par un événement
? La transition est effectivement franchie si la condition (sur l’état de l’objet) est valide
? Le franchissement déclenche l’exécution de l’action de la transition
5.5.5 Exemple de diagramme de machine à états de la classe Scrutin
5.5.6 Actions liées à un état
? Actions exécutées à l’entrée et à la sortie d’un état
? Action exécutée pendant toute la durée de présence dans l’état
? Action interne déclenchée par un événement
5.5.7 Éléments de méthodologie
? Seuls les états quelque peu stables sont pertinents
? Les attributs constants (possédant toujours la même valeur une fois que l’objet est construit) n’interviennent pas dans la recherche des états
? Les attributs qui changent de valeur aident souvent à déduire les états possibles
? Et particulièrement les attributs booléens
? Il est souvent intéressant d’insérer de manière systématique un état de création de l’objet (initialisation des attributs) et un état de destruction
? Une attention particulière est à porter sur les événements et les actions
5.5.8 État composite *
6 Conception, aspects langage et technique
6.1 Rappel des phases du cycle de développement en V . 96
6.2 Conception des classes ..97
6.3 Rappel du diagramme de classes de l’étude de cas Studs .. 98
6.4 Traduction des associations en attributs 99
6.5 Traduction des agrégations .. 101
6.6 Encapsulation : visibilité / accessibilité des attributs et des opérations .102
6.7 Traduction des attributs dérivés .106
6.8 Traduction des diagrammes d’interaction en algorithmes ..107
6.9 Traduction des diagrammes de machine à états . 108
6.10 Traduction des relations de généralisation spécialisation . 110
6.11 Traduction de la classe « Façade » du système .111
6.12 Traduction des classes d’association * 113
6.13 Méthodologie : une fiche par classe .. 114
6.1 Rappel des phases du cycle de développement en V
6.2 Conception des classes
Modèle structurel
Diagrammes de classes de l’analyse
Diagrammes de classes de la conception
Modèle dynamique
Diagrammes de machine à états
Diagrammes de communications
Diagrammes de séquence
Définition des opérations
6.3 Rappel du diagramme de classes de l’étude de cas Studs
6.4 Traduction des associations en attributs
? Attribut du type référence sur un objet de la classe à l’autre extrémité de l’association
? Référence notée « @ »
? Autant d’attributs que de classes auxquelles elle est reliée
? Association binaire = 1 attribut
? Association n-aire = n ?1 attributs
? Association unidirectionnelle = pas d’attribut du côté de la flèche
? Nom de l’attribut = nom du rôle ou forme nominale du nom de l’association
? Traduction des multiplicités
? 1 =? @Classe ? ? =? Collection @Classe
? 0..N =? Tableau[N] Classe
? Multiplicité avec tri = Collection ordonnée @Classe
6 Conception, aspects langage et technique 6.4 Traduction des associations en attributs
6.4.1 Notation UML
? Concept de « référence » :
? À partir d’un objet Scrutin, il est possible « d’aller vers » un objet Personne et vers une collection d’objets Bulletin
Introduction au langage de modélisation UML 6 Conception, aspects langage et technique
6.5 Traduction des agrégations
? Agrégation = association, avec les mêmes règles de traduction en attribut
Introduction au langage de modélisation UML 6 Conception, aspects langage et technique
6.6 Encapsulation : visibilité / accessibilité des attributs et des opérations
? Doit-on voir / accéder à tous les attributs ou à toutes les méthodes d’un objet? Non
? La classe définit ce qui est visible / accessible
? C’est le principe de l’encapsulation
? Un objet complexe ne peut être utilisé qu’au travers de ce qui est accessible ? Analogie :
? Il n’est possible d’utiliser une voiture qu’à travers son volant, son frein, son accélérateur, etc.
? L’accès au carburateur est impossible sauf par les méthodes qui le font de manière cohérente (méthode accélérer de l’accélérateur)
6.6.1 Encapsulation avec le concept de Visibilité
? Les attributs sont en général inaccessibles (secrets). Ils sont alors qualifiés de :
? « private » : notation UML « ? »
? Lecture ou modification uniquement possibles au travers des opérations
(p.ex. les accesseurs : getAdresse(), setAdresse())
? Les opérations sont en général accessibles par toutes les classes. Elles sont alors qualifiées de :
? « public » : notation UML « + »
? Certains attributs doivent être accessibles par les classes enfants et inaccessibles aux autres classes. Ils sont alors qualifiés de :
? « protected » : notation UML « # »
? Certaines opérations peuvent cependant être privées (factorisation interne de traitements) et certains attributs peuvent être publics (même si cela est non souhaitable selon le principe d’encapsulation)
6.6.2 Notation UML
6.6.3 Cas particulier des attributs/opérations protégés
? Attribut/opération protégé/e =
? Accessible par les classes enfants
? Inaccessible par les autres classes
? Par exemple, opération afficherScrutin() de la classe Scrutin
? La classe ScrutinPlagesHoraires peut utiliser l’opération de la classe Scrutin dans l’algorithme de son opération afficherScrutin() :
String afficherScrutin() {
appela de l’opération afficherScrutin() de classe parente
}
a. Nous étudions dans quelques diapositives comment faire cet appel.
6.7 Traduction des attributs dérivés
? Attribut dérivé =? opération ou attribut selon qu’il est ou non recalculé à chaque fois que sa valeur est lue (p.ex. dans un accesseur)
? Par exemple, deux possibilités pour l’attribut nbBulletinsPour de la classe Choix
1. Définition d’un attribut dans la classe Choix
Dans l’opération voter(), incrémentation si le vote est « pour »
Lorsque demandé, fourniture de la valeur de l’attribut Mais, attention à la suppression d’un bulletin!
2. Définition d’une opération getNbBulletinsPour()
L’opération getNbBulletinsPour parcourt tous les bulletins pour le calcul
6.8 Traduction des diagrammes d’interaction en algorithmes
? Impact sur la classe Bulletin
? Attributs
? personne : @Personne
? scrutin : @Scrutin
? choix : @Choix
? pourOuContre : boolean
constructeur(@Personne p, @Scrutin s,
@Choix c, boolean poc) { personne = p scrutin = s choix = c pourOuContre = poc
p.voter(b); s.voter(b); c.voter(b)
}
6.9 Traduction des diagrammes de machine à états |
? Attributs utilisés dans la machine à états
? dateDébut : date ? dateLimite : date
? dateLimiteExistence : date ? ouvert : boolean = false
? ouvertureAvancée : boolean = false ? fermetureAvancée : boolean = false
? destructionAvancée : boolean = false
? Valeur des attributs dans les différents états
? | EnConstruction : valeurs par défaut |
? | ScrutinOuvert : ouvert = true |
? | ScrutinFermé : ouvert = false et (dateJour > dateLimite ou fermetureA = true) |
? | EnDestruction : ouvert = false et |
(dateJour > dateLE ou destructionA = true)
6 Conception, aspects langage et technique 6.9 Traduction des diagrammes de machine à états
6.9.1 Quelques opérations de la classe Scrutin
constructeur( ) { vérification
dateDébut < dateLimite <
dateLimiteExistence
} avancerDateOuverture() { ouvert = true ouvertureAvancée = true
} avancerDateFermeture() { ouvert = false fermetureAvancée = true
} avancerDateLimiteExistence() {
destructionAvancée = true
}
vérifierAuQuotidien() {
si ((dateJour >= dateDébut)
et (ouvertureAvancée == false))
alors ouvert = true si ((dateJour > dateLimite)
et (fermetureAvancée == false))
alors ouvert = false si ((dateJour > dateLimiteExistence)
et (destructionAvancée == false))
alors en destruction
}
Introduction au langage de modélisation UML 6 Conception, aspects langage et technique
6.10 Traduction des relations de généralisation spécialisation
? Dans les classes enfants, possibilité d’appel au constructeur de la classe parente (si public ou protégé)
? Par exemple, dans la classe enfant ScrutinPlageHoraire : constructeur( ) {
super( ) // appel au constructeur de la classe parente Scrutin nbTotal = 0 }
? L’appel au constructeur de la classe parente doit être la première instruction
? Dans les classes enfants, possibilité d’appel des opérations de la classe parente (si publique ou protégée)
? Par exemple, dans la classe enfant ScrutinPlageHoraire : afficherScrutin() { // opération redéfinie dans la classe enfant super.afficherScrutin() // appel à l’opération de classe parente Scrutin afficher à l’écran la valeur de l’attribut nbTotal }
? Rappel : toutes les opérations protégées de la classe parente sont accessibles dans les classes enfants
6.11 Traduction de la classe « Façade » du système
? Un constructeur et un destructeur (cf. traduction des agrégation et composition) ? Une opération publique par cas d’utilisation
Studs |
+ constructeur( ) + destructeur( ) + voter( ) + consulterRésultatScrutin( ) + seRetirerScrutin( ) + créerScrutin( ) + ajouterUnChoix( ) + supprimerUnChoix( ) + ajouterUnParticipant( ) + retirerUnParticipant( ) + ouvrirUnScrutin( ) + fermerUnScrutin( ) + supprimerUnScrutin( ) |
6 Conception, aspects langage et technique 6.11 Traduction de la classe « Façade » du système
6.11.1 Traduction des compositions
6.12 Traduction des classes d’association *
6.13 Méthodologie : une fiche par classe
? Collecter dans une fiche par classe
? Tous les attributs
? Toutes les opérations
? Sources : cahier des charges, et diagrammes de classes, de machine à états, de communications et de séquence
? Homogénéisation des noms : même terme pour le même concept métier
? La conception est une préparation de la phase d’implantation
? Traduction des associations
? Attribut « d’association » = référence
? Traduction des diagrammes d’interaction et de machine à états
? Définition des algorithmes des opérations
? Traduction des généralisations spécialisations
? Fixation de l’accessibilité des attributs et des opérations ? Propriété d’encapsulation
QCM
1. Pour traduire une association binaire, faut-il regarder le sens de lecture de l’association?
2. Une multiplicité « 0..1 » se traduit-elle par un attribut référence sur la classe à l’autre extrémité de l’association binaire?
3. La notation pour un attribut privé est-elle « ? »?
4. Étant donné une classe A contenant l’attribut a et une classe B contenant la méthode b, si a est privé et b est publique, b peut-elle utiliser a?
5. Un attribut dérivé peut-il être traduit par un attribut?
6. Un message d’un diagramme de séquence est-il la plupart du temps traduit en une opération privée?
7. Le mot clef « super » permet-il d’appeler une opération de la classe parente?
7 Conception, vues développement et physique
7.1 Diagrammes de la vue développement .117
7.2 Diagramme de composants .. 118
7.3 Diagramme de paquetages 121
7.4 Diagramme de la vue physique ..124
7.5 Diagramme de déploiement ..125
7 Conception, vues développement et physique
7.1 Diagrammes de la vue développement
? Composant = partie de logiciel réutilisable et remplaçable
? Paquetage = espace de nommage d’éléments de modélisation
7 Conception, vues développement et physique
7.2 Diagramme de composants
7.2.1 Composant, interfaces offertes et requises . 119
7.2.2 Composite, port, connecteurs de délégation et d’assemblage .. 120
7 Conception, vues développement et physique 7.2 Diagramme de composants
7.2.1 Composant, interfaces offertes et requises
7 Conception, vues développement et physique 7.2 Diagramme de composants
7.2.2 Composite, port, connecteurs de délégation et d’assemblage
Introduction au langage de modélisation UML 7 Conception, vues développement et physique
7.3 Diagramme de paquetages
7.3.1 Paquetage, espace de nommage ..122
7.3.2 Relation entre paquetages . 123
7 Conception, vues développement et physique 7.3 Diagramme de paquetages
7.3.1 Paquetage, espace de nommage
7 Conception, vues développement et physique 7.3 Diagramme de paquetages
7.3.2 Relation entre paquetages
paquetage1 | ||||||
paquetage2
|
? Imbrication de paquetages = imbrication d’espaces de nommage ? Dépendance entre paquetages
Introduction au langage de modélisation UML 7 Conception, vues développement et physique
7.4 Diagramme de la vue physique
? Placement des logiciels sur les matériels
Introduction au langage de modélisation UML 7 Conception, vues développement et physique
7.5 Diagramme de déploiement
7.5.1 Nœud et liaison de communication .. 126
7.5.2 Artefact et composant ..127
7.5.3 Dépendance entre artefacts 128
7.5.1 Nœud et liaison de communication
? Ce modèle définit le diagramme de l’architecture matérielle du système
? Il représente les différentes machines et les logiciels
? Il montre les liens de communication entre ces différentes entités
7.5.2 Artefact et composant
7.5.3 Dépendance entre artefacts
? Dépendance entre artefacts
? Instance de nœud
Introduction au langage de modélisation UML
8 Conclusion
? Modèle pour appréhender la réalisation d’un système informatique
? Diagrammes UML qui permettent d’aider à la réflexion, à la discussion (clients, architectes, développeurs, etc.)
? Pas de solution unique mais un ensemble de solutions plus ou moins acceptables suivant les contraintes du client, et les logiciels et matériels disponibles
? Une solution acceptable est obtenue par itérations successives
Introduction au langage de modélisation UML
9 Bibliographie
? Livres
? G. Booch, J. Rumbaugh, I. Jacobson, « The Unified Modeling Language User Guide », 2nd edition, Addison-Wesley, 2005
? B. Charroux, A. Osmani, Y. Thierry-Mieg, « UML 2, Pratique de la modélisation », 2è édition, Pearson Education, 2008
? J. Gabay, D. Gabay, « UML 2 : analyse et conception », Dunod, 2008
? P. Roques « UML 2 par la pratique », 6è édition, Eyrolles, 2008
? R. Miles et K. Hamilton, « Learning UML 2.0 : A pragmatic Introduction to UML », O’Reilly, 2006
? Object Management Group, « OMG Unified Modeling Language, Superstructure,
Version 2.2 », OMG Document Number formal/2009-02-02, February 2009
? D. Pilone, « UML 2.0 Pocket Reference », O’Reilly, 2006
? S.W. Ambler, « The Elements of UML 2.0 Style », Cambridge University Press, 2005
? URL :
? OMG UML :
?
? Patterns information :