UML Jean-Marc Vanel Septembre 2005
UML en Plan ● Introduction: historique, diagrammes, modèles, notions Orientées Objet, processus de développement ● Diagrammes d'objets ● Diagrammes de classes ● Diagrammes de séquence & de collaboration ● Diagrammes de cas d'utilisation ● Diagrammes d'état et d'activité ● Diagrammes de déploiement ● OCL (Object Constraint Language) ● Cohérence globale du projet ● UML en pratique: outils, formats d'échange, place dans le processus de développement ● Conclusion. Avenir: UML, MDA, Ontologies
18/09/2016UML3 UML d'après les «amigos» OMT ObjectoryBooch UML Jim Rumbaugh Grady Booch Ivar Jacobson
18/09/2016UML4 Historique : Évolution de UML 0.8 -> >0.91-> >1.1->1.2->1.3-> x. y Comprendre la logique d’évolution d’UML. (Object Management Group) est un Consortium comprenant des éditeurs et des utilisateurs.
18/09/2016UML5 Devant et derrière, Avant et après... UM L OM T Merise SA/RT ERD SAD T DFDDFD etc. procédés industriels de production de logiciels et de systèmes. JSD Méthode = Langage(s) + Démarche + Outils
18/09/2016UML6 Points de vues multiples Vue du notaire Vue du maçon Vue du plombier Vue de l'électricien Vue du locataire Vue du propriétaire Vue de l'architecte Vue du service des impots locaux Vue du cadastre
18/09/2016UML7 UML=Vues multiples (aspects d'un système logiciel) Fonctions du système du point de vue de l’utilisateur. Composants physiques d’une application. Représentation du comportement en termes d’états. Structure statique des classes et des relations entre ces classes. Schémas de l’installation des composants sur les dispositifs matériels. Représentation du comportement des opérations en termes d’actions. Représentation des objets et de leurs interactions temporelles. Représentation des objets, des liens mutuels et des interactions potentielles. Les objets et les relations de base entre ces objets.
18/09/2016UML8 Qu'est ce qu'un objet? Entité correspondant à un objet du monde réel, ou à un concept, et encapsulant des données, un état et un comportement. Les notions fondamentales : ● Il a une individualité ● Il a une durée de vie ● Il rend des services ● Il n'est pas tout seul: – il appartient à une classe
18/09/2016UML9 Individualité d'un objet ● Un objet n'est pas défini par son contenu, il a une identité – il est unique dans l'univers entier – Analogies: ● jumeaux parfaits, ● copie d'un fichier: ce sont des “objets” différents ● Un objet peut avoir plusieurs points d'entrée – Analogies: ● propriété avec plusieurs adresse, numéros de téléphone; raccourci vers un fichier – ces points d'entrée s'appelent des références
18/09/2016UML10 Durée de vie d'un objet transitoire ● Statut transitoire – L'objet ne survit pas à l'exécution du programme: ● exemple : objets graphiques persistant ● Statut persistant – L'objet survit à l'exécution des programmes: ● exemple: compte en banque ● Mécanismes de persistance variés: ● Fichier ● Bases de données ● Conteneurs variés: serveurs FTP, EJB, moniteurs transactionnels
18/09/2016UML11 L'Objet rend des services ● On peut lui envoyer des messages qui : – Changent l'état interne (modifieurs), ou – Renvoient un résultat (accesseurs), ou – Effectuent une action dans le monde réel ● exemple: afficher une fenêtre, ouvrir une porte,... – Synonymes: message=méthode=fonction membre ● L'ensemble des messages acceptés par un objet s'appelle Interface – Synonymes: comportement = rôle = API
18/09/2016UML12 L'Objet appartient à une classe ● Classe = ensemble des objets qui ont les même types de données et comportement ● Donc, – ils ont aussi la même Interface ● Le polymorphisme: Même interface mais classe (implémentation) différente – Exemple: un gestionnaire de fichiers: ● la méthode “ouvrir” existe pour tous les fichiers, ● mais ses résultats sont différents suivant le type de fichier
18/09/2016UML13 Visite guidée du langage UML Les mécanismes généraux Les paquetages Les stéréotypes Les étiquettes Les notes Les contraintes Les diagrammes de base Les diagrammes d’objets Les diagrammes de classes Les diagrammes de séquence Les diagrammes de collaboration Les diagrammes de cas d'utilisation Les diagrammes d'états/transitions Les diagrammes d'activités Les diagrammes de composants Les diagrammes de déploiement
18/09/2016UML14 Les mécanismes généraux Les paquetages ● Analogues aux paquetages Java ● Espace de nommage ● Permettent de gérer les dépendances
18/09/2016UML15 Les stéréotypes ● Extension contrôlée des classes du méta-modèle ● > ● Possibilité de modifier l’icône
18/09/2016UML16 Les étiquettes ● Extension des attributs des classes ● Paire (nom, valeur)
18/09/2016UML17 Les notes ● Commentaire attaché à un ou plusieurs éléments de modélisation – Appartient à la vue, pas au modèle – Peut être stéréotypée en contrainte
18/09/2016UML18 Les contraintes ● Relation sémantique quelconque entre éléments de modélisation ● Exprimée en OCL (Object Constraint Language) ou en langage naturel – {contrainte}, inv, pre, post ( -condition )
18/09/2016UML19 Exemples de contraintes CopieLivre Journal {xor} Transaction quantité:Euro {quantité est un multiple de €5} {self.roues->size <= 4}
18/09/2016UML20 Quelques exemples de contraintes standard Généralisation Complete Incomplete Disjoint Overlapping Instance ou lien New Destroyed Transient
18/09/2016UML21 Extensibilité du formalisme UML stéréotype de classe stéréotype d'opération contrainte Étiquette ou valeur marquée (tagged value)
18/09/2016UML22 Visite guidée du langage Les mécanismes généraux Les paquetages Les stéréotypes Les étiquettes Les notes Les contraintes Les diagrammes de base Les diagrammes d’objets Les diagrammes de classes Les diagrammes de séquence Les diagrammes de collaboration (de communication) Les diagrammes de cas d'utilisation Les diagrammes d'états/transitions Les diagrammes d'activités Les diagrammes de composants Les diagrammes de déploiement
Diagrammes d'objets ● Objets et champs – nom objet souligné – avec ou sans classe Pierre: Personne domicile="Lyon" dateNaissance=1957 :Entreprise nom="Michelin" CodeActivite="D34" siege="Clermont-Ferrand"
Diagrammes d'objets ● Graphe d'objets
Diagrammes de classes ● Les « boîtes » – Attributs – méthodes ● Les « connecteurs » – Association (simple), cardinalité – Héritage – Dépendance – Agrégation, composition
18/09/2016UML26 Exemples de classes Mutuelle Assure' +taux(): double +crediter(int montant) Prestation +montant(Assure'): int Math Matrice +multiplierPar(Matrice): Matrice +inverser(): Matrice Simulation Animal +avancer(Direction) +crier() +manger(Animal) +procreer(avec:Animal): Animal Banque Compte +solde(): Devise +deposer(montant:Devise) +retirer(montant:Devise)
18/09/2016UML27 Visibilité des propriétés ● Public + Visible à l’extérieur de la classe ● Protégé # Visible seulement par les descendants ● Private - Visible à l’intérieur des méthodes ● Souligné Variable/opération de classe
18/09/2016UML28 Les relations entre classes ● L’association ● La généralisation ● La dépendance ● L’agrégation ● La composition ● L’association exprime une connexion sémantique bidirectionnelle entre classes ● Une association est une abstraction des liens qui existent entre les objets instances des classes associées
18/09/2016UML29 Nommage des associations ● Indication du sens de lecture
18/09/2016UML30 Multiplicité des rôles 1Un et un seul 0..1Zéro ou un M.. NDe M à N (entiers naturels) *Plusieurs 0.. *De zéro à plusieurs 1.. *D'un à plusieurs
18/09/2016UML31 Exemple : graphe non orienté
18/09/2016UML32 Exemple : graphe orienté
18/09/2016UML33 Exemple d'associations
18/09/2016UML34 Généralisation (héritage) Hiérarchies de classes ● Gérer la complexité – Arborescences de classes d’abstraction croissante
18/09/2016UML35 Sémantique de la Généralisation ● Si A <|----- B – A généralise B – B est un cas particulier de A – Tout B est un A (inclusion d'ensembles) – En même temps tous les attributs définis pour A le sont aussi pour B (c'est l'héritage) ● B a en lui un composant A, – mais ce n'est pas dynamique (on ne peut pas changer d'ancêtre), d'où l'intérêt des conceptions utilisant une simple association
18/09/2016UML36 Héritage versus association ● Soit le classique: Personne <| Employé ● Un objet Employé ne peut pas changer de nature – Ne permet pas de modéliser la perte du statut employé ● Solution: Personne >RoleEmployé RoleEmployé a les mêmes champs que Employé, mais c'est une classe indépendante.
18/09/2016UML37 Association qualifiée ● Une association qualifiée met en relation deux classes sur la base d'une clef. ● La technique associée de mise en œuvre est souvent un tableau associatif ou un dictionnaire. Commande Produit LigneDeCommande Quté: Entier Une personne peut être associée à plusieurs banques. Etant donnés une banque et un numéro de compte, Il y a au plus une personne ayant ce numéro de compte à cette banque.
18/09/2016UML38 Exemple association + héritage
18/09/2016UML39 Navigabilité 1 ● par défaut une association est navigable dans les deux sens. ● une indication de navigabilité suggère qu'à partir d'une extrémité on peut atteindre l'autre extrémité, mais l'inverse est faux ● lors d'une mise en œuvre programmée, – ceci suggère qu'un objet source mémorise une référence directe aux objets cible; – Permet de réduire les dépendances entre classes ● étant donné un utilisateur, on désire pouvoir accéder à ses mots de passe ● étant donné un mot de passe, on ne souhaite pas pouvoir accéder à l'utilisateur correspondant
18/09/2016UML40 Navigabilité 2 ● Exemples typiques: ● Client ---> Commande ---> Article ● Un Article peut exister avant toute commande ● Employe ---> PosteDeTravail ● Le Poste de travail est défini avant l'embauche Se poser la question: lequel peut exister sans l'autre ?
Agrégation ● Relation dissymétrique: – Tout - partie – Contenant - contenu
● Comme l'agrégation, mais beaucoup plus forte: – Le contenant et les contenus ont la même durée de vie – Un contenu ne peut appartenir qu'à un contenant Maison *Mur FenetreGraphique PanneauDansFenetre Composition
18/09/2016UML43 Les classes-associations ● Permet l'ajout d’attributs ou d’opérations à l'association ● Exemples: – Employeur – Employé – Contrat – Etudiant – Cours - Inscription
18/09/2016UML44 Associations ternaires (et plus) ● Pas d’agrégation, pas de qualifier ● Multiplicité plus difficile à lire
Exemple: réservation de vols La connaissance du domaine est contenue dans ces phrases : ● 1. Des compagnies aériennes proposent différents vols. ● 2. Un vol est ouvert à la réservation et refermé sur ordre de la compagnie. ● 3. Un client peut réserver un ou plusieurs vols, pour des passagers différents. ● 4. Une réservation concerne un seul vol et un seul passager. ● 5. Une réservation peut être annulée ou confirmée. ● 6. Un vol a un aéroport de départ et un aéroport d'arrivée. ● 7. Un vol a un jour et une heure de départ, et un jour et une heure d'arrivée. ● 8. Un vol peut comporter des escales dans des aéroports. ● 9. Une escale a une heure d'arrivée et une heure de départ. ● 10. Chaque aéroport dessert une ou plusieurs villes.