A Critical Review of Cohesion Measures and Measurement Frameworks in Aspect-Oriented Systems

Cohesion is considered as one of the most important software quality attributes. Cohesion refers to the degree of relatedness between members of a software component. Cohesion is one of the few internal software attributes that has been both theoretically and empirically shown to have large impact on external software quality characteristics like maintainability, modularity, reusability, testability and usability. AspectOriented Programming (AOP) is an emerging technique that provides a means to cleanly encapsulate and implement aspects that crosscut other modules. Aspects are linguistic entities aimed at describing a crosscutting concern. However, despite an interesting body of work for measuring cohesion in AspectOriented (AO) Systems, there is poor understanding of cohesion in the contest of AOP. Some researchers and practitioners have proposed cohesion measures, cohesion measurement/assessment frameworks and metrics for AOP. But most of the framework and metrics are for AspectJ programming language. They have defined cohesion in their frameworks and metrics in terms of AspectJ programming language. In this paper we have critically reviewed and compared exiting cohesion measures on the basis of cohesion measurement criterions. We found, most of the existing measures and measurement frameworks are for the family of AspectJ (AspectJ-like) programming languages, there is no any existing generic cohesion framework that takes into account other families of AOP languages such as CaesarJ and Hyper/J. So there is need to define a generic/unified cohesion measurement framework. The unified framework could contribute in better understanding of cohesion in AOP. This will be helpful in (i) comparing measures and their potential use, (ii) integrating different existing measures which examine the same concept in different ways, and (iii) defining new cohesion metrics, which in turn permits the analysis and caparison of Java, AspectJ and CaesarJ implementations.

[1]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[2]  Ho-Won Jung,et al.  Measuring software product quality: a survey of ISO/IEC 9126 , 2004, IEEE Software.

[3]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[4]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[5]  Rajesh Kumar,et al.  An Evaluation of Maintainability of Aspect-Oriented Systems: a Practical Approach , 2007 .

[6]  Cemal Yilmaz,et al.  Software Metrics , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[7]  Barbara A. Kitchenham,et al.  A Method for Software Quality Planning, Control, and Evaluation , 1999, IEEE Softw..

[8]  Carlos José Pereira de Lucena,et al.  On the Reuse and Maintenance of Aspect-Oriented Software: An Assessment Framework , 2003, Anais do XVII Simpósio Brasileiro de Engenharia de Software (SBES 2003).

[9]  Mariano Ceccato,et al.  Measuring the Effects of Software Aspectization , 2004 .

[10]  Lionel C. Briand,et al.  A Unified Framework for Cohesion Measurement in Object-Oriented Systems , 1997, Proceedings Fourth International Software Metrics Symposium.

[11]  Mourad Badri,et al.  A Cohesion Measure for Aspects , 2006, J. Object Technol..

[12]  Alessandro F. Garcia,et al.  On the Modularity Assessment of Software Architectures: Do my architectural concerns count? , 2007 .

[13]  Baowen Xu,et al.  Measuring Aspect Cohesion , 2004, FASE.

[14]  Karl J. Lieberherr,et al.  Aspect-oriented programming with adaptive methods , 2001, CACM.

[15]  Shari Lawrence Pfleeger,et al.  Software Metrics , 1991 .