Cohesion is structural, coherence is functional: different views, different measures

Traditionally, the cohesion of a software component is considered to be a characteristic of its internal structure, and most cohesion measures proposed so far measure cohesion through the similarity of its constituent parts. However, cohesion may also be interpreted as an externally observed functional property, without regard for the component's internal structure. One way of measuring functional cohesion would be to measure the similarity of usage patterns of a component's external clients. One such measure is defined in this paper using a generic system model and its associated mechanism for calculating object sizes as the foundation. The new measure is simple to understand, easy to automate, and flexible enough to be used at different levels of abstraction. Moreover, it satisfies the most important properties that a cohesion measure is expected to satisfy. Examples are provided to illustrate the concept and its possible uses in analyzing and re-packaging of the components of a software system.

[1]  Martin Hitz,et al.  Measuring coupling and cohesion in object-oriented systems , 1995 .

[2]  Mark Lorenz,et al.  Object-oriented software metrics - a practical guide , 1994 .

[3]  Vojislav B. Misic,et al.  Cost estimation based on business models , 1999, J. Syst. Softw..

[4]  Sallie M. Henry,et al.  Object-oriented metrics that predict maintainability , 1993, J. Syst. Softw..

[5]  Edward V. Berard,et al.  Essays on object-oriented software engineering , 1992 .

[6]  Brian Henderson-Sellers,et al.  Object-oriented metrics: measures of complexity , 1995 .

[7]  Vojislav B. Misic,et al.  A Formal Approach to Metamodeling: A Generic Object-Oriented Perspective , 1997, ER.

[8]  Sandro Morasca,et al.  Property-Based Software Engineering Measurement , 1996, IEEE Trans. Software Eng..

[9]  Brian Henderson-Sellers,et al.  Object-Oriented Metrics , 1993, TOOLS.

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

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

[12]  Brian Henderson-Sellers,et al.  Coupling and cohesion (towards a valid metrics suite for object-oriented analysis and design) , 1996, Object Oriented Syst..

[13]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[14]  Brian Henderson-Sellers,et al.  Application of Cognitive Complexity Metrics to Object-Oriented Programs , 1994, Journal of object-oriented programming.

[15]  Shari Lawrence Pfleeger,et al.  Software Engineering: The Production of Quality Software , 1987 .

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

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

[18]  Scott A. Whitmire,et al.  Object-Oriented Design Measurement , 1997 .

[19]  Brian Henderson-Sellers,et al.  A conceptual model of cognitive complexity of elements of the programming process , 1995, Inf. Softw. Technol..

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

[21]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..

[22]  Robert L. Glass,et al.  Measuring software design quality , 1990 .