swe


Jasmin Lienhard
Diese Lernkarten behandeln fortgeschrittene Themen des Softwareentwurfs auf Universitätsniveau. Sie konzentrieren sich auf Module, Objekte, Klassen und deren Beziehungen, sowie auf Prinzipien wie Vererbung, Arbeitsteilung und GRASP-Muster. Der Entwurf von Softwarearchitekturen, die Rolle des Softwarearchitekten und die Anwendung von Modularität und Schnittstellen werden detailliert erklärt. Diese Lernkarten sind ideal für Studierende und Entwickler, die ihre Fähigkeiten im Softwareentwurf vertiefen und professionelle Standards anwenden möchten.
Cartes-fiches
56
Utilisateurs
1
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
13.01.2014 / 10.03.2014

Flashcards

Software Entwurf

Definition

= wichtige Entscheidungen für ein SW-System zu treffen und zu bewerten ohne alles im Detail umzusetzen

Software Architekt und die Interaktion mit anderen Rollen

  • Projekt-Management
  • RE
  • UM
  • Testing
  • Entwickler

Entwurf im Kleinen / Grossen

  • Objektorientierter Entwurf
  • Modularer Entwurf

  • Objektorientierter Entwurf
    • Fokus auf modellieren
    • Objekte & Klassen sinnvoll definieren
    • Lesbarkeit, Verständlichkeit, etc.
  • Modularer Entwurf
    • Einheiten für unabhängiges Entwickeln, Testen, Auswechseln, Erweitern trennen
    • Wartbarkeit, Erweiterbarkeit

Software Entwurf, erste Schritte

  • Low Represntail Gap

je ähnlicher reale Welt, Software und Entwurf, desto schneller wird vorhandenes verstanden

Inutiver Entwurf

Analyse der Sätze der UseCases

 Nomen = Objekte / Klassen

Verben = Aufgaben

CRC-Karten

Definition

sind Hilfsmittel zum intuitiven Entwurf im Team. Karten stellen Klassen (Class), Verantwortung (Responsibility) und Zusammenarbeit dar.

es werden bewusst KEINE Methoden deklariert.

CRC- Karten

Anwendung:

  • Pro Objekt eine Karte
  • bekannte Operationen festhalten
  • aufschreiben, welche anderen Objekte dafür benötigt werden
  • für weitere Obejte neue Karten
  • Operationen und Beziehungen auf vorhandenen Karten ergänzen
  • Änderungen: Karten verwerfen, neue Karte
  • Karten auf dem Tisch immer neu gruppieren

CRC- Karten

Vorteile (4 Punkte)

  • Fokus auf Verantwortung, so denkt man weniger in Daten-und Modell Behältern.
  • weniger in rein sequenziellem Kontrollfluss denken
  • Grösse der Karten beschänkt Information.
  • hohes Abstraktionsniveau, verliert sich nicht in Details

Objektorientierter Entwurf

5 Schritte.

SCHRITT 1: Welche Objekte soll es geben und in welchen Beziehungen stehen diese zueinander?

Datenmodellierung

Welche Einheiten gibt es, welche Beziehungen zwischen ihnen gibt es?

Objektorientierter Entwurf

5 Schritte.

 

SCHRITT 2: Wofür sind die einzelnen Objekte verantwortlich?

zu erfüllende Aufgaben

Use Cases sagen, welche Aufgaben zu erfüllen sind. Verteilun der Aufgaben an die Objekte / Klassen und Begründung.

Objektorientierter Entwurf

5 Schritte.

SCHRITT 3: Wie arbeiten die Objekte zusammen, um die Use Cases auszuführen?

Ablauf jedes Use Cases beschreiben

Jeden Use Case Schritt für Schritt durchgehen um herauszufinden, welche Objekte, welche anderen Objekte aufrufen müssen. Dies entspricht dem Pfeilfluss und Pfeilspitze im Sequenzdiagramm.

Korrekte Sequenzdiagramme

