Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2017:22:index

22. Architektur

Themen
Motivation und Begriffsklärung
Aspekte von Software-Architektur
Symptome schlechter und Prinzipien guter Software-Architektur
Im Zentrum: ein Modell der komplexen Realität
Folien
PDF


Zentrale Aspekte

  • Software ist mehr als die Summe der Einzelteile.
  • Architektur schlägt die Brücke vom sauberen Code
    einzelner Module zur eigentlichen Anwendung.
  • Intuitive Lösungen widersprechen oft dem großen Ziel
    flexibler, erweiterbarer und wiederverwendbarer Software.
  • Gute Architektur fokussiert auf die Funktionalität,
    nicht auf konkrete Umsetzungen.
  • Für objektorientierte Architektur gibt es eine Reihe
    bewährter Prinzipien für „saubere Architektur“.

Weiterführende Literatur

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

Eine gute Einführung in die grundlegende Architektur von Unternehmensanwendungen (Enterprise Applications) und vor allem die diversen Entscheidungen, die anstehen, liefert der erste Teil (Kapitel 1–8) von [Fowler, 2003Fowler, Martin (2003): Patterns of Enterprise Application Architecture, Addison Wesley, Boston]. Der Rest des Buches ist eine Beschreibung der zugehörigen Muster. Fowler hat einen deutlich nüchterneren Schreibstil als Robert C. Martin (alias „Uncle Bob“), verweist dafür aber deutlich mehr auf die Literatur.

Sehr neu (2018) und eine Zusammenfassung von vorher in diversen anderen Büchern und Blog-Einträgen verstreuten Informationen ist [Martin, 2018Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston]. Ähnlich schon wie sein Buch „Clean Code“ [Martin, 2008Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey] gibt Robert C. Martin hier viele allgemeine Hinweise, wie man gute Software schreibt. Einige Inhalte sind aber auch nur mit minimalen Änderungen aus vorangegangenen Büchern von ihm, u.a. [Martin, 2003Martin, Robert C. (2003): Agile Software Development. Principles, Patterns, and Practices, Prentice Hall, Upper Saddle River, New Jersey, Martin, 2008Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey], übernommen.

Der Schwerpunkt der Softwareentwicklung liegt auf der Lösung eines konkreten, komplexen Problems. Entsprechend sollte ein gutes Modell der Problemdomäne den Kern der entwickelten Software bilden. Das ist die Kernaussage des Buches „Domain-Driven Design“ von Eric Evans [Evans, 2004Evans, Eric (2004): Domain-Driven Design, Addison Wesley, Boston]. Die Betonung auf der Bedeutung der Modell-Schicht in einer geschichteten Architektur und ihrer Unabhängigkeit von allen anderen Schichten hat er mit anderen Autoren, allen voran Robert C. Martin [Martin, 2018Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston], gemeinsam. Allerdings liefert er als einer der wenigen sehr detaillierte Hinweise, wie sich ein solches Modell der Problemdomäne entwickeln lässt und worauf man dabei unbedingt achten sollte.

Ein Klassiker, der die Entwicklung objektorientierter Software beschreibt, allerdings (leider) nur noch antiquarisch erhältlich ist, ist Bertrand Meyers „Object-oriented Software Construction“ [Meyer, 1997Meyer, Bertrand (1997): Object-Oriented Software Construction, Prentice Hall PTR, Upper Saddle River, New Jersey]. Das Buch beschreibt dabei alle Ebenen der Softwareentwicklung von den Details des Entwurfs einzelner Klassen bis hin zum abstrakten Zusammenspiel von Komponenten.

Eine gute Zusammenfassung der wesentlichen Kriterien für den Entwurf objektorientierter Software liefern die einführenden Kapitel im Buch der „Viererbande“ [Gamma, 1995Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995): Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley, Boston], wenngleich in sehr kondensierter Form.

  • Evans, Eric (2004): Domain-Driven Design, Addison Wesley, Boston
  • Fowler, Martin (2003): Patterns of Enterprise Application Architecture, Addison Wesley, Boston
  • 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. (2008): Clean Code. A Handbook of Agile Software Craftmanship, 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
  • Meyer, Bertrand (1997): Object-Oriented Software Construction, Prentice Hall PTR, Upper Saddle River, New Jersey
de/lehre/programmierkonzepte/ws2017/22/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1