Amisai's Nth Blog

home

Leyendo Documenting Software Architectures

10 Jul 2011

He terminado de leer "Documenting Software architectures 2nd edition" (http://www.amazon.com/Documenting-Software-Architectures-Views-Beyond/dp/0201703726).

¿Por qué lo he leido?

Últimamente estoy enfocando mi formación en ampliar mis conocimientos de temas más relacionados con arquitectura de software que con desarrollo o gestión, ... Me apetecía un libro de documentación, y éste es un "clásico", aunque he leído una versión actualizada (del 2010) que añade ideas de metodologías ágiles y tal... \

¿Qué me esperaba?

Por un lado, esperaba encontrarme un catálogo amplio de arquitecturas de software, y poder aprender el vocabulario... Por otro lado, estaba buscando ideas y técnicas acerca de como escribir una buena documentación de una arquitectura de software...

¿Qué me encontré?

En realidad, todo lo que buscaba y bastantes más ideas. El libro no es para nada dogmático, no presenta su solución como la solución y muestra suficientes puntos de vista y alternativas como para tener una visión más de este tema que con otros libros.

Empieza el libro haciendo un repaso de ideas (tan difíciles de describir, por otra parte) como arquitectura, vistas y estilos de arquitectura, indicando una serie de reglas de buena documentación (tener en cuenta al lector, evitar repeticiones innecesarias o ideas ambiguas, ...).

A continuación, comienza la primera de las 3 partes del libro, en la que se describen los diferentes estilos de arquitectura (modular, de componentes y conectores y de distribución de recursos), y muestra algunos ejemplos de cada uno de estos estilos (descomposición en módulos, ... cliente servidor, publicadores y suscriptores, ... despliegue, ...) El catálogo es bastante amplio, bien documentado y con suficientes diagramas para entender la manera que sugieren los autores de documentar cada uno de los estilos.

La segunda parte muestra qué más información ha de proporcionar una correcta documentación de una arquitectura, además de la información estructural. Comienza hablando de técnicas como el refinamiento, mostrar el contexto de cada vista, así como indicar los posibles puntos de variación... Continua hablando de la información a proporcionar de interfaces y del comportamiento de la aplicación, centrándose en qué información proporcionar, qué notación usar...

La última parte del libro se centra en la construcción de la documentación. Comienza hablando de cuales son los pasos que se han de seguir para elegir las vistas a documentar y qué documentación mostrar de cada vista. Considera, además, que no sólo hay que mostrar información de cada vista, sino que hay que explicar el contexto de cada una, como se relacionan... Continua hablando de opciones de empaquetado (un sólo documento, varios, documentación online, wikis,...). Termina esta tercera parte hablando de la fase de revisión de una documentación de arquitectura.

Las últimas páginas y apéndices se dedican a analizar la relación de este estilo de documentación con otros estilos (ISO 42010, RUP 4+1, Rozanski y Woods, U.S.A. DoD) y como encaja dentro de un proceso ágil de desarrollo. Además hace una revisión de los lenguajes UML, SysML y AADL, usados en este libro o en este tipo de documentación.

Es un libro bastante completo, que muestra una técnica muy interesante y exhaustiva de documentar arquitecturas de aplicaciones de software. El estilo es bastante ameno y se agradecen la cantidad de diagramas de ejemplo que aparecen a lo largo de todo el libro.

A nivel personal, el libro se queda como material de referencia (sobre todo, la parte del catálogo de estilos y las listas de información a incluir en una documentación de arquitectura).

¿Y ahora qué?

Por el lado de la formación, el siguiente libro es "The Architecture of Open Source Applications" (http://www.aosabook.org/en/index.html), que se dedica a hacer una presentación de algunos proyectos open source. Por otro lado, claro, empezar a usar las ideas del libro en desarrollos tanto propios como profesionales...