Introduction to OOP: Chapter 17 : Visibility and Dependency
Coupling and Cohesion
Ideas from the Software Engineering Community, pre-dating OOP.
Coupling refers to the extent to which one component uses another
to perform actions. Generally a goal is to reduce coupling between software.
Cohesion refers to the extent to which the actions of a component
seem to be tied together in purpose. Generally a goal is to increase
cohesion within a software component.