Program slices as an abstraction for cohesion measurement

Abstract The basis for measuring many attributes in the physical world, such as size and mass, is fairly obvious when compared to the measurement of software attributes. Software has a very complex structure, and this makes it difficult to define meaningful measures that actually quantify attributes of interest. Program slices provide an abstraction that can be used to define important software attributes that can serve as a basis for measurement. We have successfully used program slices to define objective, meaningful, and valid measures of cohesion. Previously, cohesion was viewed as an attribute that could not be objectively measured; cohesion assessment relied on subjective evaluations. In this paper we review the original slice-based cohesion measures defined to measure functional cohesion in the procedural paradigm as well as the derivative work aimed at measuring cohesion in other paradigms and situations. By viewing software products at differing levels of abstraction or granularity, it is possible to define measures which are available at different points in the software life cycle and/or suitable for varying purposes.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Norman E. Fenton,et al.  Software Metrics: A Rigorous Approach , 1991 .

[3]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[4]  Linda M. Ott,et al.  The Relationship Between Slices And Module Cohesion , 1989, 11th International Conference on Software Engineering.

[5]  Sakari Karstu,et al.  An Examination of the Behavior of Slice Based Cohesion Measures , 1994 .

[6]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[7]  James M. Bieman,et al.  Cohesion and reuse in an object-oriented system , 1995, SSR '95.

[8]  James M. Bieman,et al.  Measuring Design-Level Cohesion , 1998, IEEE Trans. Software Eng..

[9]  James M. Bieman,et al.  Measuring Functional Cohesion , 1994, IEEE Trans. Software Eng..

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

[11]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[12]  L. Ott,et al.  Developing Measures of Class Cohesion for Object-Oriented Software , 1995 .

[13]  B. S. Gupta A Critique of Cohesion Measures in the Object-Oriented Paradigm , 1997 .

[14]  Mary Jean Harrold,et al.  Slicing object-oriented software , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[15]  James M. Bieman,et al.  Effects of software changes on module cohesion , 1992, Proceedings Conference on Software Maintenance 1992.

[16]  Gregg Rothermel,et al.  A Coherent Family of Analyzable Graphical Representations for Object-Oriented Software , 1996 .

[17]  Glenford J. Myers,et al.  Structured Design , 1999, IBM Syst. J..

[18]  Meilir Page-Jones,et al.  The practical guide to structured systems design , 1980 .

[19]  Kendall Scott,et al.  UML distilled - applying the standard object modeling language , 1997 .

[20]  Martin F. Shumway,et al.  Measuring Class Cohesion in Java , 1997 .

[21]  Linda M. Ott,et al.  Slice based metrics for estimating cohesion , 1993, [1993] Proceedings First International Software Metrics Symposium.