Context: Conformance between architecture and implementation is a key aspect of architecture-centric development. Unfortunately, the architecture "as documented" and the architecture "as implemented" tend to diverge from each other over time. As this gap gets wider, the architects' reliance on architecture-level analyses is compromised. Thus, conformance checks should be run periodically on the system in order to detect and correct differences. In practice, tool support is very beneficial for these checks.
Objective: Despite having a structural conformance analysis, assessing whether the main scenarios describing the architectural behavior are faithfully implemented in the code is still challenging. Checking conformance to architectural scenarios is usually a time-consuming and error-prone activity. In this article, we describe a tool approach called ArchSync that helps architects to reconcile a scenario-based architectural description with its source code, as changes are being made on the code.
Method: The architecture is specified with Use-Case Maps (UCMs), a notation for modeling both high-level structure and behavior. ArchSync applies heuristics that incrementally detect code deviations with respect to predetermined UCMs, based on the analysis of system execution traces for those UCMs. Also, ArchSync provides suggestions for re-synchronizing the UCMs with the code.
Results: We have evaluated a prototype of ArchSync in three medium-size case-studies, involving developers with moderate architecture experience. We compared time consumed, code browsed and suggestions for re-synchronizing the UCMs by these developers, with and without the support of ArchSync.
Conclusion: The results from case-studies and lessons learned have shown that the ArchSync approach is practical and reduces conformance checking efforts.