Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Titelei
Impressum
Inhalt
Widmung
Vorwort
Danksagung
Der Autor
1 Grundlagen
1.1 Definition Architektur
1.1.1 Strukturierung in Komponenten – Modularisierung
1.1.2 Abläufe
1.1.3 Anforderungen
1.1.4 Technologien
1.1.5 Operative Systeme
1.2 Was Architektur definitiv NICHT ist
1.3 Organisation
1.4 Über Enterprise-Architektur (EA)
1.5 Evolution
1.5.1 Managed Evolution (Credit Suisse)
1.5.2 Aim42
1.5.3 Purer Pragmatismus
1.6 Dokumentation
1.6.1 Mikro-Architektur – Softwaredesign
1.6.2 Makro-Architektur
1.7 Digitale Transformation – Digitalisierung
2 Prinzipien des Software-Entwurfs
2.1 Keep it Simple and Stupid (KISS)
2.2 Don't Repeat Yourself (DRY)
2.3 Information Hiding Principle
2.4 Open Closed Principle
2.5 Lose Kopplung
2.5.1 Code Reuse
2.5.2 Datenbankintegration – gemeinsames Datenmodell
2.5.3 Datenbankintegration – selbe Datenbank, unterschiedliche Datenmodelle
2.5.4 Synchroner Remote Procedure Call
2.5.5 Datenreplikation
2.5.6 Messaging
2.5.7 Composite-UI
2.6 Hohe Kohäsion
2.7 Separation Of Concerns
2.8 Hierarchischer Aufbau
2.9 Zusammenfassung
3 Mikro-Architektur – Softwaredesign
3.1 SOLID
3.1.1 Liskovsches Substitutionsprinzip
3.1.2 Interface Segregation Principle
3.1.3 Dependency Inversion Principle
3.2 Dependency Injection
3.3 Law of Demeter
3.4 Composition over Inheritance
3.5 Selbst-Dokumentation
3.6 Design by Contract
3.7 Design Pattern
3.7.1 Decorator und Delegate (Structural)
3.7.2 Adapter (Structural)
3.7.3 Facade (Structural)
3.7.4 Observer (Behavioral)
3.7.5 Simple Factory (Creational)
3.7.6 Factory Method (Creational)
3.7.7 Abstract Factory (Creational)
3.7.8 Builder (Creational)
4 Domänengetriebener Entwurf – Domain Driven Design (DDD)
4.1 Ubiquitous Language
4.2 Aufteilung in Subdomänen
4.3 Bounded Context
4.4 Integration
4.4.1 Das Problem mit dem Konformismus
4.5 Upstream/Downstream-Beziehungen
4.6 Context Map
4.7 Beispiel
4.8 Fazit
5 Enterprise Application Integration Pattern (EAIP)
5.1 Orchestrierung vs. Choreografie
5.2 Das Prinzip der Dumb Pipes and Smart Endpoints
5.3 Tooling
5.3.1 Message Bus
5.3.2 Message Broker
5.3.3 Enterprise Service Bus (ESB)
5.3.4 Business Process-Management-Systeme (BPMS)
5.3.5 API-Gateways
5.3.6 Service Discovery/Service Registration
6 Makro-Architektur
6.1 Antipattern
6.1.1 Maximierung des Reuse
6.1.2 Kanonisches Modell
6.1.3 Service Versioning
6.1.4 Zentraler Mediator – Enterprise Service Bus (ESB)
6.2 Empfohlene Pattern
6.2.1 Consumer Driven Contract Tests
6.2.2 Robustness Principle (Tolerant Reader)
6.2.3 Feature Toggles
6.2.4 Circuit Breaker
6.2.5 Bulkhead
6.2.6 Adapter
6.2.7 Backend for Frontend (BFF)
6.2.8 Saga
6.2.9 Pipes and Filters
6.2.10 Correlation IDs
6.2.11 Event Sourcing
7 Verteilte Systeme – Distributed Systems
7.1 Monolithen
7.1.1 Keine Continuous Delivery möglich!?
7.1.2 Automatische Erosion der Struktur!?
7.1.3 Monolithische Architekturen skalieren nicht!?
7.1.4 Es ist eine Frage von entweder/oder!?
7.2 Idempotenz
7.2.1 Idempotent Receiver Pattern
7.3 Representational State Transfer – REST
7.4 Konsistenz
7.4.1 Datenbankintegration (Konsistent)
7.4.2 Two Phase Commit (Konsistent)
7.4.3 Ein großer Datenservice (Konsistent)
7.4.4 Send at least once (Eventually Consistent)
7.4.5 Orchestrierung (Eventually Consistent)
7.4.6 Choreografie (Nicht automatisch Konsistent)
7.4.7 Event Sourcing und CQRS (Konsistent)
7.4.8 Zentraler Mediator Antipattern – Enterprise Service Bus (Eventually Consistent)
8 Service-orientierte Architektur (SOA)
8.1 Service-Antipattern
8.1.1 Service-Kategorien
8.1.2 Webservice vs. Service
8.1.3 API im Vordergrund
8.1.4 SOA 1.0
8.2 Microservices
8.2.1 Monolith First
8.2.2 Hybride
8.3 Nanoservices
8.4 Modulare SOA – Right Sized Services – SOA 2.0
8.5 Self Contained Systems (SCS)
8.6 Integration kommerzieller Systeme (Commercial off the Shelf – COTS)
9 Metriken
9.1 Unit-Test-Abdeckung und das Legacy-Code-Dilemma
9.2 Technische Schuld
9.3 Komplexität und Modulgröße
9.3.1 Semantische Komplexität
9.3.2 Strukturelle Komplexität
9.3.3 Verschachtelungskomplexität
9.4 Kohäsion
9.4.1 Relational Cohesion
9.4.2 Lack of Cohesion in Methods IV (LCOM4)
9.5 Component Rank
9.6 Software-Package-Metriken nach Robert C. Martin
9.6.1 Afferent Coupling (Ca)
9.6.2 Efferent Coupling (Ce)
9.6.3 Instability
9.7 Metriken nach John Lakos
9.7.1 Depends Upon und Used From
9.7.2 Cumulative Component Dependency (CCD)
9.7.3 Average Component Dependency (ACD)
9.7.4 Relative Average Component Dependency (RACD)
9.7.5 Normalized Cumulative Component Dependency (NCCD)
9.8 Relative Cyclicity
9.8.1 Azyklischer Monolith
9.9 Strukturkennzahlen und verteilte Systeme
10 Zusammenfassung
10.1 Die Frage nach dem "richtigen Schnitt"
10.1.1 Ausrichtung nach dem Kunden
10.1.2 Optimierung der Software
10.2 Geteilte Daten
10.3 Migration
10.3.1 Extraktion
10.3.2 APIs First
10.3.3 Aushöhlung
10.3.4 Ach wenn ich doch nur anfangen könnte!
10.3.5 Über die Migration der Mitarbeiter
10.4 Pitfalls
10.4.1 Es funktioniert
10.4.2 Enterprise- vs. Makro-Architektur
10.4.3 Scrum
10.4.4 Microservices
10.4.5 Vereinheitlichung
10.4.6 Keine klare Linie
10.4.7 Überbewertung des Themas Prozesse
10.4.8 Irrationalität
10.4.9 Big-Bang-Migration
10.4.10 Scope Creep
10.4.11 Elfenbeinturm
10.4.12 Ignorieren von Feedback zu Machbar- und Sinnhaftigkeit
10.4.13 Widersprüchliche Ziele
10.4.14 Management durch Kennzahlen
10.4.15 Falsche Anreize (Kobra-Effekt)
10.4.16 Cargo-Kult
10.5 War Story
10.6 Fazit
11 Umsetzung
11.1 Datenreplikation
11.1.1 Extract Transform Load (ETL)
11.1.2 Features der Datenbanken
11.1.3 Polling
11.1.4 Push Messaging
11.2 Composite UI
11.2.1 Partielle Integration im Web
11.2.2 Integration über ein Trägerportal
11.2.3 Vollständige Pages
11.2.4 Komplexe Integration
11.3 Design eines Moduls
11.4 Consumer Driven Contract Testing mit PACT
11.5 Modulares Design
11.5.1 Javascript
11.5.2 TypeScript
11.5.3 Java
11.5.4 Open Services Gateway initiative – OSGi
11.5.5 ArchUnit
11.5.6 Sonargraph
12 Glossar
13 Quellen
← Prev
Back
Next →
← Prev
Back
Next →