Automated Software Engineering

, Volume 13, Issue 2, pp 225–256

Using software evolution to focus architectural recovery


DOI: 10.1007/s10515-006-7737-5

Cite this article as:
Medvidovic, N. & Jakobac, V. Autom Software Eng (2006) 13: 225. doi:10.1007/s10515-006-7737-5


Ideally, a software project commences with requirements gathering and specification, reaches its major milestone with system implementation and delivery, and then continues, possibly indefinitely, into an operation and maintenance phase. The software system's architecture is in many ways the linchpin of this process: it is supposed to be an effective reification of the system's technical requirements and to be faithfully reflected in the system's implementation. Furthermore, the architecture is meant to guide system evolution, while also being updated in the process. However, in reality developers frequently deviate from the architecture, causing architectural erosion, a phenomenon in which the initial, “as documented'' architecture of an application is (arbitrarily) modified to the point where its key properties no longer hold. Architectural recovery is a process frequently used to cope with architectural erosion whereby the current, “as implemented” architecture of a software system is extracted from the system's implementation. In this paper we propose a light-weight approach to architectural recovery, called Focus, which has three unique facets. First, Focus uses a system's evolution requirements to isolate and incrementally recover only the fragment of the system's architecture affected by the evolution. In this manner, Focus allows engineers to direct their primary attention to the part of the system that is immediately impacted by the desired change; subsequent changes will incrementally uncover additional parts of the system's architecture. Secondly, in addition to software components, which are the usual target of existing recovery approaches, Focus also recovers the key architectural notions of software connector and architectural style. Finally, Focus does not only recover a system's architecture, but may in fact rearchitect the system. We have applied and evaluated Focus in the context of several off-the-shelf applications and architectural styles to date. We discuss its key strengths and point out several open issues that will frame our future work.


Software architecture Architecture recovery Architecture erosion Evolution Architectural style Focus 

Copyright information

© Springer Science + Business Media, Inc. 2006

Authors and Affiliations

  1. 1.Computer Science DepartmentUniversity of Southern CaliforniaLos AngelesUSA

Personalised recommendations