Un
diagramme de cas d'utilisation est une représentation visuelle utilisée en ingénierie logicielle pour décrire les interactions entre les
acteurs du système et le
système lui-même. Il capture le comportement dynamique d'un système en illustrant ses
cas d'utilisation et les rôles qui interagissent avec eux. Ces diagrammes sont essentiels pour spécifier les
exigences fonctionnelles du système et comprendre comment les utilisateurs interagiront avec le système. En fournissant une vue de haut niveau, les diagrammes de cas d'utilisation aident les parties prenantes à comprendre la fonctionnalité du système et sa valeur potentielle.
PlantUML offre une approche unique pour créer des diagrammes de cas d'utilisation grâce à son langage textuel. L'un des principaux avantages de l'utilisation de PlantUML est sa
simplicité et son efficacité. Au lieu de dessiner manuellement des formes et des connexions, les utilisateurs peuvent définir leurs diagrammes à l'aide de descriptions textuelles intuitives et concises. Cela permet non seulement d'accélérer le processus de création des diagrammes, mais aussi d'en assurer la
cohérence et la précision. La capacité à s'intégrer à diverses plateformes de documentation et sa large gamme de formats de sortie supportés font de PlantUML un outil polyvalent pour les développeurs comme pour les non-développeurs. Enfin, comme il s'agit d'un
logiciel libre, PlantUML peut se vanter d'avoir une
forte communauté qui contribue continuellement à son amélioration et offre une richesse de ressources pour les utilisateurs à tous les niveaux.
Les cas d'utilisation sont mis entre parenthèses (car deux parenthèses
forment un ovale).
Vous pouvez aussi utiliser le mot-clé
usecase
pour définir un cas d'utilisation.
Et vous pouvez définir un alias avec le mot-clé
as
. Cet alias
sera ensuite utilisé lors de la définition des relations.
🎉 Copied!
|
@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml
|
Le nom définissant un acteur est placé entre deux points.
Vous pouvez également utiliser le mot-clé
actor
pour définir un acteur.
Un alias peut être attribué à l'aide du mot-clé
as
et peut être utilisé ultérieurement à la place du nom de l'acteur, par exemple lors de la définition des relations.
Les exemples suivants montrent que la définition des acteurs est facultative.
🎉 Copied!
|
@startuml
:First Actor:
:Another\nactor: as Man2
actor Woman3
actor :Last actor: as Person1
@enduml
|
Vous pouvez changer le style d'acteur de stick man
(par défaut) à :
- un awesome man avec la commande
skinparam actorStyle awesome
;
- un hollow man avec la commande
skinparam actorStyle hollow
.
Stick man (par défaut)
🎉 Copied!
|
@startuml
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml
|
Un==== homme impressionnant ====
🎉 Copied!
|
@startuml
skinparam actorStyle awesome
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml
|
[Réf. QA-10493]
Homme creux
🎉 Copied!
|
@startuml
skinparam actorStyle Hollow
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml
|
[Réf. PR#396]
Si vous voulez une description sur plusieurs lignes, vous pouvez utiliser des guillemets.
Vous pouvez aussi utiliser les séparateurs suivants:
--
..
==
__
.
Et vous pouvez mettre un titre dans les séparateurs.
🎉 Copied!
|
@startuml
usecase UC1 as "You can use
several lines to define your usecase.
You can also use separators.
--
Several separators are possible.
==
And you can add titles:
..Conclusion..
This allows large description."
@enduml
|
Vous pouvez utiliser des packages pour regrouper des acteurs ou des cas d'utilisation
🎉 Copied!
|
@startuml
left to right direction
actor Guest as g
package Professional {
actor Chef as c
actor "Food Critic" as fc
}
package Restaurant {
usecase "Eat Food" as UC1
usecase "Pay for Food" as UC2
usecase "Drink" as UC3
usecase "Review" as UC4
}
fc --> UC4
g --> UC1
g --> UC2
g --> UC3
@enduml
|
Vous pouvez utiliser
rectangle
pour modifier l'affichage du paquet
🎉 Copied!
|
@startuml
left to right direction
actor "Food Critic" as fc
rectangle Restaurant {
usecase "Eat Food" as UC1
usecase "Pay for Food" as UC2
usecase "Drink" as UC3
}
fc --> UC1
fc --> UC2
fc --> UC3
@enduml
|
Pour lier les acteurs et les cas d'utilisation, la flèche
-->
est utilisée.
Plus il y a de tirets
-
dans la flèche, plus elle sera longue.
Vous pouvez ajouter un libellé sur la flèche, en ajoutant un caractère
:
dans
la définition de la flèche.
Dans cet exemple, vous voyez que
User n'a pas été défini préalablement,
et qu'il est implicitement reconnu comme acteur.
🎉 Copied!
|
@startuml
User -> (Start)
User --> (Use the application) : A small label
:Main Admin: ---> (Use the application) : This is\nyet another\nlabel
@enduml
|
Si un acteur ou un cas d'utilisation en étend un autre, vous pouvez utiliser le symbole
<|--
.
🎉 Copied!
|
@startuml
:Main Admin: as Admin
(Use the application) as (Use)
User <|-- Admin
(Start) <|-- (Use)
@enduml
|
Vous pouvez utiliser les mots clés
note left of
,
note right of
,
note top of
,
note bottom of
pour définir les notes en relation avec un objet.
Une note peut également être définie seule avec des mots-clés, puis
liée à d'autres objets en utilisant le symbole
..
.
🎉 Copied!
|
@startuml
:Main Admin: as Admin
(Use the application) as (Use)
User -> (Start)
User --> (Use)
Admin ---> (Use)
note right of Admin : This is an example.
note right of (Use)
A note can also
be on several lines
end note
note "This note is connected\nto several objects." as N2
(Start) .. N2
N2 .. (Use)
@enduml
|
Vous pouvez ajouter des stéréotypes à la définition des acteurs et des cas d'utilisation avec
<<
et
>>
.
🎉 Copied!
|
@startuml
User << Human >>
:Main Database: as MySql << Application >>
(Start) << One Shot >>
(Use the application) as (Use) << Main >>
User -> (Start)
User --> (Use)
MySql --> (Use)
@enduml
|
Par défaut, les liens entre les classes ont deux tirets
--
et sont orientés verticalement.
Il est possible de mettre des liens horizontaux en mettant un seul tiret (ou un point) comme ceci:
🎉 Copied!
|
@startuml
:user: --> (Use case 1)
:user: -> (Use case 2)
@enduml
|
Vous pouvez aussi changer le sens en renversant le lien :
🎉 Copied!
|
@startuml
(Use case 1) <.. :user:
(Use case 2) <- :user:
@enduml
|
Il est possible de changer la direction d'une flèche en utilisant les mots-clé
left
,
right
,
up
ou
down
à l'intérieur de la flèche :
🎉 Copied!
|
@startuml
:user: -left-> (dummyLeft)
:user: -right-> (dummyRight)
:user: -up-> (dummyUp)
:user: -down-> (dummyDown)
@enduml
|
Vous pouvez abréger les noms des flèches en indiquant seulement le premier caractère de la direction (par exemple
-d-
pour
-down-
)
ou les deux premiers caractères (
-do-
).
Il est conseillé de ne pas abuser de cette fonctionnalité :
Graphviz qui donne d'assez bon résultats quoique non "garantis".
Le mot-clé
newpage
est utilisé pour découper un diagrame en plusieurs images.
🎉 Copied!
|
@startuml
:actor1: --> (Usecase1)
newpage
:actor2: --> (Usecase2)
@enduml
|
Le comportement général de construction des diagrammes est de haut en bas.
🎉 Copied!
|
@startuml
'default
top to bottom direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml
|
Il est possible de changer pour aller plutôt de la droite vers la gauche avec la commande left to right direction
. Le résultat est parfois meilleur dans ce cas.
🎉 Copied!
|
@startuml
left to right direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml
|
_See also 'Change diagram orientation' on [Deployment diagram](deployment-diagram) page._
Utilisez la commande
skinparam pour changer la couleur et la mise en forme du texte du schéma.
Vous pouvez utiliser cette commande :
Vous pouvez aussi spécifier les polices et les couleurs pour les acteurs et cas d'utilisation avec des stéréotypes.
🎉 Copied!
|
@startuml
skinparam handwritten true
skinparam usecase {
BackgroundColor DarkSeaGreen
BorderColor DarkSlateGray
BackgroundColor<< Main >> YellowGreen
BorderColor<< Main >> YellowGreen
ArrowColor Olive
ActorBorderColor black
ActorFontName Courier
ActorBackgroundColor<< Human >> Gold
}
User << Human >>
:Main Database: as MySql << Application >>
(Start) << One Shot >>
(Use the application) as (Use) << Main >>
User -> (Start)
User --> (Use)
MySql --> (Use)
@enduml
|
🎉 Copied!
|
@startuml
left to right direction
skinparam packageStyle rectangle
actor customer
actor clerk
rectangle checkout {
customer -- (checkout)
(checkout) .> (payment) : include
(help) .> (checkout) : extends
(checkout) -- clerk
}
@enduml
|
Vous pouvez ajouter
/
pour créer un Business Use Case.
Business Use Case
🎉 Copied!
|
@startuml
(First usecase)/
(Another usecase)/ as (UC2)
usecase/ UC3
usecase/ (Last\nusecase) as UC4
@enduml
|
Acteur commercial
🎉 Copied!
|
@startuml
:First Actor:/
:Another\nactor:/ as Man2
actor/ Woman3
actor/ :Last actor: as Person1
@enduml
|
[Réf. QA-12179]
Vous pouvez modifier la
couleur ou le style des flèches individuelles en utilisant la notation suivante en ligne
#color;line.[bold|dashed|dotted];text:color
🎉 Copied!
|
@startuml
actor foo
foo --> (bar) : normal
foo --> (bar1) #line:red;line.bold;text:red : red bold
foo --> (bar2) #green;line.dashed;text:green : green dashed
foo --> (bar3) #blue;line.dotted;text:blue : blue dotted
@enduml
|
[Réf. QA-3770 et QA-3816]
[Voir une fonctionnalité similaire sur le diagramme de déploiement ou le diagramme de classes]
Vous pouvez modifier la
couleur ou le style d'un élément individuel en utilisant la notation suivante
#[color|back:color];line:color;line.[bold|dashed|dotted];text:color
🎉 Copied!
|
@startuml
actor a
actor b #pink;line:red;line.bold;text:red
usecase c #palegreen;line:green;line.dashed;text:green
usecase d #aliceblue;line:blue;line.dotted;text:blue
@enduml
|
[Réf. QA-5340 et adapté de QA-6852]
Exemple simple
🎉 Copied!
|
@startuml
allowmixing
actor Actor
usecase Usecase
json JSON {
"fruit":"Apple",
"size":"Large",
"color": ["Red", "Green"]
}
@enduml
|
[
Ref. QA-15481]
Pour un autre exemple, voir la
page JSON.