Recovering the Evolution of Object Oriented Software Systems Using a Flexible Query Engine

Lukas Steiger, Sté́phane Ducasse, Michele Lanza · 2001

Since software systems must evolve to cope with changing demands, the investment of time and effort won’t cease after first delivery. Developers that join a project later in the development cycle may have a hard time to understand the structure of complex systems. Moreover they may not know about concepts that emerged from earlier implementations. We therefore want to find out what exactly happens during evolution of software systems. We developed a method based on simple metric heuristics to detect changes between different versions of a software system. With our query-based approach we can measure overall changes in terms of removals and additions in the code. We are also able to detect different kinds of refactorings like restructuring in the class hierarchy and moved features between entities. Historical information about code size and changes in the code structure helps us to find interesting patterns and to discover unknown relationships and dependencies among source code entities.

Read the paper · More papers on PaperTik