Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2017:27:index

27. Dependency-Inversion-Prinzip

Themen
Das Dependency-Inversion-Prinzip
Beispiele für seinen Einsatz
Bedeutung im Gesamtkontext der Software-Architektur
Folien
PDF


Zentrale Aspekte

  • Die Kernaspekte einer Anwendung sollten nicht von ihrer Peripherie abhängen – sondern beide von Abstraktionen.
  • Anwendungsentwicklung zielt auf die zugrundeliegenden Abstraktionen und ihre stabilen, abstrakten Schnittstellen.
  • Anwendungen bestehen aus klar getrennten Schichten, die Dienste über definierte Schnittstellen bereitstellen.
  • Die Anwendungslogik steht im Zentrum. Datenquellen und Nutzerschnittstellen sind peripher.
  • Umkehr der Abhängigkeiten sorgt für Unabhängigkeit und intrinsische Testbarkeit der einzelnen Schichten.

Weiterführende Literatur

Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.

Wie alle anderen SOLID-Prinzipien wurde das DIP von Robert C. Martin prägnant formuliert. Vergleiche dazu Kapitel 11 in [Martin, 2003Martin, Robert C. (2003): Agile Software Development. Principles, Patterns, and Practices, Prentice Hall, Upper Saddle River, New Jersey] und Kapitel 11 in [Martin, 2018Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston]. Das Pendant auf höherer architektonischer Ebene, das Zusammenspiel von Stable-Dependencies- und Stable-Abstractions-Prinzip, wird von Robert C. Martin ebenda in späteren Kapiteln formuliert.

Die dem DIP zugrunde liegenden Entwurfsmuster, insbesondere „Abstract Factory“, finden sich im Buch der „Gang of Four“ [Gamma, 1995Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995): Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley, Boston] wieder.

  • Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995): Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley, Boston
  • Martin, Robert C. (2003): Agile Software Development. Principles, Patterns, and Practices, Prentice Hall, Upper Saddle River, New Jersey
  • Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston
de/lehre/programmierkonzepte/ws2017/27/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1