Dependency inversion principle — principle that result in a specific form of decoupling of software modules that results in reversing of the dependency relationships established from high-level, policy-setting modules to low-level, dependency modules.