Definition: Softwarearchitektur
- Eine Software-Architektur wird durch die Beschreibung von Software-Komponenten und deren Verbindungen und Interaktionen untereinander definiert
- Softwarearchitektur ist eine Struktur und grundlegende Organisation eines Systems
Definition: Softwarekomponente
Aktive Einheiten einer Architektur, die Aufgaben durch interne Berechnungen und externe Kommunikation mit anderen Komponenten des Systems bewerkstelligen
Was ist Objektorientiertes Design (ODD)
- Architektur-Entwurf basierend auf objektorientierten Konzepten wie Klassen und Objekten
- Lösung zum Problem, das durch OOA analysiert wurde
Nennen sie die Vorteile der Verwendung von Werkzeugen im Entwurf
- Effizienz
- Wiederverwendbarkeit
- Versionierung
- Verteilung
- Modellbasierte Codegenerierung
Kategorie von Werkzeugen (Schaubild)
Weitere unterstüzende Werkzeuge (Schaubild)
Was ist eine IDE?
Anwendungsprogramm zur Entwicklung von Software
Was für gängige Komponenten enthält eine IDE?
- Texteditor
- Compiler bzw. Interpreter
- Linker
- Debugger
- Quelltextformatierungsfunktion
Kann auch enthalten:
- Versionsverwaltung
- Projektmanagement
- UML-Modellierung
Nennen Sie das Vorgehen für die Werkzeugwahl
- Definition der funktionalen und nicht-funktionalen Anforderungen
- Priorisierung der Anforderungen
- Erstellung der Long List (Liste möglicher Werkzeuge)
- Auswertung von Produktvergleichen
- Eigene Recherchen
- Software-Test -> Short List und Entscheidung
Welche Möglichkeiten gibt es für den Entwurf und der Bewertung von Architekturen?
- Sichten
- Stile
- Muster
Worauf fokusiert sich die Architektursicht?
Teile und Eigenschaften eines Systems
Warum gibt es Sichten?
- Komplexe Systeme lassen sich nicht mit einer einzigen Beschreibung erfassen
- Unterschiedliche Stakeholder arbeiten mit unterschiedlichen Informationen
*Eine Art Brille durch die man eine Architektur betrachtet, die jedoch nur bestimmte Aspekte der Architektur unter bestimmten Gesichtspunkten sichtbar macht *
Was sind statische Sichten und was sind dynamische Sichten?
- Statisch
- Struktur
- Dynamisch
- Ablaufeigenschaften (Datenfluss, Kontrollfluss, usw.)
Was sind Architekturstile?
- Beschreiben die grundlegende Art des Aufbaus eines Softwaresystems
- Struktur
- physikalische Verteilung
- Zuordnung von Prozessen und Prozessoren
- Kommunikationsformen und -protokolle
- Haben grundlegenden Einfluss auf die Qualität des Gesamtsystems
- In konkreten Systemen findet man oft einen Mix von Architekturstilen - meist sind nur Teilsysteme in einem reinen Stil
- Sind im Vergleich zu Architekturmustern gröber und abstrakter
Was sind Architekturmuster?
- Muster beschreiben häufig auftretende Entwurfsprobleme und dazu universell verwendbare generische Lösungsschemen
- Entwurfsmuster sind weniger abstrakt als Architekturstile und beziehen sich konkret auf die Softwarekodierung
Was machen Architekturmuster?
- Architekturmuster beschreiben abstrakt eine bewährte Lösung für eine Klasse ähnlicher Probleme
- Architekturmuster machen Erfahrungswissen für andere zugänglich
- Architekturmuster sind eine gute Grundlage, um Entscheidungen und Alternativen zu diskutieren
In welche Sichten sind Architekturmuster zu unterscheiden?
- Komponentensicht
- Physische Sicht
- Laufzeitsicht
Beschreiben Sie die Musterstruktur (5)
- Ziel: Was soll erreicht werden
- Kontext: abstrakte beschreibung der Situation
- Problem: Wieseo ist es in diesem Kontext schwierig, das Ziel zu erreichen?
- Wirkkräfte: Welche Kräfte bewirken den Konflikt, de dem Problem zugrunde liegt?
- Lösung: Wie kann man das Problem lösen?
- Architekturmuster: KETTE*
- Was bewirkt es?*
- Welche Probleme werden damit gelöst?*
Was bewirkt es:
- Aufteilung der Verarbeitung des Datenstroms in einzelne unabhängige Schritte
- Einzelne Schritte werden in verschiedene Komponenten ausgelagert
Welche bisherigen Probleme damit gelöst werden:
- austauschbarkeit der Schritte
- leichte Wartbarkeit
- Wiederverwendbarkeit in anderen Anwendungen
- Implementation von unterschiedlichen Entwicklern möglich
- Parallele Verarbeitung möglich
- Kann auf verschiedenen Servern laufen
- Architekturmuster: KETTE*
- Nennen sie Vorteile*
- Kompositionalität erleichtert Verständnis und Erweiterung
- Wiederverwendung einfach zu erreichen
- Analyse auf bestimmte Eigenschaften relativ leicht möglich (Durchsatz, Deadlockfreiheit,….)
Architekturmuster: KETTE
Nennen sie Nachteile
- Stapelverarbeitung ungeeignet für moderne interaktive Systeme oder kurze Reaktionszeiten
- Korrespondenz (Zusammenführung) zwischen verschiedenen Strömen schwierig
- Zusätzlicher Aufwand für Konversion von Daten in einheitliches Schnittstellenformat
Architekturmuster: REPOSITORY
Was bewirkt es?
Welche Probleme werden damit gelöst?
Was es bewirkt:
- Einführung einer zentralen Stelle für die Basisfunktion und Daten
- Zugriff auf zentrale Stelle nur nach Zugangsprüfung
Welche Probleme es löst:
- Vorhandene Menge an Basisfunktionen um Daten zu bearbeiten
- Basisfunktionen sollen über verschiedene Wege aufrufbar sein
- Zugriff auf Basisfunktionen und Daten soll gesichert sein
- Varianten in der Zugriffskoordination und Benachrichtigung
Architekturmuster: REPOSITORY
Vorteile?
- Gesamtsicht des Systemzustands
- Entkopplung der Werkzeuge, damit hohe Erweiterbarkeit
- Wiederverwendung des Repository und seiner Struktur
Architekturmuster: REPOSITORY
Nachteile?
- Zugriffskoordination kann “Flaschenhals” werden oder Inkonsistenzen verursachen
- Lokale Datenhaltung in den Werkzeugen birgt Gefahr der Inkosistenz und benötigt aufwendige Benachrichtigungsmechanismen
- Einheitliche Schnittstelle für alle Werkzeuge nötig
Architekturmuster: SCHICHTEN
Was bewirkt es?
Welche Probleme löst es?
Was es bewirkt:
- Aufbau des Systems in Schichten
- Festlegung von festen definierten Schnittstellen
- Jede Schicht bietet Dienste (nach oben) und nutzt Dienste (nach unten)
Welche Probleme werden dadurch gelöst:
- Einfacher Aufbau eines Systems
- Funktionen sollen möglichst getrennt voneinander aufgebaut sein
- Aufruf von Funktionen nur in eine Richtung
- Ermöglichung der sequentiellen und parallelen Entwicklung des Systems
Architekturmuster: SCHICHTEN
Vorteile?
- Entwurf in Abstraktionsebenen
- Erweiterung möglich durch Einschieben von Schichten
- Schichten-Implementierung austauschbar
Architekturmuster: SCHICHTEN
Nachteile?
- Schichtenstruktur nicht immer geeignet
- Schichten nicht einfach zu definieren
- Kopplung über mehrere Schichten aus Performance-Gründen sinnvoll
Verteilungsmuster: “Client/Server”
Problem?
Lösung?
Problem:
- Zentrale Datenhaltung
- Fachlogik und Systemfunktionen
Lösung
- Sogenannte “Two-Tier” Client/Server-Architektur
- Client
- Benutzerschnittstelle
- Einbindung in Geschäftsprozesse
- Entkoppelt von Netztechnologie und Datenhaltung
- Server
- Datenhaltung, evtl Fachlogik
Was ist ein Thin-Client?
- Nur die Benutzungsschnittstelle auf dem Client-System
- Ähnlich zu zentralem System, aber oft mit Download-Mechanismen
Was ist ein Fat-Client?
- Teile der Fachlogik oder gesamte Fachlogik auf dem Client-System
- Hauptfunktionen des Servers: Datenhaltung
- Entlastung des Servers
- Zusätzliche Anforderungen an Clients
Verteilungsmuster: “Three-Tier Client/Server”
Wie löst dieses muster folgende Probleme:
- Trennung Fachlogik und Systemfunktionen von Daten
- Zentraler Ort für Fachlogik und Systemfunktionen
- Unabhängiger Ort für Daten
Architekturmuster der Laufzeitsicht
- Zentrale Steuerung
- Call-Return
- Master-Slave
- Ereignis-Steuerung
- Selective Broadcast
- Interrupt
- Auch Steuerungsmuster genannt
Steuerungsmuster “Master-Slave”
Problem
Lösung
Vorteil
Problem:
- Zentrale periodische Abfrage von Zustandsänderungen
- Reaktion auf Ereignisse durch zentralen Programmteil
Lösung
- Verwendung einer zentralen Endlosschleife (Master) zur Ereignisbehandlung
- Master prüft, ob Ereignisse vorliegen oder Zustandsänderungen erfolgt sind
- Führt dann entsprechende Aktivitäten durch
- Master reagiert auf entsprechende Zustandsänderungen oder Ereignisse
Vorteile
Gut um Realzeitsysteme zu konstruieren
ABER: Jedes aufgerufene Prgramm darf bestimmte Schranke an Zeit nicht überschreiten.
Bewertung e-r Architektur: Gute Komponenten
- Haben definierte Schnittstellen -> können einfach kombiniert und leicht ausgetauscht werden
- Große Kohäsion (innerer Zusammenhalt)
- Schwache Kopplung (über definierte Schnittstellen)
- Offenheit für Erweiterungen
- Geschlossenheit für Änderungen
Nennen Sie die Kriterien eines guten Entwurfs
-
Hohe Kohäsion
- Elemente sollen in Komponenten zusammengefasst werden, die inhaltlich zusammengehören
-
Niedrige Kopplung
- Einzelne Komponenten sollen möglichst unabhängig voneinander sein
-
Daneben allgemeine Eigenschaften
- Korrektheit
- Anpassbarkeit
- Verständlichkeit
- Ressourcenschonung
Nennen sie Beispiele für nicht-funktionale Anforderungen
- Reife (siehe Versionsnummer, Releasedatum)
- Support, Lizenz
- Preis
- Einfachheit = Erlernbarkeit
- Wenig Zusatzaufwand beim Programmieren anpassbar
Architekturmuster: SCHICHTEN
Entwurfsregeln?
Benutzungsschinttstelle
Fachlicher Kern
Persistenzschicht
- Benutzerschnittstelle greift nie direkt auf Datenhaltung zu
- Persistenzschicht verkapselt Zugriff auf Datenhaltung, ist aber nicht identisch mit dem Mechanismus der Datenhaltung (z.B. Datenbank)
- Fachlicher Kern basiert auf dem Analyse-Modell