jalcaldea / Practica_DAS

Repositorio para la práctica de DAS
4 stars 0 forks source link

UML en LaTeX #8

Closed jiep closed 10 years ago

jiep commented 10 years ago

He estado mirando los paquetes que subió @KekoAlk a Dropbox para crear diagramas UML y creo que la mejor opción es Tikz-UML ya que los comandos de uso son bastante fáciles e intuitivos. El problema de este paquete es que no viene disponible en las distribuciones de LaTeX, por lo que hay que instalarlo manualmente.

Lo primero de todo es descargarlo; se puede obtener en http://www.ensta-paristech.fr/~kielbasi/tikzuml/index.php?lang=en&id=download. La última versión disponible es la 1.0b. Una vez descargado el archivo, descomprimimos el archivo tikz-uml.sty con permisos de superusuario en la carpeta ~/texmf/tex/latex/tikz-uml/ para Ubuntu. Después de hacer todo ésto, debemos llamar al mandato sudo texhash ~/texmf para que LaTeX detecte los paquetes nuevos. NOTA: Es posible que la ruta de LaTeX puede no esté en ~/texmf. Mi ruta era /usr/share/texlive/texmf-dist/

En Windows, se pueden seguir los pasos que aparecen aquí: http://tex.stackexchange.com/questions/2063/how-can-i-manually-install-a-package-on-miktex-windows.

Este paquete permite crear todos los diagramas que necesitamos: diagramas de clase, diagramas de clases de uso, diagramas de estado, diagramas de secuencia y diagramas de componentes.

Nota1: El paquete TikZ-UML requiere que los siguientes paquetes estén instalados: tikz, ifthen, xtring, calc y pgfopts. Nota2: Todo el diagrama debe estar incluido en el entorno tikzpicture.

Para crear un diagrama de casos de usos escribimos lo siguiente:

% Ejemplo extraído de
% http://soerenbnoergaard.blogspot.com.es/2012/02/using-tikz-uml-to-create-uml-diagrams.html

% Preámbulo omitido

\begin{tikzpicture}

% Creamos el sistema UML
\begin{umlsystem}{Schedule}
    \umlusecase[x=-3]{Check Request}
    \umlusecase[x=3]{Ask Constraints}
    \umlusecase[x=-2,y=-2]{Deny Request}
    \umlusecase[x=3, y=-2]{Collect Constraints}
    \umlusecase[x=-3,y=-4]{Determine Schedule}
    \umlusecase[x=3,y=-4]{Merge Constraints} 
    \umlusecase[y=-6]{Resolve Conflicts}
\end{umlsystem}

% Creamos el actor en la posición (x,y)
\umlactor[x=-8]{Initiator}
\umlactor[x=-8,y=-6]{Participant A}
\umlactor[x=8]{Participant B}
\umlactor[x=8,y=-6]{Conflict Resolver} 

% Asociamos a los distintos actores
\umlassoc{Initiator}{usecase-1}
\umlassoc{Initiator}{usecase-3}
\umlassoc{Participant A}{usecase-5}
\umlassoc{Participant B}{usecase-2}
\umlassoc{Participant B}{usecase-4}
\umlassoc{Conflict Resolver}{usecase-7}

% Ponemos los <<include>> y los <<extend>>
\umlextend{usecase-2}{usecase-3}
\umlinclude{usecase-5}{usecase-7}
\end{tikzpicture}

% Omitida nota de la figura

\end{document}

El diagrama queda así:

umltikz

Más ejemplos se pueden se pueden encontrar en la documentación oficial disponible aquí: http://www.ensta-paristech.fr/~kielbasi/tikzuml/doc/tikzuml-v0.9.9.pdf.

jalcaldea commented 10 years ago

@jiep Esta genial!! Pero ya que estabas podrías haber puesto el ejemplo en español!

jiep commented 10 years ago

Hacerlo en español o en inglés es lo de menos, mi principal objetivo era enseñar los comandos básicos para crear diagramas con el paquete TikZ-UML (en el ejemplo, un diagrama de casos de uso).

jalcaldea commented 10 years ago

@jiep Podrías subir el paquete de alguna manera??

La página esta caída!! Prueba subirlo a http://mega.co.nz o a la carpeta de dropbox que tenemos compartida.

jiep commented 10 years ago

Ya está en Dropbox

EDIT: La página ya esta online, pero por si se vuelve a caer subo a Dropbox la última versión de la documentación y los ejemplos.

jalcaldea commented 10 years ago

Muchas gracias @jiep !!