Un
diagrama de casos de uso es una representación visual utilizada en ingeniería de software para representar las interacciones entre
los actores del sistema y el
propio sistema. Captura el comportamiento dinámico de un sistema ilustrando sus casos de
uso y los roles que interactúan con ellos. Estos diagramas son esenciales para especificar los
requisitos funcionales del sistema y comprender cómo interactuarán los usuarios con él. Al proporcionar una visión de alto nivel, los diagramas de casos de uso ayudan a las partes interesadas a comprender la funcionalidad del sistema y su valor potencial.
PlantUML ofrece un enfoque único para crear diagramas de casos de uso a través de su lenguaje basado en texto. Una de las principales ventajas de utilizar PlantUML es su
sencillez y eficacia. En lugar de dibujar manualmente formas y conexiones, los usuarios pueden definir sus diagramas utilizando descripciones textuales intuitivas y concisas. Esto no sólo acelera el proceso de creación de diagramas, sino que también garantiza su
coherencia y precisión. La capacidad de integrarse con varias plataformas de documentación y su amplia gama de formatos de salida compatibles hacen de PlantUML una herramienta versátil tanto para desarrolladores como para no desarrolladores. Por último, al ser
de código abierto, PlantUML cuenta con una
sólida comunidad que contribuye continuamente a su mejora y ofrece una gran cantidad de recursos para usuarios de todos los niveles.
Los casos de uso se encierran entre paréntesis (porque dos
paréntesis parecen un óvalo).
También puede utilizar la palabra clave
usecase
para definir un caso de uso
.
Y puede definir un alias, utilizando la palabra clave
as
.
Este alias se utilizará más adelante, cuando se definan las relaciones.
🎉 Copied!
|
@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml
|
Los actores se encierran entre dos puntos.
También puedes usar la palabra reservada
actor
para definir un actor.
Además puedes definir un alias, usando la palabra reservada
as
. Este alias será usado más adelante, cuando definamos relaciones.
Veremos más adelante que las declaraciones de los actores son opcionales.
🎉 Copied!
|
@startuml
:First Actor:
:Another\nactor: as Men2
actor Men3
actor :Last actor: as Men4
@enduml
|
Puedes cambiar el estilo del actor de hombre==== palo ====
(====
por defecto ====) a:
- un hombre impresionante con el comando
skinparam actorStyle awesome
;
- un hombre hueco con el comando
skinparam actorStyle hollow
.
Hombre palo (por defecto)
🎉 Copied!
|
@startuml
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml
|
Hombre==== impresionante ====
🎉 Copied!
|
@startuml
skinparam actorStyle awesome
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml
|
[Ref
. QA-10493]
Hombre==== hueco ====
🎉 Copied!
|
@startuml
skinparam actorStyle Hollow
:User: --> (Use)
"Main Admin" as Admin
"Use the application" as (Use)
Admin --> (Admin the application)
@enduml
|
[Ref
. PR#396]
Si quiere realizar una descripción en varias líneas, puede usar citas (
" "
).
También puede usar los siguientes separadores:
--
..
==
__
.
Y puede introducir títulos dentro de los separadores.
🎉 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
|
Puede utilizar paquetes para agrupar actores o casos de uso
🎉 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
|
Puede utilizar
rectangle
para cambiar la visualización del paquete
🎉 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
|
Para relacionar actores y casos de uso, la flecha
-->
es usada.
Cuanto más guiones
-
en la flecha, más larga será la misma.
Puedes añadir una etiqueta en la flecha, añadiendo el carácter
:
en la definición de la flecha.
En este ejemplo, puedes ver que
User no ha sido definido, y es usado como un actor.
🎉 Copied!
|
@startuml
User -> (Start)
User --> (Use the application) : A small label
:Main Admin: ---> (Use the application) : This is\nyet another\nlabel
@enduml
|
Si un actor/caso de uso extiende a otro, puede utilizar el símbolo
<|--
.
🎉 Copied!
|
@startuml
:Main Admin: as Admin
(Use the application) as (Use)
User <|-- Admin
(Start) <|-- (Use)
@enduml
|
Puedes usar las palabras claves:
note left of
,
note right of
,
note top of
,
note bottom of
, para añadir notas relacionadas a un objeto en particular.
También se puede añadir un nota solitaria con la palabra clave
note
, y después realacionarla con otro objeto usando el símbolo
..
.
🎉 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
|
Puedes añadir estereotipos mientras defines actores y casos de uso, usando
<<
y
>>
.
🎉 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
|
Por defecto, los enlaces entre clases tienen dos guiones
--
y están orientados verticalmente.
Es posible utilizar un enlace horizontal poniendo un solo guión (o punto) como este
🎉 Copied!
|
@startuml
:user: --> (Use case 1)
:user: -> (Use case 2)
@enduml
|
También se puede cambiar la dirección invirtiendo el enlace:
🎉 Copied!
|
@startuml
(Use case 1) <.. :user:
(Use case 2) <- :user:
@enduml
|
También es posible cambiar la dirección de la flecha añadiendo las palabras clave
left
,
right
,
up
o
down
dentro de la flecha
🎉 Copied!
|
@startuml
:user: -left-> (dummyLeft)
:user: -right-> (dummyRight)
:user: -up-> (dummyUp)
:user: -down-> (dummyDown)
@enduml
|
Puede acortar la flecha utilizando sólo el primer carácter de la dirección (por ejemplo,
-d-
en lugar de
-down-
)
o los dos primeros caracteres (
-do-
).
Tenga en cuenta que no debe abusar de esta funcionalidad :
Graphviz suele dar buenos resultados sin
retoques.
Y con el
left to right direction
parámetro
🎉 Copied!
|
@startuml
left to right direction
:user: -left-> (dummyLeft)
:user: -right-> (dummyRight)
:user: -up-> (dummyUp)
:user: -down-> (dummyDown)
@enduml
|
La palabra clave
newpage
divide su diagrama en varias páginas o imágenes.
🎉 Copied!
|
@startuml
:actor1: --> (Usecase1)
newpage
:actor2: --> (Usecase2)
@enduml
|
El comportamiento general cuando se construye un diagrama, es
top to bottom.
🎉 Copied!
|
@startuml
'default
top to bottom direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml
|
Puede cambiar a left to right usando el comando left to right direction
.
En ocaciones, el resultado es mejor con esta dirección.
🎉 Copied!
|
@startuml
left to right direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml
|
_See also 'Change diagram orientation' on [Deployment diagram](deployment-diagram) page._
Puedes usar el comando
skinparam para cambiar los colores y las fuentes de los dibujos
Puedes usar este comando:
Puedes definir colores y fuentes específicas para los actores y casos de uso estereotipados.
🎉 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
|
You can add
/
to make Business Use Case.
Business Usecase
🎉 Copied!
|
@startuml
(First usecase)/
(Another usecase)/ as (UC2)
usecase/ UC3
usecase/ (Last\nusecase) as UC4
@enduml
|
Business Actor
🎉 Copied!
|
@startuml
:First Actor:/
:Another\nactor:/ as Man2
actor/ Woman3
actor/ :Last actor: as Person1
@enduml
|
[Ref. QA-12179]
You can change the
color or style of individual arrows using the inline following notation:
#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
|
[Ref. QA-3770 and QA-3816]
[See similar feature on deployment-diagram or class diagram]
You can change the
color or style of individual element using the following notation:
#[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
|
[Ref. QA-5340 and adapted from QA-6852]
Simple example
🎉 Copied!
|
@startuml
allowmixing
actor Actor
usecase Usecase
json JSON {
"fruit":"Apple",
"size":"Large",
"color": ["Red", "Green"]
}
@enduml
|
[Ref. QA-15481]
For another example, see on
JSON page.