Towards Living Software Architecture Diagrams
Filipe F. Correia, Ricardo Ferreira, Paulo G. G Queiroz, Henrique Nunes, Matilde Barra, Duarte Figueiredo
TL;DR
The paper tackles keeping software architecture diagrams current by introducing a data-driven architecture-recovery pipeline that aggregates information from code, configs, and runtime data, while preserving user edits across regenerations. It proposes a workflow that automatically derives a wiring of components and relationships, re-applies manual edits, and regenerates diagrams that stay consistent with the implementation. A proof-of-concept prototype, Infragenie, implements Docker Compose as the data source, UML component diagrams as output, and PlantUML-based editing with GitHub integration to publish changes. The results argue that such living diagrams can reduce documentation maintenance costs, enhance collaboration, and improve alignment between architecture and code, with potential applicability to other documentation tools.
Abstract
Software architecture often consists of interconnected components dispersed across source code and other development artifacts, making visualization difficult without costly additional documentation. Although some tools can automatically generate architectural diagrams, these hardly fully reflect the architecture of the system. We propose the value of automatic architecture recovery from multiple software artifacts, combined with the ability to manually adjust recovered models and automate the recovery process. We present a general approach to achieve this and describe a tool that generates architectural diagrams for a software system by analyzing its software artifacts and unifying them into a comprehensive system representation. This representation can be manually modified while ensuring that changes are reintegrated into the diagram when it is regenerated. We argue that adopting a similar approach in other types of documentation tools is possible and can render similar benefits.
