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...

Full description

Bibliographic Details
Other Authors: Gharbi, Mahbouba, author (author), Koschel, Arne, author, Rausch, Andreas, author, Starke, Gernot, author
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.