Basiswissen für Softwarearchitekten, 4th Edition
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...
Other Authors: | , , , |
---|---|
Format: | eBook |
Language: | Inglés |
Published: |
dpunkt
2020.
|
Edition: | 4th edition |
Subjects: | |
See on Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630763506719 |
Table of Contents:
- Intro
- 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
- Diagrammarten der UML 2
- UML-Klassendiagramm
- UML-Komponentendiagramm
- UML-Aktivitätsdiagramm
- UML-Sequenzdiagramm
- Fazit: UML für Diagramme 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
- Kurzbeschreibung
- Diagramm
- Elementkatalog der »CoCoME«-Bausteinsicht (TradingSystem)
- Variabilität
- Hintergrundinformationen
- 4.3.4 Kontextsicht oder Kontextabgrenzung
- Inhalte der Kontextsicht
- Stakeholder der Kontextsicht
- Typische Beschreibungselemente der Kontextsicht-Notation
- Beispieldiagramme einer Kontextsicht
- 4.3.5 Bausteinsicht
- Inhalte der Bausteinsicht
- Stakeholder der Bausteinsicht
- Beschreibungselemente der Bausteinsicht-Notation
- Beispieldiagramme einer Bausteinsicht
- 4.3.6 Laufzeitsicht
- Inhalte der Laufzeitsicht
- Stakeholder der Laufzeitsicht
- Typische Beschreibungselemente der Laufzeitsicht-Notation
- Beispieldiagramme einer Laufzeitsicht
- Sequenzdiagramm
- Kommunikationsdiagramm
- 4.3.7 Verteilungssicht bzw. Infrastruktursicht
- Inhalte der Verteilungssicht
- Stakeholder der Verteilungssicht
- Typische Beschreibungselemente der Verteilungssicht-Notation
- Beispieldiagramme einer Verteilungs- bzw. Infrastruktursicht
- 4.3.8 Wechselwirkungen zwischen Architektursichten
- 4.3.9 Hierarchische Verfeinerung von Architektursichten
- Blackbox: Beschreibung
- Whitebox: Beschreibung
- 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
- Qualitätsbaum erstellen
- Szenarien
- Arten von Szenarien
- Bestandteile von Szenarien
- Beispiele für Szenarien
- 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.