Architectural Views: The State of Practice in Open-Source Software ProjectsBest Paper Award CandidateResearch Paper
Context: Architectural views serve as fundamental artefacts for designing and communicating software architectures. In the context of collaborative software development, producing a sound architectural documentation, where architectural views play a pivotal role, is a crucial aspect for effective teamwork. Despite their importance, the use of architectural views in open-source projects remains to date only marginally explored.
Goal: We aim at conducting a comprehensive analysis on an extensive corpus of open-source architectural views. The goal is to understand (i) what the “history” of architectural views is, (ii) how architectural views are represented, and (iii) what architectural views are used for in the context of open-source projects.
Methods: We leverage a software repository mining process to systematically construct a dataset of 15k architectural views. Then, we perform (i) a quantitative analysis on the metadata of all 15k views and (ii) a qualitative analysis on a statistically-relevant sample of 373 views.
Results: Most projects rely on a single architectural view, which is often used to document a medium or high level description of the architecture. Views are usually created either at the beginning or at the end of a project, are rarely updated, and tend to be maintained by a single contributor. Views usually adopt an informal colored notation without a supporting legend, and frequently report technologies used. Deployment and control flow are the most recurrent viewpoints, and commonly cover concerns related to software maintainability and functional suitability.
Conclusion: The architectural views state of practice in open-source seems to favor informal descriptions of the system. Despite this, the effort needed to create views might hinder keeping views up to date, and a common syntactic ground between viewpoints seems hard to be found. To address current needs, a solution could lie in defining and popularizing versionable, templateable views that allow to be integrated in collaborative programming environments.