Basiswissen für Softwarearchitekten, 3rd Edition

Book description

Jede Software verfügt über eine Architektur, und ein Softwarearchitekt hat dafür zu sorgen, dass neben den funktionalen auch nicht funktionale Anforderungen erfüllt werden. Die Rolle des Softwarearchitekten einzunehmen, wird zunehmend anspruchsvoller.Dieses Buch vermittelt das notwendige Wissen und Fähigkeiten, um für Systeme eine dem Problem angemessene Softwarearchitektur zu entwerfen. Der Inhalt entspricht dem Prüfungsstoff zum »Certified Professional for Software Architecture – Foundation Level« nach iSAQB-Standard.Die überarbeitete 3. Auflage ist konform zum iSAQB-Lehrplan, Version 4.1.1, der verbindlich ist ab April 2017.

Table of contents

  1. Cover
  2. Titel
  3. Impressum
  4. Vorwort zur 3. Auflage
  5. Inhaltsverzeichnis
  6. 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
  7. 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 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 Aufgaben des Softwarearchitekten und Bezug zu anderen Rollen
    19. 2.5 Lernkontrolle
  8. 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 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 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 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
  9. 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
  10. 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 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 ATAM-Methode
    21. 5.5 Lernkontrolle
  11. 6 Werkzeuge für Softwarearchitekten
    1. 6.1 Einbettung in den iSAQB-Lehrplan
    2. 6.1.1 Lernziele
    3. 6.2 Allgemeine Hinweise zu Werkzeugen
    4. 6.2.1 Kosten von Werkzeugen
    5. 6.2.2 Lizenzen und Lizenzbedingungen
    6. 6.3 Werkzeuge zum Anforderungsmanagement
    7. 6.3.1 Anforderungen und Entscheidungskriterien
    8. 6.3.2 Herausforderungen von Werkzeugen für das Anforderungsmanagement
    9. 6.3.3 Beispielhafte Vertreter
    10. 6.4 Werkzeuge zur Modellierung
    11. 6.4.1 Anforderungen und Entscheidungskriterien
    12. 6.4.2 Herausforderungen von Werkzeugen für die Modellierung
    13. 6.4.3 Beispielhafte Vertreter
    14. 6.5 Werkzeuge zur Generierung
    15. 6.5.1 Anforderungen und Entscheidungskriterien
    16. 6.5.2 Herausforderungen von Codegeneratoren
    17. 6.5.3 Beispielhafte Vertreter
    18. 6.6 Werkzeuge zur statischen Codeanalyse
    19. 6.6.1 Anforderungen und Entscheidungskriterien
    20. 6.6.2 Herausforderungen von Werkzeugen zur statischen Codeanalyse
    21. 6.6.3 Beispielhafte Vertreter
    22. 6.7 Werkzeuge zur dynamischen Analyse
    23. 6.7.1 Anforderungen und Entscheidungskriterien
    24. 6.7.2 Herausforderungen von Werkzeugen zur dynamischen Analyse
    25. 6.7.3 Beispielhafte Vertreter
    26. 6.8 Werkzeuge zum Build-Management
    27. 6.8.1 Anforderungen und Entscheidungskriterien
    28. 6.8.2 Herausforderungen von Werkzeugen zum Build-Management
    29. 6.8.3 Beispielhafte Vertreter
    30. 6.9 Werkzeuge zum Konfigurations- und Versionsmanagement
    31. 6.9.1 Anforderungen und Entscheidungskriterien
    32. 6.9.2 Herausforderungen von Werkzeugen zum Konfigurations- und Versionsmanagement
    33. 6.9.3 Beispielhafte Vertreter
    34. 6.10 Werkzeuge zum Codemanagement
    35. 6.10.1 Herausforderungen von Werkzeugen zum Codemanagement
    36. 6.10.2 Beispielhafte Vertreter
    37. 6.11 Werkzeuge zum Test
    38. 6.11.1 Anforderungen und Entscheidungskriterien
    39. 6.11.2 Herausforderungen von Testwerkzeugen
    40. 6.11.3 Beispielhafte Vertreter
    41. 6.12 Werkzeuge zur Dokumentation
    42. 6.12.1 Anforderungen und Entscheidungskriterien
    43. 6.12.2 Herausforderungen von Dokumentationswerkzeugen
    44. 6.12.3 Beispielhafte Vertreter
    45. 6.13 Lernkontrolle
  12. 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
  13. Index

Product information

  • Title: Basiswissen für Softwarearchitekten, 3rd Edition
  • Author(s): Gernot Starke, Mahbouba Gharbi, Arne Koschel, Andreas Rausch
  • Release date: November 2017
  • Publisher(s): dpunkt
  • ISBN: 9783864904998