es muss ein zusammenhängender Kontrollfulss entstehen. Man muss Rückkehrpfeile von Aufrufen einzeichnen.
Auf spontante Aufrufe verzichten
Kontrollfluss muss Use Case wiedergeben, dazu müssen Informationen in Parametern und Rückgabewerten ausreichen

Objektorientierter Entwurf

5 Schritte.

SCHRITT 4: Braucht es dazu weitere Objekte / Beziehungen?

Sequenzdiagramm mit Datenmodell abgleichen

Das Sequenzdiagramm muss die gleichen Objekte oder Klassen verwenden. Diese müssen die selben Namen aufweisen. Überprüfen, ob alle Objekte, Klassen oder Beziehungen notwendig sind
Diagramme anpassen, dass sie zusammenpassen.

Objektorientierter Entwurf

5 Schritte.

SCHRITT 5: Wie sehen die öffentlichen sichtbaren Elemente der Obejkten / Klassen aus?

Alle Aufrufe auf ein Objekt definieren dessen Methoden

Vererbung
Zerlegung in Module
Modularer Entwurf

Definition

Welche Module gibt es, in welcher Beziehung stehen diese zueinander und wie arbeiten diese zusammen?

MODULARER ENTWURF (3 Schritte)

SCHRITT 1: Welche Module soll es geben und in welchen Beziehungen stehen diese zueinander?

  • Implementierungs-Geheimnisse der Anforderungen
    • Welche Entwurfsentscheidungen wollen wir trennen und welche Änderungsszenarien sehen wir für die Zukunft?
  • Implementierungs-Geheimnisse der Technik
    • Wo möchten wir techn. Hilfsmittel unabhängig auswählen und wo werden bestehende Produkte genutzt (Framework)?
  • Beziehungen / Abhängigkeiten
    • Welche Module benötigen welche anderen Module und gibt es Zyklen in diesen Abhängigkeiten?
  • Parnas
    • Entwurfsentscheidungen isolieren (Implementierungs-Geheimnisse)
  • Technology
    • Nach Einsatz von Technologien trennen
  • Module gruppieren
    • Nach MVC, Schiten (nur regelkonforme Abhängigkeiten)

MODULARER ENTWURF (3 Schritte)

SCHRITT 2: Wie genau arbeiten die Module zusammen, um die geforderten Use Cases auszuführen?

Ablauf jedes Use Cases beschreiben

Use Cases werden Schritt für Schritt durchgegangen, um herauszufinden, welche Module welche anderen aufrufen müssen. Pfeilfluss und Pfeilspitze.

MODULARER ENTWURF (3 Schritte)

SCHRITT 3: Wie sehen die Schnittstellen der Module aus?

  • Sequenzdiagramm analysieren
    • Welche Objekte werden von mehr als einem Modul benötigt und in welchem Modul sollten diese implementiert werden? Welche Module müssen Objekte importieren?
  • Ist der Import-Graph aller Module frei von Zyklen?
    • Falls nicht, muss man Objekte in anderem Modul implementieren? Brauch ets neue Module, die Obejte zur Verfügung stellgen müssen?

MVC2 Pattern

Ablauf in 5 Schritten

  1. HTTP-Request wird von Servlet empfangen
  2. Servlet agiert als Controller. Request wird an das Model weitergereicht
  3. Serviet leitet Kontrolle an JSP weiter (redirect)
  4. JSP produziert HTML Output mit den Model-Daten
  5. JSP sendet neue Seite mittel http-Request an den Browser zurück

 

Schnittstellen

(4 Punkte)

  • alles, was das Modul nicht versteckt
  • was ausserhalb des Moduls sichtbar ist
    • nicht private java-Klassen
    • exportierte packages in OSGi-Bundle
  • was andere Module über das Modul annehmen dürfen
  • was das Modul über andere Module annimmt

Module vs. Schnittstellen (2 Punkte)

  • Schnittstellen beschreiben, was ein Modul leistet
  • Module kapseln Entscheidungen, wie das erreicht wird

