José María Conejero Manzano
Enhancing business performance in contemporary domains requires systems whose size and intricacy challenge most of the current software engineering methods and tools, In this setting, a wide spectrum of methodologies, models, languages and tools have been adopted to deal with the increasing complexity of software systems. Aspect-Oriented Software Development (AOSD) is one of these methodologies that have emerged to tackle the design and development of complex software systems.
One of the key principles in AOSD is Separation of Concerns (SOC). Related with this principle is the problem of crosscutting concerns. Crosscutting is usually described in terms of scattering and tangling. However, the distinction between these concepts has been traditionally left to developers' intuition, sometimes leading to ambiguous statements and confusion. In that sense, precise definitions are required for certain research areas, e.g. for the identification of crosscutting concerns or the definition of software metrics. This thesis proposes a conceptual framework that allows the formal definition of the terms of scattering, tangling and crosscutting. The conceptual framework is based on the concept of crosscutting pattern which denotes to the situation where two different domains, called source and target, are related by a traceability link or mapping. The terms of scattering, tangling and crosscutting are defined, thus, as special cases of this mapping. The utilization of this formal definition aims at identifying situations of crosscutting. Since the crosscutting pattern is not tied to any specific deployment artefact, it may be applied to any development phase, allowing the identification of crosscutting at any abstraction level (from requirements to implementation). Moreover, the crosscutting pattern can be applied across several refinement levels enabling traceability of crosscutting concerns.
Usability of the framework is illustrated by means of applying it to several research areas such as aspect mining, software assessment, identification of crosscutting features in Software Product Lines (SPL) or maintainability analysis. As it is aforementioned, the utilization of the conceptual framework helps to identify crosscutting at any abstraction level. Aspect mining is its main application area. Aspect mining approaches have traditionally focused on the programming level, where architectural decisions have already been made. In this setting, in this thesis an aspect mining process to identify crosscutting is presented. The process extends the conceptual framework by using syntactical and dependency-based analyses to automatically identify trace relations between source and target elements. Although the process may be used at any development phase, its utilization is illustrated at the requirements level. The identification of crosscutting concerns at early stages of development aims at incorporating the benefits of aspect-orientation at the very beginning of the development process. Moreover, early aspect refactoring is given for UML use cases diagrams, improving modularity of the system. Using this refactoring, the system may be easily evolved just using simple composing rules which allow the weaving of base and crosscutting concerns.
The conceptual framework also allows the definition of concern driven metrics. These metrics may be used at indications for modularity assessment. Then, using these metrics, the aspect mining process previously presented may be completed. In particular, the metrics enable the application of an empirical analysis of modularity measuring the degree of crosscutting in a system. Again, the metrics presented are language-agnostic so that they are not tied to any development artefact. However, in order to illustrate its applicability, canonical instantiations of the crosscutting metrics are given for use cases in this thesis. The metrics are theoretical and empirically validated. By the theoretical validation, its accuracy for measuring crosscutting properties is demonstrated. This validation is performed by comparing the results obtained by the metrics with those obtained by similar metrics previously introduced in the literature. The results show how the metrics presented generalizes existing ones. They also provide evidences of the need of an specific metric for crosscutting that other metrics suites lack of.
On the other hand, by the empirical validaton of the metrics, its utility is demonstated in terms of being related to other software quality attributes in expected ways. In this thesis, this utility has been demonstrated by relating them to two ISO/IEC 9126 maintainability attributes, namely stability and changeability. In particular, a first and original exploratory study is shown which investigates the correlation between early crosscutting metrics and stability or changeability. The results obtained empirically demonstrate how crosscutting negatively affects to software stability and changeability at early stages of development. These results empirically support the ideas introduced by the aspect community (through several years) claiming that crosscutting is usually harmful to software quality.
The applicability of the conceptual framework is, finally, illustrated by applying the aspect mining process to identify crosscutting features in the Software Product Line (SPL) domain. Crosscutting is a special kind of dependency that compromises the composition and reutilization of SPL. Then, the identification of these dependencies helps to reduce them by refactoring these crosscutting features using aspect-oriented techniques. The need for introducing aspect-oriented techniques to model variable features in SPL has been introduced by several approaches in the literature. However, most of these approaches lack of a process to identify crosscutting features so that they consider as crosscutting features either all the variable features or the well-known crosscutting features widely identified in the literature. The utilization of the aspect mining process presented in this document automates the identification of the crosscutting features allowing their isolation and refactoring. The concern driven metrics proposed have been also applied to the SPL domain showing the benefits obtained by the assessment of crosscutting in SPL as well, e.g. anticipating the impact of a feature change before it occurs.