Kapitel 4 - Entwurf Flashcards
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


