Académique Documents
Professionnel Documents
Culture Documents
- Génie logiciel
• Réutilisabilité : • Intégrité :
aptitude d'un logiciel à être réutilisé, en tout ou en partie, dans de aptitude d'un logiciel à protéger son code et ses données contre des
nouvelles applications. accès non autorisés.
• Compatibilité :
facilité avec laquelle un logiciel peut être combiné avec d'autres • Facilité d'emploi :
logiciels. facilité d'apprentissage, d'utilisation, de préparation des données,
• Efficacité : d'interprétation des erreurs et de rattrapage en cas d'erreur
Utilisation optimale des ressources matérielles. d'utilisation.
• Portabilité :
facilité avec laquelle un logiciel peut être transféré sous différents Remarques :
environnements matériels et logiciels. Ces facteurs sont parfois contradictoires, le choix des compromis
• Vérifiabilité : doit s'effectuer en fonction du contexte.
facilité de préparation des procédures de test.
5 6
Remarque : Les trois premiers exemples sont des modèles que l'on
• Par exemple, les plateformes de modélisation savent maintenant
qualifie de prédictifs (Qui permet de prévoir des faits à partir
exploiter les modèles pour faire de la génération de code (au
d'éléments donnés).
moins au niveau du squelette) voire des allers-retours entre le
Le dernier, plus conceptuel, possède différents niveaux de vues 7 code et le modèle sans perte d'information. 8
comme la plupart des modèles en génie logiciel.
Modélisation, cycles de vie et méthodes Modélisation, cycles de vie et méthodes
- Pourquoi modéliser ? - cycle de vie d'un logiciel
La séquence et la présence de chacune de ces activités dans le cycle • L'inconvénient majeur du modèle de
de vie dépendent du choix d'un modèle de cycle de vie entre le client cycle de vie en cascade est que la
et l'équipe de développement. Le cycle de vie permet de prendre en vérification du bon fonctionnement du
compte, en plus des aspects techniques, l'organisation et les aspects système est réalisée trop tardivement :
lors de la phase d'intégration, ou pire,
humains.
lors de la mise en production.
13 14
Modèles de cycles de vie d'un logiciel Modèles de cycles de vie d'un logiciel
- Modèle en V - Modèle en spirale
19 20
Approche fonctionnelle vs. approche objet Approche fonctionnelle vs. approche objet
- Méthodes fonctionnelles - Approche fonctionnelle
21 22
Approche fonctionnelle vs. approche objet Approche fonctionnelle vs. approche objet
- Approche orientée objet - Approche orientée objet
23 24
Approche fonctionnelle vs. approche objet Approche fonctionnelle vs. approche objet
- Exemple : gestion d'une bibliothèque - Exemple : gestion d'une bibliothèque
• Exemple de découpe fonctionnelle d'un logiciel dédié à la Inconvénients :
gestion d'une bibliothèque. • Maintenance complexe en cas d'évolution.
• Le logiciel est composé d'une hiérarchie de fonctions, qui ensemble, Les fonctions sont interdépendantes : une simple mise à jour du logiciel à
fournissent les services désirés, ainsi que des données qui représentent les
un point donné, peut impacter en cascade une multitude d'autres
éléments manipulés (livres …).
fonctions.
• Une découpe fonctionnelle consiste à factoriser certains comportements
communs du logiciel. Exemple : passage de la gestion d'une bibliothèque à celle d'une médiathèque.
25 26
Approche fonctionnelle vs. approche objet Approche fonctionnelle vs. approche objet
- Exemple : gestion d'une bibliothèque - Exemple : gestion d'une médiathèque
Inconvénients :
• Séparation des données et des traitements. Améliorations :
Faire évoluer une application de gestion de bibliothèque (livre) pour gérer une
• 1ère amélioration : rassembler les valeurs
médiathèque, afin de prendre en compte de nouveaux types d'ouvrages
(cassettes vidéo, CD-ROM, Livre, etc.), nécessite : qui caractérisent un type, dans le type.
• de faire évoluer les structures de données qui sont manipulées par les
fonctions, Une solution relativement élégante à la
• d'adapter les traitements, qui ne manipulaient à l'origine qu'un seul type de multiplication des branches conditionnelles et
document (des livres). des redondances dans le code
(conséquence logique d'une trop grande
Modification : Il faudra par exemple modifier la fonction qui réalise l'édition des ouverture des données), consiste tout
"lettres de rappel" (une lettre de rappel est une mise en demeure, qu'on envoie simplement à centraliser dans les
automatiquement aux personnes qui tardent à rendre un ouvrage emprunté). Si structures de données, les valeurs qui
l'on désire que le délai avant rappel varie selon le type de document emprunté, leurs sont propres.
il faut prévoir une règle de calcul pour
chaque type de document.
27 28
Approche fonctionnelle vs. approche objet Approche fonctionnelle vs. approche objet
- Exemple : gestion d'une médiathèque - Exemple : gestion d'une médiathèque
Améliorations : Avantages AOO :
• Si notre médiathèque devait gérer un
• 2ème amélioration : centraliser les nouveau type d'ouvrage, il suffirait de
traitements associés à un type, auprès du type. modifier une seule fonction, pour assurer la
prise en compte de ce nouveau type de
Rassembler dans une même unité physique les document dans le calcul du délai avant rappel.
types de données et tous les traitements Plus besoin de fouiller partout dans le code...
associés.
29 30
Approche fonctionnelle vs. approche objet Approche fonctionnelle vs. approche objet
- Exemple : gestion d'une médiathèque - Exemple : gestion d'une médiathèque
Avantages AOO : Récapitulons :
• Pour accéder à la caractéristique "délai avant rappel" d'un document, il suffit de Une même unité physique, permet de limiter les points de maintenance dans le
récupérer la valeur correspondante parmi les champs qui décrivent le document. code et facilite l'accès à l'information en cas d'évolution du logiciel.
Pour assurer la prise en compte d'un nouveau type de document dans le calcul du
délai avant rappel, il suffit de modifier une seule fonction, située au même
endroit que la structure de données qui décrit les documents :
Objet : Exemple :
• Un objet est une entité aux frontières précises qui possède une identité
(un nom).
• Un ensemble d'attributs caractérise l'état de l'objet.
• Un ensemble d'opérations (méthodes) en définissent le comportement.
• Un objet est une instance de classe (une occurrence d'un type abstrait).
• Une classe est un type de données abstrait, caractérisé par des
propriétés (attributs et méthodes) communes à des objets et permettant
de créer des objets possédant ces propriétés.
33 34
Encapsulation : Héritage :
• Consiste à masquer les détails d'implémentation d'un objet, en • L'héritage est un mécanisme de transmission des propriétés d'une
définissant une interface. classe (ses attributs et méthodes) vers une sous-classe.
• L'interface est la vue externe d'un objet, elle définit les services • Une classe peut être spécialisée en d'autres classes, afin d'y ajouter
accessibles (offerts) aux utilisateurs de l'objet. des caractéristiques spécifiques ou d'en adapter certaines.
• L'encapsulation facilite l'évolution d'une application car elle stabilise • Plusieurs classes peuvent être généralisées en une classe qui les
l'utilisation des objets : on peut modifier l'implémentation des attributs factorise, afin de regrouper les caractéristiques communes d'un
d'un objet sans modifier son interface. ensemble de classes.
• L'encapsulation garantit l'intégrité des données, car elle permet • La spécialisation et la généralisation permettent de construire des
d'interdire, ou de restreindre, l'accès direct aux attributs des objets hiérarchies de classes. L'héritage peut être simple ou multiple.
(utilisation d'accesseurs). Les accesseurs (getter) sont des méthodes • L'héritage évite la duplication et encourage la réutilisation.
publics permettent d'accéder aux champs d'ordre privé.
35 36
Approche orientée objet Approche orientée objet
Objet - Concepts Objet - Concepts
37 38
Remarque :
Les langages orientés objet fournissent de nombreux autres
mécanismes qui affinent ces concepts de base, favorisent la
généricité du code ou améliorent sa robustesse.
39 40
Présentation – UML
Sommaire
• Genèse d’UML
• UML est une notation
Conception Orientée Objet • UML n’est pas une méthode
• Les niveaux de modélisation
• Les axes de modélisation
• Les diagrammes UML
42
• Niveau « Système »
• UML n’est pas une méthode, ce n’est qu’une notation – recadrage contextuel du système dans son environnement et
– attente de la part des utilisateurs d’une normalisation du formalisme. détermination des interactions avec les utilisateurs.
– définir un processus de développement logiciel universel est illusoire. – modélisation de l’architecture des processus.
– modélisation de l’architecture d’implémentation.
• UML est indépendant de toute démarche – modélisation de l’architecture de déploiement.
– ce qui en fait un langage universel.
– mais favorise la mise en œuvre d’un processus itératif et • Niveau « Sous Système »
incrémental, fondé sur les cas d’utilisation et centré sur l’architecture. – décomposition structurelle hiérarchique du système.
• Niveau « Entité »
– modélisation détaillée au niveau de l’objet.
47 48
Les diagrammes proposés par
Plusieurs axes de modélisation
UML
Sommaire
• Introduction
• Objectifs
UML • Cas d’utilisation
(Cas d’utilisation) • Acteur
• Diagramme de cas d’utilisation
• Dépendances entre cas d’utilisation
Unified Modeling Language
• Scénario
52
Cas d’utilisation (Use Cases) Cas d’utilisation (Use Cases)
Objectifs
• Début des années 90, Ivar Jacobson invente la méthode OOSE • Définir les besoins fonctionnels du système :
(Object-Oriented Software Engineering) chez Ericsson. Les cas d’utilisation ont pour principal objectif la capture des
fonctionnalités couvertes par le système
• Adaptation de la méthode au BPR (Business Process
Reengineering). • Définir le périmètre fonctionnel du système :
Les cas d’utilisation permettent de définir les frontières du
• 1996, Jacobson rejoint Rumbaugh et Booch donnant ainsi système avec son environnement
naissance à UML 0.9.
• Définir le dialogue entre l’utilisateur et le système :
Les cas d’utilisation recensent comment l’utilisateur interagit
• Cas d’utilisation est la traduction française de Use case.
avec le système
53 54
Retirer argent
55 56
Cas d’utilisation Cas d’utilisation
(Définition) (Notation)
57 58
59 60
Acteur
Acteur
(Définition)
Acteur
Comment déterminer les acteurs
(Notation)
65 66
Banquier
67 68
Dépendance d’utilisation Dépendance d’utilisation
69 70
exécutables
Ouvrir compte
chèque Ouvrir compte
épargne
75 76
Recommandations Recommandations (suite)
• Ne pas confondre cas d’utilisation et scénario • Lorsque le système est complexe, il n’est pas anormal d’avoir
– Chaque cas d’utilisation correspond à un objectif d’un acteur vis à de nombreux cas d’utilisation. Il faut alors les classer et les
vis du système rassembler dans des bibliothèques de cas d’utilisation
– Un scénario décrit le déroulement d’un cas d’utilisation – on définit pour cela des paquetages (notion abordée dans ce
cours)
– Ne pas oublier les scénarios correspondant aux principaux cas
d’échec du cas d’utilisation (mot de passe invalide, carte de crédit
invalide, article du catalogue indisponible ou en nombre • Lorsque le système est complexe, les cas d’utilisation peuvent
insuffisant…) s’emboîter les uns dans les autres. Veiller à ne pas mélanger un
cas d’utilisation « générale » (exemple : prendre une
• Ne décrire que les principaux cas d’utilisation du système commande) avec des cas d’utilisation plus fins (exemple :
choisir son mode de paiement)
Un cas d’utilisation doit contenir une quantité « appréciable et
tangible » de travail – Utiliser les relations de dépendance entre cas (notamment les
include)
Recommandations (suite)
79
Sommaire Diagramme de classes
• Introduction
• Apport en grande partie de la méthode OMT (Rumbaugh).
• Objectifs
• Diagramme de classes
• Classe (Nom, attribut, opération) • S’apparente à un diagramme entité-association (MERISE). Il
• Visibilité et portée des constituants d’une classe présente les différents objets (classes) du système ainsi que les
• Association (Nom, rôles) liens entre ces objets (associations).
• Association réflexive
• Navigabilité d’une association • Diagramme le plus important dans une modélisation objet.
• Contraintes sur association
• Qualificateur d’une association
• Classe associative
• Types d’association (Agrégation, composition, généralisation /
spécialisation)
• Classe et opération abstraites
81 82
• Déterminer les données qui seront manipulées par le système. • Poser les fondements stables régissant la totalité de
Ces données sont organisées en classes. l’architecture du système.
Ce modèle est le garant du respect du paradigme objet.
• Donner la structure statique de ces données.
Ce diagramme permet de décrire la structure interne de
chacune des classes. • Faire abstraction (exclure) des aspects temporels et
dynamiques de la modélisation.
• Représenter les relations statiques existant entre les Seul l’aspect statique compte, la dynamique est prise en
différentes données du système. charge par d’autres modèles.
La navigation parmi les classes est rendue possible par
l’existence d’associations qui les unissent.
83 84
Diagramme de classes Diagramme de classes
(Définition) Exemple
Classe
Classe
(Définition)
89 90
Opération de la classe
Exemple de classe
Recommandations pour trouver les opérations
Compte
numero
solde
Association
Association
(Définition)
Abstraction Abstraction
• Ces liens entre objets se traduisent au niveau des classes par
des associations
Notation
• Le nom de l’association est
facultatif
Client achète Voiture
Client achète Voiture
Les personnes lauréates d’un prix sont obligatoirement choisies parmi celles qui
sont nominées pour ce prix
109 110
• Ce type de contrainte permet de modéliser le cas où pour une • Ce type de contrainte permet de modéliser le cas où pour une
instance donnée, l’ensemble des instances avec lesquelles elle est instance donnée d’une classe, une seule association prise parmi
en relation doit être ordonné plusieurs possibles, peut être valide à un instant donné
• Exemple: course et athlète.
Notation Notation
{Ordonné}
0..* 0..6 employé 0..*
Grand prix est dans Pilote Société Personne
les points {Ou - exclusif}
employeur
Lors d’un grand prix au maximum 6 pilotes peuvent être dans les points Une personne peut être soit employée par une société, soit employeur
d’une société
Ces 6 pilotes sont classés à l’arrivée
111 Mais une personne ne peut pas être à la fois employeur et employé 112
Qualificateur d’une association Qualificateur d’association
Exemples
Notation 0..1
Université numéro Salle
possède
Notation
• Une association peut être
matérialisée par une classe
dans une des circonstances Classe A Classe B
0..* Compte
Personne suivantes :
possède bancaire – si l’association est
porteuse d’attributs
Une personne possède de zéro à plusieurs compte(s) bancaire(s)
– si l’association se
Un compte bancaire appartient à une et une seule personne
matérialise par un objet Classe associative
concret dans le monde
réel
0..1
– si l’association est de
possède Compte multiplicité M .. N Exemple :
Personne agence
bancaire • Une classe associative est
une classe à part entière
Une personne possède de zéro à plusieurs compte(s) bancaire(s) par agence • Elle est modélisée par un lien
Un compte bancaire appartient à une et une seule personne en pointillé allant de la classe
vers l’association concernée
115 116
Classe associative Les différents types d’association
Exemples
• L’agrégation
Forme spéciale d’association entre un tout et une partie
• La composition
Forme spéciale d’agrégation où le cycle de vie de la partie est régi par
celui du tout
• L’héritage
Forme spéciale d’association permettant de factoriser les
caractéristiques et comportement communs à un ensemble de classes
• L’association simple
Ce sont les associations qui ne se réclament d’aucune des catégories
précédemment citées
117 118
Agrégation Agrégation
étudie
Personne Université - L'agrégation se modélise par un losange côté agrégat.
1..* 0..* - Une configuration comporte un clavier - ou aucun -, un écran - ou aucun - , et
éventuellement plusieurs disques
- L'agrégation traduit une relation d'appartenance de l'agrégé dans l'agrégat; elle
Une personne peut étudier dans aucune à plusieurs universités
n'induit aucune valeur de multiplicité particulière.
Une université peut accueillir de une à plusieurs personnes 119 - La disparition d'une configuration n'entraîne pas la disparition des périphériques. 120
Agrégation Composition
- Bien sûr nous aurons très souvent une cardinalité 1..1 ou 0..1 côté agrégat.
possède 1..*
- L'appartenance est dite faible car l'agrégé pourra participer à d'autres agrégats et Université Salle
son cycle de vie n'est pas subordonné à celui de son agrégat.
121 Une salle n’appartient qu’à une et une seule université 122
Composition Composition
Remarque :
• La généralisation /
spécialisation est une relation Notation
• Attention : on parle très souvent de composition pour désigner de classification entre une
une simple association entre deux classes. Cela se traduit par classe plus générale et une
l’existence d’un attribut qui référence une (des) instance(s) classe plus spécialisée Super-classe
d’une autre classe.
• On l’appelle aussi relation Spécialisation
d’héritage ou relation « est-
une-sorte-de » Généralisation
*
Personne Compte • La généralisation est
représentée au moyen d’une Sous-classe
flèche pointant de la classe la
Une personne possède des comptes mais n’est pas composée de comptes
plus spécialisée vers la
classe la plus générale
125 126
• La spécialisation d’une
super-classe peut avoir lieu Il est possible d’exprimer deux types de contraintes prédéfinies
selon différents critères sur les sous-classes d’une généralisation :
simultanés.
Personne
• La contrainte de complétude
• Chacun de ces critères est
représenté par une chaîne sexe travail Précise l’état d’avancement de la classification proposée par la
de caractères et s’appelle généralisation / spécialisation.
un discriminant.
homme femme Etudiant Employé
• La contrainte de chevauchement
• Le discriminant est Contrainte ensembliste sur les instances de la sous-classe vis-
positionné à côté de la à-vis des instances de la super-classe.
sous-arborescence qu’il
qualifie.
129 130
• La contrainte de
chevauchement apporte des
• La contrainte de complétude Personne Personne
précisions sur la nature des
permet d’indiquer si la
instances de la super-classe
généralisation peut être
{complète} {disjoint}
étendue ou non
• {disjoint} indique que
Homme Femme l’ensemble des instances des Homme Femme
• {complète} indique que l’on
sous-classes forment une
ne peut plus ajouter de classe
partition de la super-classe
à l’arborescence
Mammifère Véhicule
• {chevauchement} indique
• {incomplète} indique que
qu’il peut exister des
l’arborescence peut être {incomplète} {chevauchement}
instances qui soient à la fois
complétée ultérieurement
instance de deux sous-
Chien Chat Loup classes Terrestre Marin
131 132
Diagramme de classes Diagramme de classes
(Recommandations) (Recommandations)
• Toujours garder à l’esprit qu’un diagramme de classe propose • Dans la mesure du possible, éviter les discriminants dans les
une vision statique des données du problème. associations de type généralisation / spécialisation
• Les associations d’un diagramme de classes sont statiques, • Eviter l’utilisation des contraintes de chevauchement dans les
mais la création des liens entre objets est dynamique. associations de type généralisation / spécialisation
133 134
Sommaire
• Introduction
UML • Diagrammes d’interaction
• Interaction
(Diagramme d’objets, • Types de message
• Objectifs du diagramme de collaboration
Diagrammes d’interaction) • Diagramme de collaboration
• Objectifs du diagramme de séquence
Unified Modeling Language • Diagramme de séquence (branchement conditionnel, contraintes
temporelles)
• Objectifs du diagramme d’objets
• Diagramme d’objets
• Objet
• Objet composite
136
Diagrammes d’objets et
d’interaction
• S’appuient sur un diagramme de classe. Ils présentent les 1 – Les diagrammes d’interaction
relations et les interactions intervenant entre certains objets du
système.
137
Interaction
Diagrammes d’interaction
(Définition)
139 140
Les types de message
141
1 : effectuerVirement
2 : débiter
• Préciser l’ordre dans lequel les interactions interviennent
sans avoir recours au temps. 3 : Créditer
MonCompteCourant:CompteCourant
MonCompteEpargne:CompteEpargne
143 144
Diagramme de séquence
Objectifs
1.2 – Le diagramme de séquence • Montrer explicitement les interactions pouvant intervenir entre
des objets
146
• Représentation chronologique des envois de messages entre objets. • Certains messages ont une
• Possibilité d’exprimer de façon précise les contraintes temporelles signification bien précise : Notation
grâce à un axe gradué.
• Un élément extérieur au système, comme un acteur, peut figurer dans – Message « Créer »
un diagramme de séquence. message ayant pour nom : Classe1
« Créer », demandant la création
d’une instance. Créer
– Message d’activation : Classe2
: Client : ServeurWeb : Cuisinier message de nom quelconque qui
déclenche une bande d’activité
Afficher carte Message activation
chez une instance.
Passer cde – Message « Détruire »
Décrire cde message ayant pour nom
Réaliser plat « Détruire » demandant la Détruire
destruction d’une instance.
Donner • Une instance détruite voit sa
Envoyer message disponibilité bande d’activité s’achever par un
croix
149 150
151 152
Les fragments combinés Les fragments combinés
153 154
Le diagramme de séquences
Fragment Alt, Loop et ref
à ajouter • Loop : L'opérateur "Loop" (boucle) est utilisé pour décrire un
ensemble d'interaction qui s'exécutent en boucle. En général, une
contrainte appelée garde indique le nombre de répétitions (minimum
et maximum) ou bien une condition booléenne à respecter.
else
156
Le diagramme de séquences
Fragment Alt, Loop et ref
à ajouter
159
Les fragments combinés
Le diagramme de séquences
Fragment Alt, Loop et ref
à ajouter • Opt : L'opérateur "opt" désigne un fragment combiné optionnel
comme son nom l'indique. Il représente un comportement qui peut se
produire ou pas. Un fragment optionnel est équivalent à un fragment
"alt" qui ne posséderait pas d'opérande else (qui n'aurait qu'une seule
branche). Un fragment optionnel est donc une sorte de SI...ALORS.
162
163 164
Les fragments combinés
2 – Le diagramme d’objet
165
Diagramme d’objets
Diagramme d’objets
(Définition)
• Faciliter la validation d’un diagramme de classes complexe en • Un diagramme d’objets est un graphe représentant des
présentant une ou plusieurs instanciation de celui-ci instances de classe liées entre elles statiquement
• Visualiser un instantané de l’état d’un système • Un diagramme d’objet est conforme au diagramme de classes
qu’il illustre (vérifie les contraintes)
169 170
Diagramme de classes
• Le diagramme d’objets ne doit être utilisé que pour clarifier
possède 1..* certaines structures complexes apparaissant sur un
Université Salle diagramme de classes
173 174
175
Sommaire Diagramme états-transitions
Diagramme états-transitions
Diagramme états-transitions
(Définition)
Objectifs
Le diagramme états-transitions est un automate à
• Définir les circonstances permettant le déclenchement des
traitements.
états finis décrivant les différents états par lesquels
Certains traitements sont tributaires de la survenue d’événements
passe une instance quelconque d’une classe
dans le système. en réponse à des événements
• Le diagramme états-transitions ne présente que les états significatifs
• Représenter les interactions asynchrones au sein du système. pour le problème posé
L’appel synchrone de fonctionnalité n’est pas toujours un moyen de
communication satisfaisant, en particulier pour les applications • Il ne montre que les transitions autorisées entre les différents états
de l’objet
industrielles ou temps-réel.
• Il donne des précisions sur les événements déclencheurs des
• Déterminer les états stables par lesquels passe le système. transitions
Parmi l’infinité d’états caractérisant un système, seuls quelques uns
• Il indique les traitements effectués par l’objet lorsqu’une transition est
sont significatifs pour le problème donné.
effectuée
179 180
Diagramme états-transitions Diagramme d’états-transitions
Exemple
181 182
normale repeinte
183 184
Comment trouver les états Etat d ’un objet
significatifs d’un objet (Notation)
187 188
Les différents types d’événement Signal émis par un objet
Une garde sur une transition est une condition booléenne Une action sur une transition est un traitement atomique
optionnelle qui doit être vérifiée pour que la transition exécuté lorsque la transition est déclenchée
puisse être déclenchée lors de la survenue de l’événement
• Une action peut comporter
• A la différence de l’événement sur condition, la garde est évaluée une - Des appels à des opérations de l’objet
seule fois (à la survenue de l’événement) - Des créations et destructions d’autres instances
- Des envois de signaux vers des objets (y compris lui-même)
• La garde est exprimée sous la forme d’un texte entre [ crochets ]
• Une action ne peut pas être interrompue par un événement et
s’accomplit totalement contrairement à une activité
Notation
60ème anniversaire [ a cotisé ] / Faire un pot()
60ème anniversaire [ a cotisé ] Salarié Retraité
Salarié Retraité
Mouvement détecté / Send(Problème) à Central
vigilance En alerte
193 194
• Une transition peut avoir pour état source et état cible un seul et Une action d’état est un traitement interne atomique
même état
associé à un état et dont les conditions de déclenchement
On parle alors de transition réflexive ou auto-transition
sont liées soit à la survenue d’un événement,
soit à l’entrée ou à la sortie de l’état
• Ce type de transition est utile lorsque l’on souhaite exécuter une
action tout en revenant dans le même état Un état peut comporter :
• Une action en entrée
A chaque fois que l’objet entre dans l’état, l’action est exécutée
Bouton « off » pressé Tic horloge / Emettre bip()
Notation • Un action en sortie
A chaque fois que l’objet sort de l’état, l’action est exécutée
Arrêt En marche
• Plusieurs actions internes sur événement
A chaque fois qu’un événement défini survient, une transition interne
est déclenchée et l’action associée est exécutée
Bouton « on » pressé 195 196
Actions d’un état Activité d’un état
(Notation) (Définition)
• Les actions en entrée et en sortie • Chaque action composant l’activité est atomique (non interruptible
permettent de factoriser des et s’exécutant totalement)
NomEtat
traitements à effectuer
Elles sont précédées des mot-clés Entry / Action entrée • Par contre, la séquence est interruptible par un événement
« Entry » ou « Exit » Exit / Action sortie quelconque intervenant entre deux actions
Evénement1 / Action1
• Une transition interne n’a pas les • Une activité peut s’exécuter indéfiniment dans un état ou bien
EvénementN / ActionN
mêmes effets qu’une transition s’achever d’elle-même ou bout d’un certain temps
réflexive
• Après interruption consécutive à un événement, l’activité
redémarre si l’objet est resté dans le même état
197 198
préparerCafé()
9h / préparerCafé()
• L’activité se déclenche une débrancherRépondeur()
fois que l’objet se retrouve travailler()
NomEtat
dans l’état associé à celle-ci Au bureau répondreTéléphone()
Entry / Action entrée travailler ()
Entry / débrancherRépondeur() ouvrirPorte()
• Si l’état possède une action en Exit / Action sortie
Exit / brancherRépondeur() travailler ()
entrée, celle-ci sera déclenchée Evénement1 / Action1 12h / manger()
brancherRépondeur()
avant que ne démarre l’activité téléphoneSonne / répondreTéléphone()
EvénementN / ActionN manger()
sonneriePorte / ouvrirPorte()
Do / Activité débrancherRépondeur()
• La survenue d’un événement Do / travailler() travailler ()
sur action interne interrompt répondreTéléphone()
l’activité le temps du 18h / prendrePain() travailler ()
traitement de l’action interne brancherRépondeur()
prendrePain()
199 200
Transition automatique Exemple de diagramme états-transitions
[tousArticlesVérifiés&& ArticleReçu()
ArticlesManquants] livraison()
[tousArticlesDisponibles]
incident EnAttente
annulation()
Livré
Alerte ArticleReçu()
Repos [ResteArticlePasdeStock] annulation()
do / émettre_alarme()
Annulé
Exercice Contrat Page. 8/15
[ incident non résolu ] [ incident résolu ]
201 Tourniquet badge et ticket
Exercice état transition corréction .docx
203 204
Sous-états séquentiels Sous-états séquentiels
207 208
Sous-états séquentiels
Sous-états concurrents
Exemple
effectué effectuée
Installation Inspection
• Un état final dans une région Projet études Soutenance fondations travaux
Diagramme d’activités
216
Le but du diagramme d’activité Diagrammes d’activités
• Diagramme d’activité est utilisé pour : • Un diagramme d’activités peut être utilisé pour décrire une
– Modéliser un workflow dans un use case ou entre fonctionnalité induisant un flot de contrôle traversant le système.
plusieurs use cases. En particulier, il est une alternative aux diagrammes d’interaction
pour la description d’un cas d’utilisation.
– Spécifier une opération (décrire la logique d’une
opération).
• Un diagramme d’activités peut être utilisé pour décrire avec
• Le diagramme d’activité est le plus approprié pour précision le contenu d’une opération d’une classe.
modéliser la dynamique d’une tâche, d’un use case
lorsque le diagramme de classe n’est pas encore
stabilisé. • Un diagramme d’activités peut être utilisé pour décrire avec
précision une activité incluse dans un diagramme états-
transitions.
217 218
Diagrammes d’activités
Diagramme d’activité
(Définition)
219 220
Diagramme d’activité Diagramme d’activité
•Etat de départ
•Etat de terminaison
•Transition
•Transition Alternative
Synchronisation
[ ]
disjonctive et
[ ]
conjonctive
221 222
Diagramme d’activités
Diagramme d’activités
Exemple
223 224
Diagramme d’activité Diagramme d’activité
Swimlanes
Itération
225 226
3. Ajouter les activités : Si vous modélisez un use case, • Ne pas utiliser le diagramme d’activités si l’on souhaite
introduisez une activité pour chaque use case principal. Si vous modéliser des interactions asynchrones entre objets.
modélisez un « workflow », introduisez une activité pour chaque
processus principal, souvent un use case. Enfin, si vous
modélisez une méthode, il est souvent nécessaire d’avoir une • Préférer le diagramme d’activités à un diagramme d’interaction
activité pour chaque grand étape de la méthode. pour décrire un cas d’utilisation purement algorithmique (cas
des batchs).
4. Ajouter des transitions (séquentielles), des transitions
alternatives (conditionelles), des synchronisations entre des
activités, des itérations. • Privilégier l’utilisation d’un pseudo-code pour décrire les
algorithmes trop imposants.
5. Identifier des swimlanes et répartir des activités identifiées dans
ces swimlanes. 229 230
Sommaire
• Introduction
UML • Objectifs du diagramme de composants
(Diagramme de composants, • Diagramme de composants
• Composant
Diagramme de déploiement) • Interface
• Objectifs du diagramme de déploiement
Unified Modeling Language
• Diagramme de déploiement
• Nœud
• Connexion
• Instance de nœud
232
Diagrammes de composants et de
Diagramme de composants
déploiement
• L’utilisation d’un diagramme de composants n’est envisageable • Visualiser l’organisation physique générale d’un système
que pour de petites applications ce qui en fait un modèle très décrite en terme de composants logiciels
peu utilisé
• Présenter les dépendances unissant les différents constituants
• Le diagramme de déploiement est en général utilisé en phase logiciels du système
de Conception générale où il permet de décrire l’architecture
technique générale • Etablir les différentes configurations liant les éléments
physiques logiciels du système
233 234
Compte.h
• Un diagramme de composants propose une vision statique de
{version=2.2}
l’organisation des éléments physiques logiciels du système
Banque.cpp
{version=3.1}
• Un diagramme de composants montre les dépendances
existant entre les composants physiques logiciels du système
Client.h Entreprise.h
{version=1.0} {version=1.2}
• Un diagramme de composants ne montre pas les interactions
entre les composants physiques logiciels
235 236
Composant Composant
(Définition) (Notation)
Client.java Compte.java
• L’interface contient les opérations mises à la disposition des
autres composants
GestionCompt
e
• Un composant peut implémenter plusieurs interfaces
Client.java << Interface >> Compte.java
GestionCompt
e
• Un composant se doit de proposer une implémentation pour
Ouvrir(int)
chacune de ses interfaces Déposer(int)
239 Retirer(int) 240
Diagramme de déploiement
Diagramme de déploiement
(Définition)
• Etablir la nature des connexions reliant les éléments matériels • Un diagramme de déploiement montre les associations
du système (connexions) existant entre les nœuds du système
• Un nœud est représenté par Une connexion est une connexion physique
un cube Notation
reliant deux nœuds entre-eux
• Le nom du nœud peut être
précédé du nom du • Une connexion entre deux nœuds est l’équivalent d’une
paquetage qui le contient << Stéréotype >> association entre deux classes sur un diagramme de classes
Nom paquetage :: Nom nœud
• Il est possible de développer • Exemples de connexion :
le nœud de façon à faire Nom attribut 1: type1
– une connexion Ethernet,
apparaître le nom de ses Nom attribut N : typeN – une ligne série,
attributs
– un bus partagé,
Déploie – …
• Il est possible de développer
le nœud de façon à faire Nom Composant 1
apparaître le nom des Nom Composant N
composants qu’il déploie
245 246
Diagrammes de composants et de
Instance de nœud
déploiement
(Notation)
(Recommandations)
• On peut représenter des Notation • Le diagramme de composants peut s’avérer très difficile
instances de nœuds dans un d’utilisation pour un logiciel complexe. Lui préférer alors une
diagramme de déploiement description textuelle de l’architecture des composants
« objet »
<< Stéréotype >>
• Le diagramme de déploiement est indispensable en phase de
• Une instance de nœud est Nom instance :: Nom nœud
représenté par un cube Conception générale. Il n’est pas assez utilisé…
Nom attribut 1 = valeur1
• Le nom de l’instance d’un • A la différence des diagrammes de classe et d’objets, il peut
Nom Composant N = valeurN
nœud est composé d’un être intéressant de mélanger nœuds et instances de nœud
identifiant de l’instance suivi sur une diagramme de déploiement
du nom du nœud Déploie
Nom Composant 1
• Les attributs de l’instance Nom Composant N
apparaissent valorisés
247 248
Sommaire
• Introduction
• Objectifs
UML • Paquetage
(Paquetage) • Espace de nommage d’un paquetage
• Dépendances entre paquetages
250
Paquetage Paquetage
Objectifs
• Notion introduite véritablement par UML car superficiellement • Décomposer un système complexe selon une organisation
décrite par OMT (module, sheet) et par Booch (subsystem ) hiérarchique
La meilleure façon d’aborder les gros systèmes consiste à les
• Le paquetage est uniquement un élément d’organisation et n’a décomposer en sous-systèmes élémentaires
pas de réalité concrète dans le système physique final
• Structurer un système complexe selon une organisation
• Notion fondamentale pour la gestion de gros systèmes modulaire
nécessitant la mise en place d’une organisation hiérarchique Le paquetage permet de mettre en œuvre un découpage en
et répartie couches, soit à base d’interfaces client/serveur, soit selon les
différentes vues architecturales du système
251 252
Paquetage
Paquetage
(Définition)
Objectifs (suite)
Un paquetage est un regroupement d’éléments
• Répartir l’effort de modélisation sur l’ensemble des acteurs de modélisation
impliqués dans la construction du système
Un gros système nécessite la participation de nombreux
intervenants sur lesquels il faut répartir la charge de travail • Un paquetage permet de regrouper sous une même appellation
un ensemble d’éléments de modélisation UML tels que :
• Répartir les tâches de modélisation selon les compétences – des classes, des composants, des nœuds, des collaborations, des
de chacun cas d’utilisation, …
Le paquetage favorise la mise en place d’une organisation où – des diagrammes de classes, de collaboration, de séquence, de cas
l’on attribue à chaque intervenant une unité de travail répondant d’utilisation, …
à ses compétences – d’autres paquetages
253 254
Paquetage
Paquetage
Exemple
257 258
261
• Introduction
• Objectifs
• Les mécanismes d’extension sont essentiels car ce sont eux
• Note
qui garantissent l’ouverture du langage et son adaptabilité à
• Stéréotype de nouvelles problématiques
• Etiquette
• Contrainte • Mécanismes à utiliser avec précaution et parcimonie à ne
• Extensions standard mettre entre les mains que des responsables méthodes
• Invariant, pré-condition, post-condition
• OCL
263 264
Mécanismes d’extension d’UML Mécanismes d’extension d’UML
267 268
Stéréotype Etiquette
(Définition) (Définition)
Un stéréotype est une chaîne de caractères Une étiquette est une chaîne de caractères
qui associée à un élément UML existant qui associée à un élément UML permet
permet de désigner un nouveau type d’élément UML de lui ajouter une propriété et sa valeur associée
• Un stéréotype apparaît entre « guillemets » près du nom de l’élément • L’étiquette apparaît entre {accolades} et précise le nom de la propriété et
stéréotypé sa valeur
• On peut représenter un stéréotype au moyen d’une nouvelle icône • Utiles pour la génération de code ou la gestion de configuration
<<Métier>> <<Technique>>
Client Connexion BD Utilisateur
Une représentation
textuelle et une
représentation graphique nom { persist = Oui } Serveur
d’une classe stéréotypée
{ processeurs = 4 }
Client prénom { persist = Oui }
durée connexion { persist = Non } Gestion utilisateurs
{ version = 2.1 }
<<Sous-système>>
Gestion utilisateurs
269 270
Une contrainte est une chaîne de caractères • Il existe 3 contraintes standard stéréotypées méritant d’être
qui associée à un élément UML permet d’ajouter citées ci :
de nouvelles règles ou de modifier des règles existantes
– La contrainte stéréotypée « invariant »
• La contrainte apparaît entre {accolades} et définit la règle à appliquer Il s’agit d’une contrainte attachée à un ensemble de classes ou de
• On peut utiliser du texte informel ou recourir à l’utilisation d’un langage plus relations et dont la condition associée doit toujours être vérifiée
précis comme OCL (Object Constraint Language) dans le temps par les instances ou les liens des éléments attachés
– La contrainte stéréotypée « pré-condition »
{ dont un compte
chèque } Il s’agit d’une contrainte attachée à une opération d’une classe et
Utilisateur * Compte Employé dont la condition doit être vérifiée pour que l’opération puisse être
parrainé
invoquée
type ancienneté
*
– La contrainte stéréotypée « post-condition »
* Il s’agit d’une contrainte attachée à une opération d’une classe et
parrain
dont la condition doit être vérifiée après l’invocation de l’opération
{ sécurisé }
Client Serveur
{ self.parrain.ancienneté > 1an }
271 272
Object Constraint Language Object Constraint Language
• OCL est un langage formel pour exprimer des contraintes OCL est utilisé pour
• OCL est un langage facile à lire et à écrire
• OCL n’est pas un langage de programmation • Spécifier des contraintes générales sur les classes, les
– Pas de logique de programme associations et les opérations
– Ne sert pas à décrire des flots de contrôle • Spécifier des invariants sur les classes et les associations
• OCL est un langage d’évaluation d’expression • Spécifier des pré / post conditions sur les opérations
– Une expression retourne une valeur qui n’est pas nécessairement • Décrire des gardes
booléenne
• Naviguer dans les diagrammes
• OCL est un langage typé
– Integer, Real, Boolean, String, Enumeration, Collection, Set, Bag
273 274
• Context Personne
• On associe à une expression OCL Personne inv : self.ancienneté > 0
un contexte d’application, soit
avec un lien de dépendance, soit • Context Personne::setPrimeAncienneté()
en utilisant le mot-clé « Context » post : self.ancienneté > 1 AND result = self.ancienneté * 1500
1..*
{ Context Personne inv : employé
self.âge > 18 } Société Personne
ancienneté {Ou - exclusif} auChômage
setPrimeAncienneté()
275 employeur 276
UML
(Les patrons de conception)
Unified Modeling Language