Diagramme de cas d'utilisation

Prenons quelques exemples

Cas d'utilisation

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

Acteurs

Un Acteur est encadré par des deux points.

Vous pouvez aussi utiliser le mot-clé actor pour définir un acteur. Et vous pouvez définir un alias avec le mot-clé as. Cet alias sera ensuite utilisé lors de la définition des relations.

Nous verrons que la définition des acteurs est optionnelle.

🎉 Copied!
@startuml

:First Actor:
:Another\nactor: as Men2
actor Men3
actor :Last actor: as Men4

@enduml

Change Actor style

You can change the actor style from stick man (by default) to:
  • an awesome man with the skinparam actorStyle awesome command;
  • a hollow man with the skinparam actorStyle hollow command.

Stick man (by default)

🎉 Copied!
@startuml
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml

Awesome man

🎉 Copied!
@startuml
skinparam actorStyle awesome
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml

[Ref. QA-10493]

Hollow man

🎉 Copied!
@startuml
skinparam actorStyle Hollow 
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml

[Ref. PR#396]

Description des cas d'utilisation

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

Utiliser un package

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

Exemples très simples

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

Héritage

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

Notes

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

Stéréotypes

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

Changer les directions des flèches

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".

Découper les diagrames

Le mot-clé newpage est utilisé pour découper un diagrame en plusieurs images.

🎉 Copied!
@startuml
:actor1: --> (Usecase1)
newpage
:actor2: --> (Usecase2)
@enduml

De droite à gauche

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

La commande Skinparam

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

Exemple complet

🎉 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

Business Use Case

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]

Modifier la couleur et le style des flèches (style en ligne)

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]

Modifier la couleur et le style d'un élément (style en ligne)

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]