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
- Cover
- Titel
- Impressum
- Vorwort zur 3. Auflage
- 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 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 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 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 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 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 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 ATAM-Methode
- 5.5 Lernkontrolle
-
6 Werkzeuge für Softwarearchitekten
- 6.1 Einbettung in den iSAQB-Lehrplan
- 6.1.1 Lernziele
- 6.2 Allgemeine Hinweise zu Werkzeugen
- 6.2.1 Kosten von Werkzeugen
- 6.2.2 Lizenzen und Lizenzbedingungen
- 6.3 Werkzeuge zum Anforderungsmanagement
- 6.3.1 Anforderungen und Entscheidungskriterien
- 6.3.2 Herausforderungen von Werkzeugen für das Anforderungsmanagement
- 6.3.3 Beispielhafte Vertreter
- 6.4 Werkzeuge zur Modellierung
- 6.4.1 Anforderungen und Entscheidungskriterien
- 6.4.2 Herausforderungen von Werkzeugen für die Modellierung
- 6.4.3 Beispielhafte Vertreter
- 6.5 Werkzeuge zur Generierung
- 6.5.1 Anforderungen und Entscheidungskriterien
- 6.5.2 Herausforderungen von Codegeneratoren
- 6.5.3 Beispielhafte Vertreter
- 6.6 Werkzeuge zur statischen Codeanalyse
- 6.6.1 Anforderungen und Entscheidungskriterien
- 6.6.2 Herausforderungen von Werkzeugen zur statischen Codeanalyse
- 6.6.3 Beispielhafte Vertreter
- 6.7 Werkzeuge zur dynamischen Analyse
- 6.7.1 Anforderungen und Entscheidungskriterien
- 6.7.2 Herausforderungen von Werkzeugen zur dynamischen Analyse
- 6.7.3 Beispielhafte Vertreter
- 6.8 Werkzeuge zum Build-Management
- 6.8.1 Anforderungen und Entscheidungskriterien
- 6.8.2 Herausforderungen von Werkzeugen zum Build-Management
- 6.8.3 Beispielhafte Vertreter
- 6.9 Werkzeuge zum Konfigurations- und Versionsmanagement
- 6.9.1 Anforderungen und Entscheidungskriterien
- 6.9.2 Herausforderungen von Werkzeugen zum Konfigurations- und Versionsmanagement
- 6.9.3 Beispielhafte Vertreter
- 6.10 Werkzeuge zum Codemanagement
- 6.10.1 Herausforderungen von Werkzeugen zum Codemanagement
- 6.10.2 Beispielhafte Vertreter
- 6.11 Werkzeuge zum Test
- 6.11.1 Anforderungen und Entscheidungskriterien
- 6.11.2 Herausforderungen von Testwerkzeugen
- 6.11.3 Beispielhafte Vertreter
- 6.12 Werkzeuge zur Dokumentation
- 6.12.1 Anforderungen und Entscheidungskriterien
- 6.12.2 Herausforderungen von Dokumentationswerkzeugen
- 6.12.3 Beispielhafte Vertreter
- 6.13 Lernkontrolle
- Anhang
- Index
Product information
- Title: Basiswissen für Softwarearchitekten, 3rd Edition
- Author(s):
- Release date: November 2017
- Publisher(s): dpunkt
- ISBN: 9783864904998
You might also like
book
Basiswissen für Softwarearchitekten, 4th Edition
Softwarearchitektur bildet einen wesentlichen Erfolgsfaktor für Softwareprojekte. Sie stellt im Sinne einer systematischen Konstruktion sicher, dass …
book
Der Weg zum Java-Profi, 5th Edition
Dieses Buch bietet eine umfassende Einführung in die professionelle Java-Entwicklung und vermittelt Ihnen das notwendige Wissen, …
book
Pragmatisches IT-Projektmanagement, 2nd Edition
Jedes Softwareentwicklungsprojekt ist einmalig. Es bringt unterschiedlichste Charaktere für einen begrenzten Zeitraum mit dem Ziel zusammen, …
book
API-Design, 2nd Edition
Mit Schnittstellen zum Zwecke der Arbeitsteilung, Wiederverwendung oder beispielsweise zur Bildung einer modularen Architektur haben Entwickler …