User Tools

Site Tools


principles:high_cohesion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
principles:high_cohesion [2012-12-17 22:45] – acronym christianprinciples:high_cohesion [2021-09-02 20:07] – old revision restored (2021-03-25 15:16) 65.21.179.175
Line 9: Line 9:
  
  
-===== Definition =====+===== Principle Statement =====
  
 [[glossary:Cohesion]] in a [[glossary:module]] should be high. [[glossary:Cohesion]] in a [[glossary:module]] should be high.
Line 22: Line 22:
  
 Not adhering to this principle, i.e. having a low cohesion, means that one module has several unrelated or only loosely related responsibilities. A change in the requirements for one of these may thus also affect the others which would not be the case in a highly cohesive module. Not adhering to this principle, i.e. having a low cohesion, means that one module has several unrelated or only loosely related responsibilities. A change in the requirements for one of these may thus also affect the others which would not be the case in a highly cohesive module.
 +
 +
 +===== Strategies =====
  
  
Line 44: Line 47:
 ==== Specializations ==== ==== Specializations ====
  
-  * [[principles:Information Expert]]: Adhering to information expert means that a module only has responsibilities which belong together. So this increases cohesion. +  * [[Information Expert]]: Adhering to information expert means that a module only has responsibilities which belong together. So this increases cohesion. 
-  * [[principles:Constantine's Law]]+  * [[Constantine's Law]]: Constantine's Law is just the combination of HC and LC.
  
 ==== Contrary Principles ==== ==== Contrary Principles ====
  
-  * [[principles:Keep It Simple Stupid]]: Sometimes it is simpler to assign a minor unrelated responsibility to a module, which lowers the cohesion. On the other hand introducing a new module for the responsibility would be better in terms of cohesion but increases complexity as it increases the number of modules.+  * [[More Is More Complex]] (MIMC)Making a module highly cohesive often results in additional modules. Sometimes it is simpler to assign a minor unrelated responsibility to a module, which lowers the cohesion. 
  
 ==== Complementary Principles ==== ==== Complementary Principles ====
  
-  * [[principles:Low Coupling]] +  * [[Low Coupling]] (LC): A system consisting of one single module has a very low coupling as there are no dependencies on other modules. But such a system also has low cohesion. The other extreme, very many highly cohesive modules, naturally has a higher coupling between the modules. So here a compromise has to be found. 
-  * [[principles:Principle of Least Surprise]]+  * [[Encapsulate the Concept that Varies]] (ECV): Adhering to HC often results in modules to be split up into several more cohesive ones. ECV gives further advice on how to do that.
  
 ==== Principle Collections ==== ==== Principle Collections ====
Line 76: Line 80:
   * [[wp>Cohesion (computer science)]]   * [[wp>Cohesion (computer science)]]
   * [[wiki>CouplingAndCohesion]]   * [[wiki>CouplingAndCohesion]]
 +
principles/high_cohesion.txt · Last modified: 2021-10-18 21:36 by christian