Background
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.
References
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.