SEPARATION OF CONCERNS: TECHNIQUES, ISSUES AND IMPLICATIONS

Authors’ Identification

Aseem Daga, Sergio de Cesare and Mark Lycett

Department of Information Systems and Computing
Brunel University
Uxbridge, Middlesex UB8 3PH
United Kingdom
 

ABSTRACT

System decomposition is one of the fundamental abstraction principles of software engineering. A way in which decomposition can be achieved and managed is through a concern-based approach. With reference to software systems concerns can be viewed as distinct system aspects or features (e.g., functional and non-functional concerns). Concern-based decomposition has become central to software development due to the benefits that such an approach can potentially provide. In order to achieve such benefits, it is necessary to be able to represent and manage the different concerns separately. This is known as separation of concerns. Such separation is difficult to obtain given that software systems tend to encapsulate multiple dimensions of concerns that cut across functional requirements.

One of the solutions regularly applied is to use techniques that separate concerns along different dimensions and then integrate them with a base dimension. To consistently apply this scenario across the whole development process, it is necessary that the various techniques be flexible and adaptive at both the conceptual and implementation levels. This paper argues that these techniques lack in flexibility as the underlying principles that define them are not yet fully developed. In order to demonstrate this limitation, the paper draws on the strengths and weaknesses of some of the major techniques for separation. The techniques are based on a set of criteria which underlie important aspects of the separation principle.  A critical analysis based on the criteria will provide an indication of the areas in which specific techniques have limited ability. Based on the outcomes, implications of the study and future work are presented.

KEYWORDS

Separation of Concerns, software development, comparative analysis, subject-oriented programming, aspect-oriented programming, composition filters, multidimensional separation of concerns.