Forward and reverse repair of software architecture
John Tran, Richard C. Holt · 1999
As a software system evolves, it is common for the as-built architecture to diverge from the asdesigned architecture. This gap between the as-designed (conceptual) and the as-built (concrete) architecture leads to a false understanding of the system, resulting in error prone maintenance decisions. We present an approach to repair an architecture of a software system. Our approach attempts to reconcile the conceptual architecture with the concrete architecture by performing a series of simple, semiautomatic repair actions. We applied our architecture repair actions to the Linux kernel and were able to repair many of the anomalies its architecture. 1 Introduction Software systems must be continually maintained else they risk becoming obsolete [8]. As they evolve, so too do their architectures. New modules and dependencies are added to support new features, while obsolete functionalities are removed. Consequently, the asbuilt (concrete) architecture of the system will gradually diverg...