Softwarearchitektur und Design

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Was beschreibt die Softwarearchitektur?

  • Die Struktur eines Systems (correct)
  • Die Verarbeitungsgeschwindigkeit von Software
  • Die Programmiermethoden einer Software
  • Die Benutzeroberfläche einer Anwendung

Wer kann als Softwarearchitekt fungieren?

  • Eine erfahrene Testerin
  • Ein Projektmanager ohne technische Kenntnisse
  • Ein Marketingexperte
  • Ein einzelner Entwickler oder ein Team (correct)

Was erfordert die Kommunikation mit Stakeholdern?

  • Viel Erfahrung (correct)
  • Eine spezielle Software zur Überwachung
  • Nichts, da sie unwichtig ist
  • Ein ständiger Wechsel des Teams

Was ist eine essenzielle Eigenschaft der Softwarearchitektur?

<p>Wiederverwendbare Abstraktion (B)</p> Signup and view all the answers

Was umfasst der Softwareentwicklungsprozess?

<p>Die Analyse, den Entwurf, die Implementierung und die Wartung (C)</p> Signup and view all the answers

Was beschreibt 'Conway's Law'?

<p>Die Beziehung zwischen Kommunikationsstruktur und Systemdesign. (C)</p> Signup and view all the answers

Was wird als 'Inverse Conway Maneuver' bezeichnet?

<p>Änderung der Teamstruktur zur Förderung einer gewünschten Architektur. (A)</p> Signup and view all the answers

Welche der folgenden Aussagen ist eine Analogie zum Hausbau?

<p>Verschiedene Pläne beschreiben verschiedene Aspekte eines Systems. (B)</p> Signup and view all the answers

Was ist eine 'Sicht' in Bezug auf ein System?

<p>Eine Darstellung, die nur relevante Elemente für eine Perspektive enthält. (B)</p> Signup and view all the answers

Welches Ziel hat die Änderung der Organisationsstruktur gemäß dem Inversen Conway-Manöver?

<p>Ermöglichung einer spezifischen Softwarearchitektur. (D)</p> Signup and view all the answers

Was ist ein Ergebnis des Feinentwurfs?

<p>OO-Modell für jedes Subsystem der Architektur (A)</p> Signup and view all the answers

Welche der folgenden Eigenschaften sind Teil der Verfeinerung des Analysemodells?

<p>Listen der Attribute und Operationen (C)</p> Signup and view all the answers

Was beschreibt die Sichtbarkeit im Kontext von Klassen?

<p>Die Zugriffsrechte auf Attribute und Methoden (B)</p> Signup and view all the answers

Was sind technische Klassen/Pakete?

<p>Einheiten, die mit Infrastruktur und Altsystemen verbunden sind (B)</p> Signup and view all the answers

Was ist eine wichtige Überlegung bei der Grobdefinition der Architektur?

<p>Das Verteilungskonzept der Komponenten (C)</p> Signup and view all the answers

Welche der folgenden Aspekte sind bei der Spezifikation von Klassen wichtig?

<p>Vor- und Nachbedingungen aller Operationen (D)</p> Signup and view all the answers

Was ist die Rolle von Assoziationen und Aggregationen im Feinentwurf?

<p>Sie beschreiben Navigationsrichtung, Ordnung und Qualifikation (A)</p> Signup and view all the answers

Was bedeutet Plattformabhängigkeit in der Softwareentwicklung?

<p>Die Software muss ausdrücklich auf eine Plattform zugeschnitten sein. (B)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt Kohäsion am besten?

<p>Kohäsion besagt, dass Elemente einer Komponente eng miteinander verbunden sind. (A)</p> Signup and view all the answers

Welches Beispiel beschreibt eine zeitliche Kohäsion?

<p>Eine Klasse, in der alle Bestandteile zur selben Zeit aktiviert werden. (C)</p> Signup and view all the answers

Welche Art der Kohäsion beschreibt eine Gruppe von Methoden, die ähnliche Funktionen ausführen?

<p>Logische Kohäsion (B)</p> Signup and view all the answers

Welche der folgenden Kopplungsarten hängt nicht eng mit der gemeinsamen Verwendung von Attributen zusammen?

<p>Klassische Kopplung (A)</p> Signup and view all the answers

