Understanding architecture non-conformance

Vanius Zapalowski, Daltro José Nunes, Ingrid Nunes · 2018

Evaluations of approaches and tools that assess the matching between a conceptual software architecture and its implementation show that divergences typically occur. However, there is limited investigation of the nature of these divergences. Such an investigation can reveal underlying problems, e.g. the use of inadequate granularity to document the architecture. In this paper, we evaluate and characterize the divergences between conceptual architectural rules and dependencies among modules implemented in the source code, potentially reflecting implemented rules. This was done by means of a study involving six subject systems, in which we extracted source code dependencies and compared them against architectural rules using an association rule algorithm that provides a metric based on frequency. This allowed us to make a quantitative and qualitative analysis of the rule-dependency conformance. We concluded that, as expected, some systems have a large gap between conceptual architectural rules and implemented dependencies, with divergences between conceptual rules and dependencies ranging from 26.1% to 94.1%. Based on the relationship of implemented dependencies and architectural rules, we identified the occurrence of four types of dependencies, which revealed that large non-conformance is not always due to architectural violations. In some cases, it is due to the coarse-grained representation of the software architecture, which does not capture implemented dependencies that are consistent with conceptual architectural rules---these are the identified intra-module and sub-conceptual dependencies. This indicates that finer-grained architectural documentation is needed to use this information to govern software development and evolution.

Read the paper · More papers on PaperTik