Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
- Architekturmuster
- Technische Konzepte
- Architekturanalyse und -bewertung
- Dokumentation von Architekturen
- Modernisierung bestehender Systeme
- Beispiele realer Softwarearchitekturen
- iSAQB Curriculum
- Neu in der 10. Auflage: C4, Cloud, DataContracts
- Ihr exklusiver Vorteil: E-Book inside beim Kauf des gedruckten Buches
Softwarearchitekt*innen müssen komplexe fachliche und technische Anforderungen an IT-Systeme umsetzen und sie müssen diese Systeme durch nachvollziehbare Strukturen flexibel und erweiterbar gestalten.
Dieser Praxisleitfaden zeigt Ihnen, wie Sie Softwarearchitekturen effektiv und systematisch entwickeln können. Gernot Starke unterstützt Sie mit konkreten praktischen Tipps aus seiner Erfahrung.
Sie finden Antworten auf zentrale Fragen:
- Welche Aufgaben gehören zur Softwarearchitektur?
- Wie kann ich beim Entwurf vorgehen?
- Wie kommuniziere und dokumentiere ich Softwarearchitekturen?
- Wie helfen Architekturmuster?
- Wie analysiere und bewerte ich Softwarearchitekturen?
- Wie setze ich Persistenz, grafische Benutzeroberflächen, Geschäftsregeln, Integration, Verteilung, Fehlerbehandlung und andere Konzepte ein?
- Was muss ich über Domain-Driven Design, arc42, Microservices, C4 und die Cloud wissen?
- Wie verbessere ich bestehende Systeme?
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 467
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Gernot Starke
Effektive Softwarearchitekturen
Ein praktischer Leitfaden
10., überarbeitete Auflage
Der Autor:
Dr. Gernot Starke, KölnINNOQ Fellowwww.gernotstarke.de
Alle in diesem Werk enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Werk enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebensowenig übernehmen Autor und Verlag die Gewähr dafür, dass die beschriebenen Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt also auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Die endgültige Entscheidung über die Eignung der Informationen für die vorgesehene Verwendung in einer bestimmten Anwendung liegt in der alleinigen Verantwortung des Nutzers.
Bibliografische Information der Deutschen Nationalbibliothek:Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über https://dnb.d-nb.de abrufbar.
Dieses Werk ist urheberrechtlich geschützt.Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Wir behalten uns auch eine Nutzung des Werks für Zwecke des Text- und Data Mining nach § 44b UrhG ausdrücklich vor. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.
© 2024 Carl Hanser Verlag München, www.hanser-fachbuch.deLektorat: Brigitte Bauer-Schiewek, Kristin RotheCopy editing: Petra Kienle, FürstenfeldbruckUmschlagdesign: Marc Müller-Bremer, www.rebranding.de, MünchenUmschlagrealisation: Tom West, unter Verwendung von Grafiken für das Titelmotiv:© shutterstock.com/Rawpixel.com und Vector VALayout: Manuela Treindl, Fürth
Print-ISBN: 978-3-446-47672-1E-Book-ISBN: 978-3-446-47909-8E-Pub-ISBN: 978-3-446-48277-7
Titelei
Impressum
Inhalt
1 Einleitung
1.1 Softwarearchitekt:innen
1.2 Effektiv, agil und pragmatisch
1.3 Wer sollte dieses Buch lesen?
1.4 Wegweiser durch das Buch
1.5 Webseite zum Buch
1.6 Weiterführende Literatur
1.7 Danksagung
2 Softwarearchitektur: Grundlagen und Aufgaben
2.1 Was ist Softwarearchitektur?
2.1.1 System
2.1.2 Komponenten
2.1.3 Beziehungen
2.1.4 Umgebung
2.1.6 Prinzipien (synonym: Konzepte)
2.1.7 Entwurf und Evolution
2.2 Architekturentscheidungen
2.3 Die Aufgaben von Softwarearchitekt:innen
2.3.1 Anforderungen klären
2.3.2 Drei Kategorien von Entwurfsentscheidungen
2.3.3 Architektur kommunizieren und dokumentieren
2.3.4 Umsetzung begleiten: Von Goldstücken und Missverständnissen
2.3.5 Architektur analysieren und bewerten
2.4 Rolle von Softwarearchitekt:innen: Wer macht’s?
2.4.1 Monarchie
2.4.2 Architekt:in im Team
2.4.3 Architekturagent:innen
2.4.4 Demokratie oder: Team-Architektur
2.5 Architekturen entstehen (meist) iterativ
2.6 Weiterführende Literatur
3 Anforderungen klären
3.1 Was ist Kernaufgabe oder Ziel des Systems?
3.2 Relevante Stakeholder ermitteln
3.3 Welche Kategorie von System?
3.4 Fachdomäne klären
3.5 Qualitätsanforderungen klären
3.6 Externe Nachbarsysteme: Kontextabgrenzung
3.7 Einflussfaktoren und Randbedingungen ermitteln
4 Entwurf: Grundlagen, Methoden und Muster
4.1 Grundlagen, Prinzipien und Heuristiken
4.1.1 Grundlagen des Entwurfs
4.1.2 Prinzipien
4.1.2.1 Lose (geringe) Kopplung
4.1.2.2 Hohe Kohäsion
4.1.2.3 Trenne Verantwortlichkeiten/Belange
4.1.2.4 Modularisierung
4.1.2.5 Abstraktion, Kapselung und das Geheimnisprinzip
4.1.2.6 Hohe Konsistenz
4.1.2.7 Keine zyklischen Abhängigkeiten
4.1.2.8 SOLID-Prinzipien des objektorientierten Entwurfs
4.1.3 Heuristiken
4.2 Entwurfsmethoden
4.2.1 Domain-Driven Design (Entwurf nach Fachlichkeit)
4.2.2 Quality-Driven Software Architecture
4.2.3 Top-down und Bottom-up
4.2.4 Sichtenbasierter Entwurf
4.2.4.1 Sichten in der Softwarearchitektur
4.2.4.2 Entwurf der Kontextabgrenzung
4.2.4.3 Entwurf der Bausteinsicht
4.2.4.4 Entwurf der Laufzeitsicht
4.2.4.5 Entwurf der Verteilungssicht
4.3 Schnittstellen entwerfen
4.3.1 Anforderungen an Schnittstellen
4.3.2 Worauf müssen Sie achten?
4.3.3 Tipps zum Entwurf von Schnittstellen
4.4 Architekturmuster (Patterns)
4.4.1 Schichten (Layer)
4.4.2 Ports-und-Adapter
4.4.3 Client-Server
4.4.4 Microservices
4.4.5 Pipes und Filter
4.4.6 Batch-Pattern
4.4.7 Repository
4.4.8 Blackboard
4.4.9 Command Query Responsibility Segregation (CQRS)
4.4.10 Broker
4.4.11 Peer-to-Peer
4.4.12 Ereignisbasierte Systeme – Event Systems
4.4.12.1 Ungepufferte Event Systems
4.4.12.2 Message- oder Event-Queues
4.4.12.3 Message-Service
4.4.13 Model-View-Controller
4.4.14 Presentation Model
4.4.15 REST-Architektur
4.4.16 Adapter
4.4.17 Stellvertreter (Proxy)
4.4.18 Fassade
4.4.19 Beobachter (Observer)
4.5 Weiterführende Literatur
5 Architekturen kommunizieren, dokumentieren und modellieren
5.1 Warum kommunizieren und dokumentieren
5.2 Anforderungen an Architekturdokumentation
5.3 Effektiv dokumentieren
5.3.1 Tipps für bessere Architekturdiagramme
5.4 Bestandteile von Architekturdokumentation
5.4.1 Kontextabgrenzung: Vogelperspektive
5.4.2 Bausteinsicht: Code-im-Großen
5.4.3 Schnittstellen: Die Brücken zwischen Welten
5.4.4 Laufzeitsicht: Was geschieht wann?
5.4.5 Verteilungssicht: Zusammenhang zur technischen Infrastruktur
5.4.6 Querschnittliche Konzepte
5.4.7 Entscheidungen
5.5 Architekturdokumentation mit arc42
5.5.1 Aufbau von arc42
5.5.2 arc42 Canvas: Dokumentation kompakt
5.6 Notationen zur Modellierung: UML, C4 und andere
5.6.1 UML Kurzeinführung
5.6.2 C4 Kurzeinführung
5.6.3 Weitere Notationen für Softwarearchitektur
5.7 Werkzeuge zur Dokumentation
5.8 Weiterführende Literatur
6 Analyse und Bewertung von Softwarearchitekturen
6.1 Qualitative Architekturbewertung
6.2 Quantitative Bewertung durch Metriken
6.3 Werkzeuge zur Bewertung
7 Technische und querschnittliche Konzepte
7.1 Persistenz
7.1.1 Motivation
7.1.2 Einflussfaktoren und Entscheidungskriterien
7.1.2.1 Art der zu speichernden Daten
7.1.2.2 Konsistenz und Verfügbarkeit (ACID, BASE oder CAP)
7.1.2.3 Zugriff und Navigation
7.1.2.4 Deployment und Betrieb
7.1.3 Lösungsmuster
7.1.3.1 Persistenzschicht
7.1.3.2 DAO: Eine Miniatur-Persistenzschicht
7.1.4 Bekannte Risiken und Probleme
7.1.5 Weitere Themen zu Persistenz
7.1.6 Data Contracts: Daten als Schnittstelle
7.1.7 Zusammenhang zu anderen Themen
7.1.8 Praktische Vertiefung
7.1.9 Weiterführende Literatur
7.2 Geschäftsregeln
7.2.1 Motivation
7.2.2 Funktionsweise von Regelmaschinen
7.2.3 Kriterien pro & kontra Regelmaschinen
7.2.4 Mögliche Probleme
7.2.5 Weiterführende Literatur
7.3 Integration
7.3.1 Motivation
7.3.2 Typische Probleme
7.3.3 Lösungskonzepte
7.3.4 Entwurfsmuster zur Integration
7.3.5 Zusammenhang mit anderen Themen
7.3.6 Weiterführende Literatur
7.4 Verteilung
7.4.1 Motivation
7.4.2 Typische Probleme
7.4.3 Lösungskonzept
7.4.4 Konsequenzen und Risiken
7.4.5 Zusammenhang mit anderen Themen
7.4.6 Weiterführende Literatur
7.5 Kommunikation
7.5.1 Motivation
7.5.2 Entscheidungsalternativen
7.5.3 Grundbegriffe der Kommunikation
7.5.4 Weiterführende Literatur
7.6 Grafische Oberflächen (GUI)
7.6.1 Motivation
7.6.2 Einflussfaktoren und Entscheidungskriterien
7.6.3 GUI-relevante Architekturmuster
7.6.4 Struktur und Ergonomie von Benutzeroberflächen
7.6.5 Bekannte Risiken und Probleme
7.6.6 Zusammenhang zu anderen Themen
7.7 Sicherheit
7.7.1 Motivation – Was ist IT-Sicherheit?
7.7.2 Sicherheitsziele
7.7.3 Lösungskonzepte
7.7.4 Security Engineering mit Patterns
7.7.5 Weiterführende Literatur
7.8 Protokollierung
7.8.1 Typische Probleme
7.8.2 Lösungskonzept
7.8.3 Zusammenhang mit anderen Themen
7.9 Ausnahme- und Fehlerbehandlung
7.9.1 Motivation
7.9.2 Fehlerkategorien schaffen Klarheit
7.9.3 Muster zur Fehlerbehandlung
7.9.4 Mögliche Probleme
7.9.5 Zusammenhang mit anderen Themen
7.9.6 Weiterführende Literatur
7.10 Skalierbarkeit
7.10.1 Skalierungsstrategien
7.10.2 Elastizität
7.10.3 Scale-Up-Strategie
7.10.4 Vertikale Scale-Out-Strategie
7.10.5 Horizontale Scale-Out-Strategie
7.10.6 Der Strategiemix
7.10.7 Allgemeine Daumenregeln
7.10.8 CPU-Power
7.10.9 GPU-Power
7.10.10 RAIDs, SANs und andere Speichersysteme
7.10.11 Bussysteme für die Speicheranbindung
7.10.12 Geringere Bandbreite im Netz
7.11 Container und die Cloud
7.11.1 Was bedeutet „Cloud“?
7.11.2 Virtuelle Maschinen (VMs) und Container
7.11.3 Von Monolithen in die Cloud
7.11.4 Was Sie noch über die Cloud wissen sollten…
7.11.5 Weiterführende Literatur
7.12 Weitere spannende Themen
8 Systematische Verbesserung und Evolution
8.1 Wege in den Abgrund
8.2 Systematisch verbessern
8.3 Bewährte Praktiken und Muster
8.4 Analyse: Probleme identifizieren
8.5 Evaluate: Probleme und Maßnahmen bewerten
8.6 Improve: Verbesserungsmaßnahmen planen und durchführen
8.6.1 Maxime für Verbesserungsprojekte
8.6.2 Kategorien von Verbesserungsmaßnahmen
8.7 Crosscutting: phasenübergreifende Praktiken
8.8 Mehr zu aim42
8.9 Weiterführende Literatur
9 Beispiele von Softwarearchitekturen
9.1 Beispiel: Datenmigration im Finanzwesen
9.2 Beispiel: Kampagnenmanagement im CRM
10 iSAQB Curriculum
10.1 Standardisierte Lehrpläne für Softwarearchitektur
10.1.1 Grundlagenausbildung und Zertifizierung Foundation-Level
10.1.2 Fortgeschrittene Aus- und Weiterbildung (Advanced-Level)
10.2 iSAQB-Foundation-Level-Lehrplan
10.2.1 Können, Wissen und Verstehen
10.2.2 Voraussetzungen und Abgrenzungen
10.2.3 Struktur des iSAQB-Foundation-Lehrplans
10.2.4 Zertifizierung gemäß iSAQB
10.3 Beispielfragen zur Foundation-Level-Prüfung
Literatur