Was ist ein Merkmal einer hohen Kopplung zwischen Komponenten?

<p>Komponenten bauen stark aufeinander auf. (A)</p> Signup and view all the answers

Welcher Ansatz ist nicht empfehlenswert zur Reduktion der Kopplung?

<p>Verwendung von public Attributen (D)</p> Signup and view all the answers

Welche Art der Kopplung wird als akzeptabel angesehen?

<p>Schnittstellenkopplung (C)</p> Signup and view all the answers

Was ist ein Beispiel für funktionale Kohäsion?

<p>Eine Klasse, die alle Elemente zur Ausführung einer Gesamtfunktion benötigt. (D)</p> Signup and view all the answers

Welches Ziel wird im Software- und Systementwurf beschrieben?

<p>Der Übergang vom ‚WAS‘ zum ‚WIE‘ für die Implementierung. (A)</p> Signup and view all the answers

Was beschreibt ein Subsystem im Kontext des Software-Entwurfs?

<p>Ein in sich geschlossenes, eigenständig funktionsfähiges System mit definierten Schnittstellen. (B)</p> Signup and view all the answers

Welche der folgenden Aussagen trifft auf den Feinentwurf nicht zu?

<p>Er legt die Systemanforderungen und -ziele fest. (D)</p> Signup and view all the answers

Was ist KEIN Bestandteil einer Komponente im Software-Entwurf?

<p>Sie kann beliebig viele Subsysteme enthalten. (D)</p> Signup and view all the answers

Welche Technik ist wichtig, um komplexe Systeme zu realisieren?

<p>Ein systematischer und teamübergreifender Entwicklungsprozess. (C)</p> Signup and view all the answers

Was charakterisiert eine funktionale Spezifikation in der Softwareentwicklung?

<p>Sie beschreibt, was das Softwareprodukt leisten soll. (D)</p> Signup and view all the answers

Wie nennt man den Prozess, in dem Anforderungen in Entwurfsdetails überführt werden?

<p>Grobentwurf. (A)</p> Signup and view all the answers

Was ist ein zentrales Merkmal der Softwarearchitekuren im Entwurf?

<p>Sie schaffen eine Struktur, die das System allgemein beschreibt. (D)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt das MVC-Modell korrekt?

<p>Der Controller leitet die Benutzereingaben weiter. (D)</p> Signup and view all the answers

Welches Hauptmerkmal beschreibt die Trennung von Daten und Darstellung?

<p>Die Darstellung ist unabhängig von der Datenhaltung. (C)</p> Signup and view all the answers

Was ist die Funktion des 'View' im MVC-Modell?

<p>Sichten auf die Daten bereitzustellen. (C)</p> Signup and view all the answers

Wie erfolgt die Aktualisierung der Darstellungen im MVC-Modell?

<p>Automatisch, wenn das Model aktualisiert wird. (C)</p> Signup and view all the answers

Was ist ein Vorteil der Entkopplung von Darstellung und Daten?

<p>Ermöglicht eine einfachere Wartung und Erweiterung der Software. (D)</p> Signup and view all the answers

Welche Rolle hat das 'Model' im MVC-Architekturmuster?

<p>Es speichert alle Informationen des Systems. (A)</p> Signup and view all the answers

Was beschreibt die 'Graphische Anzeige' in der Informationsdarstellung?

<p>Die visuelle Darstellung von Daten und Informationen. (D)</p> Signup and view all the answers

Was wird unter 'Direkte Anzeige der Eingabeinformation' verstanden?

<p>Die Eingaben werden textuell oder visuell ohne Verzögerung präsentiert. (B)</p> Signup and view all the answers

Welches Element ist nicht Teil des MVC-Modells?

<p>Database (D)</p> Signup and view all the answers

Flashcards

Ziel des Software-Entwurfs

Der Entwurfsprozess zielt darauf ab, aus der Anforderungs- und Funktionsspezifikation eine Vorgabe für die Implementierung zu erstellen.

Subsystem

Ein Subsystem ist eine in sich geschlossene Einheit, die eigenständig funktioniert und über definierte Schnittstellen verfügt.

Komponente

Komponenten sind Bausteine eines Softwaresystems und stellen bestimmte Funktionalitäten bereit.

Grobentwurf

