- 1 Abschnitt
- 8 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
alles ausklappenalles einklappen
Architekturdesign
Architekturdesign ist ein entscheidender Schritt im Softwareentwicklungsprozess, bei dem die Struktur und Organisation eines Softwaresystems auf hoher Ebene definiert werden. Es geht darum, grundlegende Entscheidungen über das Systemdesign zu treffen, die die gesamte Entwicklung und Wartung beeinflussen.
Softwarearchitektur
Definition und Bedeutung
- Softwarearchitektur beschreibt die grundlegenden Strukturen eines Softwaresystems, die aus Softwarekomponenten, den extern sichtbaren Eigenschaften dieser Komponenten und den Beziehungen zwischen ihnen bestehen.
- Bedeutung: Eine gut durchdachte Architektur erleichtert die Entwicklung, Wartung und Erweiterung eines Systems und trägt zur Qualität, Performance und Skalierbarkeit bei.
Architekturmodelle und -stile
Übersicht der Architekturmodelle
Schichtenarchitektur
- Beschreibung: Unterteilt das System in horizontale Schichten, wobei jede Schicht eine bestimmte Rolle erfüllt.
- Vorteile: Klare Trennung von Verantwortlichkeiten, erleichtert die Wartung und Erweiterung.
- Beispiel
Benutzeroberfläche
-------------------
Geschäftslogik
-------------------
Datenzugriffsschicht
-------------------
Datenbank
2. Client-Server-Architektur
- Beschreibung: Das System wird in Clients und Server unterteilt, wobei Clients Anfragen senden und Server diese verarbeiten und Antworten zurücksenden.
- Vorteile: Zentrale Verwaltung, Skalierbarkeit, einfache Wartung.
- Beispiel:
Client -> Anfrage -> Server
Client <- Antwort <- Server
3. Microservices-Architektur
- Beschreibung: Das System besteht aus einer Sammlung kleiner, unabhängiger Dienste, die jeweils eine spezifische Geschäftsanforderung erfüllen.
- Vorteile: Skalierbarkeit, Flexibilität, unabhängige Entwicklung und Bereitstellung.
- Beispiel:
Authentifizierungsdienst
-------------------------
Produktkatalogdienst
-------------------------
Bestellungsdienst
Entwurfsprinzipien
Wichtige Entwurfsprinzipien
SOLID-Prinzipien
- Single Responsibility Principle (SRP): Eine Klasse sollte nur eine Verantwortlichkeit haben.
- Open/Closed Principle (OCP): Softwaremodule sollten offen für Erweiterungen, aber geschlossen für Änderungen sein.
- Liskov Substitution Principle (LSP): Objekte einer Basisklasse sollten durch Objekte einer abgeleiteten Klasse ersetzbar sein.
- Interface Segregation Principle (ISP): Schnittstellen sollten spezifisch und auf die Bedürfnisse der Clients zugeschnitten sein.
- Dependency Inversion Principle (DIP): Module sollten von Abstraktionen abhängen und nicht von konkreten Implementierungen.
DRY (Don’t Repeat Yourself)
- Beschreibung: Vermeide Wiederholungen im Code durch die Zentralisierung von Logik und Funktionen.
- Vorteile: Erhöht die Wartbarkeit und reduziert die Fehleranfälligkeit.
KISS (Keep It Simple, Stupid)
- Beschreibung: Halte das System so einfach wie möglich.
- Vorteile: Einfache Systeme sind leichter zu verstehen, zu warten und zu erweitern.
Visualisierung der Architekturmodelle
Beispiel einer Schichtenarchitektur:
classDiagram
class Benutzeroberfläche {
+Anzeige()
+Eingabe()
}
class Geschäftslogik {
+Verarbeitung()
}
class Datenzugriff {
+Speichern()
+Laden()
}
class Datenbank {
+Daten()
}
Benutzeroberfläche --> Geschäftslogik
Geschäftslogik --> Datenzugriff
Datenzugriff --> Datenbank
Beispiel einer Client-Server-Architektur:
sequenceDiagram
participant Client
participant Server
Client ->> Server: Anfrage senden
Server -->> Client: Antwort zurücksenden
Beispiel einer Microservices-Architektur:
classDiagram
class Authentifizierungsdienst {
+Login()
+Registrieren()
}
class Produktkatalogdienst {
+ProduktAnzeigen()
+ProduktSuchen()
}
class Bestellungsdienst {
+BestellungAufgeben()
+BestellungVerfolgen()
}
Authentifizierungsdienst -->> Produktkatalogdienst
Produktkatalogdienst -->> Bestellungsdienst
