Las entradas que he estado generando, en lo que va del curso de Analisis y Modelado de Software, tienen una historia que contar.
O más que una historia, se trata de una larga (y mal hecha) fábula que canta como moraleja:
Planea y modela la estructura tu software,
para poder construir grandes proyectos
a partir de bloques pequeños,
para que tu equipo de trabajo se halle
en la misma sintonía,
para que la comunicación fluya
entre las distintas partes,
para que puedan dosificar
adecuadamente el trabajo
y finalmente resulte
un producto de calidad,
que el usuario final
termine realmente usando.

Hasta ahora, este largo relato nos ha enseñado que todo proyecto de software tiene orden intrínseco en su fabricación: a grosso modo, un inicio, un desarrollo y un final ( Si quieres ver más click AQUI), luego de haber comparado los distintos ciclos de vida
vislumbramos un cierto orden específico para construir software: el Proceso Unificado de Desarrollo de Software, que aplicaba las mejores características de los distintos ciclos de vida para generar un proceso aplicable a una gama amplia de proyectos.
Hemos aprendido a plasmar lo que el cliente y los usuarios dicen necesitar con las historias de usuario por otro lado, hemos aprendido a plasmar un bosquejo de como solventaremos las necesidades del cliente con los casos de uso.
El siguiente paso para nosotros, es transformar los requerimientos del cliente, en un mapa detallado de la arquitectura de nuestro sistema a construir. Siguiendo con la analogía del post Mastery02, en nuestro proceso para construir nuestro edificio (producto de Software) es tiempo de transformar las ideas en un plano de construcción.
Para realizar planos en arquitectura, se utilizan ciertas convenciones para que el plano sea comprendido por cualquiera que siga dichas reglas. Si las reglas fueran universales, todos podrían entender el plano.

Por ejemplo, recuerdo que en mis clases de dibujo técnico en la prepa, nos hacían utilizar estilógrafos de distintos diámetros, para indicar distintos significados en los trazos. Los trazos con lineas delgadas y punteadas implicaban contornos de la parte posterior del objeto, las lineas gruesas y continuas, referían a contornos directamente visibles.
Para generar los planos que describirán la arquitectura de nuestro software, se ha desarrollado un conjunto de reglas que expresan de forma consistente las relaciones e interacciones entre los componentes de nuestro sistema. Estas reglas han sido representadas en un distintos lenguajes: Los lenguajes de modelado de Software.
Lenguajes de modelado de Software
Para podernos entender entre seres humanos, necesitamos un lenguaje de por medio. Poco serviría hacer nuestros diagramas, si nadie más ( compañeros de trabajo, clientes, proveedores) los entendiera a primera vista!
Por lo tanto, para modelar software se han formulado distintos lenguajes. No voy a adentrarme en lenguajes similares o intentar compararlos. Me dí cuenta que existen distintos lenguajes de modelado ( fuera de UML cof cof ), que son válidos y útiles porque atacan necesidades específicas.
IFML ( Interaction Flow Modeling Language)
Este lenguaje está diseñado para expresar el contenido, la interacción y los comportamientos de control de aplicaciones de front end.
En lo personal,considero muy valioso que exista un lenguaje de modelado que se enfoque en la interacción del usuario con la aplicación web. Que el lenguaje propine diagramas de navegación entre componentes, hace más intuitiva la idea de diseño del producto.
Herramientas para modelado de Software
Al crear estos «planos» que modelen nuestro producto, tenemos la capacidad de automatizar el proceso de producción de software. El acto de modelar nuestro software nos da la oportunidad de estructurar nuestro producto en componentes, clases y objetos.
Al aplicar jerarquias entre nuestras clases y su comunicación, podemos controlar el flujo de datos en nuestra aplicación, reutilizar codigo y se genera un proyecto con una estructura más clara.
Si leemos nuestros diagramas, podremos entender el funcionamiento de nuestro producto, aunque este aún no exista!
Conforme pasa el tiempo, los productos de software se vuelven más complejos, mientras que necesitamos que dichos sistemas se vuelvan más sencillos para mantener y reparar. En definitiva, crear construir sin planos ya no es una opción.
Por ahora, para realizar estos planos de nuestro producto de software, necesitamos herramientas que nos faciliten el proceso. Existe una infinidad de productos útiles para modelar software.
yEd
StarUML
Visio
Modelio
Drawio
MagicDraw
Creately
IBM Rational Rose
Visual Parardigm
Astah
Poseidon
IBM Rational
Pacestar UML IBM Rational
Pacestar UML yEd
StarUML
Visio
Modelio
Drawio
MagicDraw
Creately
IBM Rational Rose
Visual Parardigm
Astah
Poseidon
IBM Rational
Pacestar UML
y muchos más…
( Edit: encontré una lista inmensa de herramientas de modelado, afortunadamente, hallé otros post que se toman el tiempo de explicar sus herramientas favoritas, como este blog).
Es difícil declarar una herramienta mejor o peor. En general, lo importante es que tu te sientas cómodo con tu herramienta y sea una forma fácil para documentar tu proyecto. Hasta hacer diagramas en pizarrón o a papel funciona, pero recordemos que a veces es necesario darles un formato a nuestros diagramas para futura referencia y visualización con los clientes.











