Aspect Mining using Clone Detection
Any software system in usage is required to be adapted in order to meet the ever changing and increasingly demanding requirements of its users. This adaption does not come for free and moreover, as the system evolves, in numerous situations it demands a considerable effort from developers to comprehend what the code is actually doing, before they can carry out the pertinent maintenance to the system.
Software exploration is one of the software engineering areas meant to support the evolution of systems. Since software exploration provides techniques and tools to reveal the "anatomy" of the system, it can be used to discover features that might be hidden or tangled with the main concern(s) the system was created for.
Decomposition is a technique used in software engineering with the purpose of manage the complexity, development and maintenance of software. Object
oriented software is decomposed in packages, classes and methods, forming a class hierarchy. However, this existing decomposition will not always have a clear separation or modularization of the concerns required for the business logic of the system, revealing the necessity to develop methods and tools able to find these cross-cutting concerns (also known as "aspects" for short).
Because aspect oriented programming prevents tangling or scattering of crosscutting concerns throughout the system, the resulting system is expected to be more understandable, easier to maintain, and potentially easy to reuse. Aspect mining and refactoring are needed to "extract" aspects from an object oriented system to turn it into an aspect oriented one. In this thesis, we will concentrate on aspect mining for object oriented systems written in the Java language.
The purpose of this research project addresses the analysis of the current principles, methods and tools supporting the identification of aspects in
object-oriented systems, and investigates clone detection as a mean to achieve (automated) aspect mining.
: MSc Thesis by Orlando Mendez