Software-intensive systems evolve continuously under the pressure of new and changing requirements, generally leading to an increase in overall system complexity. In this respect,...
When reengineering legacy systems, it is crucial to assess if the legacy behavior has been preserved or how it changed due to the reengineering effort. Ideally if a legacy system ...
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...
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 ...
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...