The high cost of software maintenance could potentially be greatly reduced by the automatic refactoring of object-oriented programs to increase their understandability, adaptabili...
Understanding large software systems is simplified when a combination of techniques for static and dynamic analysis is employed. Effective dynamic analysis requires that executio...
A trace is a record of the execution of a computer program, showing the sequence of operations executed. A trace may be obtained through static or dynamic analysis. An object trac...
As size and complexity of software systems increase, preserving the design and specification of their implementation structure gains importance in order to maintain the evolvabil...
It is known that well over 50% of replacement projects fail. Requirements gathering go someway to contributing to this statistic; if the requirements we gather for the new system ...
Recovering the architecture is the first step towards reengineering a software system. Many reverse engineering tools use top-down exploration as a way of providing a visual and ...
Managing traceability data is an important aspect of the software development process. In this paper we investigate to what extent latent semantic indexing (LSI), an information r...
This paper describes a case study that uses clustering to group classes of an existing objectoriented system of significant size into subsystems. The clustering process is based o...