Der Grobentwurf befasst sich mit der Architektur des Systems, der Definition von Subsystemen und deren Schnittstellen.

Signup and view all the flashcards

Feinentwurf

Der Feinentwurf geht tiefer in die Details der Komponenten und Algorithmen ein.

Signup and view all the flashcards

Softwarearchitektur

Eine Softwarearchitektur beschreibt die Struktur und Organisation eines Software-Systems.

Signup and view all the flashcards

Taktiken im Software-Entwurf

Softwarearchitektur bezieht sich auf Taktiken - bewährte Praktiken und Ansätze, um die Architektur zu gestalten.

Signup and view all the flashcards

Phasen im Software-Lebenszyklus

Die verschiedenen Phasen im Software-Lebenszyklus sind: Analyse, Entwurf, Implementierung, Test, Wartung und Integration.

Signup and view all the flashcards

Wesentliche Entwurfsentscheidungen in der Softwarearchitektur

Wesentliche Entwurfsentscheidungen in der Softwarearchitektur betreffen die Kommunikation mit Stakeholdern, die Wiederverwendung von Komponenten, Abstraktionen und die Fokussierung auf spezifische Systemeigenschaften.

Signup and view all the flashcards

Grobentwurf und Feinentwurf

Der Entwurfsprozess in der Softwareentwicklung umfasst einen Grobentwurf und einen Feinentwurf.

Signup and view all the flashcards

Softwareentwicklungsprozess

Die Softwareentwicklung folgt einem mehrstufigen Prozess, der die Phasen Analyse, Entwurf, Implementierung, Test, Integration und Wartung umfasst.

Signup and view all the flashcards

Conway's Gesetz

Ein Prinzip, das besagt, dass die Architektur eines Systems die Kommunikationsstruktur des Teams widerspiegelt, das es entwickelt hat.

Signup and view all the flashcards

Umgekehrtes Conway-Manöver

Ein Konzept, das darauf abzielt, die Softwarearchitektur durch die Anpassung der Teamstruktur zu beeinflussen. Das Team wird so organisiert, dass es die gewünschte Architektur unterstützt.

Signup and view all the flashcards

Sicht

Eine Sicht ist eine Darstellung eines Systems, die nur die Elemente und Beziehungen enthält, die für eine bestimmte Perspektive relevant sind.

Signup and view all the flashcards

Conway's Gesetz im Software Engineering

Ein Software-Entwicklungsprinzip, das besagt, dass Kommunikation in Softwareentwicklungsteams die Architektur des resultierenden Systems beeinflusst.

Signup and view all the flashcards

Hausbau-Analogie für Conway's Gesetz

Eine Analogie, die Conway's Gesetz beschreibt, indem sie auf den Hausbau anwendet. Jeder Plan (Grundriss, Lageplan, etc.) stellt einen Ausschnitt vom Haus dar und hat spezifische Zielgruppen.

Signup and view all the flashcards

Klassen und Pakete

Im Feinentwurf werden alle wichtigen Klassen und Pakete des Systems definiert. Es werden die Attribute, Operationen und Beziehungen zwischen den Klassen festgelegt.

Signup and view all the flashcards

Attribute und Operationen

Im Feinentwurf werden die Attribute und Operationen von Klassen mit Datentypen und Sichtbarkeiten versehen. Dies ermöglicht eine präzise Spezifikation ihrer Funktionalität.

Signup and view all the flashcards

Assoziationen und Aggregationen

Assoziationen und Aggregationen beschreiben die Beziehungen zwischen Klassen. Die Navigationsrichtung gibt an, welche Richtung die Beziehung verfolgt.

Signup and view all the flashcards

Technische Details

Im Feinentwurf werden technische Details wie Infrastruktur, Frameworks und Altsysteme berücksichtigt. Es werden Anpassungs- und Entkopplungsschichten implementiert, um die Integration mit anderen Systemen zu ermöglichen.

Signup and view all the flashcards

Verfeinerung des Analysemodells

Der Feinentwurf basiert auf dem Analysemodell. Er verfeinert das Analysemodell, indem er detailliertere Informationen zu Attributen, Operationen und Beziehungen zwischen Klassen hinzufügt.

Signup and view all the flashcards

Basis für die Entwicklung des Systems

