Software Package Coupling Fundamentals

Today I will write about about the topic of software package coupling and some of the consequences of “good” and “bad” couplings.

In particular I’m going to focus upon the following three principles:

The Acyclic Dependencies Principle states that there must be no cycles in the package dependency structure.

The Stable Dependencies Principle states a package should only depend upon packages that are more stable than it is.

The Stable Abstractions Principle states the abstractness of a package should be in proportion to its stability.