From the perspective of software,
- Cohesion refers to the extent of the relatedness to which the elements in a module are organized. “High cohesion” means constituent elements of a module are highly related. Class in object-oriented programming is the most common construct as a module.
- Coupling refers to the extent of the dependency to which the relationship and interaction between modules are managed. “Low coupling” means the dependency of a module on others is well-managed. Interface and abstract class are common constructs that support the design pattern, dependency injection, to implement low coupling.
- A module is the outcome of modularization and encapsulation that puts related elements together and hides information and logic.