The Dependency Inversion Principle (DIP) has been formalized by Robert Martin (http://www.objectmentor.com/resources/articles/dip.pdf). It states:
- High-level modules should not depend upon low-level modules. Both should depend upon abstractions.
- Abstractions should not depend upon details. Details should depend upon abstractions
The porpouse of the principle is to reduce the interdependence of the modules within the design and favour the loose coupling between layers.

0b06b0fb-49f1-4857-95ef-593fa4d0eba6|1|3.0