Was sind die Ziele und Aufgaben eines Entwurfs?
Anforderungen des Kunden optimal abdeckt
Beschreibung des Systems (auf technischer Ebene)
Festlegung auf Architektur
Aufteilung des Systems
Wie ist Architektur definiert?
Beschreibung von System-Strukturen
erste Artefakt zur Analyse der Einhaltung von Qualitätseigenschaften
Beschreibung der Beziehung von Komponenten und Verbindungen
Woraus besteht die Architektur?
Sie besteht aus:
den Strukturen
der Zerlegung in Komponenten
deren Schnittstellen
deren Beziehungen undereinander
Worauf basiert die Architektur?
Auf Entwurfsentscheidungen
ZB bezüglich:
des Entwurfs der Komponenten
der Auswahl der eingesetzten Technologie
Was ist der Ziel des Entwurfs?
Eine Abbildung eines Systems, das Anforderungen optimal beschreibt
Welche zwei Arten von Anforderungen gibtes?
Nicht funktionale Anforderungen (strategischer Entwurf)
z.B. Zuverlässigkeit, Benutzbarkeit,…
Funktionale Anforderungen (taktischer Entwurf)
z.B. Verarbeitung von Eingaben, Erstellen von Ausgaben,…
Was sind die fünf Grundsätze des Entwurfs?
Simplicity/ Einfachheit
Spezifische Entscheidungen
Explizite Definitionen
Erwartung von Änderungen/Fehlern
Einhaltung von Qualitätsanforderungen
Wie lauten die vier Prinzipien des Entwurfs?
Geringe Kopplung
= Maß für die zwischen Bausteinen bestehenden Abhängigkeiten
Hohe Kohäsion
= Maß für den inneren Zusammenhalt von Bausteinen und Funktionen
Seperation of Concern
= jeweils spezifische Verantwortlichkeiten, Zuständigkeiten oder Aufgaben
Zerlegung in Module
= Jedes Modul sollte bestimmte Verantwortlichkeiten kapseln
(-> über wohldefinierte Schnittstellen zugänglich)
Abstraktion, Kapselung, Geheimprinzip
= Internes vor äußerem verbergen und nur über öffentliche Schnittstelle zugänglich machen
Konsitenz
Keine Redundanz
Keine zyklischen Abhängigkeiten
Welche Diagramme können für ein objektorientiertes Design verwendet werden?
Klassendiagramme - Festlegung der Struktur
Zustands- und Sequenzdiagramme – Verhalten des Systems
Komponentendiagramme – Abbildung der Systemkomponenten und deren Zusammenhang
Wie lauten die SOLID prinzipien?
SRP (Single Responsibility Principle)
OCP (Open-Closed Principle)
LSP (Liskov Substitution Principle)
ISP (Interface Segregation Principle)
DIP (Dependency Inversion Principle)
Wie lautet das SRP (Single Responsibility Principle)?
Eine Klasse soll nur eine Aufgabe haben
( = Seperation of Concerns)
Wie lautet das OCP (Open-Closed Principle)?
Künftige Erweiterungen der Klassen sollen ohne Änderungen von bestehendem Quellcode möglich sein
Wie lautet das LSP (Liskov Substitution Principle)?
Unterklassen müssen grundsätzlich für ihre Oberklassen eingesetzt werden können (Vererbung)
Wie lautet das ISP (Interface Segregation Principle)?
Feingranulare, client-spezifische Schnittstellen statt ein großes Universal-Interface
Was besagt das DIP (Dependency Inversion Principle)?
Erlaube Abhängigkeiten von Abstraktionen, nicht von konkreten Implementierungen
Wie geht man beim Domain Driven Design vor?
Strukturierung der jeweiligen Fachdomäne
Modellieren der Sprache der Fachdomäne
Clustern im Großen (“Strategisches Design”)
Strukturieren im Kleinen (“Taktisches Design“)
Isolieren der Domäne in der Architektur
Was bedeutet das Modellieren der Sprache der Fachdomäne?
Modellieren einer Abstraktion der Domäne und diskutieren der Abstraktion mit Fachexperten
Freihalten des Domänenmodell von technischen Aspekten
Worum geht es beim Bounded Context?
Bounded Context - Fachgebiete oder Themenbereiche, die inhaltlich eng zusammengehören
Innerhalb des BC gilt:
Konsistente Bedeutung von Begriffen
Pro BC ein eigenes/ eigenständiges Modell möglich
Modellierung mehrerer BCs in einer Context Map
(z.B. Für Telefonanbieter: Netzbetrieb/Billing)
Was soll beim “Isolieren der Domäne” in der Architektur passieren?
Struktur und Konzepte der Fachdomäne sollen langfristig in der Architektur repräsentiert werden
Implementierung der Domäne (etwa Aggregate, Entitäten, Services und Value-Objekte) in eine eigene Schicht der Architektur
Welche vier Schichten der Architektur gibt es?
Kontextbegrenzung:
Vogelperspektive & Nachbarsysteme
Laufzeitsicht:
Zusammenarbeit der Bausteine
Bausteinsicht:
Bausteine und Beziehungen (Statische Struktur)
Verteilungssicht:
Umgebung in der das System läuft
Was beinhaltet die Sicht der Kontextabgrenzung?
Schnittstellen zum Nachbarsystem
Interaktionen mit wichtigen Stakeholdern
wesentlichen Teile der umgebenden Infrastruktur
Was beinhaltet die Sicht der Bausteinsicht?
Wie ist das System intern aufgebaut?
statischen Strukturen der Architekturbausteine
meist top-down beschrieben
unterstützen Projektleiter und Auftraggeber bei der Projektüberwachung
dienen der Zuteilung von Arbeitspaketen
Was beinhaltet die Sicht der Laufzeitsicht?
Wie läuft das System ab?
welche Bausteine des Systems existieren zur Laufzeit
wie wirken die Bausteine zusammen
beschreibt dynamische Strukturen
Was beinhaltet die Sicht der Verteilungssicht?
In welcher Umgebung läuft das System ab?
beschreiben die Hardwarekomponenten, auf denen das System läuft
Dokumentation der physischen Systemumgebung
zeigt das System aus Betreibersicht
Worauf basiert Emergent Design und was besagt es?
Basiert auf Refactoring von erstellten, lauffähigen Komponenten
(zuerst deliverables - dann design)
-> es ist ohne bewusste Steuerung gestaltetes Design
Welche Beispiele gibt es für notwendige Best Practices des Emergent Designs?
Code conventions
Code reviews
Welche Regeln gibt es bei High Qulaity Design?
test everything
eliminate duplication
express all ideas
minimize entities
Welche Rahmenbedingungen gibt es beim Emergent Design?
benachbarte Systeme
existierende Systemlandschaft
-> strategischer Rahmen muss definiert sein
Was sind die 5 Faktoren zur Weiterentwicklung von Softwarearchitektur?
Prozedural zu objektorientierten Programmiersprachen
Vom Großcomputer zum Heimcomputer
Trend von monolithischen Applikationen zu modularen Systemen
Früher: hauptsächlich Rich-Client-Applikationen
Trend zu Webapplikationen, Self-Contained Systems (SCS, Microservices) und Service-orientierte Architektur (SOA)
Welche historischen Software Architekturen gibt es?
2-Tier Architekturen
3-Tier Architekturen
Service-orientierte Architekturen
Microservice Architekturen
Was beinhaltet Service-Orientiertes Design?
Umspannt mehrere Abstraktionsebenen:
Service Layer
Component Layer
Class Layer
Unterschiedliche Notationen je Layer
Webservice (Service Layer)
Komponentendiagramme (Component Layer)
Klassendiagramm (Class Layer)
Was beinhaltet Service-Orientierte-Architektur?
Geschäftsprozess-orientiert
Anwendungen durch mehrere Services gelöst
Services sollen auch aus anderen Anwendungen heraus aufgerufen werden können (Reuse/ Modularisierung)
Zusammenstellung von Services in bestimmten Abläufen zur Umsetzung von Geschäftsprozessen (Orchestrierung)
Services existieren auf mehreren Abstraktionsebenen (Business Service, Component Service, technisches Service, usw.)
Beschreibt eine Architektur, keine Technologie
Was sind die Paradigmen der Service-orientierten Architektur?
Lose Kopplung
Niedrige Kopplung der Services ermöglicht hohen Reuse und Flexibilität
Abstraktion
Reduktion von Neuentwicklungen
– Spannungsfeld Abstraktion vs. Technische Anforderungen
Standardisierung
Standardisierung erlaubt die Zusammenarbeit von Services
Composable
Standardisierte Services können zu Komponenten zusammengefasst
werden
Was ist das Business Process Modelling (BPM) und wie ist es mit SOA verknüpft?
bei SOA:
ein Schritt in einem Geschäftsprozess extrahiert und gekapselt
-> business service
SOA = business driven (an Geschäftsprozesse angelehnt)
Was beziechnen Microservices?
Einen Architekturstil, der die Aufteilung größerer Systeme in kleinere, einzeln entwickel-, deploy- und betreibbare Einheiten vorsieht
Welche Ziele haben Microservices?
Erhöhung der Wandelbarkeit und Flexibilität
Bessere Time-to-Market (neue Features sowie Fixes sollen schneller in Produktion gehen)
Schnellere Entwicklung (durch kleinere Einheiten)
Mehr Innovationsfähigkeit sowie Flexibilität bezüglich Technologieauswahl
Läuft in einer eigenen Ablaufumgebung, ist also unabhängig von anderen Microservices
Wie sind Microservices charakterisiert?
Modularisierung (anhand von fachlichen Funktionen/Aufgaben)
Eigene Ablaufumgebung (Unabhängiges Deployement und Skalieren)
Selbstständig agierende Endpunkte/ simple Kommunikationskanäle
Dezentrales Management von Microservices (unabhängige teams)
Dezentrale Datenverwaltung (jedes Mircoservice verwaltet eigene Daten)
“Remote” Kommunikation zwischen Microservices (benötigt Werkzeuge zum gegenseitigen Auffinden von Service- Instanzen inklusive Failover („Service Discovery“))
Evolutionäre Entwürfe (kürzere Release-Zyklen und risikoarme Änderungen)
Was ist essentiell damit Microservises in eine Organisation eingeführt wird?
Das Anpassen der Organisation entsprechend der Microservices
funktionsübergreifende Teams (cross-functional teams) unterstützen
Teams sollen sich von Anfang bis Ende, von Konzeption bis Produktion um „ihr Produkt“ kümmern
Ein Team - mehrere Microservies (nie umgekehrt)
Für welche Systeme sind Microservices geeignet?
Internetbasierte Systeme:
z.B. eBusiness-Anwendungen
Klassische Client/Server-Anwendungen
(wenn die serverseitigen Anwendungen stärker modularisiert und voneinander entkoppelt werden)
Also: Wann immer unterschiedliche (fachliche) Funktionalitäten voneinander getrennt entwickelt und betrieben werden können
Welche Herausforderungen stellen Microservices dar?
Entwickeln, testen, bauen und deployen:
muss das team jedes mal selbst machen
Service-Discovery:
die vielen Services müssen zur Laufzeit zueinander finden
UI-Integration:
eine einheitliche, konsistente Benutzeroberfläche
Dezentralisierte Daten:
d.h. Konsistenz von Daten sicherstellen
Überwachung und Betrieb von Laufzeitumgebungen
Was sind Patterns?
allgemeine Lösungsstrategien für wiederkehrende Probleme
abstrakt
Technologie unabhängig (meistens)
Wesentlicher Input in Entwurfsentscheidungen
Welche zwei Arten von Patterns gibt es nach Abstraktionsebene?
Design Patterns
Muster auf Klassen-Ebene (Mikroarchitektur)
Architektur Patterns
Muster auf architektonischer Ebene (Makroarchitektur)
Welche Pattern Languages gibt es?
Sammlung von Entwurfsmustern
Schaffung einer einheitlichen Sprache für Probleme und Lösungen
Was beschreiben Design Patterns und wozu dienen sie?
Beschreiben:
wiederholt auftretende Strukturen von miteinander kommunizierenden Komponenten
Dienen:
zur Lösung eines allgemein definierten Problems innerhalb eines bestimmten Kontexts
Wo befinden sich Design Patterns auf Abstraktionsebenen?
Unter Architektur Patterns
Was sind Architektur Patterns?
Schablonen/Vorlagen für konkrete Softwarearchitekturen
Was beschreiben Archtiektur Patterns?
Sie spezifizieren systemweite, strukturelle Eigenschaften einer
Anwendung
Welche bekannten Archtektur Patterns gibt es?
Model-View-Controller
Pipes and Filters
Layered Architecture
Wie funktioniert der Model View Controller?
Model kapselt Daten und Funktionen
View stellt Informationen dar
Controller empfängt Events
Was ist die Situation beim Model View Controller?
Szenario: Interaktive Anwendungen mit einer flexiblen Schnittstelle zwischen Mensch und Computer
Problem: GUI wird oft geändert
Lösung: Aufteilung in Verarbeitung, Output und Input
Last changed2 years ago