Der Feinentwurf dient als Grundlage für die Entwicklung des Systems. Er enthält alle notwendigen Informationen, um die Software zu implementieren.

Signup and view all the flashcards

Vorteile des Feinentwurfs

Der Feinentwurf ist ein wichtiger Schritt, um die Qualität des Systems zu gewährleisten. Er ermöglicht eine frühzeitige Erkennung von Designmängeln und führt zu einer effizienteren Implementierung.

Signup and view all the flashcards

Kohäsion

Kohäsion beschreibt den Grad der Zusammengehörigkeit von Elementen innerhalb einer Softwarekomponente. Eine hohe Kohäsion bedeutet, dass alle Elemente einer Komponente eng miteinander verwandt sind und gemeinsam zu einer klar definierten Aufgabe beitragen.

Signup and view all the flashcards

Kohärente Klasse

Eine Klasse mit hoher Kohäsion besitzt keine unabhängigen Teilbereiche. Alle Methoden und Attribute arbeiten zusammen, um eine spezifische Aufgabe zu erfüllen.

Signup and view all the flashcards

Kopplung

Die Art der Kopplung beschreibt, wie stark zwei Softwarekomponenten voneinander abhängig sind. Eine geringe Kopplung bedeutet, dass Komponenten unabhängig voneinander arbeiten können und Änderungen an einer Komponente weniger Auswirkungen auf andere Komponenten haben.

Signup and view all the flashcards

Datenkopplung

Datenkopplung entsteht, wenn zwei Komponenten auf gemeinsame Daten zugreifen. Dies erhöht die Abhängigkeit, da Änderungen an den Daten beide Komponenten beeinflussen.

Signup and view all the flashcards

Schnittstellenkopplung

Schnittstellenkopplung tritt auf, wenn Komponenten über definierte Schnittstellen miteinander kommunizieren. Dies bietet Flexibilität, da Komponenten durch den Austausch von Nachrichten miteinander interagieren können.

Signup and view all the flashcards

Strukturkopplung

Strukturkopplung entsteht, wenn zwei Komponenten gemeinsame Strukturelemente, wie z.B. Attribute, verwenden. Dies erhöht die Abhängigkeit, da Änderungen an einem Element beide Komponenten betreffen können.

Signup and view all the flashcards

Reduktion der Kopplung

Ziel ist es, die Kopplung zwischen Komponenten so gering wie möglich zu halten. Dies ermöglicht eine unabhängige Entwicklung und Wartung von Komponenten und erhöht die Stabilität des Systems.

Signup and view all the flashcards

Datenkopplung vermeiden

Datenkopplung sollte möglichst vermieden werden, da sie eine hohe Abhängigkeit zwischen Komponenten erzeugt. Vermeide statische oder public Attribute und überlege, ob Vererbung die richtige Lösung ist.

Signup and view all the flashcards

Direkte Textausgabe

Eine Art der Informationsanzeige, die den ursprünglichen Dateneingabetext direkt anzeigt.

Signup and view all the flashcards

Graphische Anzeige

Eine Art der Informationsanzeige, die Daten visuell mithilfe von Grafiken darstellt.

Signup and view all the flashcards

Trennung von Darstellung und Daten

Dieses Prinzip trennt die Software, die für die Darstellung von Informationen verantwortlich ist, von den eigentlichen Daten.

Signup and view all the flashcards

Model-View-Controller (MVC)

Ein Architekturmuster, das die Benutzerinteraktion in drei Teile unterteilt: Model, View und Controller.

Signup and view all the flashcards

Model

Der Teil des MVC-Musters, der die Daten des Systems speichert und verwaltet.

Signup and view all the flashcards

View

Der Teil des MVC-Musters, der verschiedene Sichten auf die Daten präsentiert.

Signup and view all the flashcards

Controller

Der Teil des MVC-Musters, der die Benutzerschnittstelle und die Modifikation der Daten steuert.

Signup and view all the flashcards

Getrennte Interaktion mit Darstellungsarten

Das MVC-Muster bietet die Möglichkeit, verschiedene Darstellungsarten unabhängig voneinander zu nutzen.

Signup and view all the flashcards

Automatische Aktualisierung von Ansichten bei Datenänderungen

