Software Architecture - Cohesion


Cohesion Categories

Traditionally when discussing the structure of a program developers talk in terms of modules, functions, subroutines, methods, or procedures.  All of these structures apply something slightly different, but they are all roughly equivalent types of structures.  When discussing the internal strength or cohesion of these structures it is necessary to look at pieces that comprise them.  These pieces or elements are one or more lines of code that provide the module's functionality.  It is the interrelationship between these parts that establishes a modules level of cohesion or the modules strength.

Figure 1.   Levels of cohesion

This eight-interval ordinal scale, as shown in Figure 1, is one of the fundamental concepts of software architecture.  It identifies different design options and explains the effect of making that selection on an application.  Since originally introduced in 1975, many have claimed there are good and bad forms of cohesion.  While some are more preferred over others each represents a design choice.  When designing software, as with other forms of architecture, it is sometimes necessary to make a less than optimal choices.  An informed decision about the type of cohesion being used in a design or application insures that the other possible options received some level of consideration.

Each one of the coupling categories are explained by pressing one of the buttons below.  Be sure to view the different categories of coupling be preceding with the section on classification.

Coincidental Logical Temporal Procedural Communicational Sequencial Functional Informational
Carl J. Mueller, 2001.

 This page was last update on  04/17/2001