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