Das MVC-Muster ermöglicht es, alle Ansichten (Views) automatisch zu aktualisieren, wenn sich die Daten im Model ändern.

Signup and view all the flashcards

Darstellung von Information: Fragestellungen

Darstellung von Information spielt eine wichtige Rolle in der Softwareentwicklung und stellt Herausforderungen dar, wie z.B. geeignete Darstellungsarten und die Trennung von Darstellung und Daten.

Signup and view all the flashcards

Study Notes

Vorlesung Softwaretechnik

  • Vorlesung zum Thema Software- und Systementwurf
  • Dozent: Prof. Bernhard Rumpe, Software Engineering, RWTH Aachen
  • Webseite: http://www.se-rwth.de/
  • Thema: Entwurfsprinzipien

Warum, Was, Wie und Wozu? Entwurfsprinzipien

  • Warum:
    • Hochgradig praxisrelevant
    • Von der Analyse zum Entwurf kommen
    • Optimale Technologie gibt es nicht
  • Was:
    • Grobentwurf: Architektur, Subsysteme und Schnittstellen
    • Feinentwurf: Komponenten, Datenstrukturen, Algorithmen
  • Wie:
    • Problem in kleine Einheiten zerlegen
    • Komponenten realisieren und zusammensetzen
    • Softwarearchitekturen und Taktiken
  • Wozu:
    • Vorbereitung für die Implementierung großer komplexer Systeme
    • Teams entwickeln die Systeme
    • Kommunikation mit Stakeholdern

Gliederung des Entwurfsprozesses

  • Architektur-Entwurf
  • Subsystem- & Schnittstellen-Spezifikation
  • Komponenten-Entwurf
  • Datenstruktur-Entwurf
  • Algorithmen-Entwurf
  • Grobentwurf (weitgehend unabhängig von Implementierungssprache)
  • Feinentwurf (angepasst an die Implementierungssprache und Plattform)
  • Gesamtstruktur des Systems (Grobentwurf)
  • Detailstruktur des Systems (Feinentwurf)

Arbeitsteilung beim Entwurf

  • Architekturentwurf
  • Entwurfsschnittstelle 1-2
  • Entwurfsschnittstelle 2↔...
  • Entwurf Subsystem 1
  • Entwurf Subsystem 2
  • Entwurf Subsystem ...
  • Entwurf der Komponenten

Kriterien für „guten“ Entwurf

  • Korrektheit (Erfüllung funktionaler und nichtfunktionaler Anforderungen)
  • Verständlichkeit und Präzision
  • Gute Dokumentation
  • Anpassbarkeit
  • Hohe Kohäsion innerhalb der Komponenten
  • Schwache Kopplung zwischen den Komponenten
  • Wiederverwendung

Kohäsion

  • Kohäsion ist ein Maß für die Zusammengehörigkeit der Bestandteile einer Komponente
  • Hohe Kohäsion erleichtert Verständnis, Wartung und Anpassung
  • Kohäsion wird erreicht durch:
    • Prinzipien der Objektorientierung (Daten & Methodenkapselung)
    • Einhaltung von Regeln zur Paketbildung
    • Verwendung geeigneter Muster zur Kopplung und Entkopplung
  • "Kohärente" Klasse: Keine Partitionierung in unabhängige Untergruppen von zusammenhängenden Operationen und Attributen

Grade der Kohäsion

  • Zufällig (beliebige Bestandteile)
  • Logisch (ähnliche Funktionen)
  • Zeit/Zeitlich (gleiche Ausführungszeit)
  • Ablauf/Prozedural (geschlossene Ablauffolge)
  • Aufruf/Sequentiell (Ausgabe eines Bestandteils=Eingabe eines anderen)
  • Daten/Kommunikativ/Informativ (gemeinsame Daten)
  • Funktional (einzige Gesamtfunktion)

Kopplung

  • Kopplung ist ein Maß für Abhängigkeiten zwischen Komponenten
  • Geringe Kopplung verbessert Wartbarkeit und Stabilität
  • Arten der Kopplung: Datenkopplung, Schnittstellenkopplung, Strukturkopplung
  • Reduktion der Kopplung: Vermeidung von Datenkopplung, bevorzugte Schnittstellenkopplung, Vermeidung von Strukturkopplungen

