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