Grundlagen der Software-Architektur: Konzepte und Stile
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 5,78 KB
Architekturprinzipien
- Abstraktion
- Verkapselung
- Trennung der Verantwortlichkeiten
- Kopplung und Kohäsion
- Keine Vervielfältigung (DRY)
- Parametrierung und Konfigurierbarkeit
- Klarheit und Einfachheit
- Trennung von Schnittstelle und Implementierung
Ziele der Software-Architektur
Die Software-Architektur ermöglicht es uns, zu planen und fundierte Entscheidungen für folgende Bereiche zu treffen:
- Systemzuverlässigkeit
- Evolution und Erweiterbarkeit
- Wiederverwendbarkeit
- Leistungsfähigkeit
- Wartbarkeit
Nutzen der Software-Architektur
Ein tiefes Verständnis fördert die Auswahl architektonischer Details, um bessere Design-Alternativen zu entwerfen.
Probleme bei mangelnder Architektur
- Unzureichende Leistung
- Hohe Wartungskosten
- Mangelhafte Gestaltung
- Begrenzte Wiederverwendbarkeit
- Ineffiziente Projekte
Definition der Architektur
- Strukturelle Ebene auf hohem Niveau
- Festlegung von Stilen oder Kombinationen für eine Lösung
- Fokus auf nicht-funktionale Anforderungen (funktionale Anforderungen werden durch Modellierung und Design erfüllt)
- Voraussetzung für den Erfolg oder Misserfolg eines Projekts
Die Architektur eines Softwaresystems ist die Struktur oder die Strukturen des Systems, bestehend aus:
- Software-Elementen
- Äußerlich sichtbaren Eigenschaften dieser Elemente
- Beziehungen zwischen den Elementen
Strukturen in der Architektur
Es gibt zwei Arten von Strukturen, die für einen Architekten von Interesse sind:
- Statische Strukturen: Organisatorisches Design zur Entwicklungszeit.
- Dynamische Strukturen: Organisation zur Laufzeit.
Statische Elemente
Diese definieren das Systemdesign, die enthaltenen Elemente und deren Beziehungen. Interne Elemente können sein:
- Software: Module, Klassen, Pakete, Stored Procedures.
- Interne Datenelemente: Klassen, Entitäten/Relationale Tabellen, Datendateien, XML/HTML.
- Interne Hardware-Elemente: CPU, Hardware-Komponenten (Monitor, Tastatur etc.), Netzwerk-Komponenten.
Systemdynamik
Diese Strukturen zeigen, wie das System zur Laufzeit funktioniert.
Äußerlich sichtbare Eigenschaften
Diese unterteilen sich in:
- Verhalten nach außen: Funktionale Interaktionen zwischen dem System und seiner Umgebung.
- Qualitätsattribute: Nicht-funktionale Anforderungen wie Leistung, Sicherheit und Wartbarkeit.
Kandidaten-Architektur
Eine Kandidaten-Architektur für ein System muss das Potenzial haben, die erforderlichen Qualitätsattribute zu erfüllen. Die Beziehung zwischen äußerlich sichtbarem Verhalten und innerer Zusammensetzung ist wie folgt:
- Das äußerlich sichtbare Verhalten wird durch das kombinierte Verhalten der internen Komponenten bestimmt.
- Die Qualitätsattribute (z. B. Leistung, Skalierbarkeit) ergeben sich aus den Eigenschaften der internen Komponenten.
Komponenten (Architektonische Elemente)
Eine Komponente ist ein Eckpfeiler des Systems mit folgenden Eigenschaften:
- Ein Satz von Verantwortlichkeiten.
- Eine klare Begrenzung oder ein definierter Umfang.
- Schnittstellen, die die Dienste der Komponente für andere definieren.
Stakeholder
Ein Stakeholder ist eine Person, Gruppe oder Organisation mit einem Interesse an der Entwicklung eines Systems.
Architekturstile
Ein Architekturstil ist ein beschreibender Mechanismus, um ein System zu klassifizieren. Häufig werden bewährte Stile mit ihren Vor- und Nachteilen eingesetzt:
Client-Server-Architektur
Das System verteilt die Last auf zwei Teile: einen Client (Anfragen) und einen Server (Antworten).
- Komponenten: Präsentationslogik, Geschäftslogik, Datenbanklogik, Datenbankverarbeitung.
- Vorteile: Zentralisierung der Kontrolle, Skalierbarkeit, einfache Wartung.
- Nachteile: Verkehrsstaus, erhöhte Kosten.
Layered Architecture (Schichtenarchitektur)
Eine Spezialisierung der Client-Server-Architektur mit klarer Trennung der Aufgaben in drei Schichten:
- Präsentationsschicht: Benutzeroberfläche (GUI).
- Geschäftsschicht: Verarbeitung der Anfragen und Geschäftsregeln.
- Datenschicht: Speicherung und Zugriff auf Daten.
Hinweis: "Schichten" (logische Segmentierung) und "Ebenen" (physische Verteilung) sind zu unterscheiden.
Pipes und Filter
- Jede Komponente hat Ein- und Ausgänge.
- Daten werden inkrementell transformiert (Filter) und über Verbindungen (Pipes) übertragen.
- Vorteile: Leicht verständlich, Wiederverwendbarkeit, einfache Wartung, Unterstützung für parallele Ausführung.
Blackboard-Stil
Besteht aus einem zentralen Datenspeicher und aktiven Komponenten, die auf diesem Speicher arbeiten.
- Komponenten lesen vom Board, verarbeiten Daten und schreiben Ergebnisse zurück.
- Die Berechnung endet, wenn ein Soll-Zustand erreicht ist.
- Wartbarkeit: Sehr hoch, da Komponenten unabhängig hinzugefügt oder entfernt werden können.
Objektorientierte Systeme
- Organisation des Systems durch Kommunikation zwischen Objekten.
- Objekte enthalten Zustand und Operationen.
- Objekte kommunizieren über Nachrichten und halten Referenzen aufeinander.