Use Case diagram#
Definition of actors#
\umlactor{user}
\umlactor[y=-3]{subuser}
\umlactor[x=14, y=-1.5]{admin}
Definition of use cases#
\umlusecase[x=4]{use case1}
\umlusecase[x=4, y=-2]{use case2}
\umlusecase[x=4, y=-4]{use case3}
\umlusecase[x=8, y=-2, width=2cm]{use case4 on 2 lines}
\umlusecase[x=10]{use case5}
\umlusecase[x=10, y=-4]{use case6}
\umlactor{user}
\umlactor[y=-3]{subuser}
\umlactor[x=14, y=-1.5]{admin}
Definition of the system#
As the system is a box used as a new coordinate system, we have to change coordinates of use cases.
\begin{umlsystem}[x=4]{The system}
\umlusecase{use case1}
\umlusecase[y=-2]{use case2}
\umlusecase[y=-4]{use case3}
\umlusecase[x=4, y=-2, width=2cm]{use case4 on 2 lines}
\umlusecase[x=6]{use case5}
\umlusecase[x=6, y=-4]{use case6}
\end{umlsystem}
\umlactor{user}
\umlactor[y=-3]{subuser}
\umlactor[x=14, y=-1.5]{admin}
Definition of relations and of the note#
You will notice here the use of the name option to ensure the definition of the note, and its interest for use cases, in order to ignore the order of their definition, as shown in the following example:
\begin{umlsystem}[x=4]{The system}
\umlusecase{use case1}
\umlusecase[y=-2]{use case2}
\umlusecase[y=-4]{use case3}
\umlusecase[x=4, y=-2, width=2cm]{use case4 on 2 lines}
\umlusecase[x=6]{use case5}
\umlusecase[x=6, y=-4]{use case6}
\end{umlsystem}
\umlactor{user}
\umlactor[y=-3]{subuser}
\umlactor[x=14, y=-1.5]{admin}
\umlinherit{subuser}{user-label}
\umlassoc{user}{usecase-1}
\umlassoc{subuser}{usecase-2}
\umlassoc{subuser}{usecase-3}
\umlassoc{admin}{usecase-5}
\umlassoc{admin}{usecase-6}
\umlinherit{usecase-2}{usecase-1}
\umlVHextend{usecase-5}{usecase-4}
\umlinclude[name=incl]{usecase-3}{usecase-4}
\umlnote[x=7, y=-7]{incl-1}{note on include dependency}