Software Architecture - Cohesion



Cohesion is an ordinal scale describing the relative functional strength of a module.  It was first introduced in the middle 1970’s as explanation of  why it took longer to maintain some programs than others.

What researchers discovered was that when one component of a program changed frequently it was necessary to change other components in the system.  This “ripple effect” was related to how the programmer constructed the interface to components.  The more a module knew about the internals of a module that it used the more like it was to require maintained when the called module changed.  It was also observed that the closer or tighter the relationship between the components, there were reduced incidents of the component being used in other places within the system.  From this initial research and subsequent studies eight general accepted categories of cohesion have been identified.   From  research done on modules with varying levels of cohesion, modules exhibiting stronger levels of cohesion appear to have fewer defects reported against them than modules with weaker levels.


W.P. Stevens, G.J. Myers, L.L. Constantine.  "Structured design".  IBM Systems Journal, vol. 2, no. 13.  pp. 115-139.  1974

Glenford J. Meyers.  Reliable Software through composite design. Van Nostrand Reinhold. New York.  1975.

Steven C. McConnell.  Code Complete:  A Practical Handbook of Software Construction.  Microsoft Press. Redmond, Washington  1993.

© Carl J. Mueller, 2001.

 This page was last update on  04/18/2001