Skip to content

Dependency Direction

Dependencies should point toward stability - volatile components should depend on stable components, never the reverse

Tension Addressed

Coupling vs. Flexibility

Recognizable As

Core business logic with no outward dependencies; plugins depending on the application, not vice versa; abstract interfaces owned by inner layers; import statements pointing toward abstractions

Canonical Sources

Martin, "Clean Architecture" (2017); Martin, "Agile Software Development" (2002)

Transfers To

Organizational Design (reporting structures), Supply Chain (supplier relationships), Build Systems (compilation order), Package Management (version constraints)

Sub-concepts: - Stable Dependencies Principle: Depend in the direction of stability - Stable Abstractions Principle: Stable components should be abstract - Dependency Inversion Principle: High-level policy should not depend on low-level detail