Wiederverwendung

  • Wiederverwendung (Reuse) ist die Nutzung von Gemeinsamkeiten zwischen Komponenten
  • Reduktion der Redundanz
  • Erhöhung von Stabilität und Ergonomie
  • Hilfsmittel: Vererbung, Parametrisierung, Module/Objekte mit allgemein nutzbaren Schnittstellen

Framework

  • Software, durch Callback-Methoden erweiterbar
  • Subklassen werden gebildet und dem Framework zugewiesen
  • Aufrufe finden in entgegengesetzter Richtung statt (Framework ruft Applikation auf)

Referenzmodelle und -architekturen

  • Referenzmodell: Logische Aufteilung der Systeme einer Domäne (Subsysteme, Verbindungen)
  • Referenzarchitektur: Abbildung eines Referenzmodells auf Softwarekomponenten (Datenfluss, Kommunikation, technische Aspekte)
  • Gruppierung von logischen Elementen auf Softwarekomponenten
  • Logische Elemente können mehrfach repliziert sein

Beispiel: Referenzmodell für Workflowmanagement Systeme

  • Darstellung eines Referenzmodells für Workflowmanagement Systeme mit verschiedenen Interfaces und Komponenten.
  • Darstellung eines Beispiels für Zustandsübergänge eines Prozesses.

Stakeholder

  • Kunden, Endnutzer, Entwickler, Projektmanager, Wartungspersonal, Vermarktung/Verkauf
  • Alle am Projekt direkt oder indirekt beteiligten Personengruppen

Einfluss der Stakeholder auf die Softwarearchitektur

  • Management (Niedrige Kosten, gleichmäßige Auslastung des Teams)
  • Nutzer (Performance, Sicherheit, Verlässlichkeit, Nutzbarkeit)
  • Softwarearchitekt (Modifizierbarkeit, Erweiterbarkeit)
  • Wartungsteam (Niedrige Kosten, schnelle Auslieferung, kaum Nachbesserungen)
  • Marketing (Time to Market, Features, Konkurrenzneutrale Anpassbarkeit)
  • Kunde (Produktqualität, Aktualisierung, Anpassung)

Nutzen einer Architekturbeschreibung

  • Kommunikation der Stakeholder (gemeinsame Sprache)
  • Wesentliche Entwurfsentscheidungen
  • Wiederverwendbare Abstraktion (Produktlinien)
  • Fokus auf spezifische Systemeigenschaften (getrennte Betrachtung der Aspekte)
  • Frühzeitige Analysemöglichkeiten (Prototypen...)

Architektur-Beispiele

  • Physikalische Architekturen (Netzwerkarchitektur, Standalonearchitektur)
  • Schichtenarchitektur (innerhalb eines Systems)
  • Referenzmodell für Workflowmanagement Systeme

Conway´s Law

  • Die Struktur eines Systems spiegelt die Kommunikationsstruktur des Entwicklungsteams wider
  • Ansatz für bessere Architektur: Inverse Conway Maneuver (Entwicklungsorganisation an die erwünschte Architektur anpasst)
  • Beispiele für unterschiedliche Organisationsstrukturen (Amazon, Google, Facebook, Apple, Oracle)

Analogie: Hausbau

  • Ein Haus lässt sich durch verschiedene Pläne beschreiben
  • Jeder Plan hat eine bestimmte Aufgabe und unterschiedliche Zielgruppen

Sicht (UML)

  • Darstellung eines Systems mit relevanten Elementen und Beziehungen
  • Verfeinerung, Abstrahierung, Übersichtlichkeit der Darstellung
  • Konsistenz zwischen Sichten, Vollständigkeit, Abstraktionsfähigkeit, Übersicht, Realitätstreue, Beschreibungssprachen

4+1 Sichten-Modell (RUP)

  • Logische Sicht, Struktursicht, Ablaufsicht, Szenarien, Physikalische Sicht
  • Modellierungstechniken und Kern-Elemente
    • Logische Sicht: Klassenmodell, Verfeinerung des Analysemodells
    • Struktursicht: Subsysteme, Schnittstellen, Grobentwurf
    • Ablaufsicht: Prozesse, Koordination, Feinentwurf
    • Szenarien: Use-Cases
    • Physikalische Sicht: Komponenten, Hardwaresysteme, Netze, Feinentwurf

