UML «Unified Modeling Language» Le Langage de Modélisation Objet Unifié
Modélisation Le Langage de Modélisation Objet Unifié
Qu'est-ce qu'un modèle? Un modèle est une abstraction de la réalité Modéliser est un processus qui consiste à identifier les caractéristiques intéressantes d'entités, en vue d'une utilisation précise L'abstraction désigne aussi le résultat de ce processus, c'est-à-dire l'ensemble des caractéristiques essentielles d'entités, retenues par un observateur Un modèle est une vue subjective mais pertinente de la réalité Un modèle définit une frontière entre la réalité et la perspective de l'observateur Un modèle reflète des aspects importants de la réalité, il en donne une vue pertinente bien qu imprécise
Caractéristiques fondamentales des modèles Faciliter la compréhension du système étudié Un modèle réduit la complexité du système étudié Simuler le système étudié Un modèle représente le système étudié et reproduit ses comportements Un modèle réduit (décompose) la réalité, dans le but de disposer d'éléments exploitables par des moyens Mathématiques Informatiques
Quelques exemples de modèles Modèle météorologique à partir de données d'observation, permet de prévoir des conditions climatiques Modèle économique peut permettre de simuler l'évolution de cours boursiers en fonction d'hypothèses macro-économiques Modèle démographique définit la composition d'un panel d'une population et son comportement, dans le but de fiabiliser des études statistiques, d'augmenter l'impact de démarches commerciales, etc...
L Orientation Objet Le Langage de Modélisation Objet Unifié
Qu est-ce qu un objet? La programmation traditionnelle consiste à traiter des données (éventuellement structurées) au moyen de fonctions ou procédures Un objet est une entité autonome, qui regroupe un ensemble de propriétés cohérentes et de traitements associés. Un objet est une entité aux frontières précises qui possède une identité (un nom) Un ensemble d'attributs caractérise l'état de l'objet Un ensemble d'opérations (méthodes) en définissent le comportement Un objet est accessible à travers une interface Les objets réagissent à des messages, et en envoient à d autres objets, au travers de leurs interfaces
Exemples d objets Individu Objet1 : Individu Nom = Dupont Prénom = Jean Date de naissance = 16/06/40 Sexe = M Correspondant Objet2 : Correspondant Nom = Dupont Prénom = Jean Adresse = DJ@messagerie.fr
Encapsulation Consiste à masquer les détails d'implémentation d'un objet, en définissant une interface L'interface est la vue externe d'un objet, elle définit les services accessibles (offerts) aux utilisateurs de l'objet On peut modifier l'implémentation des attributs d'un objet sans modifier son interface L'encapsulation garantit l'intégrité des données, car elle permet d'interdire l'accès direct aux attributs des objets
Les messages Message simple dont on ne spécifie aucune caractéristique d'envoi ou de réception particulière Message asynchrone qui n'interrompt pas l'exécution de l'expéditeur. Le message envoyé peut être pris en compte par le récepteur à tout moment ou jamais traité Message synchrone qui bloque l'expéditeur jusqu'à prise en compte du message par le destinataire Le flot de contrôle passe de l'émetteur au récepteur L'émetteur devient passif et le récepteur actif à la prise en compte du message Message dérobant qui n'interrompt pas l'exécution de l'expéditeur Il ne déclenche une opération chez le récepteur que s'il s'est préalablement mis en attente de ce message
Encapsulation et messages Les objets communiquent entre eux par des messages M es Objet Partie visible s a g e s Interface Partie cachée Implémentation
Exemples de Messages Message simple Publicité (papier, radio, télé, Internet, ) Message asynchrone Courrier (poste, répondeur, messagerie, ) Message synchrone Conversation (orale, téléphone, chat, ) Message dérobant Avertissement (alerte, autorisation, )
Qu est-ce qu une classe d objets? Une classe est un type de données abstrait, caractérisé par des propriétés (attributs et méthodes) communes à des objets et permettant de créer des objets possédant ces propriétés Exemple Classe Voiture -Marque -Couleur -Immatriculation +Démarrer() +Conduire() +Arrêter() 206 : Voiture Marque = Peugeot Couleur = Gris Immatriculation = 1024 ZZ 13 Objet : instance de classe
Exemples de classes Les individus -Nom -Prénom -Date de naissance -Sexe +Age() Individu Les correspondants Correspondant -Nom -Prénom -Adresse +RecevoirMessage() +EnvoyerMessage()
Héritage Une classe peut être spécialisée en d'autres classes, afin d'y ajouter des caractéristiques spécifiques ou d'en adapter certaines. Plusieurs classes peuvent être généralisées en une classe qui les factorise, afin de regrouper les caractéristiques communes d'un ensemble de classes. La spécialisation et la généralisation permettent de construire des hiérarchies de classes. L'héritage peut être simple ou multiple L'héritage est un mécanisme de transmission des propriétés d'une classe (ses attributs et méthodes) vers une sous-classe.
Hiérarchie de classes Généralisation Oeuvre -Titre -Auteur Livre Opéra Film Roman BD Spécialisation
Polymorphisme Le polymorphisme représente la faculté d'une méthode à pouvoir s'appliquer à des objets de classes différentes Exemple Véhicule +SeDéplacer() Train Voiture Bateau SeDéplacer( "sur des rails" ) SeDéplacer( "sur la route" ) SeDéplacer( "sur l'eau" )
Covariance La covariance est la propriété d une hiérarchie de classes d avoir des parties isomorphes Exemple Animal Bipède Quadrupède Herbivore Carnivore Herbivore Carnivore
Délégation La délégation permet de rompre le mécanisme d héritage entre classe et sous-classes Exemple Animal Station Nourriture Bipède Quadrupède Herbivore Carnivore
Composition Il s'agit d'une relation entre deux classes, spécifiant que les objets d'une classe sont des composants de l'autre classe Les éléments agrégés font physiquement partie de l agrégat Exemple Corps 1 1 Tête Tronc Membres * 1 Inférieurs Supérieurs
Les associations Les associations décrivent des relations structurelles entre classes d objets Chaque classe possède un rôle explicite ou implicite dans une association Forme générale d une association binaire Classe1 -Rôle1 Association > -Rôle2 Classe2 -Attributs1 -Attributs2 +Méthodes1() * Cardinalités * +Méthodes2()
Cardinalités des associations Les cardinalités possibles sont 0..* (ou *) : zéro ou plusieurs 1..* : au moins un 0..1 : un au plus 1..1 (ou 1) : un et un seul Exemples Médecin 0..* Traite > -Patient 1..* Individu Médecin Est > 0..1 1..1 Individu
Associations n-aires et classes d associations Association n-aire Classe d association Professeur 1..1 Professeur 1..1 Salle 1..1 1..* Etudiant Salle 1..1 1..* Etudiant -Date -HeureDébut -Durée Cours
Spécialisation d une classe d association Une classe d association peut participer au modèle On peut par exemple la spécialiser -Récepteur Facteur Personne 0..* 1..* Courrier Lettre Colis
Relations de dépendance Indiquent une contrainte à respecter au moment d instancier des éléments d un modèle -Parent d'élèves Ecole Sous-ensemble Individu -Délégué
UML Le Langage de Modélisation Objet Unifié
Comment modéliser avec UML? UML est un langage qui permet de représenter des modèles, mais il ne définit pas le processus d'élaboration des modèles Cependant, dans le cadre de la modélisation d'une application informatique, les auteurs d'uml préconisent d'utiliser une démarche itérative et incrémentale guidée par les besoins des utilisateurs du système centrée sur l'architecture logicielle Un processus de développement qui possède ces qualités devrait favoriser la réussite d'un projet
Une démarche itérative et incrémentale Pour modéliser (comprendre et représenter) un système complexe, il vaut mieux s'y prendre en plusieurs fois, en affinant son analyse par étapes Cette démarche devrait aussi s'appliquer au cycle de développement dans son ensemble, en favorisant le prototypage Le but est de mieux maîtriser la part d'inconnu et d'incertitudes qui caractérisent les systèmes complexes
Une démarche guidée par les besoins des utilisateurs Ce sont les utilisateurs qui guident la définition des modèles Le périmètre du système à modéliser est défini par les besoins des utilisateurs Le but du système à modéliser est de répondre aux besoins de ses utilisateurs Les besoins des utilisateurs servent aussi de fil rouge A chaque itération de la phase d'analyse, on clarifie, affine et valide les besoins des utilisateurs A chaque itération de la phase de conception et de réalisation, on veille à la prise en compte des besoins des utilisateurs A chaque itération de la phase de test, on vérifie que les besoins des utilisateurs sont satisfaits
Une démarche centrée sur l'architecture logicielle Définir une architecture avec UML : «4+1» La vue logique modélise les éléments et mécanismes principaux du système La vue des composants identifie les modules qui réalisent (physiquement) les éléments de la vue logique La vue des processus montre la décomposition du système en terme de processus (tâches) et leurs interactions La vue de déploiement décrit les ressources matérielles et la répartition du logiciel dans ces ressources La vue des besoins des utilisateurs ( «cas d utilisation») guide toutes les autres
Vues statiques Modéliser les vues statiques et dynamiques d un système Cas d'utilisation (use cases) Diagrammes de classes Vues dynamiques Diagrammes de collaborations Diagrammes de séquence Il existe d autres diagrammes que nous ne présenterons pas dans le cadre de ce cours (voir la bibliographie dans la dernière diapositive)
Exercice ( fil rouge ) Bar en mode client / serveur serveur Ressources client demande de boisson boisson et informations de service gestion : de la file d'attente des ressources des conflits
Les cas d utilisation Ils identifient les utilisateurs du système (acteurs) et leurs interactions avec le système Ils permettent de structurer les besoins des utilisateurs et les objectifs correspondants d'un système Ils se limitent aux préoccupations "réelles" des utilisateurs ils ne présentent pas de solutions d'implémentation ils ne forment pas un inventaire fonctionnel du système
Exemple de cas d utilisation On ne peut retirer de l'argent que dans la limite du contenu du coffre du distributeur débite Retirer de l'argent Client Ravitailler le coffre Eteindre/allumer le distributeur Agent de maintenance L'agent de maintenance doit eteindre le distributeur avant de ravitailler le coffre
Exercice : cas d utilisation
Les diagrammes de classes Un diagramme de classes fait abstraction des aspects dynamiques et temporels Pour un modèle complexe, plusieurs diagrammes de classes complémentaires doivent être construits On peut par exemple se focaliser sur les classes qui participent à un cas d'utilisation les classes associées dans la réalisation d'un scénario précis la structure hiérarchique d'un ensemble de classes On peut aussi avoir recours aux associations entre classes
Exercice : diagramme de classes
Les diagrammes de collaboration Les diagrammes de collaboration montrent des interactions entre objets Ils permettent de représenter le contexte d'une interaction, car on peut y préciser les états des objets qui interagissent Exemple Décoller (simple) AF-A320 : Avion Etat = a_terre TourDeControle Attérir (dérobant) DA-B737 : Avion Etat = en_vol
Exercice : diagramme de collaboration
Les diagrammes de séquences Les diagrammes de séquences permettent de représenter des collaborations entre objets selon un point de vue temporel on y met l'accent sur la chronologie des envois de messages Les diagrammes de séquences peuvent servir à illustrer des cas d'utilisation L'ordre d'envoi des messages est déterminé par leur position sur l'axe vertical du diagramme le temps s'écoule "de haut en bas" de cet axe
Axe temporel des diagrammes de séquences Objet : Classe Message simple Message asynchrone Temps Message synchrone Créer NouvelObjet : Classe Détruire Message de renvoi Lignes de vie Période d activation
Conditions dans les diagrammes de séquences Objet AutreObjet Message asynchrone Renvoi explicite SI <Condition> Alors Sinon Cas B Cas A
Exercice : diagramme de séquences
Problème On se propose de modéliser avec UML le fonctionnement du cabinet d un médecin généraliste Les cas d utilisation devront mettre en évidence les acteurs et leurs interactions avec le système Si nécessaire, un diagramme de classes présentera les spécificités des entités impliquées Un ou des diagrammes de collaboration préciseront les interactions entre objets et/ou classes Un diagramme de séquences devra montrer les collaborations dans le temps et/ou illustrer des cas d utilisation
Bibliographie Livres Modélisation objet avec UML. P-A Muller, N Gaertner. Eyrolles Exercices corrigés d UML : Génie logiciel. P André, A Vailly. Ellipses Marketing Sites Internet Introduction à la notation UML : http://www.commentcamarche.net/uml/umlintro.php3 UML en français : http://uml.free.fr Introduction to OMG s UML : http://www.omg.org/gettingstarted/what_is_uml.htm