Diagrama de casos de uso

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.

Casos de uso

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

Actores

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

Cambiar el estilo del actor

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]

Descripción de Casos de uso

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

Utilice el paquete

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

Ejemplo básico

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

Extensión

Si un actor/caso de uso extiende a otro, puedes usar el símbolo <|--.

🎉 Copied!

@startuml
:Main Admin: as Admin
(Use the application) as (Use)

User <|-- Admin
(Start) <|-- (Use)

@enduml

Usando notas

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

Estereotipos

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

Cambio de dirección de las flechas

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

Dividiendo los diagramas

La palabra clave newpage divide su diagrama en varias páginas o imágenes.

🎉 Copied!

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

Dirección: de izquierda a derecha

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

Personalización (Skinparam)

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

Un ejemplo completo

🎉 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

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]

Change arrow color and style (inline style)

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]

Change element color and style (inline style)

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]

Display JSON Data on Usecase diagram

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.


Privacy Policy      Advertise