swe
-
- 1 / 56
-
Lernkarten
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
- HTTP-Request wird von Servlet empfangen
- Servlet agiert als Controller. Request wird an das Model weitergereicht
- Serviet leitet Kontrolle an JSP weiter (redirect)
- JSP produziert HTML Output mit den Model-Daten
- 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