Architecture recovery techniques: a unified view and a measure of their goodness

Arun Lakhotia

Abstract

A partitioning of software system into modules is often termed as its architecture. Each partition (or module) consists of a set of functions, procedures, global variables, and/or type declarations. To help maintain legacy systems or systems with inadequate documentation, several approaches have been proposed for recovering their architectures from their source code. This paper makes three contributions. First, it develops a scheme to classify these techniques. Second, it surveys the various architecture recovery techniques and presents them using a unified and consistent terminology. Third, it presents a measure to evaluate `how well a recovered architecture matches an expected (or actual) architecture'. It is envisioned that this measure may be used in carefully controlled experiments to discern tie contexts of applicability of various techniques and to pave the way for their improvement. Results from an experiment to evaluate the performance of two architecture recovery techniques suggested by Hutchens and Basili are presented.

Full paper