Primäre Zielgruppe/Aufgabe jeder der vier Sichten

  • Logische Sicht: Endanwender
  • Struktursicht: Programmierung, Wartung
  • Ablaufsicht: System-Integratoren (Performanz, Durchsatz...)
  • Physikalische Sicht: Kommunikation, Verteilung, Auslieferung, Installation
  • Feinentwurf: Detaillierter Entwurf für die Implementierung

Blockdiagramm

  • Graphische Darstellung der logischen Struktur eines Systems
  • Subsysteme, Schnittstellen, Kommunikationsprotokolle

UML: Implementierungsdiagramm

  • Zusammengesetzte Komponenten
  • Schnittstellen, die diese Komponenten verbinden

Konfigurationsdiagramm

  • Darstellung der physikalischen Verteilung von Systemkomponenten (Rechner, Knoten, lokales Kommunikationsnetz, Datenkommunikationsnetz)

UML: Verteilungsdiagramm

  • Physische Verteilung von Systemen
  • Knoten, Stereotypen, Komponentenzuordnung

Beispiel Terminverwaltung

  • Blockdiagramm der physikalischen Konfiguration eines Terminverwaltungssystem (PCs, PDA, Terminserver, Anzeigetafel-Steuerung, Termin-Datenbank)

Was haben wir gelernt?

  • Softwarearchitektur (Struktur, Komponenten, Schnittstellen, Beziehungen)
  • Softwarearchitekt (Team/Person, Erfahrung, Stakeholder-Interessen)
  • Nutzen (Kommunikation, Entwurf, Abstraktion, Fokus, Frühzeitige Analysis)

Taktiken (in Softwareentwurf)

  • Technik zur Veränderung von Qualitätsattributen (Verfügbarkeit, Modifizierbarkeit, Performance, Sicherheit, Testbarkeit, Usability)
  • Beispielsweise zur Optimierung der Verfügbarkeit von Systemen (Fehlererkennung, Redundanz)
  • Beispiele für Taktiken für Modifizierbarkeit (Kapselung, Reduktion der betroffenen Komponenten, Antizipieren von Änderungen)
  • Beispiele für Taktiken für Sicherheit

Problem: Verfügbarkeit

  • Begriffsbildung:
    • Failure (beobachtbarer Fehler eines Systems)
    • Fault (interner Fehler)
  • Mean Time To Repair (MTR), Mean Time To Failure (MTF), Verfügbarkeit
  • Geplante Wartungsarbeiten werden nicht gerechnet

Taktiken für Verfügbarkeit

  • Fehlererkennung (Exception, Delegation, Ping/Echo, Heartbeat)
  • Fehlerbehandlung (Abstimmen, Aktive Redundanz, Passive Redundanz, Ersatzteile)
  • Redundante Komponente wiedereinführen
  • Zustands-Resynchronisation
  • Checkpoint/Rollback

Problem: Modifizierbarkeit

  • Modifizierbarkeit (Messbar durch Zeit/Kosten für Implementierung, Testen, Auslieferung von Änderungen)
  • Erschwernisse durch Abhängigkeiten von Komponenten, fehlende Lokalisierung von Funktionalität
  • Ripple-Effekt (Änderungen an einer Komponente führen zu unerwarteten Auswirkungen an anderen Komponenten)

Taktiken für Modifizierbarkeit

  • Kapselung / Hohe Kohäsion
  • Vermittler (Broker)
  • Reduktion der notwendigen Änderungen

Taktiken für Sicherheit

  • Securing the Weakest Link (Analyse des schwächsten Gliedes der Sicherheitskette)
  • Failing Securely (Standardmäßige Verweigerung von Zugriffen, explizite Gewährung von Zugriffsrechten)
  • Least Privilege (Benutzer/Funktionen erhalten nur notwendige Rechte/Ressourcen)
  • Economy of Mechanism (einfache Sicherheitsmechanismen)

Was haben wir gelernt?

  • Qualitätsattribute (Verfügbarkeit, Modifizierbarkeit)
  • Taktiken zur Verbesserung von Qualitätsattributen (Beispiele für unterschiedliche Techniken)
  • Entwurf von Oberflächen (Benutzerverhalten, Interaktionsarten, Darstellung von Informationen)
  • Prototyperstellung, Evaluation.

