UML - Irisa
Transcription
UML - Irisa
Outline UML$Basics! An!introduc+on!to!the!Unified!Modeling!Language ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View University!of!Rennes!1!(ESIR!&!IRISA)! ③ UML Behavioral View [email protected]!J!hKp://www.combemale.fr! ④ UML Implementation View ⑤ UML Extension Mechanisms Benoit$Combemale$ PhD!in!Computer!Science,!Associate!Professor! $ With$the$help$(and$the$slides)$of$J.;M.$Jézéquel,$Olivier$Barais$and$Gerson$Sunyé Version:$Jan.$2013$ ③ UML Internals hMp://www.combemale.fr/modeling$$ ④ UML Tools ⑤ Conclusion ! 1" B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Outline ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 2 Méthodes de modélisation • L’apparition du paradigme objet à permis la naissance de plusieurs méthodes de modélisation ! OMT, OOSE, OOD, Fusion, … • Chacune de ces méthodes fournie une notation graphique et des règles pour élaborer les modèles • Certaines méthodes sont outillées 3 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 4 Méthodes de modélisation Méthodes de modélisation • Entre 89 et 94 : le nombre de méthodes orientées objet est passé de 10 à plus de 50 • OMT de James Rumbaugh (General Electric) • Toutes les méthodes avaient pourtant d’énormes points communs (objets, méthode, paramètres, …) • OOD de Grady Booch • Au milieu des années 90, G. Booch, I. Jacobson et J. Rumbaugh ont chacun commencé à adopter les idées des autres. Les 3 auteurs ont souhaité créer un langage de modélisation unifié • OOSE d’Ivar Jacobson (Ericsson) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr fournit une représentation graphique des aspects statique, dynamique et fonctionnel d’un système ; définie pour le Department of Defense, introduit le concept de paquetage (package) ; fonde l’analyse sur la description des besoins des utilisateurs (cas d’utilisation, ou use cases). 5 Genealogy of UML B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 6 Genealogy of UML UML (Rumbaugh, Booch, Jacobson) FUSION (HP-Labs) Use-Case (I.Jacobson) OOA (P. Coad) OOA - OODLE (Schlaer & Mellor) OMT (J. Rumbaugh et al.) CLASSERELATION (P. Desfray) OOA-OOD (G.Booch) CRC (R. Wirf-Brooks) JSD (M. Jackson) Data-Flow SADT/SA-SD (De Marco) Diagrammes Etat-Transition (HAREL) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Entite-Relation Merise (Chen) 7 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 8 UML History Aujourd’hui • UML est le langage de modélisation orienté objet le plus connu et le plus utilisé au monde • UML s’applique à plusieurs domaines ! OO, RT, Deployment, Requirement, … • UML n’est pas une méthode ! RUP • Peu d’utilisateurs connaissent le standard, ils ont une vision outillée d’UML (vision utilisateur) ! 5% forte compréhension, 45% faible compréhension, 50% aucune compréhension • UML est fortement critiqué car pas assez formel • Le marché UML est important et s’accroît ! MDA et MDD, UML2.x, IBM a racheté Rational !!! B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 9 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 10 UML: one model, 4 main dimensions, multiple views UML Today • Official website: http://www.uml.org • Official specifications: http://www.omg.org/spec/UML : Device" Device" <<Actor>>" Operator" : Operator" controls! 1" start()" 0..*" stop()" start( )" stop( )" e.g., Class diagram e.g., Sequence diagram ControllingSite" RemoteSite" TCP/IP" : Operator" e.g., UseCase diagram : Device" : Operator" e.g., Implementation diagram Current version: v2.4.1, August 2011 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 11 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 12 UML 2.4 Overview The X diagrams of UML " Modeling along 4 main viewpoints: • Static Aspect (Who?) • Describes objects and their relationships (Class, Object and Composite Structure Diagrams) • Structuring with packages (Package Diagram) • User view (What?) • Use cases Diagram • Dynamic Aspects (When?) • Interaction Diagrams • Sequence Diagram (scenario) • Communication Diagram (between objects) • Timing Diagram • State Machine Diagram (from Harel) • Activity Diagram • Implementation Aspects (Where?) Cf. http://www.uml-diagrams.org • Component and Deployment Diagrams B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 13 UML : pourquoi ? 14 Un peu de méthodologie... • Une méthode de développement de logiciels, c est : • Réfléchir ! Une notation • La syntaxe --- (semi-) graphique dans le cas de UML • Définir la structure « gros grain » ! Un méta-modèle • Documenter • La sémantique --- paramétrable dans UML (stéréotypes) ! Un processus • Guider le développement • Détails dépendants du domaine d activité : • Développer, Tester, Auditer B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr – Informatique de gestion – Systèmes réactifs temps-réels – Shrink-wrap software (PC) 15 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 16 Processus de développement avec UML UML et Java ? UML • Approche itérative, incrémentale, dirigée par les cas d’utilisation Java • UML Vers Java : Génération de code • Java Vers UML : Rétro-ingéniérie ! Expression des besoins ! Analyse • UML n'est pas une syntaxe graphique pour Java ! • Elaboration d’un modèle « idéal » ! Conception • Traduction (très) incomplète • passage du modèle idéal au monde réel • Pas de traduction standardisée ! Réalisation et Validation • Dépend du métier, des outils disponibles, ... • Des outils industriels disponibles • Des recherches en cours ... ... vers une capitalisation du savoir-faire B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 17 UML et Java : vision globale B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Outline • MODELES STATIQUES ! Traduction des diagrammes de classes ! Classes, Associations, Généralisation ! Propriétés dérivées, Invariants ① UML History and Overview ② UML Language • MODELES DYNAMIQUES ! Traduction de pré/post conditions ! Traduction de diagrammes d'états / d'activités ! Traduction du langage d'actions (UML exécutable) ... traduction souvent incomplète mais très utile B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 18 19 ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 20 Outline ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Expression des besoins • Sujet longtemps négligé (e.g., OMT) • Question de l'expression des besoins pourtant fondamentale ! Et souvent pas si facile (cible mouvante) • cf. syndrome de la balançoire • Object-Oriented Software Engineering (Ivar Jacobson et al.) ! Principal apport : la technique des acteurs et des cas d'utilisation ! Cette technique est intégrée a UML 21 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 22 Functional View Quatre objectifs Se comprendre Use Case Diagram Représenter le système Exprimer le service rendu Décrire la manière dont le système est perçu B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 23 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 24 Modèle des cas d utilisation Modèle des cas d utilisation • Buts : • Moyens : ! modéliser le point de vue des utilisateurs ! définir les limites précises du système ! Les acteurs UML • Notation très simple, compréhensible par tous, y compris le client • Permet de structurer : ! les besoins (cahier des charges) CasU1 A1 ! le reste du développement CasU2 CasU4 ! Les use-cases UML A2 ! Utilisation d’un dictionnaire du domaine CasU3 CasU5 S A3 • Modéle (principalement) pour communiquer B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 25 Intérêt du dictionnaire B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 26 Use Case Diagram Example • Outil de dialogue • Informel, évolutif, simple a réaliser • Etablir et figer la terminologie ! Permet de figer la terminologie du domaine d'application. Client ! Constitue le point d'entrée et le référentiel initial de l'application ou du système. RetirerDeLArgentAuDi stributeur ConsulterSonCompte RetirerLes CartesAvalées Ajouter DesBillets B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 27 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Assurer LaMaintenance 28 Use Case Diagram Example Client Use Case Diagram Example RetirerDeLArgentAuDi stributeur Banque Centrale Client ConsulterSonCompte RetirerDeLArgent AuDistributeur ConsulterSonCompte RetirerLes CartesAvalées Transporteur DeBillets Ajouter DesBillets RetirerLes CartesAvalées Assurer LaMaintenance Technicien Transporteur DeBillets Ajouter DesBillets DistributeurDeBillet Technicien DistributeurDeBillets B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 29 Modèle de cas d utilisation • Diagramme de cas d utilisation Assurer LaMaintenance B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 30 Eléments de base CasU1 A2 CasU2 A1 CasU4 CasU3 CasU5 • Modèle de cas d utilisation S A3 descriptions textuelles, diagrammes de cas d'utilisation diagrammes de séquences dictionnaire de données … B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Acteurs 31 Cas d'utilisation B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Système 32 Cas d’utilisation (CU) Système • Cas d’utilisation • Le système est ! modélisé par un ensemble de cas d utilisation ! vu comme une boîte noire ! une manière d utiliser le système ! une suite d interactions entre un acteur et le système Correspond à une fonction du système visible par l acteur Permet à un acteur d’atteindre un but Doit être utile en soi Regroupe un ensemble de scénarii correspondant à un même but EnregistrerEntrée RetirerDeLArgentAu Distributeur SIdentifier EntrerPendant LesHeuresDOuverture • Le système contient : ! les cas d’utilisation, ! mais pas les acteurs. • Un modèle de cas d’utilisation permet de définir : TaperSonCode B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 33 Acteurs ! les fonctions essentielles du système, ! les limites du système, ! le système par rapport à son environnement, ! délimiter le cadre du projet ! B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 34 Acteurs vs. utilisateurs Ne pas confondre les notions d’acteur et de personne utilisant le système • Un Acteur = ! élément externe ! qui interagit avec le système (prend des décisions, des initiatives. Il est "actif".) • Une même personne peut jouer plusieurs rôles ex: Maurice est directeur mais peut jouer le rôle de guichetier • Plusieurs personnes peuvent jouer un même rôle • Rôle qu’un "utilisateur" joue par rapport au système ex: Paul et Pierre sont deux clients • Un rôle par rapport au système plutôt qu’une position dans l'organisation ex: PorteurDeCarte plutôt qu'Enseignant PorteurDeCarte Gardien Administrateur • Un acteur n’est pas forcément un être humain Capteur AIncendie ex: un distributeur de billet peut être vu comme un acteur B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 35 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 36 Différents types d’acteurs Notation Ne pas oublier d'acteurs : • Notations alternatives pour les acteurs ! Utilisateurs principaux <<actor>> ex: client, guichetier PorteurDeCarte PorteurDeCarte ! Utilisateurs secondaires ex: contrôleur, directeur, ingénieur système, administrateur... PorteurDeCarte ! Périphériques externes ex: un capteur, une horloge externe, ... Note de style : utiliser plutôt le stéréotype <<actor>> pour les acteurs non humains ! Systèmes externes ex: système bancaires <<actor>> CapteurAIncendie <<actor>> SystèmeBancaire PorteurDeCarte B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 37 Un peu de méthodologie… B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 38 Warning!! • Description préliminaire du système "A common sign of a novice (or academic) use case modeler is a preoccupation with use case diagrams and use case relationships, rather than writing text. ... Use case diagrams and use case relationships are secondary in use case work. Use cases are text documents. Doing use case work means to write text." ! Choisir un identificateur • Baptiser le système, le plus tôt possible • Risque d'être référencé dans toute la vie future de l'entreprise ! Brève description textuelle (quelques lignes max.) • Description préliminaire des acteurs ! choisir un identificateur représentatif de son rôle ! donner une brève description textuelle • Description préliminaire des cas d utilisation [Applying UML and Patterns, Craig Larman] ! choisir un identificateur représentatif ! donner une description textuelle simple • la fonction réalisée doit être comprise de tous • préciser ce que fait le système, ce que fait l acteur • pas trop de détails, se concentrer sur le scénario « normal » B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 39 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 40 Relation acteur ⟷ cas d'utilisation Relations entre les éléments de base • Relations acteurs ⟷ cas d'utilisation ? RetirerDeLArgent AuDistributeur Client • Relations acteurs ⟷ acteurs ? • Point de vue besoin: représente la possibilité d'atteindre un but • Point de vue système: représente un canal de communication • Relations cas d'utilisation ⟷ cas d'utilisation ? ! Echange de messages, potentiellement dans les deux sens ! Protocole particulier concernant le cas d'utilisation considéré ? ? ? RetirerDeLArgent AuDistributeur Client B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 41 Relation acteur ⟷ cas d'utilisation Client RetirerDeLArgent AuDistributeur B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Relation acteur ⟷ cas d'utilisation • Acteur "primaire » • Description via des diagrammes de séquences "systèmes" Acteur primaire Guichetier ConsulterUnCompte • Plus tard dans le cours ... Système Bancaire Acteur auxiliaire B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 42 43 ! utilise le système comme outil pour réaliser son but ! initie généralement la communication • Acteur(s) "auxiliaire(s)" ! interviennent suite à l'intervention de l'acteur primaire ! offrent généralement leurs services au système B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 44 Relation cas d’utilisation ⟷ cas d’utilisation Relation cas d’utilisation ⟷ cas d’utilisation • Communications internes non modélisées. • Utilisation («include» / « uses ») • UML se concentre sur la description du système et de ses interactions avec l'extérieur • Formalisme bien trop pauvre pour décrire l'intérieur du système. Utiliser les autres modèles UML pour cela. • Autres relations possibles entre CU (slides suivants) ! Utilisation d autres use-cases pour en préciser la définition RetierDeLArgent Client • Extension («extend» / « extends ») ! Un use-case étendu est une spécialisation du use-case père ConsulterLesSoldes Directeur Système Bancaire B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 45 Relation acteur ⟷ acteur • Communications externes non modélisée B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 46 Relation acteur ⟷ acteur : généralisation • La seule relation entre acteurs est la relation de généralisation ConsulterSonCompte Client CréerUnCompte RetirerDeLArgent AuDistributeur • UML se concentre sur la description du système et de ses interactions avec l'extérieur Guichetier FermerUnCompte RetirerDeLArgent DUnCompte RetirerDeLArgent ParChèque Guichetier Système Bancaire AnnulerUnCompte Guichetier EnChef B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 47 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 48 Notation en résumé Notation en résumé «subsystem» Commandes Consulter 0..1 0..1 Transaction sur distributeur «extends» Aide en ligne Retrait «includes» Lecture carte Commander 1 Traiter Commande 1 Client 1 MàJ catalogue 0..1 Etablir crédit B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 49 Problèmes de la granularité B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 50 Problèmes de la granularité • A quel niveau décrire les cas d'utilisation ? • Bonne question ... mais pas de réponse • Tous les cas d'utilisations n'ont pas a être au même niveau • Trop haut ! trop loin du système ! trop abstrait et "flou" ! trop complexe à décrire • Différents niveaux de détail • POURQUOI vs. COMMENT • Trop bas • Décoration du niveau (e.g., selon Cockburn) ! trop de cas d'utilisation ! trop près de l'interface ! trop loin des besoins métiers • Non standardisé mais intuitif et utile • Conclusion: choisir le "bon" niveau … B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 51 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 52 Niveaux d'abstractions Clouds Level Exemple de marquage Trop haut SIdentifier Kite Level Sea Level Fish Level Niveau résumé : décrit un regroupement correspondant à un objectif plus global Client Niveau normal : décrit un but de l'acteur qu'il peut atteindre via une interaction avec le système Niveau détaillé : décrit une interaction avec le système, pas un but en soi RetirerDeLArgentAuDi stributeur ConsulterSonCompte Transporteur DeBillets Ajouter DesBillets GérerLaSécurité Administrateur DistributeurDeBillets Clam Level Trop bas 53 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Cas d'utilisation vs. Scénarii Diagramme de séquences système • Un scénario est un exemple : • Pour décrire un scénario : un diagramme de séquences • Diagramme de séquences : ! une manière particulière d utiliser le système … ! … par un acteur particulier … ! … dans un contexte particulier. ! L une des notations UML, une notation générale ! Peut être utilisée dans de nombreux contextes ! Permet de décrire une séquence de messages échangés entre différents objets ! Différents niveaux de détails • Pour décrire un scénario simple, deux objets : l acteur et le système • cas d utilisation = ensemble de scénarios « Diagramme de séquences système » • scénario = une exécution particulière d un CU B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 54 55 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 56 Exemple de diagramme de séquence système paul : Client Cas d'utilisation vs. scénarii le système Niveau modèle Insérer carte Demander code Vérifier carte Entrer code 1234 Message d erreur Vérifier code Niveau instances Demander code Appeler Sylvia Entrer code 6622 ... B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 57 Un peu de méthodologie… B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 58 Pour en savoir plus Stabilisation du modèle par consensus • Pour un template "standard" de description de cas d'utilisation : http://alistair.cockburn.us/Basic+use+case+template grandissant • Équivalent à définir une table des matières et des résumés pour chaque chapitre • Quelques livres : ! Pas de règles strictes ! Effectuer les meilleurs regroupement possibles ! Rester simple ! ! Structuration possible en termes de paquetages ! Culture d'entreprise B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 59 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 60 Pour en savoir encore plus B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Outline 61 Structural View ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 62 Rappel • Un objet ! Encapsulation d’un état et d’un ensemble d’opérations (qui s’appliquent à cet état) • Abstraction d’une entité réelle • Identité unique • Existence temporelle (création, modification, destruction) Class and Object Diagrams • Une classe ! Description du comportement et des propriétés communs à un ensemble d’objets • Un objet est une instance d’une classe • Chaque classe a un nom B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 63 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 64 Notations simplifiées pour les classes Compte numéro solde ... Compte Compte Compte créditer() débiter() ... Notation pour les classes Compte Compte Nom de la classe numéro solde : réel découvertMax : entier numéro solde ... créditer() débiter() ... numéro : entier solde : réel découvertMax : entier Opérations consulterSolde() : entier créditer( somme : entier) débiter( somme : entier) nom paramètre type du résultat • les noms de classes commencent par une majuscule • les noms d attributs et de méthodes commencent par une minuscule B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Contraintes 65 66 Classe vs. Objets Une classe spécifie la structure et le comportement d'un ensemble d'objets de même nature leCompteDePaul : Compte Compte numéro solde : réel découvertMax : entier numéro = 6688 solde = 5000 découvertMax = -100 La structure d'une classe est constante consulterSolde() : entier créditer( somme : entier) débiter( somme ) Diagramme de classes M1 leCompteDePaul : Compte M0 Convention : • les noms d objets commencent par une minuscule et sont soulignés Des objets peuvent être ajoutés ou détruits pendant l exécution leCompteDeMarie:Compte leCompteDePaul : Compte numéro = 2275 solde = 10000 découvertMax = -1000 numéro = 6688 solde = 5000 découvertMax = -100 Diagramme d objets :Compte B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr { inv: solde > découvertMax } B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Notations pour les objets : Compte Attributs nom type consulterSolde() : entier créditer( somme : entier) débiter( somme ) Note de style : leCompteDePaul Compte 67 La valeur des attributs des objets peut changer B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr numéro = 1200 solde = 150 découvertMax = 10 68 Liens (entre objets) Contrainte sur les liens Un lien indique une connexion entre deux objets Au maximum un lien d'un type donné entre deux objets donnés APourCompte paul : Client c1 : Compte APourEpouse APourCompte pierre : Client c2 : Compte APou r Com joseph : Personne pte EstEnfantDe c3 : Compte marie : Client EstGardePar josé : Personne madeleine : Personne Note de style : EstEnfantDe • les noms des liens sont des formes verbales et commencent par une majuscule • indique le sens de la lecture (ex: « paul APourCompte c1 ») B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr marie : Personne APourEpouse 69 OK B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 70 Rôles 3 noms pour 1 concept • Chacun des deux objets joue un rôle diffèrent dans le lien • utilisations différentes selon le contexte a APourCompte pierre : Client titulaire compte c1 : Compte APourCompte R g f b pierre : Client titulaire compte c1 : Compte • Note de style : • choisir un groupe nominal pour désigner un rôle • si un nom de rôle est omis, le nom de la classe fait office de nom (avec la première lettre en minuscule) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr • a R b • b "joue le role de" f "pour" a • a "joue le role de" g "pour" b 71 • pierre a pour compte c1 • c1 joue le role de compte pour pierre • pierre joue le role de titulaire pour c1 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 72 Associations (entre classes) Association vs. Liens • Une association décrit un ensemble de liens de même "sémantique" • Un lien lie deux objets • Une association lie deux classes Client APourCompte titulaire compte • Un lien est une instance d association • Une association décrit un ensemble de liens Diagramme de classes (modèlisation) Compte M1 M0 • Des liens peuvent être ajoutés ou détruits pendant l’exécution (ce n’est pas le cas des associations) APourCompte> paul : Client c1 : Compte Diagramme d objets (exemplaires) APourCompte> pierre : Client c2 : Compte APour Compt e> marie : Client Le terme "relation" ne fait pas partie du vocabulaire UML c3 : Compte B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 73 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Utiliser les rôles pour «naviguer» Cardinalités d une association • Précise combien d objets peuvent être liés à un seul objet source • Cardinalité minimale et cardinalité maximale ( Cmin..Cmax) APourCompte Client M1 titulaire paul.comptes pierre.comptes marie.comptes c1.titulaire c2.titulaire c3.titulaire comptes • Doivent être des constantes Compte 1 M0 = {c1} = {c2,c3} ={} = paul = pierre = pierre paul : Client titulaire APourCompte> pierre : Client titulaire marie : Client Client APourCompte> comptes titulaire APour comptes c1 : Compte c2 : Compte M1 Compt e> comptes M0 c3 : Compte Nommer en priorité les rôles APourCompte titulaire comptes paul : Client APourCompte> APourCompte> APourC marie : Client 75 0..* Compte « Tout client a toujours 0 ou plusieurs comptes » « Tout compte a toujours 1 et 1 seul titulaire » pierre : Client B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 74 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr c1 : Compte c2 : Compte ompte > c3 : Compte 76 Cardinalités d une association 1 Cas particulier d’association • Relation réflexive : Exactement une Classe encadre * 0..1 1,2,4 1...10 Classe Plusieurs (0 à n) Classe Optionnelle (0 ou 1) Classe Cardinalité spécifiée Classe Intervalle chef 1 Personne 1..* sous-fifre • Une relation réflexive lie des objets de même classe B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 77 Contraintes entre associations B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 78 Diagrammes de classes vs. d’objets Compte Banque 1..4 1 Client titulairePrincipal • Un diagramme de classes 0..* 1 . . * numéro solde ... numéro nom titulaires ! défini l ensemble de tous les états possibles Compte 1 . . * 0 . . * Client 1 0 . . * signataire 1 Consortium CarteBleue 0 . . * * 1 Code retraitMax 0..* EstAcceptéPar> Distributeur 1..* 0..* co-titulaires 0..* 1..* /titulaires 0..* ! les contraintes doivent toujours être vérifiées numéro solde ... : CarteBl eue signataire • Un diagramme d’objets paul : Client c1 : Compt e titulaires : Banque titulaires pierre : Client c2 : Compt e : Consor tium titulaires titulaires marie : Client c3 : Compt e : Banque signataire ! décrit un état possible à un instant, un cas particulier Les cardinalités sont loins d'être suffisantes pour exprimer toutes les contraintes... … décrire les contraintes en langue naturelle (ou en OCL) EstAcc eptéPa r> EstAcc eptéPa r> : CarteBl eue : Distrib uteur signataire : Banque c1 : Compt e paul : Client titulaires titulaires ! doit être conforme au modèle de classes c2 : Compt e : Consor tium pierre : Client titulaires titulaires : Banque c3 : Compt e marie : Client signataire : CarteBl eue : Distrib uteur EstAcc eptéPa r> sophie : Client EstAcc eptéPa r> • Les diagrammes d’objets peuvent être utilisés pour (1) Un client ne peut pas être à la fois titulaire principal et co-titulaire d un même compte. (2) Les titulaires d un compte sont le titulaire principal et les co-titulaires le cas échéant B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr : CarteBl eue sophie : Client ! expliquer un diagramme de classe (donner un exemple) ! valider un diagramme de classe (le « tester ») 79 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 80 Diagrammes de classes vs. d’objets Client Compte 0..* 1..4 1 1..* numéro solde ... titulaires Banque 1..* 0..* 1 CarteBleue Consortium * Personne Cas général Compte "Sous classes" Compte Epargne 1 Code retraitMax M1 • Une classe peut être la généralisation d’une ou plusieurs autres classes. • Ces classes sont alors des spécialisations de cette classe. numéro nom signataire 0..* Généralisation / Spécialisation EstAcceptéPar> 0..* Distributeur 1..* M0 > Homme > : : > : : : : : Client : : : Compte : Banqu e : Consortium : Client : : : Compte : Banqu e : Consortium : Client : : : : Compte : Banqu e : Consortium : : titulaires titulaires titulaires titulaires : Compte : Client : Compte : Client : Consortium : Consortium : Compte : Consortium titulaires titulaires titulaires : Client : Compte signat aire : Banqu e : Client : Banqu e : Compte : : Banqu e titulaires : Client : Compte : Banqu e : > : Client : > : Distributeur : Distributeur : Client > ... : Client ! relation d'héritage ! relation de sous-typage : Distributeur > t1 t2 t3 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Cas spécifique • Deux points de vue lié (en UML) : > : Distributeur > Femme 81 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 82 Relation d'héritage Relation d'héritage et redéfinitions • Les sous-classes « héritent » des propriétés des superclasses (attributs, méthodes, associations, contraintes) • Une opération peut être "redéfinie" dans les sousclasses Compte solde créditer() débiter() * Banque créditer() débiter() CompteEpargne CompteEpargne {inv: solde > -5000} solde tauxIntérêt * Banque créditer() débiter() calculIntérêts () CompteEpargne tauxIntérêt ajouterIntérêts () Compte solde {inv: tauxIntérêt < 100} {inv: solde > -5000 et tauxIntérêt < 100} • Permet d'associer des méthodes spécifiques à chaque classe pour réaliser une même opération créditer() débiter() ajouterIntérêts () PEL créditer() débiter() ajouterIntérêts () PEC débiter() PET débiter() B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 83 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 84 Relation de sous typage : vision ensembliste Synthèse des concepts de base Compte • Classe Compte Epargne M1 M0 M0 c3 ce1 ! méthode ! cardinalité o1 • Héritage o3 o1 o1 o2 o4 o2 o3 o2 ce3 c4 o5 c2 ce2 c1 Compte ! attribut ! rôle M1 c4 tout objet d une sous-classe appartient également à la superclasse • Association Objet Lien CompteEpargne B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 85 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Inclusion ensembliste 86 UML ?...une question de style et de contexte • S'adapter … Diagramme de classe ! au niveau d'abstraction ! au domaine d'application ! aux outils utilisés ! aux savants et ignorants ! ingénierie vs. retro-ingénierie Utilisation avancée B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 87 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 88 A. Raffinement du concept de Déclaration d'attributs CLASSIFICATEUR • Syntaxe: [/][visibility]name[:type][multiplicity][=default][{prop}] • Propriétés: • Les classificateurs (classifier) : ! {readOnly}, {union}, {subset <p>}, {redefines <p>}, {ordered}, {unique}, {non-unique}, {prop-constraint}. ! Classe ! Classes abstraites ! Enumération ! Datatypes ! Interfaces ! Classes paramétrées B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr ! Visibilité: [+,~,#,-] • Peuvent être soulignés (attributs de classe) age +age /age - solde : Integer = 0 # age : Integer [0..1] # numsecu : Integer {frozen} # motsClés : String [*] {addOnly} nbPersonne : Integer 89 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Attribut dérivé Déclaration d'opérations • Attribut dont la valeur peut être déduite d’autres éléments du modèle • Syntaxe: [/] [ visibilité ] nom [ ( params ) ] [ : type ] [ { props... } ] params := [ in | out| inout ] nom [ : type] [ =defaut ] [{ props... } ] ! e.g., âge si l’on connaît la date de naissance /getAge() + getAge() : Integer - updateAge( in date : Date ) : Boolean # getName() : String [0..1] +getAge() : Integer {isQuery} +addProject() : { concurrency = sequential } +addProject() : { concurrency = concurrent } +main( in args : String [*] {ordered} ) ! notation : /age • En termes d’analyse, indique seulement une contrainte entre valeurs et non une indication de ce qui doit être calculé et ce qui doit être mémorisé B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 90 91 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 92 Propriétés des opérations Classe abstraite • redefines <operation-name> • query • Encapsule un comportement commun • Ne possède pas d’instances • Possède des opérations abstraites • concurrent: des appels multiples peuvent arriver simultanément et être traités de façon concurrente • guarded: des appels multiples peuvent arriver simultanément mais seront traités un à la fois • sequential: un seul appel peut arriver à la fois. B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr ! les valeurs n’ont pas d’identité ! les opérations sont des fonctions “pures” ! deferred en Eiffel ! abstract en Java ! pure virtual en C++ ! méthodes ^self shouldNotImplement en Smalltalk 93 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 94 Enumération (Data Type particulier) • Définition «dataType» Date day : Integer month : Integer year : Integer <<enumeration>> Jour Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche • Exemples de Data Type : ! Enumeration ! Types primitifs: <<enumeration>> Titre Secretaire President Tresorier VicePresident Membre • Utilisation Association1901 • Boolean, Integer, UnlimitedNatural, String B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Etudiant {abstract} • Dans les langages de programmation OO : Data Type • Type, dont: Etudiant nom : String jourDeReunion : Jour 95 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 96 Interface Type paramétré (classe générique) • Une déclaration d’un ensemble cohérent d’opérations • Une interface peut être implémentée ou demandée • Indispensable pour les classes conteneurs (e.g., listes) • Existe en Ada, Eiffel, C++ (templates) et Java (>1.5) • N’est pas nécessaire en Smalltalk et Python «Interface» Serializable + read() + write Vecteur item : T taille : int ajouter() supprimer() T <<bind>> <Point> Exporter write() Classe générique Polygone Vecteur HTML Page title : String size : Integer render() save() HTML Page title : String size : Integer render() save() T , Entier : Integer element : T dim : Entier Exporter write() paramètres génériques Serializable <<bind>> <Double, 3> Classe effective B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 97 + # - Visibilité des éléments Point3D paramètres effectifs B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 98 + # - Visibilité des éléments • Restreindre l'accès aux éléments d'un modèle • Contrôler et éviter les dépendances entre classes et paquetages + public visible # protégé visible dans la classe et ses sous-classes - privé visible dans la classe uniquement ~ package visible dans la package uniquement public = + Interface protégé = # usager héritier privé = - • Utile lors de la conception et de l'implémentation, pas avant ! corps • N'a pas de sens dans un modèle conceptuel (abstrait), e.g., modèle d’analyse implémenteur • N'utiliser que lorsque nécessaire • La sémantique exacte dépend du langage de programmation ! B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 99 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 100 B. Raffinement du concept d'ASSOCIATION Navigation • Association uni/bi directionnelle • Composition • Agrégation • {frozen}, {addonly}, {ordered}, {nonunique} • Classes associatives • Associations n-aires • Associations attribuées • Associations qualifiées B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr • Association unidirectionnelle On ne peut naviguer que dans un sens UML2.0 Client titulaire 1 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Composition Composition • Notion intuitive de "composants" et de "composites" • Contraintes liées à la composition : Voiture 4 Roue 1 102 ! Pas de partage : un objet composant ne peut être que dans 1 seul objet composite ! Cycle de vie du composant lié au cycle de vie du composite : si un objet composite est détruit, ses composants aussi Pneu Jante • Dépend de la situation modélisée ! • composition = (e.g., vente de voitures vs. casse) ! cas particulier d’association ! + contraintes décrivant la notion de "composant"... B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Compte A priori, que dans les diagrammes de spécifications et d'implémentation En cas de doute, ne pas mettre de flèche !!! 101 1 * 103 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 104 Composition Composition • Contraintes liées à la composition : 1 ! Pas de partage : un objet composant ne peut être que dans 1 seul objet composite ! Cycle de vie du composant lié au cycle de vie du composite : si un objet composite est détruit, ses composants aussi 1..* Chapitre Document 1..* 0..* 1..* Document Chapitre M1 Figure 1..* : section : chapitre Section : section : figure : document : chapitre 0..1 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Section 0..* M0 Figure 1..* : section Contrainte : le graphe d'objets forme un arbre (ou une forêt) : figure 105 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 106 Agrégation Autre vues de la composition/agrégation • agrégation = • Différentes formes suggérant l inclusion : ! cas particulier d’association ! + contraintes décrivant la notion d'appartenance... (???) Voiture Figure * * Point roulement[4-6]: Roue structure: Chassis x y Voiture roulement 4-6 structure 1 Partage possible Pas de concensus sur la signification exacte de l'aggrégation Utiliser avec précautions (ou ne pas utiliser...) Roue Chassis Supprimé en UML2.0 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 107 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 108 Classes association Classes association • Pour associer des attributs et/ou des méthodes aux associations Personne Société 0..2 M1 employés sociétés 0..2 * Société salaire augmenter() M0 e1 salaire = 1500 xerox Emploi salaire Le salaire est une information correspondant • ni à une personne, • ni à une société, mais à un emploi (un couple personne-société). e2 employé salaire = 700 employé augmenter() jean B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr ujf e3 Le nom de la classe correspond au nom de l association (problème: il faut choisir entre forme nominale et forme verbale) marie 109 Classes association salaire = 1000 employé B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 110 Classes association • RAPPEL: pour une association donnée, un couple d'objets ne peut être connectés que par un seul lien correspondant à cette association (sauf si l'association est décorée par {nonunique} en UML2.0) Personne employé sociétés 0..2 * Emploi> Société Emploi Emploi> p1 sociétés Emploi ➠ classes associations Personne employés * e1 salaire s1 p1 s1 Ci-dessus, une personne peut avoir deux emplois, mais pas dans la même société • Cette contrainte reste vraie dans le cas où l association est décrite à partir d une classe association p1 : Emploi e1 s1 e2 salaire = 1500 p1 s1 Personne : Emploi 1 0..2 Emploi salaire * société 1 Société Ci-dessus, une personne peut avoir deux emplois dans la même société salaire = 700 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr employé 111 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 112 Classes association (sémantique) rolea(s) A roleb(s) carda cardb Classes association (sémantique) employés B sociétés Personne * 0..2 C Société Emploi Transformation systèmatique pour revenir aux concepts de base rolea A c(s) C 1 c(s) roleb 1 B Personne Il ne peut y avoir qu'un objet C entre un objet A et un objet B donné employé emplois 0..2 1 emplois Emploi société 1 * Société Il ne peut y avoir qu'un Emploi entre une Personne et une Société B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 113 Classes association B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 114 Associations n-aires • Relations entre plus de 2 classes (à éviter si possible) : • Les classes association sont des associations mais aussi des classes. PROFESSEUR • Elles ont donc les mêmes propriétés et peuvent par exemple être liées par des associations. Enseignement * 1..* Enseignée Enseignant Destinataire MATIERE 1..* CLASSE employé Personne société 0..2 * Société Emploi FicheDePaye * {ordered} PROFESSEUR salaire 1..* 0..* Enseignement Enseignant augmenter() 1..* Destinataire 1..* 1 Enseignée MATIERE 1..* CLASSE B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 115 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 116 Associations attribuées Associations qualifiées • L'attribut porte sur le lien • Un qualificateur est un attribut (ou un ensemble d'attributs) dont la valeur sert à déterminer l'ensemble des instances associées à une instance via une association. candidat épreuve Etudiant n..k objet_épreuve Repertoire Matière nom 0..1 Fichier • "Pour un répertoire, à un nom donné on associe qu'un fichier (ou 0 s'il existe aucun fichier de ce nom dans ce répertoire)." Note ! Correspond à la notion intuitive d'index absente ci-dessous Repertoire B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 117 Associations qualifiées - exemple membres * Association1901 titre:Titre * * Personne 0..1 Fichier * B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 118 Cardinalité des associations qualifiées <<enumeration>> Titre Secretaire President Tresorier Cas classique: cardinalité 0..1 Banque nc 0..1 Compte Cas plus rare: cardinalité * (pas de contrainte particulière exprimée) membres fred Banque membres ass1 ass2 Tresorier sylvia President ahmed Secretaire joe * * Employe Cas plus rare: cardinalité 1 (généralement c'est une erreur) Echiquier President B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr titre nl : NumLigne nc : NumCol 1 1 Case 0 comme cardinalité minimale, sauf si le domaine de l'attribut qualifieur est fini et toutes les valeurs ont une image. 119 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 120 Attributs de l'association Problèmes classiques • Souvent l'index est également un attribut de classe indexée • Solution correcte: Les attributs qualifieurs sont des attributs de l'association, pas de la classe Repertoire nom Fichier 0..1 * Repertoire r1 nom="a" r2 nom="f" f1 f2 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 121 Classes qualifiée (sémantique) Contient Transformation systèmatique pour revenir aux concepts de base 0..1 * * * Fichier nom 1 1 Fichier nom B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 122 ! {ordered}: les éléments de la collection sont ordonnés ! {nonUnique} : répétitions possibles (UML2.0) ! {frozen}: fixé lors de la création de l’objet, ne peut pas changer ! {addOnly}: impossible de supprimer un élément RelevéDe Compte Un répertoire contient 0 ou 1 fichier pour un nom donné B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Repertoire • Par exemple : Fichier nom Repertoire /nom Contraintes prédéfinies sur les associations Les attributs du qualifieur sont des attributs de l'association Contient Fichier 2 erreurs communes: Exemple liens "hard" en Unix: un fichier peut correspondre à des noms différents dans des repertoires différents nom 0..1 1 Le nom du fichier correspond au nom qu'a le fichier dans le répertoire nom="b" Repertoire nom lignes * {ordered,addOnly} Ligne Opération • Il est possible de définir de nouvelles contraintes 123 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 124 Contraintes prédéfinies sur les rôles Rôle non unique (sémantique) • {redefines <end-name>} : redéfinition d’un autre rôle rolea A bs R carda {nonunique} * B • {subsets <property-name} : le rôle représente un sous-ensemble • {union} : union dérivée de tous ses sous-ensembles B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr A 125 Rôle unique (sémantique) a rs 1 * R A A bs {unique} * A rs 1 * R rolea b carda 1 B bs R a 1 {ordered} * rs * rolea R ib : integer B Pour tout a, tous les rs ont un indice ib différent et couvrant l'intervalle de 1 au nombre de bs. (si {unique} on a aussi Entre un a et un b il n'y a qu'un r) Entre un a et un b donné il n'y a qu'un r B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 1 126 carda B A a carda Rôle ordonné (sémantique par index) R carda b B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr rolea rolea rolea 127 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr carda b 1 B B rs->isUnique(ib) and rs.i->asSet=Sequence{1..bs->size()} -- si {unique} rs->isUnique(b) 128 128 Rôle ordonné (sémantique par index) rolea A A R rolea bs rolea b R carda A firstRb 0..1 rolea R 0..1 carda b B 1 nextRb 0..1 RHasNextb 129 Rôle ordonné 1-* (sémantique par index) A aOfFirstRb aOfFirstRb->isEmpty xor prevb->isEmpty allNextRb()->excludes(self) avec allNextRb() : Set(R) = nextRb.allNextRb()->including(nextRb) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr a B {ordered} * prevb 0..1 R->isUnique(ib) and R.ib->asSet = R.Set{1..b->size} A bs carda B 0..1 R A B {ordered} * carda ib : integer Rôle ordonné (sémantique par chainage) R x..1 a x..1 Pour tout a, tous les bs ont un indice iRb différent et couvrant l'intervalle de 1 au nombre de bs. bs->isUnique(iRb) and rs.i->asSet=Sequence{1..bs->size()} B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Synthèse sur les associations bs {ordered} * bs * 130 B sens de lecture Nom de rôle ClasseA B roleA x : string (ou agrégation ClasseB attributZ ) Contrainte 131 0..* AssociationX Composition 131 <AssociationX Cardinalités {frozen} iRb [x..1] : integer iRb->isEmpty = a->isEmpty Nom d association Navigation Classe associative B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 132 C. Raffinement du concept de Héritage et redéfinition GÉNÉRALISATION • Une sous classe peut redéfinir une méthode… • Re-définition • Classes abstraites • Méthodes abstraites • Héritage simple vs. Multiple • Classification simple vs. Multiple • Classification statique vs. dynamique Figure surface() déplacer() • … à condition toutefois de rester compatible avec la définition originale Cercle Polygone surface() surface() Carré surface() B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 133 Classes et méthodes abstraites B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Classes abstraites du point de vue ensembliste • Une classe abstraite M1 ! ne peut pas être instanciée ! utile pour définir un comportement abstrait ! peut contenir des méthodes abstraites M0 Figure Figures surface() déplacer() Cercles • Une méthode abstraite ! doit être définie dans une sous classe ! est dans un classe abstraite Cercle Polygone surface() surface() déplacer() B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Triangles c1 c2 c3 Triangle Figure {abstract} surface() surface() {abstract} déplacer() 135 Polygones t1 Carrés ca1 surface() • Notations équivalentes : Figure 134 Carré t2 ca2 c4 surface() B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 136 Classification vs. Héritage Héritage multiple • Une classe peut hériter de plusieurs super-classes Classification Héritage/Spécialisation M1 M0 Appareils Appareil Chien Chauffage Chien Animal M1 M0 Appareil Électrique Chauffage <<instanceOf>> Poel medor medor Chauffage Électrique Appareils électriques Poêles Chauffages électriques Micro ondes MicroOndes coco B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr • Interdit dans certains langages de programmation (e.g., Java et C#) 137 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 138 Points liés à l’héritage et à la classification Hypothèses UML par défaut • Les modèles orientés-objets ne font pas tous les mêmes hypothèses • Sauf si le contraire est indiqué explicitement, en UML les hypothèses par défaut sont : ! Héritage simple vs. héritage multiple ! Héritage multiple • Une classe peut elle hériter de plusieurs classes ? • une classe peut hériter de plusieurs classes ! Classification simple vs. classification multiple ! Classification simple • Un objet peut-il être simultanément instance de plusieurs classes? • un objet est instance d’une seule classe ! Classification statique vs. classification dynamique ! Classification statique • Un objet peut-il changer de classe pendant l’exécution ? B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr • un objet est créé à partir d’une classe donnée et n’en change pas 139 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 140 Où en est on ? D. Concept de DÉPENDANCE (1/3) • From Programing to Modeling • Functional view with UML (use case diagram & model, system sequence diagram) • Structural view with UML: • Relation entre deux éléments (client et fournisseur) ! Abstraction : Entre éléments de différents niveaux sémantiques • «derive» : éléments dérivés, pas forcément du même type • «refine» : raffinement entre modèles ! Class diagram (M1 = type level) vs. Object Diagram (M2 = instance level) «type» Personne • classifiers , associations, generalization • objects, links, polymorphism «refine» Personne Impl • «trace» : (aussi) - utilisé pour marquer les changements entre modèles • Intérêt : Outillage de méthodes de développement (RUP, Catalysis, etc.) • Today: ! Permission (« permit ») : droits d’accès aux propriétés privées ! limits of the object-oriented model (dependence, constraints, packages) ! behavioral and implementation views with UML B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Etudiant + nom - cartable 141 «permit» Professeur B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Concept de dépendance (2/3) Concept de dépendance (3/3) • Relation entre deux éléments (client et fournisseur) • Relation entre deux éléments (client et fournisseur) ! Réalisation (« realize ») : ! Usage : Représentation des associations non permanentes. Très utiles pour estimer la testabilité d’un modèle ou l’impact d’un changement • Relation entre deux ensembles d’éléments, de spécification et d’implémentation • Utilisé pour représenter: raffinement, optimisation, transformations, synthèses, etc. ! Substitution (« substitute ») : Relation entre classificateurs. Les instances du fournisseur peuvent remplacer celles du client Etudiant + nom - cartable «substitute» B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 142 Espion 143 • «call» : dépendance entre opérations (où classes) • «create» : le client créé des instances du fournisseur (classificateurs) • «instantiate» : les opérateurs du client créent des instances du fournisseur • «send» : entre une opération et un signal B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 144 E. Raffinement du concept de Représentation des invariants CONTRAINTE • Invariants = Propriétés vraies pour l'ensemble des instances de la classe • Exemple de contraintes : ! Invariant (sur une classe) ! Pre-/Post- condition (sur une méthode) ! dans un état stable, chaque instance doit vérifier les invariants de sa classe ! Des contraintes peuvent être ajoutées aux éléments du modèle UML • Notation : entre { } Compte {solde>=plancher} ! Des contraintes peuvent être exprimées solde: Somme à l aide d OCL (Object Constraint Language) plancher: Somme • Remarque : exprimée sur un diagramme de classe, une contrainte réduit le nombre de diagrammes d’objet conformes B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr • e.g. {solde >= plancher} 145 Représentation des pré/post conditions créditer (Somme) débiter (Somme) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 146 Etre abstrait et précis avec UML Compte • Préconditions {solde>=plancher} ! {«precondition» expression booléenne OCL} solde: Somme plancher: Somme ! Abrégé en: {pre: expression booléenne OCL} créditer (montant : Somme) • Postconditions {pre: montant > 0} {post: solde = solde @pre + montant} ! {«postcondition» expression booléenne OCL} débiter (s: Somme) ! Abrégé en: {post: expression booléenne OCL} {pre: montant > 0 and montant<=solde-plancher} {post: solde = solde @pre - montant} ! Operateur « valeur précédente » (idem old Eiffel): • expression OCL @pre Analyse précise ou analyse par contrat B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 147 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 148 Contraintes OCL navigant les relations Navigation des relations 0..* • Par navigation on n obtient plus un scalaire, mais une collection d objets • OCL défini 3 sous-types de collections • Chaque association est un chemin de navigation • Le contexte d une expression OCL est le point de départ (la classe de départ) • Les noms de rôle sont utilisés pour identifier qu’elle relation on veut naviguer ! Set : obtenu par navigation d une relation 0..* • Context Personne inv: propriété retourne un Set[Voiture] • chaque élément est présent au plus une fois ! Bag : si plus d un pas de navigation • un élément peut être présent plus d une fois Personne possession 1 propriétaire propriété * ! Sequence : navigation d une relation {ordered} Voiture • c est un Bag ordonné Context Voiture inv: self.propriétaire.age >= 18 • Nombreuses opérations prédéfinies sur les types collection. Voir cours OCL… B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 149 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Syntaxe : Collection->opération Class Diagram: Conclusion Constituants d’une classe • Un diagramme de classes est un graphe d’éléments connectés par des relations. • Un diagramme de classes est une vue graphique de la structure statique d’un système. • Concept représenté (nom) • Classes héritées (concepts précisés) • Relations avec autres classes • Attributs (classe, nom, visibilité) • Opérations (paramètres) • Contraintes, invariants • Généricité (classes paramétrées) • Stéréotypes Company Person Company members 0..1 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr * Employee 151 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 150 152 Structural View Diagramme de composite structure • Structure Interne ! Spécification d’éléments créés à l’intérieur d’un classificateur ! Eléments : instances, références :Triangle Composite Structure Diagram Triangle make(c : Color) «create» b:Point c:Point a:Point blue:Color Triangle :Point [3] B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 153 :Color B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 154 Diagramme de composite structure Diagramme de composite structure • Collaboration • Collaboration ! Spécification de la structure d’un ensemble d’éléments (rôles) qui réalisent une tache commune ! Représentation de la structure d’un patron de conception ! Exemple : Fenêtre ! Eléments : rôle (d’une classe participant à une collaboration), connecteurs (permettant la communication entre deux classes) Donnée Observer Subject :Observer ! Les propriétés définies par les classificateurs doivent être possédées par les classes jouant leurs rôles Observer Observer /Observer:Dependent /Subject:Model Observer Dependent update() B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Subject Model notify() addDependent() 155 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 156 Structural View Notion de package • Élément structurant les classes ! Modularisation à l'échelle supérieure ! Un package (paquetage en français) partitionne l’application : Package Diagram • Il référence ou se compose des classes de l’application • Il référence ou se compose d’autres packages ! Un package réglemente la visibilité des classes et des packages qu’il référence ou le compose ! Les packages sont liés entre eux par des liens d'utilisation, de composition et de généralisation ! Un package est la représentation informatique du contexte de définition d’une classe N.B.: une classe appartient à un et un seul package B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 157 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Représentation d’un package Visibilité dans un package • Vue graphique externe • Réglementation de la visibilité des classes 158 ! Classes de visibilité publique : • classes utilisables par des classes d autres packages P1 ! Classes de visibilité privée : • classes utilisables seulement au sein d un package • Vue graphique externe et interne P1 • Représentation graphique : C1 C2 {public} P2 Classe {private} Package::Classe P3 CLASSE D'INTERFACE B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 159 CLASSE DE CORPS B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr CLASSE EXTERNE 160 Utilisation entre packages Utilisation entre packages • Définition • Exemple (vue externe du package livraisons) : ! Il y a utilisation entre packages si des classes du package utilisateur accèdent à des classes du package utilisé ! Pour qu’une classe d’un package p1 puisse utiliser une classe d’un package p2, il doit y avoir au préalable une déclaration explicite de l’utilisation du package p2 par le package p1 LIVRAISONS LIVREURS • Représentation graphique VEHICULES P1 COLIS P2 Vue externe du package P1 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 161 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 162 Stéréotypes de package Héritage entre packages • Stéréotype « global » • Le package spécifique B doit être conforme à l’interface du package A • Intérêt : substitution « global » A A • Tous les packages du système ont une dépendance avec ce système • Ne pas abuser de ce stéréotypes ;) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 163 B B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr C 164 Héritage entre packages Dépendances entre packages • Exemple : • Importation («import»): ! les éléments de l’espace de nommage sont importés JeuPlateau • Accès («access»): JeuDame ! les éléments sont simplement utilisés JeuEchec Windowing System Persistence Gestion «access» Motif MicrosoftWindows «import» Types B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 165 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Fusion (merge) de packages Utilité des packages • Une fusion définie la manière dont un paquetage étend un autre • Composé de liens de généralisation et de redéfinition • Réponses au besoin Enumerations ! Contexte de définition d'une classe ! Unité de structuration ! Unité d'encapsulation ! Unité d'intégration ! Unité de réutilisation ! Unité de configuration ! Unité de production My Types «merge» «merge» Types B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 166 167 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 168 Structuration par packages (vs.) décomposition hiérarchique Outline • Pour les grands systèmes, il est nécessaire de disposer d’une unité de structuration ① UML History and Overview ② UML Language ! À un niveau supérieur, ! Plus souple que : • La composition de classe • Le référencement de packages domaines de structuration : Packages décomposables en packages B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 169 ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 170 Behavioral View Aspects dynamiques du système • Jusqu’ici, le système est décrit statiquement: ! Décrivent les messages (méthodes ou opérations) que les instances des classes peuvent recevoir mais ne décrivent pas l émission de ces messages ! Ne montrent pas le lien entre ces échanges de messages et les processus généraux que l application doit réaliser • Il faut maintenant décrire comment le système évolue dans le temps • On se focalise alors sur les collaborations entre objets. Rappel : ! objets : simples Sequence Diagram ! gestion complexe : par collaborations entre objets simples (scenarios) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 171 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 172 Diagramme de séquences (scénarios) Diagramme de séquences (scénarios) • Représentation des interactions entre acteurs et objets • Vision temporelle d’une interaction • Dérivé des scénarios de OMT : ! Montrent des exemples de coopération entre objets dans la réalisation de processus de l’application ! Chaque objet est symbolisé par une barre verticale (i.e., ligne de vie) ! Le temps s'écoule de haut en bas, de sorte que la numérotation des messages est optionnelle. ! Diagramme dual du diagramme de collaboration • Souvent utilisé pour représenter une instance de cas d utilisation • De manière plus générale, représentation temporelle d’une interaction ! Bien adapté pour de longues séquences ! Ne visualise pas les liens ! Complémentaire du diagramme de collaboration ! Illustrent la dynamique d’enchaînement des traitements à travers les messages échangés entre objets ! le temps est représenté comme une dimension explicite – en général de haut en bas • Les éléments constitutifs d’un scénario sont : ! Un ensemble d’objets (et/ou d’acteurs) ! Un message initiateur du scénario ! La chronologie des messages échangés subséquemment ! Les contraintes de temps (aspects temps réel) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 173 Messages et Stimuli B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Diagramme de séquences : notation • Un Stimulus est une communication entre deux instances, dans le but de déclencher une action. Objets = Instances de classes NomObjet1:NomClasse1 NomObjet:NomClasse nom message (paramètres) Temps • Un Message est une spécification de Stimulus, qui définit les rôles de l émetteur et du récepteur. B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 174 175 Message nom message émis par NomObjet vers NomObjet1 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 176 Ligne de vie et activation Diagramme de séquences : notation Objet existant avant et après l activation du scénario • La « ligne de vie » représente l’existence de l’objet à un instant particulier objet2:Classe2 ! Commence avec la création de l’objet Client ! Se termine avec la destruction de l’objet Objet créé dans le scénario op ( ) objet1:Classe1 m1 ( ) m2 ( ) objet3:Classe3 • L’activation est la période durant laquelle l’objet exécute une action lui-même ou via une autre procédure m3 ( ) Activité de l objet B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 177 Messages Ligne de vie B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 178 Messages • Communication entre objets • Asynchrone Message Asynchrone ! Des paramètres ! Un retour • Synchrone Message synchrone retour • Cas particuliers • Création ! Les messages entraînant la construction d un objet ! La récursivité creation() obj3 : C1 • Perdu ! La destruction d’objets • Trouvé B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 179 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 180 Diagramme de séquences : notation Aspects asynchrones et temps réel objet2:Classe2 Création d objet op ( ) • Lecture du scénario et chronologie Envoi de message avec paramètre objet1:Classe1 ! Un scénario se lit de haut en bas dans le sens chronologique d échange des messages. ! Des contraintes temporelles peuvent être ajoutées au scénario m1 ( par ) m2 ( ) Nom Objet1: Récursion a demande d B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 181 Représentation de conditionnelles réponse d objet1:Classe1 182 sd Region Critique Branchement conditionnel [x<0] m1 ( x ) [x>0] m2 ( x ) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Fragments (UML 2.x) objet2:Classe2 Branchement conditionnel demande Destruction d objet Retour d opération op ( ) :Nom classe2 {d -d< 1 sec.} {b-a< 5 sec.} b Nom Objet1: :Nom classe2 183 • Région définissant une sémantique précise à l’intérieur d’une interaction • Raccourcis pour l’écriture de traces • Composé de [1..*] “opérandes” B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr obj : C1 obj2 : C2 msg() critical msg() 184 Fragments - alt Fragments - autres • Option (opt): l’opérande est optionnelle. Elle peut ne pas exister sd Exemple • Alternatives (alt): choix de comportement, entre deux opérandes obj : C1 alt • Break (break): l’opérande est exécutée, à la place du reste de l’interaction (raccourci pour alternative) obj2 : C2 • Parallèle (par): le comportement spécifié par les deux opérandes peut s’exécuter en parallèle (fusion entre les messages) [x == 42] msg() • Négatif: le fragment représente des traces invalides [else] • Région critique (critical): les traces spécifiées ne peuvent pas être intercalées msg() • Assertion (assert): spécification de la seule continuation valable • Ignorer et Considérer (ignore | consider): spécification des messages significatifs • Boucle (loop): l’opérande sera répétée autant de fois que défini par une garde • Autres: strict, ordonnancement strict, ordonnancement faible B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 185 Behavioral View B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 186 Diagramme de collaboration • Les scénarios et diagrammes de collaboration: ! Montrent des exemples de coopération des objets dans la réalisation de processus de l’application Colaboration Diagram • Les scénarios : ! Illustrent la dynamique d’enchaînement des traitements d’une application en introduisant la dimension temporelle • Les diagrammes de collaboration ! Dimension temporelle représentée par numéros de séquence : définition d’un ordre partiel sur les opérations ! Représentation des objets et de leurs relations (between objects) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr ! Utilisent les attributs et opérations 187 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 188 Diagrammes de collaboration Diagrammes de collaboration • Représentation d’une collaboration entre rôles • Représentation de collaborations de rôles ! Booch : Société d’objets collaborant (UML 1.5 : de rôles communicants) Description de la réalisation d un Classifier ou d une opération Ensemble de rôles (ClassifierRoles + AssociationRoles) / ClassifierRoleName : ClassifierName • Représentation spatiale d’une interaction ! Mise en avant de la structure ! Représentation des structures complexes (récursives par exemple) • Pas d’axe temporel • Représentation de collaborations d’instances ! Diagramme dual du diagramme de séquence ! Ensemble d’objets (Objets + Liens) ! Conforme à un diagramme de collaboration de rôles • Des rôles ou des objets dans une situation donnée • Des liens relient les objets qui se connaissent • Les messages échangés par les objets sont représentés le long de ces liens • L’ordre d’envoi des messages est matérialisé par un numéro de séquence B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr • Représentation d’interactions ! Ensembles d objets + Stimuli (Instances de Messages) 189 Diagrammes de collaboration : notation B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 190 Messages (exemples) ! 4 : Afficher (x, y) --message simple 3 : Operation 1 (parametres) 1 : evenement ! 3.3.1 : Afficher (x, y) 2 : operation Objet 1 : nom de la classe --message imbriqué ! 4.2 : âge := Soustraire (Today, Birthday) Objet 2 --message imbriqué avec valeur retournée ! [Age >= 18 ans] 6.2 : Voter () 4 : operation nom acteur : nom de la classe –-message conditionnel 5 : operation (parametre) ! a.4, b.6 / c.1 : Allumer (Lampe) –- synchronisation avec d autres flots d exécution flux de donnees Objet 3 ! 1 * : Laver () : nom de la classe –-itération ! 3.a, 3.b / 4 *||[i := 1..n] : Eteindre () –-itération parallèle B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 191 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 192 Utilisation des diagrammes de collaboration Eléments constitutifs • Ils peuvent être attachés à : • Un contexte contenant les éléments mis en jeu durant l opération : ! Un acteur ! Une classe ! Une opération ! Un use-case ! Un ensemble d objets, d attributs et de paramètres ! Des relations entre ces objets • Des interactions • Ils s’appliquent ! Des messages ! Un message initiateur du diagramme provenant d un ! En spécification ! En conception (illustration de design patterns) • Acteur de l application, • Objet de l application. ! Les numéros de séquence des messages échangés entre les objets de cet ensemble suite au message initiateur B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 193 194 Questions auxquelles répondent les collaborations Diagrammes de collaboration : notation • Les messages • Quel est l’objectif ? • Opérations • Réception d événements séquence imbriquée • Le séquencement message initiateur origine:Point 1.1: position ( ) 4 :Carré numéro de séquence boucle • Quels sont les objets ? • Quelles sont leurs responsabilités ? • Les séquences consécutives • Les séquences imbriquées afficher ( ) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr :Segment 1 *(i=1..4):afficher ( ) • Comment sont-ils interconnectés ? • Comment interragissent-ils ? 1.2: position ( ) destination:Point opération B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 195 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 196 Behavioral View Machines à états • Machines à états = diagrammes d’états-transitions • Il existe deux sortes de digrammes d’état State Machine Diagram B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr ! De comportement (behavioral state machine) ! De protocole (protocol state machine) 197 Machines à états comportementale B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 198 Machines à états : notation • Attachés à une classe ou à une opération ! Généralisation des scénarios ! Description systématique des réactions d'un objet aux changements de son environnement condition de garde événement reçu • Décrivent les séquences d’états d’un objet ou d’une opération : ! En réponse aux «stimulis» reçus ! En utilisant ses propres actions (transitions déclenchées) E1 • Réseau d’états et de transitions état ! Automates étendus ! Essentiellement Diagrammes d’Harel (idem OMT) B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 199 action Evt1 [cond] / m() ^Evt2 événement émis E2 transition B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 200 Notion d’événements Notion d’événements • Les événements sont considérés comme des objets • Stimuli auxquels réagissent les objets «signal» IO_EVENT time ! Occurrence déclenchant une transition d état • Abstraction d’une information instantanée échangée entre des objets et des acteurs ! Un événement est instantané ! Un événement correspond à une communication unidirectionnelle ! Un objet peut réagir à certains événements lorsqu'il est dans certains états. «signal» USER_INPUT device ! Un événement appartient à une classe d'événements (classe stéréotypée «signal»). B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 201 «signal» MOUSE_EV «signal» KEYBD_EV location character «signal» NETWORK_EVENT ... ... B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 202 Typologie d’événements Notion d’action • Réalisation d’une condition arbitraire • Action : opération instantanée (conceptuellement) et atomique (ne peut être interrompue) ! transcrit par une condition de garde sur la transition • Réception d’un signal issu d’un autre objet ... • Déclenchée par un événement ! transcrit en un événement déclenchant sur la transition ! Traitement associé à la transition • Réception d’un appel d’opération par un objet ! Ou à l’entrée dans un état ou à la sortie de cet état ! transcrit comme un événement déclenchant sur la transition action • Période de temps écoulée User_input / mise_sous_tension ! transcrit comme une expression du temps sur la transition Veille Allumé délai_mise_en_veille / passage_en_mode_veille action B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 203 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 204 Notion d’état Structuration en sous-états • Problème d'un diagramme d'états plats • Etat : situation stable d un objet parmi un ensemble de situations prédéfinies ! Pouvoir d'expression réduit, inutilisable pour de grands problèmes ! Explosion combinatoire des transitions. ! conditionne la réponse de l objet à des événements • programmation réactive / « temps réel » ! Intervalle entre 2 événements, il a une durée • Peut avoir des variables internes ! attributs de la classe supportant ce diagramme d états • Structuration à l aide de super/sous états (+ hiérarchies d événements) Online ! représentés par imbrication graphique ou B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 205 do/poll() B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 206 Pseudo-états Notion d’activité dans un état • Initial, final • Activité : opération se déroulant continuellement tant que l’on est dans l’état associé ! do/ action • Entrée, sortie Téléphone N° invalide Invalide Téléphone raccroché do / passer message • Fourchette, jonction • Choix activité • Une activité peut être interrompue par un événement. [<=10] id [>10] B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 207 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 208 Exemple de diagramme d'états Émission d’événements • Automate d états d une télécommande double (TV + Actif décroche combiné Timeout do/ timeout tone 15 sec 15 sec Tonalité Compose numéro (n) do/ joue tonalité Invalide do/ dit message Repos Appelé raccroche Appelant raccroche/ déconnexion Dialogue MAGNETOSCOPE) : Compose numéro (n) Contrôle distant MAGNETOSCOPE En composition Compose numéro (n) [n.isInvalid] Occupé do/ tonalité occupée contrôle TV Dernier numéro contrôle MAGNETO TV bouton marche ^signal ON/OFF Etablissement occupé connecté Occupé Libre Sonnerie Réponse de l appelé/ do/ sonne signal ON/OFF Télévision autorise parole Arrêt B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 209 Diagrammes d'états concurrents B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 210 Diagrammes d'états concurrents : exemple • Utilisation de sous-états concurrents pour ne pas à avoir à expliciter le produit cartésien d’automates Préparation d'un avion ! si 2+ aspects de l’état d’un objet sont indépendants ! activités parallèles Maintenance Remplissage préparation Chargement nourriture • Sous-états concurrents séparés par pointillés Equipage absent ! « swim lanes » B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Marche 211 Réservoir plein Plein Avion prêt Approvisionnement Compartiment plein Equipage Montée B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Nourriture chargée vérification OK Vérification avion 212 Etat-transition (résumé) Machine à états de protocole • Spécialisation des machines à états de comportement • Toujours attachées à un classificateur (e.g., une classe) • Représente un cycle de vie d’un objet et spécifient quels messages sont acceptés à chaque état • Format : ! événement (arguments) [conditions] / action ^événements provoqués • Déclenchement : ! par un événement (peut être nul). • Notation similaire aux machines à états comportementales, mais noté {protocol} • Peut avoir des arguments. Porte {protocol} ! Conditionné par des expressions booléennes sur l'objet courant, l'événement, ou d'autre objets. Ouverte • Tir de la transition : ! Exécute certaines actions instantanément. [pré-condition] événement / [post-condition] • Etats : Spécifient un invariant 213 Behavioral View B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Etat [invariant] 214 Diagramme d’activité • Spécifie la séquence et les conditions pour coordonner différents comportements (plutôt que les classificateurs contenant ces comportements) • Composés d’un ensemble d’actions et de flots (de contrôle et de données) • Spécifient une opération (conception) • Peuvent spécifier un workflow • Sémantique basée sur les réseaux de Petri • Attachés à une classe, une opération, ou un use-case (workflow) Activity Diagram B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Fermée • Transitions : Spécifient une pré et une post condition ! Provoque d'autres événements ; globaux ou vers des objets cibles. B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr [couloir->libre] Fermer/ 215 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 216 Diagramme d’activité : exemple Diagramme d’activité : notation opération PréparerBoisson de la classe Personne [pas de soda] [pas de café] • Paramètres d’entrée et de sortie déterminer boisson [demande café] mettre le café dans le filtre ajouter de l eau dans le réservoir [demande soda] obtenir un gobelet Nom de l'activité «precondition» contrainte «postcondition» contrainte Action obtenir une canette de soda • Pré et postconditions Action Action mettre le filtre dans la machine • Exceptions infuser verser café B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr {activity} Activité Attribut : type Attribut : type Operation(param) Operation(param) boire 217 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 218 Diagramme d’activité : notation Diagramme d’activité : notation • Flots : • Objet : ! Instance d’un classificateur, potentiellement dans un état particulier ! Événements ! De contrôle: déclenche une action une fois que l’action précédente est finie ! D’objet: chemin par lequel peuvent passer des objets et des données B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 219 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Café [chaud] {ordering = LIFO} Annulation 220 Stéréotypes optionnels • Emission de signal Diagramme d’activité : notation Allumer cafetière • Réception de signal déterminer boisson Voyant s éteint Annulation mettre café dans le filtre • On obtient une syntaxe graphique proche de SDL préparation annulée ajouter de l'eau dans le réservoir obtenir gobelet mettre filtre dans la machine ! langage de description de spécifications ! populaire dans le monde télécom Région interruptive : infuser B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 221 Diagramme d’activité : notation • Région d’expansion : ! Région qui s’exécute plusieurs fois, selon les éléments de la collection passée en entrée ! Types d’exécution: parallèle, itérative ou stream B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr région qui peut avoir une sortie alternative au flot normal 222 Diagramme d’activité : notation • Autres nœuds : ! Fin d’activité, fin de flot ! Fourchette parallel [cout<=10] [cout>10] ! Jointure ! Décision: branchement sur plusieurs transitions ! Fusion: accepte un flot parmi plusieurs Préparer café Livrer café [plus de café] B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 223 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr [encore du café] 224 Liens modèles statiques/dynamiques • Partition: • Le modèle dynamique définit des séquences de transformation pour les objets :Cafetière ! Groupement d’actions ayant des caractéristiques communes ! Utilisées pour allouer des actions dans des ressources différentes (Classificateurs, Nœuds) :Distributeur de Boissons Diagramme d’activité : notation déterminer boisson ! Diagramme d'état généralisant pour chaque classe ayant un comportement réactif aux événements les scénarios et collaborations de leurs instances mettre café dans le filtre ajouter de l'eau dans le réservoir • Les variables d'état sont des attributs de l'objet courant • Les conditions de déclenchement et les paramètres des actions exploitent les variables d'état et les objets accessibles ! Diagrammes d activités associés aux opérations/transitions/méthodes mettre filtre dans la machine • Les modèles dynamiques d'une classe sont transmis par héritage aux sous-classes infuser B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 225 Behavioral View 226 Diagramme temporel Autre vue comportementale semblable aux diagrammes de séquence, mais présentée avec une syntaxe temporelle inspirée des diagrammes utilisé en circuits logiques Timing Diagram B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 227 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 228 Implementation View Outline ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion Component Diagram B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 229 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 230 Constituants d’un diagramme de composants Constituants d’un diagramme de composants • Composant • Connecteur ! Partie remplaçable d’un système ! Son comportement est spécifié par des interfaces requises et fournies «component» Dictionnaire «provided interfaces» Synonymes Antonymes «required interfaces» Texte structuré ! Liaison entre un contrat externe (port) et la réalisation ! Assemblage, délégation Dictionnaire :Index Texte structuré Antonymes Texte structuré Synonymes «component» Dictionnaire Texte structuré Antonymes «component» :Texte :Langue • Port • Interface (fournies/requise) «component» :Dictionnaire Texte structuré ! Point d’interaction entre un composant et son environnement ! La nature de ces interactions est spécifiée par des interfaces Antonymes Synonymes B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 231 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr «component» Dictionnaire 232 Implementation View Constituants d’un diagramme de composants • Artefact ! Spécification d’une pièce physique d’information utilisée dans le processus de développement ! Fichiers source, modèles, scripts, binaires, document, etc. Deployment Diagram ! Un artefact est un classificateur: il possèdes des propriétés et des opérations ! Il peut s’associer avec d’autres artefacts ! Notation : «artifact» «artifact» Order.jar Order.jar ! Stéréotypes standards : « source », « executable » B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 233 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 234 Constituants d’un diagramme de composants Constituants d’un diagramme de composants • Nœud • Chemin de communication ! Ressource logique dans laquelle sont déployées les artefacts ! Association entre deux nœud, permettant l’échange de signaux et de messages ! Notation : connexion, instances Zope 1 1..4 • Spécification de déploiement :Zope ZODB ! Ressource (artefact) déterminant les paramètres d’exécution d’un artefact «artifact» Order.jar «deploy» :Zope CMF «artifact» Plone B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr «artifact» CMF «deployment spec» description.xml 235 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 236 Outline ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Les notes • Compléments de modélisation ! Attachés à un élément du modèle ou libre dans un diagramme ! Exprimés sous forme textuelle ! Elles peuvent être typées par des stéréotypes modèle réalisé par John Doe chef employé PERSONNE * employeur 0..1 ENTREPRISE {PERSONNE.employeur = PERSONNE.chef.employeur} 237 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Extension d’UML : motivation Les stéréotypes • Malgré sa richesse, UML n’est pas adapté à tous les domaines. • Formes d’extension: • Nouveaux éléments de modélisation instanciant ! Des classes du méta modèle UML (pour les stéréotypes de base UML) ! Ajout de nouveaux éléments. ! Création de nouvelles propriétés. ! Spécification d’une nouvelle sémantique. ! Des extensions de classes du méta modèle UML (pour les stéréotypes définis par l utilisateur) • Peuvent être attachés aux éléments de modélisations et aux diagrammes : • Mécanismes disponibles: ! Stéréotypes, Étiquettes, Contraintes. Profils. B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 238 ! Classes, objets, opérations, attributs, généralisations, relations, acteurs, uses-cases, événements, diagrammes de collaboration … 239 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 240 Les stéréotypes : notation Etiquettes (tagged values) stéréotype «persistent» CLIENT nom : string adresse : string • Pair de la forme “étiquette=valeur”, attachée aux éléments de modélisation «persistent» CLIENT Personne {author = G. Sunyé, status = incomplete} nom : String secu : Integer naissance : Date nom : string adresse : string CLIENT nom : string adresse : string CLIENT • Peuvent introduire: ! une nouvelle notation ! des contraintes d’utilisation • Très utiles pour l’interprétation d’un modèle B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 241 Les profils UML 242 Outline • Mécanisme d’extension, permettant d’adapter UML à l’aide d’un ensemble de stéréotypes • Le profil “Standard” contient les stéréotypes utilisés dans UML • Autres profils: J2EE/EJB, COM, .NET, CCM, etc. B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 243 ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 244 Assigning Meaning to Models • If a UML model is no longer just ! fancy pictures to decorate your room ! a graphical syntax for C++/Java/C#/Eiffel... • Then tools must be able to manipulate models ! Let s make a model ! of what a model is! ! => meta-modeling • & meta-meta-modeling.. B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 245 246 Generalizations Zoom: comments B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr UML2 meta-model (part.) 247 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 248 Evolution in Software Modeling Business Problem! Business Problem! software modeler programmer model! Assigning Meaning to MetaModels • OMG (Essential) MOF: Business Problem! ! Provides language constructs for specifying a DSL metamodel software modeler • mainly based on Object-Oriented constructs: package, classes, properties (attribute and reference), and multiple inheritance. domain-specific! • specificities: composition, opposite… model! ! Cf. http://www.omg.org/spec/MOF/ programmer NamedElement name: String code! machine! code! machine! code! machine! solution by programmable machine solution by model-based development solution by model-driven development B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr type 1 Type TypedElement DataType From Gregor Engels (Universität Paderborn, Germany) Panel "When will Code become Irrelevant?", MoDELS 2011. 249 The 4 layers in practice Property lower: Natural Class isAbstract: Boolean = false Boolean String Natural =1 upper : Natural = 1 isOrdered : Boolean = false owner 0..* superClass {ordered} 0..* isComposite: Boolean = false ownedAttribute default: String = "" 0..1 opposite Excerpt from EMOF B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 250 The 4 layers in practice NamedElement name: String type 1 Type M3 MetaMetaModel TypedElement Classifier DataType Property Class isAbstract: Boolean = false Boolean String Natural 0..* superClass lower: Natural =1 upper : Natural = 1 isOrdered : Boolean = false owner {ordered} 0..* isComposite: Boolean = false ownedAttribute default: String = "" 0..1 opposite Type M2 MetaModel 1 * Association M1 Model * * Classe Bibliothèque :Bibliothèque * nom: String livres 1..* Attribut DataType nom: String Livre * rouge titre: String nbPages: Int initial 1 sortantes Transition ev: String * V Diagramme nom: String vert * O 1 suivante Etat nom: String orange R livre1:Livre titre = 'EMF' nbPages = 680 livre2:Livre B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 251 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 252 Outline ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Some UML Tools • Some open source tools: ➥ Eclipse Papyrus MDT, Modelio (Modeliosoft)… • Some commercial tools: ➥ Magic Draw (No Magic), Enterprise Architect (Sparx Systems), Objecteering (Objecteering Software)… • Drawing tools (to be avoided): ➥ Dia, Visio… • (Some) more complete lists: • http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools • http://www.umltools.net 253 Eclipse Papyrus MDT 254 Outline • Environment for editing any kind of EMF model and particularly supporting UML and related modeling languages such as SysML and MARTE. • Papyrus also offers an advanced support of UML profiles • Official Eclipse project for UML2 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 255 ① UML History and Overview ② UML Language ① UML Functional View ② UML Structural View ③ UML Behavioral View ④ UML Implementation View ⑤ UML Extension Mechanisms ③ UML Internals ④ UML Tools ⑤ Conclusion B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 256 UML 2.x : Structural Modeling Diagrams • Structure diagrams define the static architecture of a model. They are used to model the 'things' that make up a model - the classes, objects, interfaces and physical components. In addition they are used to model the relationships and dependencies between elements. ! Package diagrams are used to divide the model into logical containers or 'packages' and describe the interactions between them at a high level ! Class or Structural diagrams define the basic building blocks of a model: the types, classes and general materials that are used to construct a full model ! Object diagrams show how instances of structural elements are related and used at run-time. ! Composite Structure diagrams provide a means of layering an element's structure and focusing on inner detail, construction and relationships ! Component diagrams are used to model higher level or more complex structures, usually built up from one or more classes, and providing a well defined interface ! Deployment diagrams show the physical disposition of significant artefacts within a real-world setting. système B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 257 UML 2.x : Behavioral Modeling Diagrams 258 Oui, Oui, Oui, mais ... • Behavior diagrams capture the varieties of interaction and instantaneous state within a model as it 'executes' over time. ! Use Case diagrams are used to model user/system interactions. They define behavior, requirements and constraints in the form of scripts or scenarios ! Activity diagrams have a wide number of uses, from defining basic program flow, to capturing the decision points and actions within any generalized process ! State Machine diagrams are essential to understanding the instant to intant condition or "run state" of a model when it executes ! Communication diagrams show the network and sequence of messages or communications between objects at run-time during a collaboration instance ! Sequence diagrams are closely related to Communication diagrams and show the sequence of messages passed between objects using a vertical timeline ! Timing diagrams fuse Sequence and State diagrams to provide a view of an object's state over time and messages which modify that state ! Interaction Overview diagrams fuse Activity and Sequence diagrams to provide allow interaction fragments to be easily combined with decision points and flows B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 259 pour "l'informaticien moyen" la seule chose importante dans le logiciel c'est ... le Code ! B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 260 Adoption of Software Modeling ? ? ? * Use of Modeling in software Engineering ? ? Analysis Design Development Test Deployment Maintenance Runtime design, documentation ? B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 261 Modeling and Metamodeling analysis ... detailed design requirement management, ... DSML, transformation/ systems engineering ... composition ... V&V, (code, test) generation. maintenance ... runtime. B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 262 Metamodeling B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 263 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 264 MDE Principles Consequences 1. Everything relevant to the development process is a model 2. All the meta-models can be written in a language of a unique meta-meta-model 1. Models are aspect oriented. Conversely: Aspects are models 2. Transformations are aspects weavers. They can be modeled. 3. Every meta-model defines a domain specific language 4. Software development has two dimensions: M1model development and M2-transformation development • Same M3 helps Interoperability of tools defined at M2 3. A development process can be modeled as a partially ordered set of model transformations, that take models as input and produce models as output • Related: Software Language Engineering B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 265 INGÉNIERIE DIRIGÉE PAR LES MODÈLES Des concepts a la pratique B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 266 Challenges • Language definition problems (Q/V/T) ! Expressive, easy to use language(s) for transformations Maîtrisez la complexité de vos développements logiciels ! • Technological Issues ! Tool set, interoperability… Une approche didactique et pragmatique pour les étudiants et ingénieurs dans l'ingénierie du logiciel, et pour les responsables de projets informatiques. • Software Engineering Issues ! From requirements to tests and SCM • Theoretical issues http://www.amazon.fr/dp/2729871969 ! A transformation is a mapping between semantic domains • Beyond Code Generation: Proof, Performance Evaluation, Test Synthesis… ! Compositional weaving, cf. Aspect Oriented Software Dvp Jean-Marc Jézéquel, Benoit Combemale et Didier Vojtisek B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr Disponible le 14 février 2012 267 B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 268 Cf. http://en.wikipedia.org/wiki/Unified_Modeling_Language B. Combemale @ University of Rennes 1. Cf. http://www.combemale.fr 269