Cuánto de un sistema modelar
La única pregunta que lo resuelve es qué decisión debe informar el modelo, y la mayor parte de lo que la gente modela no informa ninguna.
6 min de lecturaModelling practice2 de 4
La respuesta corta
- Modela lo que informe una decisión que alguien vaya a tomar de verdad, y nada más.
- Para cada vista, nombra la decisión que sostiene y la persona que la toma. Si no puedes nombrar ambas, esa vista no se va a leer.
- Un modelo completo de un sistema que nadie ha construido es un conjunto de suposiciones seguras de sí mismas, y su efecto principal es hacerlas más difíciles de abandonar.
- Un modelo tiene demasiado detalle en cuanto un cambio de código obliga a cambiar el modelo y nadie lo hace. A partir de ahí se aleja y sigue pareciendo autoritativo.
01La prueba: nombra la decisión#
Antes de dibujar cualquier vista, termina esta frase: «Esta vista existe para que [persona] pueda decidir [cosa].» Si no puedes rellenar los dos huecos, no la dibujes.
La prueba funciona porque es refutable, que es justo lo que no es ningún otro consejo sobre el tema. «Modela las partes importantes» no puede perder una discusión; «este diagrama de clases existe para que el equipo de plataforma pueda decidir si el cálculo del impuesto pertenece a facturación» o es cierto o no lo es, y a la persona nombrada se le puede preguntar.
Aplicada con honestidad elimina la mayor parte de lo que se modela. Un diagrama del sistema actual dibujado porque alguien debería documentarlo no informa de nada. Una vista que muestra todos los servicios del parque no informa de nada, porque ninguna decisión trata sobre todos a la vez. Lo que sobrevive es un número pequeño de vistas, cada una apuntada a una discusión que alguien está teniendo.
02Tres maneras en que falla un modelo sin alcance#
Se convierte en una segunda implementación. Cada clase, cada campo, cada llamada: un modelo a esa fidelidad es una copia del código escrita en una notación, y la copia siempre es la que está mal. Este es el fallo que le dio al modelado su reputación, y viene enteramente de no preguntar para qué sirve el modelo.
Se convierte en una foto del organigrama. Los modelos sin alcance derivan hacia mostrar el sistema de cada equipo con el mismo peso, porque es políticamente el arreglo más fácil. El resultado es un diagrama en el que los dos componentes que de verdad interactúan son del mismo tamaño que veinte que no, y nadie encuentra la pregunta.
Se vuelve inmantenible de la forma más ordinaria. Sin drama: simplemente conteniendo más detalle del que el equipo tiene ganas de actualizar, de modo que unos cuantos elementos caducan, luego unos cuantos más, y en dos trimestres el modelo es algo que la gente contrasta con el código en lugar de creerlo.
Úsalo cuando
- Una decisión está genuinamente abierta y dos personas no se ponen de acuerdo
- Un cambio cruzará varios equipos y alguien tiene que ver las costuras
- Un lector futuro necesitará saber por qué existe una estructura poco obvia
- Quien acaba de incorporarse necesita la forma del dominio, no la forma del código
Usa otra cosa cuando
- Documentar un sistema que nadie va a cambiar
- Registrar una decisión ya tomada y ya evidente en el código
- Modelar porque una plantilla o un proceso pide un diagrama
- Cualquier nivel de detalle que el equipo no mantendrá cuando acabe el proyecto
03Trabajar al tamaño correcto#
Un modelo, varias vistas pequeñas. El alcance es una propiedad de la vista y no del modelo: el modelo puede contener todo lo que alguien haya introducido, y cada vista muestra el puñado de elementos que necesita una decisión. Para eso está el mecanismo de puntos de vista de ArchiMate, y vale igual de bien para UML.
Modela un nivel por debajo de la decisión, no dos. Si la discusión es sobre qué servicio es dueño de una responsabilidad, modela los servicios y sus dependencias. No modeles las clases que hay dentro; ese detalle no puede cambiar la respuesta, y es justo el detalle que se pudrirá.
Borra las vistas que ya cumplieron su función. Una vista dibujada para una migración que ya ocurrió está terminada, y conservarla significa que un lector futuro encontrará un diagrama seguro de sí mismo de una arquitectura que ya no existe. Borrar documentación se siente mal y suele ser lo correcto.
En una línea cada uno
- 01Toda vista debe nombrar una persona y una decisión. Si no puedes, no la dibujes.
- 02Un modelo completo de un sistema sin construir es adivinar con aplomo, y endurece las suposiciones.
- 03Modela un nivel por debajo de la decisión. El detalle que no puede cambiar la respuesta se pudrirá.
- 04El alcance pertenece a la vista, no al modelo: un modelo, muchas vistas pequeñas.
- 05Borra una vista en cuanto su decisión esté tomada. Un diagrama caducado es peor que ninguno.
Lo siguiente en esta serie: convenciones de nombres y después mantener un modelo al día.
04Preguntas frecuentes#
¿Cuánto de un sistema debería modelar?
Lo que informe una decisión que alguien vaya a tomar de verdad. Para cada vista que vayas a dibujar, nombra la decisión que sostiene y la persona que la toma; si no puedes nombrar ambas, la vista documenta un sistema en lugar de ayudar a cambiarlo, y nadie la va a leer.
¿Debo modelar el sistema entero antes de empezar?
No. Un modelo completo de un sistema que nadie ha construido es un conjunto de suposiciones dibujadas con seguridad, y su efecto principal es hacer esas suposiciones más difíciles de abandonar. Modela la parte donde la decisión está realmente abierta, construye, y modela la siguiente cuando llegue la siguiente decisión.
¿Cómo sé que un modelo tiene demasiado detalle?
Cuando un cambio en el código obligaría a cambiar el modelo y nadie lo hace. Ese es el punto en el que el modelo tiene más detalle del que el equipo puede mantener, y a partir de ahí cada diagrama se aleja del sistema mientras sigue pareciendo autoritativo.
En esta serie
- 01Qué lenguaje usar
- 02Acotar un modelo
- 03Convenciones de nombres
- 04Mantener un modelo al día
Lecturas relacionadas
Práctica del modelado
Práctica del modelado
Práctica del modelado
Diagramas de estructura
Diagramas de comportamiento
Práctica del modelado