Entwurf von Nutzeroberflächen

  • Warum, Was, Wie, Wozu (Entwurfsgrundsätze)
  • Beispiele für Interaktionsarten (Direkte Manipulation, Menüauswahl, Eingabemasken, Befehle, Natürliche Sprache)

Darstellung von Informationen

  • Arten der Darstellung (textuell, graphisch)
  • Richtlinie, Entkopplung der Darstellung und Daten Darstellung
  • MVC-Modell (Model-View-Controller) für die Benutzerinteraktion

Informationen, die sich nicht verändern

  • Text (genaue Angaben, relativ langsame Änderungen)
  • Graphische Darstellung, schnell ändernde Daten

Dynamisch ändernde Informationen

  • Analoge Darstellungen (Skala, Zeiger, Tortendiagramm, Thermometer, Balken)
  • Kontinuierliche analoge Anzeigen des Bezuges zu Maximalwerten

Große Informationsmengen

  • Abstrakte Anzeigeformen, Verknüpfung von in Beziehung stehenden Daten (Zwei-/Dreidimensionale Darstellung, Bäume, Netze, Karten)

Farben

  • Richtlinien für die Verwendung von Farben (Anzahl, Kontext, Farbcodes)

Entwurf von Systemmeldungen

  • Kontext, Erfahrung, Fähigkeiten, Stil (positiv, aktiv, klar, präzise)

Klassifikation von Prototyping

  • explorativ, experimentell, evolutionär

Mögliche Vorgehensweise zum Entwurf von Oberflächen

  • Nutzeraktivitäten analysieren und verstehen
  • Fachliche Prototypen, dynamische Prototypen, Ausführbare Prototypen, Beurteilung durch Endanwender

Benutzeranalyse

  • Analyse der Benutzeraktivitäten (UML-Modelle, Use-Case Modelle, Aktivitätsdiagramme)
  • Interviews, Ethnographische Studien
  • Wichtig: Gesamtbild des Benutzerverhaltens

Erstellen des Systemprototyps

  • Evolutionär/explorativ
  • Benutzerzentriert
  • Beispieloberflächen
  • Prototypenformale Definitionen

Objektorientierter Feinentwurf

  • Ausgangspunkt: Grobentwurf, Subsysteme
  • Zerlegung in Subsysteme
  • Ablaufmodelle, Technologiewahl, externe Schnittstellen
  • OO-Modell für jedes Subsystem, supporierende Subsysteme

UML zum logischen Detailentwurf

  • Analysemodell und Entwurfmodell (Notation, Objekte, Klassen)
  • Verknüpfung zum logischen Kern
  • UML-Beschreibbarkeit von Konzepten
  • Genauigkeit, Präzision, formale Beschreibung

Pakete und Subsysteme

  • UML (Pakete als "Ordner")
  • Subsytems, Java- Sprachkonstrukt: package
  • Fachliches Modell, Nutzerschnittstelle, Beziehung aufrufen und nutzen

Sichtbarkeit

  • UML, Java/C++ - Sichtbarkeiten (public, protected, private(default))
  • Bedeutung im Entwurf

Qualifizierte Assoziationen (Erinnerung)

  • Definition: Attribut einer Assoziation
  • Notation (K1, a, 0..1, K2)
  • Bedeutung für Datenmodellierung, Datenbanken

Geordnete und sortierte Assoziation (Erinnerung)

  • Reihenfolge, Sortierung
  • Implementierung in der Software

Verwaltungsklassen-Singletons

  • Klasse wird nur einmal instantiiert
  • Beispiele (Terminverwaltung, Besprechungsraumverwaltung...)
  • Parameter- und Datentypen für Operationen, Spezifikation von Operationen

Abgeleitete (redundante) Elemente

  • Definition: Elemente, aus anderen Elementen rekonstruierbar
  • Notation: Modellelement {derived}
  • Beispiele (Teambesprechungen, Leitung, Teammitglieder)

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Software Architecture Quiz
10 questions

Software Architecture Quiz

InvigoratingSerendipity avatar
InvigoratingSerendipity
Software Architecture Fundamentals
45 questions
Use Quizgecko on...
Browser
Browser