Grundlagen und Prinzipien des Architekturentwurfs Flashcards
Charakterisierung: Softwarekomponenten
- klar definierte Schnittstellen
- definierte Abhängigkeiten zu anderen Komponenten
- können unabhängig von anderen Komponenten entwickelt werden
- Kapseln Teilsysteme
Wie wird ein System entworfen?
- Anforderungsspezifikation ist Ausgangspunkt für den Systementwurf
- Grobentwurf (Festlegung von Systemarchitektur und Komponenten)
- Feinentwurf (Softwarearchitektur der Komponenten)
- Entscheidende Rolle für
Entwicklungsprozess (Zerlegung eines Systems, arbeitsteilige Entwicklung,
Integration und Tests)
Qualitätseigenschaften (Komplexitätsbeherrschung, Performanz, Skalierung,
Wartbarkeit)
Gliederungskonzepte für Architekturen
- Klassen (als Typ-Konzept) legen fest, wie die Exemplare (Objekte) den
Nachrichtenaustausch zwischen Objekten mittels Methodenaufrufen
realisieren - Datenflusskomponenten beschreiben, wie die Komponenten durch das
Versenden von Nachrichten über Kanäle miteinandere kooperieren - Prozeduraufrufkomponenten kooperieren mittels Aufrufen von
Prozeduren in den an der Kommunikation beteiligten Komponenten
Schichtenarchitektur
System besteht aus Schichten, welche über/unter einander liegen und die informationen von unten nach oben verarbeiten.
z.B.
* Präsentationsschicht
* Applikationsschicht
* Datenschicht
Pro:
* Modular
* Vorteilhaft strukturierung
Con;
* Performance
Perspektiven des Architekturentwurfs
- Logische Architektur (beschreibt, welche Komponenten welche
Funktionalitäten übernehmen und wie sie funktional und logisch
zusammenwirken) - Realisierungsarchitektur (beschreibt, wie die logische Architektur
konkrete auf dem Software-/Hardwar-System realisiert wird)
Bestandteile der Architekturbeschreibung
Typische Bestandteile:
* Architekturanforderungen, Entwurfsziele und -prinzipien
* Systemgliederung in Komponenten
* Verbindung der Komponenten über Schnittstellen
* Schnittstellenbeschreibung der Komponenten
* Benutzungsschnittstelle des Gesamtsystems als Teil der Architektur
Welche Hardwarearchitekturen gibt es?
- Großrechnersysteme (gesamte Software läuft auf einem Rechner)
- Client/Serversysteme (Rechnernetz von Kleinrechnern/Clients und
Servern, Kommunkation durch Middleware)
Verteilte und nebenläufige Systeme
Verbunden durch ein Netzwerk und stellen Komponenten der Anwendung durch Middleware zur Verfügung
Interaktive verteilte Systeme
Interaktion durch Nachrichtenaustausch:
Unterscheidung zwischen:
* Synchroner Kommunikation (wartet auf Antwort)
* Asynchroner Kommunikation (Kann während des Wartens weitere Aufgaben bearbeiten)
Statik und Dynamik in Architekturen
- Dynamische Bestandteile (Zielen auf das Verhalten der Architektur (Wechselspiel
zwischen Komponenten, z.B. Protokolle) - Statische Bestandteile (Anzahl der Komponenten und
Kommunikationsbeziehungen, Darstellung durch Diagramme) - Statische Architekturen (Zahl der Komponenten und deren Verbindungen ändern
sich zur Laufzeit nicht) - Dynamische Architekturen (Zahl der Komponenten und deren Verbindungen
können sich zur Laufzeit ändern) - Statische Sichten (z.B. Klassendiagramme in objektorientierten Systemen)
- Dynamische Sichten (z.B. Objektdiagramme als Zustandsabbildung)
Aufgaben des Architekten
- Evaluierung unterschiedlicher Realisierungsalternativen (Entwicklerrolle)
- Koordination der Schnittstellen zwischen Teilprojekten (Entwicklerrolle)
- Entwicklung einer Systemvision (Analytikerrolle)
- Anforderungsbewertung (Analytikerrolle)
- Entscheidung über Systementwürfe (Projektmanagerrolle)
Prinzipien des Architekturentwurfs
(Strukturierung einer Architektur)
Zentrale Prinzipien zur Strukturierung einer Achitektur:
* Das Gebot der Einfachheit: KISS
* Kopplung und Kohäsion
* Kapselung und Information Hiding
* Separation of Concerns
KISS
Keep it simple and stupid (“Mache es einfach und nicht zu raffiniert”)
Kopplung
Kopplung: Abhängigkeiten zwischen Komponenten
* Beeinflusst die Wartbarkeit
* Maß zur Abschätzung der Auswirkungen von Änderungen im System
* Generell: Je niedriger die Kopplung, desto eigenständiger ist die Komponente oder das Modul.
Grundform Beispiel
Aufruf: A ruft B auf (A nutzt einen Service von B)
Erzeugung: A erzeugt B
Daten: A und B nutzen gemeinsame Daten/-strukturen und Zustände
Umgebung: A und B erfordern dieselbe Laufzeitumgebung/Hardware
Zeit: B muss existieren, solange A existiert
Kohäsion
Kopplung und Kohäsion
* Kohäsion: innerer Zusammenhang von Komponenten
Klasse beinhaltet Methode welche nicht zu den anderen gehört -> schwache Kohäsion
- Generell: Je stärker die Kohäsion, desto wohldefinierter ist die Komponente oder das Modul.