Module und Schnittstellen

Gratwanderungen / Tradeoff beim Entwurf

  • je mehr eine Schnittstelle festlegt, desto weniger Freiheitsgrad gibt es für Implementierung
  • je weniger Schnittstelle festlegt, desto weniger wissen Aufrufer über Implementierung

Ebenen von Schnittstellendefinitionen (3 Punkte)

  • Technologie / Middleware
  • Syntax der Operationen
  • Semantik der Operationen

Was definiert Interfaces? (3 Puntke)

  • Standard-Interface (JEE-API)
  • angebotentes Interface (Bibliotheken)
  • angefordertes Interface(Browser, Plug-In)

Bibliotheksmodule (2 Punkte)

  • alle Versionen definieren dieselbe Schnittstelle
  • alle Module implementieren denselben Standard

GRASP

 

General Responsibility Assignment Software Patterns

Was macht GRASP?

Beim GRASP werden den einzelnen Klassen Verantwortungen zugewiesen

Welche Prinzipien werden bei GRASP benutzt? (5 Punkte)

  • Information Expert
  • Controller
  • Creator
  • Low Coupling
  • High Cohesion

GRASP

Prinzip: Information Expert

Weise die Verantwortung jenem Objekt zu, welches für die Ausführung alle nötigen Informationen hat.

GRASP

Prinzip: Controller

Wähle ein Objekt, das eine der folgenden Eigenschaften besitzt:

  • Objekt repräsentiert System oder ein grosses Subsytem (Facade Controler)
  • Objekt repräsentiert einen Use Case zu dem die Operation gehört (Session Controler)

GRASP

Prinzip: Creator

Wähle ein Objekt, das mindestens eine der folgenden Eigenschaften besitzt:

  • Objekt referenziert auf das erzeugte Objekt oder enthält dieses.
  • Objektzt kennt die Initialisierungsschalen des erzeugten Objekts
  • Objekt arbeitet mit dem erzeugten Objekt eng zusammen

GRASP

Prinzip Low Coupling

Darauf achten, dass Objekte keine zu enge Kopplung haben

GRASP

Prinzip: High Cohesion

Aufgaben der Objekte leicht verständlich und überschaubar halten

Vererbung

Skandinavische Schule vs. Amerikanische Schule

  • Vererbung dient dazu, Programme für Menschen besser verständlich zu machen
  • Mittel der Modellierung
  • Verstehbarkeit

Vererbung

Skandinavische Schule vs. Amerikanische Schule

  • Objekte sind Zellen mit Abgrenzungen nach Aussen. Vererbung dient dazu solche Zellen zu modifizieren
  • Mittel zur Punktuellen Modifikation
  • Änderbarkeit, Wiederverwendbarkeit, Erweiterbarkeit

Substitutionsprinzip nach Liskov

Eine Unterklasse soll an Stelle einer Oberklasse treten können, d.h. Operationen mit Referenzen auf Basisklassen müssen abgeleitete Objekte benutzen können, ohne es zu wissen.

Vererbung in Frameworks

Framework: Grundsätlich gleiche Abläufe (Abstrakte Klassen)

Customization: Ausprägungen der einzelnen Schritte individuell. (abgeleitete Klassen)

Vererbung vs. Objektkomopsition

Modellierung steht im Vordergrund

  • Is-A Beziehung möglich
  • Polymorphismus möglich

Vererbung vs. Objektkomopsition

spätere Änderungen stehen im Vordergrund

  • Dinge verändern, die anderen Kontext verwenden
  • Explizite Kontrolle, wer wann was aufruft möglich

Module

  • Best Practices
  • Warum Arbeitsteilung?
  • Evolution
  • Was ist ein Modul?
  • Klassen vs. Module

  • High Cohesion
  • High Coupling
  • Low Representational Gap
  • Information Hiding
  • Viel private, wenig public
  • Abstraktion
  • Setter-/ Getter Methoden
  • Factories verwenden

Study