Cohesion (computer science)

cohesioncohesiveHigh Cohesioncohesivenessloose cohesion
In computer programming, cohesion refers to the degree to which the elements inside a module belong together.wikipedia
52 Related Articles

Coupling (computer programming)

couplingdependenciesdependency
Cohesion is often contrasted with coupling, a different concept.
Coupling is usually contrasted with cohesion.

Software metric

software metricsmetricmetrics
The software metrics of coupling and cohesion were invented by Larry Constantine in the late 1960s as part of Structured Design, based on characteristics of “good” programming practices that reduced maintenance and modification costs.

Modular programming

modulesmodularmodule
In computer programming, cohesion refers to the degree to which the elements inside a module belong together.

Larry Constantine

ConstantineLarry L. Constantine
The software metrics of coupling and cohesion were invented by Larry Constantine in the late 1960s as part of Structured Design, based on characteristics of “good” programming practices that reduced maintenance and modification costs. Studies by various people including Larry Constantine, Edward Yourdon, and Steve McConnell indicate that the first two types of cohesion are inferior; communicational and sequential cohesion are very good; and functional cohesion is superior.
As part of structured design, Constantine developed the concepts of cohesion (the degree to which the internal contents of a module are related) and coupling (the degree to which a module depends upon other modules).

Loose coupling

loosely coupledlooser couplingloosely-coupled
High cohesion often correlates with loose coupling, and vice versa.

Structured analysis

Structured DesignSA/SDstructured'' approaches
The software metrics of coupling and cohesion were invented by Larry Constantine in the late 1960s as part of Structured Design, based on characteristics of “good” programming practices that reduced maintenance and modification costs.

Computer programming

programmingcodingprogrammable
In computer programming, cohesion refers to the degree to which the elements inside a module belong together.

Level of measurement

quantitativelevels of measurementscale
Cohesion is an ordinal type of measurement and is usually described as “high cohesion” or “low cohesion”.

Robustness (computer science)

robustnessrobustNumerical robustness
Modules with high cohesion tend to be preferable, because high cohesion is associated with several desirable traits of software including robustness, reliability, reusability, and understandability.

Reusability

reusableSoftware Reusabilityoften re-used
Modules with high cohesion tend to be preferable, because high cohesion is associated with several desirable traits of software including robustness, reliability, reusability, and understandability.

Rubric (academic)

rubricrubricsscoring rubric
Cohesion is a qualitative measure, meaning that the source code to be measured is examined using a rubric to determine a classification.

Edward Yourdon

Ed YourdonYourdonYourdon Structured Method
Studies by various people including Larry Constantine, Edward Yourdon, and Steve McConnell indicate that the first two types of cohesion are inferior; communicational and sequential cohesion are very good; and functional cohesion is superior.

Steve McConnell

McConnell
Studies by various people including Larry Constantine, Edward Yourdon, and Steve McConnell indicate that the first two types of cohesion are inferior; communicational and sequential cohesion are very good; and functional cohesion is superior.

Man-Computer Symbiosis

Jacucci gives the description of Lickliders' vision as being the very tight coupling of human brains and computing machines (c.f. brain, the term cohesion & the general definitions of the term coupling).

GRASP (object-oriented design)

GRASPGRASP information expertGRASP principles
The different patterns and principles used in GRASP are controller, creator, indirection, information expert, high cohesion, low coupling, polymorphism, protected variations, and pure fabrication.

Code reuse

software reusereusere-use
Some characteristics that make software more easily reusable are modularity, loose coupling, high cohesion, information hiding and separation of concerns.

Software design pattern

design patterndesign patternspattern
For further background on object-oriented design, see coupling and cohesion, inheritance, interface, and polymorphism.