Donate232Patreon115


Diagramme de cas d'utilisation

Let's have few examples :

Note that you can disable the shadowing using the skinparam shadowing false command.

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.

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

@startuml

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

@enduml

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.

@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

Use package

You can use packages to group actors or use cases.

@startuml
left to right direction
actor "Food Critic" as fc
package Restaurant {
  usecase "Eat Food" as UC1
  usecase "Pay for Food" as UC2
  usecase "Drink" as UC3
}
fc --> UC1
fc --> UC2
fc --> UC3
@enduml

You can use rectangle to change the display of the package.

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

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

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

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

@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:

@startuml
:user: --> (Use case 1)
:user: -> (Use case 2)
@enduml

Vous pouvez aussi changer le sens en renversant le lien :

@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 :

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

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

De droite à gauche

Le comportement général de construction des diagrammes est de haut en bas.

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

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

@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

@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