29/12/15

Diagramas de secuencia y de colaboración

Estoy escribiendo sobre estos diagramas a pesar que son un tema bastante transitado dado que últimamente he recibido varias consultas sobre estos; y he observado que conceptualmente no se llegan a comprender para que sirven y eso lleva a que no se puedan aplicar correctamente.

Primero que nada hay que entender que son una forma más de comunicación en el marco de la definición de la arquitectura del proyecto y por lo tanto puede aplicar o no dependiendo del objetivo y las características del proyecto. En segundo lugar debemos tener en cuenta que son diagramas complementarios es decir no son excluyentes entre sí, de hecho tienen el mismo poder de expresión en cuanto a la comunicación de una idea.


Se dice que son diagramas dinámicos puesto que complementan a los diagramas de clases, componentes y paquetes en términos de ejecución de las instancias de las abstracciones diseñadas. El valor que agregan estos diagramas esta en que el arquitecto puede transmitir su idea de como deben implementarse los algoritmos que utilizan las transacciones.

A la pregunta, sobre si debo hacer un diagrama para cada proceso; mi respuesta es no necesariamente. La idea es que puedas tomar una muestra representativa de los procesos a desarrollar y a través de estos diagramas contarle a tus programadores cual es tu idea sobre el estilo y el uso de las abstracciones para que con ello se puedan guiar el desarrollo del resto de los procesos que no se han desarrollado. Como se trata de una herramienta de comunicación debes considerar el nivel de detalle necesario para contemplar todos los casos, recuerda que aquello que no pongas nadie lo podrá deducir.

El nivel de detalle que deben llevar dependerá no solo de la complejidad de los procesos sino también del tipo de recursos con los que cuentes; no es lo mismo diseñar para un rookie que para un experto.

En ambos tipos de diagramas lo que estamos mostrando son instancias de abstracciones, los mensajes que se envían entre sí y el orden en que lo hacen por eso se dice que tienen la misma capacidad de abstracción. Sin embargo los diagramas de interacción suelen ser mejores para procesos sincrónicos mientras que los de colaboración suelen serlo para procesos asincrónicos.

No hay una forma única de hacerlos, la efectividad que tengan dependerá del contexto. Tampoco son ya la herramienta de comunicación por excelencia pero suelen utilizarse aun en proyectos de gran porte.

Hay mucho para hablar sobre este tema, puesto que es muy amplio y no quiero hacer de este post algo exagerado, mi recomendación para encararlo es que habiendo analizado mis observaciones anteriores te los tomes como si estuvieras programando en "papel" y tus lineas de código en realidad fueran figuras. Esto no solo te ayudará a concentrarte en el diseño al máximo sino que te guiará en el nivel de detalle necesario. Y claro siempre puedes obtener feedback de tus diseños y así ir mejorando hasta encontrar tu estilo.


No hay comentarios:

Publicar un comentario

Si quieres puedes aportar a este post con tus comentarios, así podemos enriquecer juntos la temática. Gracias!