[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Especificación declarativa de diagramas UML



Hola,

Supongo que como muchos otros, coincido con M. Fowler en que la
verdadera utilidad del UML reside en el uso de sus diagramas como
bocetos rápidos para comunicar/discutir aspectos concretos de un diseño
y no tanto en la descripción completa y exhaustiva de un sistema ("UML
As Sketching" [1]) . Por este motivo hace tiempo que dejé de usar
herramientas CASE (Together, Rational Rose, ArgoUML, etc.). Normalmente
escribo diagramas en papel o en todo caso, mediante herramientas de
dibujo genéricas para la creación de diagramas como Visio o Dia.

Últimamente he reemplazado el editor gráfico por la herramienta UMLGraph
[2], desarrollada por Diomidis Spinellis de la Universidad de Atenas.
Esta herramienta permite describir diagramas UML mediante una
representación textual (una especia de DSL [3]) a partir de la que se
genera posteriormente una forma gráfica adecuada del diagrama (SVG, PNG,
GIF, JPEG, Postscript, etc.) Las ventajas que ofrece este modelo
declarativo frente a la creación directa de un diagrama gráfico
empleando editores del tipo WYSIWYG son numerosas [4]. Desde mi punto de
vista las más destacables son:
    * Evita la tediosa labor de ajustar manualmente (mediante el ratón)
la disposición de los elementos en el diagrama para lograr el resultado
deseado. Además del ahorro de tiempo, esto permite concentrarse más en
la información que el modelo debe transmitir que en su apariencia final.
    * Los modelos pueden gestionarse mediante las herramientas de
gestión de la configuración habituales. Por ejemplo, se pueden
monitorizar los cambios en el diseño mediante la herramienta de control
de versiones.
    * Pueden generarse fácilmente y de forma automática los diagramas
UML del proyecto mediante herramientas como Ant o Maven (existe un
plugin disponible para Maven llamado DotUml [5], aunque aún no he tenido
la ocasión de probarlo).
    * Pueden emplearse herramientas existentes para realizar operaciones
sobre la información contenida en los modelos que las herramientas
gráficas tradicional no permiten (del tipo identificar las clases que
contienen cierto atributo o visualizar las diferencias entre dos modelos).

Actualmente UMLGraph soporta únicamente diagramas de clase y diagramas
de secuencia, aunque el objetivo del proyecto es soportar los 10 tipos
de diagramas de UML. Los diagramas de clase se basan en un doclet de
Javadoc que genera el diagrama en formato dot para ser procesado
posteriormente mediante Graphviz [6]. Los diagramas de secuencia se
basan en macros de pic que se procesan mediante GNU plotutils [7].

La calidad de los diagramas de secuencia obtenidos no responde del todo
a mis expectativas (tengo pendiente evaluar otra herramienta declarativa
llamada SEQUENCE [8]). Sin embargo, los diagramas de clase obtenidos son
muy buenos y el uso de una notación con una sintaxis tan próxima a Java
me parece muy conveniente.

M. Fowler describe algunas otras herramientas en esta línea en su
artículo "UML Sketching Tools" [9]. ¿Habéis usado alguna de ellas?
¿Alguien conoce alguna otra?

Un saludo,
Rafa

[1] http://martinfowler.com/bliki/UmlAsSketch.html
[2] http://www.spinellis.gr/sw/umlgraph/
[3] http://en.wikipedia.org/wiki/Domain_Specific_Language
[4] "On the Declarative Specification of Models":
http://www.spinellis.gr/pubs/jrnl/2003-IEEESW-umlgraph/html/article.pdf
[5] http://www.spinellis.gr/pubs/jrnl/2003-IEEESW-umlgraph/html/article.pdf
[6] http://www.graphviz.org/
[7] http://www.gnu.org/software/plotutils/plotutils.html
[8] http://www.zanthan.com/itymbi/archives/cat_sequence.html
[9] http://martinfowler.com/bliki/UmlSketchingTools.html

-- 
Rafael Luque Leiva

Orange Soft - http://www.orange-soft.com
Creando software para las personas

Urbanización Las Castañeras
Arroyo de los Combos, 26 bis
Arroyomolinos, E28939 Madrid
Tel: +34 916 091 075
     +34 605 511 847 (móvil)
Fax: +34 916 091 075

GnuPG Key ID: 0x4B9238A2