Grundlagen: Modularität & Entwurf
Dieser Abschnitt befasst sich mit den grundlegenden Prinzipien der Software-Architektur und des Designs. Es geht darum, wie Systeme in überschaubare Teile zerlegt und entworfen werden, um sie robuster und einfacher zu warten.
Modularity & Information Hiding
Modularität bedeutet, ein System in voneinander abhängige Teile zu unterteilen, um die Komplexität jedes Teils hinter einer Abstraktion zu verbergen.
Information Hiding ist das Prinzip, Designentscheidungen, die sich wahrscheinlich ändern werden, zu kapseln. Dies schützt andere Programmteile vor umfangreichen Änderungen.
Das Twin Peaks Modell
Requirements
Architecture
Iterativer Prozess
Das Modell zeigt die iterative und abhängige Entwicklung von Anforderungen und Architektur. Sie beeinflussen sich gegenseitig von grober bis detaillierter Ebene.
Agile Design: Die SOLID Prinzipien
S (SRP)
Ein Modul sollte nur einen Grund zur Änderung haben.
O (OCP)
Offen für Erweiterung, geschlossen für Modifikation.
L (LSP)
Abgeleitete Klassen müssen die Basisklassen ersetzen können.
I (ISP)
Clients sollen keine irrelevanten Interfaces implementieren müssen.
D (DIP)
Hoch-Level-Module sollen nicht von Low-Level-Modulen abhängen.
Architektur & Design-Muster
In diesem Abschnitt werden fortgeschrittenere Konzepte zur Strukturierung von Systemen betrachtet. Von der Visualisierung von Abhängigkeiten bis hin zu modernen Architekturansätzen wie Microservices.
Design Structure Matrix (DSM)
Eine DSM ist ein quadratisches Matrix-Diagramm, das die Abhängigkeiten zwischen Systemelementen wie Aufgaben, Komponenten oder Teams visualisiert. Klicken Sie auf eine Zelle, um die Abhängigkeit hervorzuheben.
| Input/Output | A | B | C | D |
|---|---|---|---|---|
| A | X | |||
| B | X | |||
| C | X | X | ||
| D | X |
SOA vs. Microservices
Service Oriented Architecture (SOA)
Services können auf verschiedenen Ebenen abstrahiert sein (Prozess, Basis), was die Wiederverwendbarkeit erhöht.
Microservices
Dienen als kleinste, unabhängig ausführbare Einheiten innerhalb eines geschäftlichen Domänenbereichs.
Spezielle Systemansätze
Software-Architektur und Design gehen über die modulare Strukturierung hinaus und umfassen auch Ansätze für ganze Produktlinien und Systeme, die auf maschinellem Lernen basieren.
Software Product Lines (SPL)
Eine SPL ist eine Familie von Software-Systemen, die einen gemeinsamen Kern von Assets teilen, um eine breite Palette von Produkten zu erzeugen.
Vorteile:
- Erhöhte Produktivität & kürzere Markteinführungszeit
- Niedrigere Entwicklungskosten
- Verbesserte Qualität und Wartbarkeit
ML-Systeme im Software-Entwurf
Maschinelles Lernen eignet sich am besten für Probleme, die repetitiv sind, bei denen Muster gelernt werden müssen und Daten verfügbar sind.
Wann ML sinnvoll ist:
- Wenn die Kosten falscher Vorhersagen gering sind.
- Wenn Muster sich ständig ändern.
- Wenn es um Skaleneffekte geht.