Mucha gente cree que herramientas de dibujo y herramientas de modelado son dos maneras de decir lo mismo y nada más lejos de la realidad. De hecho sólo algunas herramientas son a la vez herramientas de dibujo y herramientas de modelado.

Herramientas de dibujo vs herramientas de modelado

Intersección entre las herramientas de dibujo y las herramientas de modelado

Primero porque algunas herramientas de modelado usan una sintaxis textual para definir los modelos con lo que no hay soporte para dibujarlos (como mucho la herramienta ofrece la posibilidad de “ver” los modelos en forma gráfica pero no más). Como ejemplos, la lista de herramientas de modelado UML textuales o cualquiera de los DSLs que se pueden crear con herramientas como XText .

En segundo lugar poque muchas herramientas de dibujo no son en absoluto herramientas de modelado más que nada porque son incapaces de interpretar la semántica de los dibujos hechos con ellas. Si una herramienta sólo ve formas (rectángulos, flechas,…) y no los conceptos que representan (clases, asociaciones,…) entonces no se puede clasificar como herramienta de modelado.

Por ejemplo, con una herramienta de dibujo podría definir algo como esto:

Ejemplo de diagrama con notación UML pero sin níngún sentido

que rompe todas las reglas de UML (los iconos son los que define la notación UML pero el dibujo en sí no tiene ningún sentido desde una perspectiva UML).

Mi recomendación es utilizar siempre una herramienta de modelado por dos razones principales:

  • Habilidad de exportar y manipular el modelo usando las APIs de la herramienta. La API de una herramienta de dibujo ofrecerá métodos como getAllRectangularShapes pero no métodos como getAllClasses que son los que encontraremos en una herramienta de modelado y los que vamos a necesitar para manipular el modelo de una forma fácil. Y lo mismo para la exportación. Raramente veremos una herramienta de dibujo capaz de exportar el dibujo usando algun tipo de formato XMI que permita su fácil importación en otra herramienta.
  • Una herramienta de modelado garantiza un mínimo nivel de calidad en los modelos al comprobar que el modelo sea una instancia correcta de su metamodelo correspondiente. Por supuesto algunas herramientas son mejores que otras en esto pero siempre es mucho mejor que nada.

Puestos a hacer el mismo esfuerzo (dibujar), yo prefiero que el resultado de mi trabajo sea un modelo y no un simple dibujo, aunque el único objetivo de ese modelo sea el de facilitar la comunicación entre los miembros del equipo. A lo mejor mañana se cambia de idea (por ej. queremos hacer algún tipo de generación de código) y si hemos utilizado una herramienta de dibujo no habrá más remedio que volver a definirlos de nuevo en una herramienta que se pueda integrar en un proceso de desarrollo dirigido por modelos.