Basiswissen für Softwarearchitekten, 4th Edition

Book description

Softwarearchitektur bildet einen wesentlichen Erfolgsfaktor für Softwareprojekte. Sie stellt im Sinne einer systematischen Konstruktion sicher, dass Qualitätsanforderungen wie beispielsweise Erweiterbarkeit, Flexibilität, Performance oder Time-to-Market erfüllt werden können.

Dieses Buch vermittelt das notwendige Grundlagenwissen, wie Techniken und Methoden für Entwurf, Dokumentation und Qualitätssicherung, und die Fähigkeiten, um eine dem Problem angemessene Softwarearchitektur für Systeme zu entwerfen.

Der Inhalt orientiert sich am Lehrplan zum »Certified Professional for Software Architecture – Foundation Level« (CPSA-F) des International Software Architecture Qualification Board (iSAQB). Die 4. Auflage bietet eine Aktualisierung auf Basis des CPSA-F-Lehrplans in der Version 5.1.

Table of contents

  1. Cover
  2. Über den Autor
  3. Titel
  4. Impressum
  5. Vorwort zur 4. Auflage
  6. Inhaltsübersicht
  7. Inhaltsverzeichnis
  8. 1 Einleitung
    1. 1.1 Softwarearchitektur als Disziplin im Software Engineering
    2. 1.2 iSAQB – International Software Architecture Qualification Board
    3. 1.3 Certified Professional for Software Architecture – Foundation und Advanced Level
    4. 1.4 Zielsetzung des Buches
    5. 1.5 Voraussetzungen
    6. 1.6 Leitfaden für den Leser
    7. 1.7 Zielpublikum
    8. 1.8 Danksagungen
  9. 2 Grundlagen von Softwarearchitekturen
    1. 2.1 Einbettung in den iSAQB-Lehrplan
    2. 2.1.1 Lernziele
    3. 2.2 Softwareintensive Systeme und Softwarearchitekturen
    4. 2.2.1 Was ist ein softwareintensives System?
    5. 2.2.2 EXKURS: Ausprägungen von softwareintensiven Systemen
    6. 2.2.3 Bedeutung der Softwarearchitektur für ein softwareintensives System
    7. 2.3 Grundlegende Konzepte von Softwarearchitekturen
    8. 2.3.1 Was ist eine Softwarearchitektur?
    9. 2.3.2 Bausteine, Schnittstellen und Konfigurationen
    10. 2.3.3 Konzepte der Beschreibung von Softwarearchitekturen
    11. 2.3.4 Architekturbeschreibung und Architekturebenen
    12. 2.3.5 Wechselwirkungen zwischen Softwarearchitektur und Umgebung
    13. 2.3.6 Qualität und Nutzen der Softwarearchitektur
    14. 2.4 Der Softwarearchitekturentwurf aus der Vogelperspektive
    15. 2.4.1 Ziele und Aufgaben des Softwarearchitekturentwurfs
    16. 2.4.2 Der Softwarearchitekturentwurf im Überblick
    17. 2.4.3 Wechselspiel der Tätigkeiten und Abstraktionsstufen im Entwurf
    18. 2.4.4 EXKURS: Aufgaben des Softwarearchitekten und Bezug zu anderen Rollen
    19. 2.5 Lernkontrolle
  10. 3 Entwurf von Softwarearchitekturen
    1. 3.1 Einbettung in den iSAQB-Lehrplan
    2. 3.1.1 Lernziele
    3. 3.2 Überblick über das Vorgehen beim Architekturentwurf
    4. 3.3 Entwurfsprinzipien und Heuristiken
    5. 3.3.1 Top-down und bottom-up
    6. 3.3.2 Hierarchische (De-)Komposition
    7. 3.3.2.1 Divide et impera
    8. 3.3.2.2 Prinzipien bei der Zerlegung
    9. 3.3.2.3 So-einfach-wie-möglich-Prinzip
    10. 3.3.2.4 Trennung von Verantwortlichkeiten
    11. 3.3.3 Schmale Schnittstellen und Information Hiding
    12. 3.3.3.1 Information Hiding
    13. 3.3.3.2 Verwendung von Schnittstellen
    14. 3.3.4 Regelmäßiges Refactoring und Redesign
    15. 3.4 Architekturzentrierte Entwicklungsansätze
    16. 3.4.1 EXKURS: Domain Driven Design
    17. 3.4.1.1 Fachmodelle als Basis
    18. 3.4.1.2 Systematische Verwaltung der Domänenobjekte
    19. 3.4.1.3 Strukturierung der Fachdomäne
    20. 3.4.1.4 Arten von Domänen
    21. 3.4.1.5 Integration von Domänen
    22. 3.4.2 EXKURS: MDA
    23. 3.4.3 Referenzarchitekturen
    24. 3.4.3.1 Generative Erzeugung von Systembausteinen
    25. 3.4.3.2 Aspektorientierung
    26. 3.4.3.3 Objektorientierung
    27. 3.4.3.4 Prozedurale Ansätze
    28. 3.5 Techniken für einen guten Entwurf
    29. 3.5.1 Ausgangssituation und Motivation: degeneriertes Design
    30. 3.5.2 Lose Kopplung
    31. 3.5.3 Hohe Kohäsion
    32. 3.5.4 Offen-geschlossen-Prinzip
    33. 3.5.5 Umkehr der Abhängigkeiten
    34. 3.5.6 Abtrennung von Schnittstellen
    35. 3.5.7 Zyklische Abhängigkeiten auflösen
    36. 3.5.8 Liskov’sches Substitutionsprinzip
    37. 3.6 Architekturmuster
    38. 3.6.1 Adaptierbare Systeme
    39. 3.6.1.1 Dependency Injection
    40. 3.6.2 Interaktive Systeme
    41. 3.6.2.1 Model View Controller
    42. 3.6.2.2 Model View Presenter
    43. 3.6.2.3 Presentation Abstraction Control
    44. 3.6.3 Vom Chaos zur Struktur
    45. 3.6.3.1 Schichtenarchitektur
    46. 3.6.3.2 Pipes and Filters
    47. 3.6.3.3 Blackboard
    48. 3.6.4 Verteilte Systeme
    49. 3.6.4.1 Broker
    50. 3.6.4.2 EXKURS: Serviceorientierung
    51. 3.6.4.3 Modularisierung
    52. 3.6.4.4 Microservices
    53. 3.7 Entwurfsmuster
    54. 3.7.1 Adapter
    55. 3.7.2 Observer
    56. 3.7.3 Decorator
    57. 3.7.4 Proxy
    58. 3.7.5 Fassade
    59. 3.7.6 Brücke
    60. 3.7.7 State
    61. 3.7.8 Mediator
    62. 3.8 Lernkontrolle
  11. 4 Beschreibung und Kommunikation von Softwarearchitekturen
    1. 4.1 Einbettung in den iSAQB-Lehrplan
    2. 4.1.1 Lernziele
    3. 4.2 Das CoCoME-Beispiel
    4. 4.2.1 Anwendungsfälle im CoCoME-System
    5. 4.2.2 Übersicht über den strukturellen Aufbau des CoCoME-Systems
    6. 4.3 Sichten und Schablonen
    7. 4.3.1 Bewährte Sichten nach iSAQB
    8. 4.3.2 UML-Diagramme als Notationsmittel in Sichtenbeschreibungen
    9. 4.3.3 Sichtenbeschreibung – Grobaufbau und Einführungsbeispiel
    10. 4.3.3.1 Grobaufbau – schablonenartige Sichtenbeschreibung
    11. 4.3.3.2 Beispiel: Auszug aus einer Sichtenbeschreibung für eine Bausteinsicht
    12. 4.3.4 Kontextsicht oder Kontextabgrenzung
    13. 4.3.5 Bausteinsicht
    14. 4.3.6 Laufzeitsicht
    15. 4.3.7 Verteilungssicht bzw. Infrastruktursicht
    16. 4.3.8 Wechselwirkungen zwischen Architektursichten
    17. 4.3.9 Hierarchische Verfeinerung von Architektursichten
    18. 4.4 Technische oder querschnittliche Konzepte in Softwarearchitekturen
    19. 4.4.1 Technische bzw. querschnittliche Konzepte: Beispieldimensionen
    20. 4.4.2 Beispiel: Fehlerbehandlung
    21. 4.4.3 Beispiel: Sicherheit
    22. 4.5 Architektur und Implementierung
    23. 4.5.1 Beispiel: Implementierung
    24. 4.6 Übliche Dokumenttypen für Softwarearchitekturen
    25. 4.6.1 Zentrale Architekturbeschreibung
    26. 4.6.2 Architekturüberblick
    27. 4.6.3 Dokumentübersicht
    28. 4.6.4 Übersichtspräsentation
    29. 4.6.5 »Architekturtapete«
    30. 4.6.6 Handbuch zur Dokumentation
    31. 4.6.7 Technische Informationen
    32. 4.6.8 Dokumentation von externen Schnittstellen
    33. 4.6.9 Template
    34. 4.7 Praxisregeln zur Dokumentation
    35. 4.7.1 Regel 1: »Schreiben aus der Sicht des Lesers«
    36. 4.7.2 Regel 2: »Unnötige Wiederholung vermeiden«
    37. 4.7.3 Regel 3: »Mehrdeutigkeit vermeiden«
    38. 4.7.4 Regel 4: »Standardisierte Organisationsstruktur bzw. Schablonen«
    39. 4.7.5 Regel 5: »Begründen Sie wesentliche Entscheidungen schriftlich«
    40. 4.7.6 Regel 6: »Überprüfung auf Gebrauchstauglichkeit«
    41. 4.7.7 Regel 7: »Übersichtliche Diagramme«
    42. 4.7.8 Regel 8: »Regelmäßige Aktualisierungen«
    43. 4.8 Beispiele weiterer Architektur-Frameworks
    44. 4.8.1 4+1-Framework
    45. 4.8.2 RM-ODP
    46. 4.8.3 SAGA
    47. 4.9 Lernkontrolle
  12. 5 Softwarearchitekturen und Qualität
    1. 5.1 Einbettung in den iSAQB-Lehrplan
    2. 5.1.1 Lernziele
    3. 5.2 Bewertung von Softwarearchitekturen
    4. 5.2.1 Qualitative Bewertung
    5. 5.2.1.1 DIN ISO/IEC 25010
    6. 5.2.1.2 Qualitätsmerkmale
    7. 5.2.1.3 Weitere Qualitätsmerkmale
    8. 5.2.1.4 Auswirkungen bestimmter Qualitätsmerkmale
    9. 5.2.1.5 Taktiken und Praktiken
    10. 5.2.2 Quantitative Bewertung
    11. 5.2.2.1 Überprüfung von Architekturregeln
    12. 5.2.2.2 Metriken
    13. 5.2.2.3 Zyklomatische Komplexität
    14. 5.3 EXKURS: Prototyp und technischer Durchstich
    15. 5.3.1 Technischer Durchstich
    16. 5.3.2 Prototyp
    17. 5.3.2.1 Einsatz von Softwareprototypen
    18. 5.3.2.2 Arten von Softwareprototypen
    19. 5.4 Architekturanalyse
    20. 5.4.1 EXKURS: ATAM-Methode
    21. 5.4.1.1 Vorgehen bei der Bewertung
    22. 5.5 Lernkontrolle
  13. 6 EXKURS: Werkzeuge für Softwarearchitekten
    1. 6.1 Allgemeine Hinweise zu Werkzeugen
    2. 6.1.1 Kosten von Werkzeugen
    3. 6.1.2 Lizenzen und Lizenzbedingungen
    4. 6.2 Werkzeuge zum Anforderungsmanagement
    5. 6.2.1 Anforderungen und Entscheidungskriterien
    6. 6.2.2 Herausforderungen von Werkzeugen für das Anforderungsmanagement
    7. 6.2.3 Beispielhafte Vertreter
    8. 6.3 Werkzeuge zur Modellierung
    9. 6.3.1 Anforderungen und Entscheidungskriterien
    10. 6.3.2 Herausforderungen von Werkzeugen für die Modellierung
    11. 6.3.3 Beispielhafte Vertreter
    12. 6.4 Werkzeuge zur Generierung
    13. 6.4.1 Anforderungen und Entscheidungskriterien
    14. 6.4.2 Herausforderungen von Codegeneratoren
    15. 6.4.3 Beispielhafte Vertreter
    16. 6.5 Werkzeuge zur statischen Codeanalyse
    17. 6.5.1 Anforderungen und Entscheidungskriterien
    18. 6.5.2 Herausforderungen von Werkzeugen zur statischen Codeanalyse
    19. 6.5.3 Beispielhafte Vertreter
    20. 6.6 Werkzeuge zur dynamischen Analyse
    21. 6.6.1 Anforderungen und Entscheidungskriterien
    22. 6.6.2 Herausforderungen von Werkzeugen zur dynamischen Analyse
    23. 6.6.3 Beispielhafte Vertreter
    24. 6.7 Werkzeuge zum Build-Management
    25. 6.7.1 Anforderungen und Entscheidungskriterien
    26. 6.7.2 Herausforderungen von Werkzeugen zum Build-Management
    27. 6.7.3 Beispielhafte Vertreter
    28. 6.8 Werkzeuge zum Konfigurations- und Versionsmanagement
    29. 6.8.1 Anforderungen und Entscheidungskriterien
    30. 6.8.2 Herausforderungen von Werkzeugen zum Konfigurations- und Versionsmanagement
    31. 6.8.3 Beispielhafte Vertreter
    32. 6.9 Werkzeuge zum Codemanagement
    33. 6.9.1 Herausforderungen von Werkzeugen zum Codemanagement
    34. 6.9.2 Beispielhafte Vertreter
    35. 6.10 Werkzeuge zum Test
    36. 6.10.1 Anforderungen und Entscheidungskriterien
    37. 6.10.2 Herausforderungen von Testwerkzeugen
    38. 6.10.3 Beispielhafte Vertreter
    39. 6.11 Werkzeuge zur Dokumentation
    40. 6.11.1 Anforderungen und Entscheidungskriterien
    41. 6.11.2 Herausforderungen von Dokumentationswerkzeugen
    42. 6.11.3 Beispielhafte Vertreter
  14. Anhang
    1. A Beispielfragen
    2. A.1 Auszüge aus der Prüfungsordnung
    3. A.2 Beispielfragen
    4. B Abkürzungsverzeichnis
    5. C Glossar
    6. D Literaturverzeichnis
  15. Index
  16. Fußnoten

Product information

  • Title: Basiswissen für Softwarearchitekten, 4th Edition
  • Author(s): Mahbouba Gharbi, Arne Koschel, Andreas Rausch, Gernot Starke
  • Release date: July 2020
  • Publisher(s): dpunkt
  • ISBN: 9783864907814