O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Langlebige Software-Architekturen, 2nd Edition

Book Description

Softwaresysteme und IT-Landschaften bestehen aus einer Vielzahl an Elementen und Beziehungen, die in ihrer Gesamtheit eine äußerst komplexe Struktur bilden. Darüber hinaus ist es im Lebenszyklus von Softwaresystemen unvermeidlich, dass die Architektur mit der Zeit degeneriert und Architekturerosion einsetzt. Das beste Mittel, um diese beiden Probleme (Größe und Architekturerosion) zu entschärfen, ist, eine möglichst einfache und gleichartige Softwarearchitektur zu wählen und diese regelmäßig zu überprüfen: also Einfachheit von Anfang an, die fortwährend qualitätsgesichert wird.Die Autorin beschreibt in diesem Sinne detailliert Architekturkonzepte, Architekturmuster und Architekturstile, die Architekturanalyse und Architekturbewertung, was architekturelle Einfachheit, Modularität, Geordnetheit und Mustertreue bedeutet sowie das praktische Vorgehen in Projekten. Auch die Themen Architektur und Agilität sowie die Rolle des Architekten im agilen Projekt werden behandelt.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Geleitwort
  5. Vorwort zur 2. Auflage
  6. Vorwort zur 1. Auflage
  7. Inhaltsverzeichnis
  8. 1 Einleitung
  9. 1.1 Softwarearchitektur
    1. 1.2 Langlebigkeit
    2. 1.3 Technische Schulden
    3. 1.3.1 »Programmieren kann jeder!«
    4. 1.3.2 Komplexität und Größe
    5. 1.3.3 Die Architekturerosion steigt unbemerkt
    6. 1.3.4 Für Qualität bezahlen wir nicht extra!
    7. 1.3.5 Arten von technischen Schulden
    8. 1.4 Was ich mir alles anschauen durfte
    9. 1.5 Wer sollte dieses Buch lesen?
    10. 1.6 Wegweiser durch das Buch
  10. 2 Aufspüren von technischen Schulden
    1. 2.1 Begriffsbildung für Bausteine
    2. 2.2 Soll- und Ist-Architektur
    3. 2.3 Verbesserung am lebenden System
    4. 2.4 False Positives und generierter Code
    5. 2.5 Spickzettel zum Sotographen
  11. 3 Architektur in Programmiersprachen
    1. 3.1 Java-Systeme
    2. 3.2 C#-Systeme
    3. 3.3 C++-Systeme
    4. 3.4 ABAP-Systeme
    5. 3.5 PHP-Systeme
  12. 4 Architekturanalyse und -verbesserung
    1. 4.1 Entwickler und Architektur
    2. 4.2 Architekturarbeit ist eine Holschuld
    3. 4.3 Live-Workshop zur Architekturverbesserung
    4. 4.4 Der Umgang mit den Vätern und Müttern
    5. 4.5 Modularity Maturity Index (MMI)
    6. 4.6 Technische Schulden im Lebenszyklus
  13. 5 Kognitive Psychologie und Architekturprinzipien
    1. 5.1 Modularität
    2. 5.1.1 Chunking
    3. 5.1.2 Übertragung auf Entwurfsprinzipien
    4. 5.1.2.1 Einheiten
    5. 5.1.2.2 Schnittstellen
    6. 5.1.2.3 Kopplung
    7. 5.2 Musterkonsistenz
    8. 5.2.1 Aufbau von Schemata
    9. 5.2.2 Übertragung auf Entwurfsprinzipien
    10. 5.3 Hierarchisierung
    11. 5.3.1 Bildung von Hierarchien
    12. 5.3.2 Übertragung auf Entwurfsprinzipien
    13. 5.4 Zyklen = misslungene Modularität + Muster
    14. 5.5 Konsequenzen für die Architekturanalyse
  14. 6 Architekturstile gegen technische Schulden
    1. 6.1 Regeln von Architekturstilen
    2. 6.2 Trennung von fachlichen und technischen Bausteinen
    3. 6.3 Schichtenarchitekturen
    4. 6.3.1 Technische Schichtung
    5. 6.3.2 Fachliche Schichtung
    6. 6.3.3 Infrastrukturschicht
    7. 6.3.4 Integration von fachlichen Schichten
    8. 6.4 Microservices und Domain-Driven Design
    9. 6.5 Mustersprachen
    10. 6.5.1 WAM-Mustersprache
    11. 6.5.2 DDD-Mustersprache
    12. 6.5.3 Typische Framework-Muster
    13. 6.6 Langlebigkeit und Architekturstile
  15. 7 Muster in Softwarearchitekturen
    1. 7.1 Abbildung der Soll-Architektur auf die Ist-Architektur
    2. 7.2 Die ideale Struktur: fachlich oder technisch?
    3. 7.3 Schnittstellen von Bausteinen
    4. 7.4 Interfaces – das architektonische Allheilmittel?
    5. 7.4.1 Die Basistherapie
    6. 7.4.2 Die Nebenwirkungen
    7. 7.4.3 Feldstudien am lebenden Patienten
    8. 7.4.4 Der Kampf mit dem Monolithen
    9. 7.5 Der Wunsch nach Microservices
  16. 8 Mustersprachen – der architektonische Schatz!
    1. 8.1 Die Schatzsuche
    2. 8.2 Die Ausgrabungsarbeiten
    3. 8.3 Aus der Schatztruhe
    4. 8.4 Den Goldanteil bestimmen
    5. 8.5 Jahresringe
    6. 8.6 Unklare Muster führen zu Zyklen
  17. 9 Chaos in Schichten – der tägliche Schmerz
    1. 9.1 Bewertung des Durcheinanders
    2. 9.1.1 Ausmaß der Unordnung
    3. 9.1.1.1 Architekturstile und Zyklen
    4. 9.1.1.2 Programmzeilen in Zyklen
    5. 9.1.1.3 Dependency Injection und Zyklen
    6. 9.1.2 Umfang und Verflochtenheit
    7. 9.1.3 Reichweite in der Architektur
    8. 9.2 Das große Wirrwarr
    9. 9.2.1 Der Schwarze-Loch-Effekt
    10. 9.2.2 Der Befreiungsschlag
    11. 9.2.3 Technische Schichtung als Waffe
    12. 9.2.4 Mustersprache als Leuchtturm
    13. 9.3 Uneven Modules
  18. 10 Modularität schärfen
    1. 10.1 Kohäsion von Bausteinen
    2. 10.2 Größen von Bausteinen
    3. 10.3 Größen von Klassen
    4. 10.4 Größe und Komplexität von Methoden
    5. 10.5 Lose Kopplung
    6. 10.6 Kopplung und Größe von Klassen
    7. 10.7 Wie modular sind Sie?
  19. 11 Geschichten aus der Praxis
    1. 11.1 Das Java-System Alpha
    2. 11.2 Das C#-System Gamma
    3. 11.3 Das C++-System Beta
    4. 11.4 Das Java-System Delta
    5. 11.5 Das Java-System Epsilon mit C#-Satelliten
    6. 11.5.1 Java-Epsilon
    7. 11.5.2 C#-Epsilon 1
    8. 11.5.3 C#-Epsilon 2
    9. 11.6 Das ABAP-System Lambda
  20. 12 Fazit: der Weg zu langlebigen Architekturen
  21. Anhang
    1. A Analysewerkzeuge
    2. A.1 Lattix
    3. A.2 Sonargraph Architect
    4. A.3 Sotograph und SotoArc
    5. A.4 Structure101
  22. Fußnoten
  23. Literatur
  24. Index