SLAM5-01 UML

Transcription

SLAM5-01 UML
SLAM5
Modélisation UML
me
Com
[email protected] (2016)
a !!!
m
é
n
au ci
Chapitre 1
Présentation rapide
UML : que faire avec ?
UML : que faire avec ?
●
UML est une formalisation d'expression des
besoins
JARVIS : il me faut une diversion de 50 secondes,
Sans toucher de civil, pour que je puisse retirer de l'argent…
… au guichet !
System
Retrait $$$
Utilisateur
Lister les comptes
Pirater le système
IronMan
Planter le système
UML : que faire avec ?
●
UML est une formalisation d'expression des
besoins
Acteur: représenté par un personnage.
Utilisateur
Chaque rôle doit être unique (on ne
représente pas plusieurs clients/users)
System
Système : représente l'entité qui contient
les actions possibles (à programmer)
Association : représente le lien entre un
cas d'utilisation et… un/des acteur(s)
Retrait $$$
Retrait $$$
verif_solde{debit}
Cas d'utilisation : représente une action
du système. Un système peut en avoir
plusieurs. Si deux parties, la 2e concerne
La condition d'utilisation d'une extension.
UML : que faire avec ?
●
UML est une formalisation d'expression des
besoins
Je suis trop génial, merci de me le rappeler : c'est mon
Prof de SLAM5 qui m'a tout appris !
System
Retrait $$$
Utilisateur
Lister les comptes
Pirater le système
Flèche de
Généralisation
(Ironman peut tout
Faire, y compris
Retirer de l'argent)
IronMan
Planter le système
Chapitre 2
Flashback en 1994
UML dans un garage...
●
Entre 1980 et 1994
–
Création de nombreuses méthodes
UML dans un garage...
●
Entre 1994 et 2000
–
UML (Unified Modeling Language) s'impose
UML dans un garage...
●
Entre 1994 et 2000
–
UML (Unified Modeling Language) s'impose
Grady
BOOCH
Expert
des systèmes
en ADA
James
RUMBAUGH
Ivar
JACOBSON
Directeur d'une
équipe orienté
OMT
Spécialiste
des
cas d'utilisations
Tony
STARK
Génie
en IA et en
programmation
UML dans un garage...
●
Entre 1994 et 2000
–
UML s'oppose à l'approche hiérarchique
on ne s'intéresse plus aux blocs fonctionnels (SADT)
mais aux rôles et aux objets.
UML dans un garage...
●
UML 1.4 versus UML 2.0
–
UML 1.4 en 2001 devient UML 2.0 en 2003
UML dans un garage...
●
UML 2.0 en BTS SIO
–
Diagrammes : de classes, de séquences,
d'utilisations
Chapitre 3
Diagrammes des cas d'utilisations
DCU
UML : Diagramme de cas
d'utilisations
●
Décrire séparément chaque cas d'utilisation
–
Acteurs, relations, généralisation, extension,
Un utilisateur peut effectuer un retrait.
inclusion...
Un retrait se fait nécessairement en
System
●
●
Devises
<<include>>
Retrait $$$
devises ou argent.
●
<<include>>
Utilisateur
Argent
●
Lister les comptes
<<extend>>
IronMan
voir solde
●
Pirater le système
●
Remplir distributeur
Planter le système
Mettre à jour le système
Technicien
IronMan peut faire la même chose
qu'un utilisateur (généralisation)
IronMan peut pirater ou planter le
système (Chuck Norris aussi…)
IronMan peut mettre le système à jour,
comme le technicien du système.
IronMan peut lister les comptes (avec
les noms) et optionnellement,
demander le solde correspondant.
UML : Diagramme de cas
d'utilisations
●
Décrire séparément chaque cas d'utilisation
–
Acteurs, relations, généralisation, extension,
Un utilisateur peut effectuer un retrait.
inclusion...
Un retrait se fait nécessairement en
System
●
●
Devises
<<include>>
Retrait $$$
devises ou argent.
Factorisation
●
<<include>>
Utilisateur
Argent
●
Lister les comptes
<<extend>>
IronMan peut faire la même chose
Retrait devises
qu'un utilisateur (généralisation)
Retrait argent
IronMan peut pirater ou planter le
système (Chuck Norris aussi…)
Spécialisation
IronMan peut mettre le système à jour,
voir solde
●
comme
technicien du système.
Variation
caslenormal
IronMan
Pirater le système
●
Remplir distributeur
IronMan peut lister les comptes (avec
les noms) et optionnellement,
demander le solde correspondant.
Généralisation
Planter le système
Hérite des mêmes droits
Mettre à jour le système
Technicien
UML : Diagramme de cas
d'utilisations
●
Décrire séparément chaque cas d'utilisation
–
Un rôle peut-être abstrait (différent de l'instance
Le président ET le général peuvent
acteur)
activer l'arme nucléaire mais ils n'ont
System
●
pas pour autant les mêmes droits :
Président
●
Activer arme nucléaire
C'est le cas 'Activer arme nucléaire' qui
doit accepter les deux rôles.
Général
System
<<abstract>>
déclencheur
●
Activer arme nucléaire
Président
Général
●
Le président ET le général peuvent
activer l'arme nucléaire car héritent du
même droit :
Le président ou le général héritent du
rôle déclencheur. Le cas 'Activer arme
nucléaire' n'accepte que le rôle
'déclencheur'.
UML : Diagramme de cas
d'utilisations
●
Décrire séparément chaque cas d'utilisation
–
Un cas d'utilisation peut généraliser un autre cas
Le voyageur s'enregistre pour un vol.
(rare)
Si une place est disponible
●
System
(réservation) alors il doit payer son
voyage.
un pilote
ne paye pas
son voyage.
●
enregistrement pilote
pilote
<<include>>
enregistrement
voyageur
<<include>>
paiement
Reservation
Le pilote (ou l'enfant né dans un avion)
s'enregistre pour un vol. Si une place
est disponible, son enregistrement est
immédiatement validé.
UML : Diagramme de cas
d'utilisations
●
Décrire séparément chaque cas d'utilisation
–
On utilise la description du client (cahier des
charges) pour formaliser le fonctionnement avec
Vue en 2D/3D ?
voudrais une application avec un
unJepersonnage
DCU.
En 2D, vue de dessus
dans un labyrinthe.
●
●
●
●
●
●
●
Il chercherai des trésors, semés de
partout, un peu comme le petit
Poucet… une sorte de jeu de piste.
Il y aurait des méchants qui
essayeraient de le bloquer : un peu
comme les Daltons, chacun son
caractère mais un teigneux en tout cas.
Parfois le héros pourrait obtenir un
super-pouvoir et détruire les vilains.
Quand le labyrinthe est vide, le joueur
passe au niveau suivant.
●
●
●
Comment se déplace le personnage ?
●
Haut, bas, gauche, droite
Combien de méchants ?
●
4… des spectres
Super-pouvoir dans un lieu du
labyrinthe ? Au bout d'un délai ?
●
Dans les coins du labyrinthe
UML : Diagramme de cas
d'utilisations
●
Décrire séparément chaque cas d'utilisation
–
La mise en forme est faite par la norme UML...
System
bas
<<include>>
<<include>>
se déplacer
<<include>>
<<include>>
haut
gauche
Ennemis
droite
chercher joueur
Joueur
Détruire joueur
Pinky
Obtenir super-pouvoir
Blinky
Inky
Clyde
UML : Diagramme de cas
d'utilisations
●
Décrire séparément chaque cas d'utilisation
–
… le reste, par les développeurs (notamment Tōru
Iwatani)
Chapitre 4
Diagrammes de classes
DCL
UML : Diagramme de classes
●
Utilisation des classes
–
Rappel : qu'est-ce qu'un objet.
Franck = new Vehicule("BMW", 20000, 1053)
Loana = new Vehicule("Smart", 15000, 8912)
...
OBJET = IDENTITÉ
+ ÉTAT
+ COMPORTEMENT
Vehicule
+ marque
# revision
- Compteur
+ getMarque()
+ getRevision()
+ getCompteur()
+ setRevision(int X)
UML : Diagramme de classes
●
Utilisation des classes
–
Classe : nom, propriétés et (opérations/méthodes)
Vehicule
Vehicule
+ marque
# revision
- Compteur
Vehicule
+ marque
# revision
- Compteur
+ getMarque()
+ getRevision()
+ getCompteur()
+ setRevision(int X)
+ signifie public (visible partout)
# signifie protected (sous-classe)
- signifie private (classe uniquement)
Moi, j'ai la classe… ToutCourt !
Parce que… "je suis batman"*
* http://www.howitshouldhaveended.com/
UML : Diagramme de classes
●
Utilisation des classes
–
Classe : écriture concrète
BatMobile :Vehicule
Objet BatMobile
Appartenant
À la classe
Vehicule
BatMobile
+ WayneCorp
# 2000
- 254256
Objet BatMobile
(attributs)
:Vehicule
Objet anonyme
Appartenant
À la classe
Vehicule
UML : Diagramme de classes
●
Décrire les liens entre les objets
–
Classe, associations, multiplicités
Heros
+nom
+pouvoir [0,5]
Association
habillé avec
0..1
1
Costume
+noCape
+noCasque
+capacite
Un héros a obligatoirement un costume.
Un costume appartient à 0 ou 1 héros.
Cape
utilise
1
0..1
+noCape
+couleur
+tissuMatiere
Un costume utilise 0 ou 1 cape.
Une cape n'appartient qu'à un costume.
UML : Diagramme de classes
●
Décrire les liens entre les objets
–
Classe, associations, multiplicités
Heros
+nom
+pouvoir [0,5]
AVEC CAPE
Association
habillé avec
0..1
1
Costume
+noCape
+noCasque
+capacite
Cape
utilise
1
licité
p
i
t
l
u
M
J'ai une cape, pour voler
et me protéger !
… et parce que je suis Batman
Statistiquement, trop de risque
de se prendre les pieds dedans !
0..1
+noCape
+couleur
+tissuMatiere
SANS CAPE
UML : Diagramme de classes
●
Décrire les liens entre les objets
–
Pour améliorer la lisibilité, on peut utiliser une association
fléchée, mais les logiciels ne le permettent pas tous.
Pouvoir
Equipement
-noPouvoir: Integer
+nomPouvoir: String
+idEquipement: integer
+nomEquipement
avoir
0..*
se sert de
0..*
1
Heros
+nomSuper: String
+genre: String
Enrollement
0..1
fait partie de
1
Equipe
+nomTeam: String
+baseSecrete: String
+accepter()
+repudier()
Costume
utilise
1..*
+dateEntree
+dateSortie
0..*
1
+noCape
+noCasque
+capacite
Cape
Possède
+noCape
+couleur
+tissuMatiere
UML : Diagramme de classes
●
Décrire les liens entre les objets
–
L'utilisation d'une classe d'association permet d'ajouter des
informations dans une association existante (lien en
pointillé).
Pouvoir
Equipement
-noPouvoir: Integer
+nomPouvoir: String
+idEquipement: integer
+nomEquipement
avoir
0..*
se sert de
0..*
0..*
1
Heros
+nomSuper: String
+genre: String
Costume
utilise
0..1
1
+noCape
+noCasque
+capacite
Cape
Possède
+noCape
+couleur
+tissuMatiere
1..*
Enrollement
+dateEntree
+dateSortie
fait partie de
1
Equipe
+nomTeam: String
+baseSecrete: String
+accepter()
+repudier()
Un héros peut faire partie d'une équipe, mais il manque des informations
sur les moments.
Ces informations ne font ni partie de Heros, ni d'Equipe.
Le héros peut faire partie de plusieurs équipes dans le temps, mais une
seule à un instant donné.
ARITÉ : nombre d'association concernée (ici, 3)
UML : Diagramme de classes
●
Décrire les liens entre les objets
–
L'utilisation d'une composition ou agrégation indique une
relation temporelle : si la classe composé disparaît, la classe
composante aussi.
1
Agrégation
Un élément "échangeable" mais nécessaire
(par exemple, PC : Agrégat de clavier, souris, écran...)
Composé
Composante
1
Composition
Liée à une appartenance (batterie inamovible)
(la différence avec l'agrégation se voit en programmation)
La classe composante existe car elle a ses propres références !
(par exemple, numéro de série, fabricant, etc.)
UML : Diagramme de classes
●
Décrire les liens entre les objets
–
L'utilisation d'une composition ou agrégation indique une
relation temporelle : si la classe composé disparaît, la classe
composante aussi.
Pouvoir
Equipement
-noPouvoir: Integer
+nomPouvoir: String
+idEquipement: integer
+nomEquipement
avoir
0..*
se sert de
1
Heros
+nomSuper: String
+genre: String
Enrollement
0..1
1
+noCape
+noCasque
+capacite
Cape
1
0..1
contient
+noCape
+couleur
+tissuMatiere
Côté classe composé, la multiplicité doit être de un.
fait partie de
1
Equipe
+nomTeam: String
+baseSecrete: String
+accepter()
+repudier()
Costume
utilise
1..*
+dateEntree
+dateSortie
0..*
0..*
Chapitre 5
Diagrammes de séquences
DSE
UML : Diagramme de séquences
●
Décrire le fonctionnement temporel d'une
application
sd Back to the Future
–
Séquence, interactions, chronologie, messages
Dr Brown
DeLorean
Convecteur Temporel
Temps
1 : voyager temps()
2 : rouler 88 mph()
3 : Activer convecteur()
Quel trip Marty !
4 : Saut temporel()
5 : Modification temps()
6 : ok()
7 : voyage terminé()
Fin

Documents pareils