-
Materialverwaltung
- Anfragestelle der Werkzeuge für Materialien
- delegiert an Materialversorger
- Umgebungsobjekt ermittelt Materialversorger und übergibt sie der Materialverwaltung
- Anfrage an Materialverwaltung liefert Materialbehälter
-
Gründe für Klassenbibliotheken
- Produktivitätssteigerung
- Qualitätssteigerung
- Geringer Wartungsaufwand
- Lernen am guten Beispiel
-
Feinentwurf
- Komponentenentwurf
- Schnittstellenfestlegung
- Aufruf-/Verwendungsbeziehung festlegen
- ==> Spezifikation der Komponenten
-
Grobentwurf
- Architekturentwurf
- System in Subsysteme zerlegen
- Komponenten identifizieren
- Beziehungen der Komponenten ermitteln
- Zusammenspiel der Komponenten etablieren
- ==> Architekturbeschreibung
-
UML-Diagrammarten
- Strukturdiagramme
- Klassendiagramm
- Objektdiagramm
- Paketdiagramm
- Kompositionsstrukturdiagramm
- Komponentendiagramm
- Verhaltensdiagramme
- Use-Case-Diagramm
- Aktivitätsdiagramm
- Zustandsdiagramm
- Interaktionsdiagramme (sind Verhaltensdiagramme)
- Sequenzdiagramm
- Kommunikationsdiagramm
- Timing-Diagramm
- Interaktionsübersichtsdiagramm
-
-
Prozessmodell
- Vorgehensmodell
- Aspekte der Projektorganisation
- Qualitätssicherung
- Dokumentation
- Rollen
- Musterstruktur für Organisation und Durchführung eines SW-Prozessees
-
Begriffslexikon
- Begriff
- Bedeutung
- Abgrenzung
- Gültigkeit
- Bezeichnung
- Unklarheiten
- Querverweise
-
Wie man zu Begriffen kommt
- Liste aller Hauptwörter
- Irrelevante Begriffe entfernen
- Ausprägungen entfernen
- Vage Begriffe entfernen
- Synonyme entfernen
- Merkmale entfernen
- Dienstleistungen entfernen
- Beziehungen identifizieren
-
Parametrisierte Polymorphie
- Funktion besitzt 1-n Typparameter
- Zulässige Typen haben selbe Struktur
- Bsp. generische Funktionen
-
Universelle Polymorphie
- Echte Polymorphie
- Selber Code für alle Argumente des zulässigen Typen
-
Grundlegende Entwurfsprinzipien
- Abstraktion
- Trennung Schnittstelle, Implementierung
- Information Hiding
- Seperation of Concerns
- Hohe Kopplung, geringe Kohäsion
- Modularisierung
- Kapselung
- Teile und Herrsche
- Ausreichend, vollständig, einfach
- Open-Closed Prinzip
-
-
Rahmenwerk
- Schreibt Architektur vor
- Generelle Designentscheidungen für Anwendungsklasse
- Definiert, welche Klassen angepasst werden können
- Implementiert Kommunikationsmechanismen zwischen Klassen
- Verantwortlichkeiten von Klassen
- Kann Klassenbibliotheken enthalten
- Design Reuse
-
Entwurf
- Festlegen von
- Architektur, Komponenten, Schnittstellen
-
Materialbehälter
- Konsistenzbedingungsobjekte überwachen Material
- Abhängige Materialien in Materialbehälter
- Materialbehälter mit KBO parametrisiert
- Änderung Material -> Info an MB -> KBO aktualisieren
-
Varianten der Vererbung
- Strikt: Erweiterung, Definition
- Nicht Strikt: Erweiterung, Definition, Redefinition
-
-
-
-
Lehman's first law of software evolution
Ein System wird sich im Laufe der Zeit ändern oder wird weggeworfen.
-
Substitutionsprinzip
- Signaturregel: S muss alle Methoden von B anbieten (Signaturen kompatibel)
- Methodenregen: Die in S redefinierten Operationen von B müssen zumindest in all jenenSituationen aufrufbar sein, in denen BāOperationen aufgerufen werdenkönnen, und »kompatible« Ergebnisse liefern.
- Eigenschaftenregel: Eine Unterklasse muss alle Eigenschaften der Oberklasse bewahren (insb. Invariante)
- ==> Vorbedingungen duerfen abgeschwaecht werden, Nachbedingungen verschaerft werden.
-
-
Wiederverwendung im Allgemeinen
- WV von SW-Produkten
- WV von Lösungsstrukturen, Methoden, Sprachen
- WV von Komponenten des OS, Bibliotheken
-
Reuse-Team
- Reuse-Manager: Zieldefinition
- Reuse-Librarian: zertifiziert, verwaltet
- Reuse-Engineer: entwickelt, pflegt, berät, schult
- Reuse- Evaluator: bewertet
-
Extension Inheritance
- Es kommen neue Eigenschaften hinzu.
- Z.B. List<--SortedList
-
Restriction Inheritance
- Einschränkung einer Bedingung.
- Z.B. Rectangle<--Square
-
View Inheritance
- Unterklassen B_1...B_n von A spezilisieren A im Sinne von unterschiedlichen Klassifikationsaspekten

-
Structure Inheritance
- Oberklasse definiert allgemeine strukturelle Eigenschaft, Unterklasse besitzt diese Eigenschaft
- Z.B. Printable
-
Reifaction Inheritance
- Vergegenständlichung
- (Abstrakte) Oberklasse A definiert allgemeine Datenstruktur
- Unterklasse B realisiert Implementierungsalternative
- Z.B. Sequential Table <-- LinkedListTable
-
Uneffecting Inheritance
- Redefinition der Eigenschaften so, dass sie virtuell werden
- nur bei Mehrfachvererbung
-
Functional Variation Inheritance
- Redefinition der Eigenschaften der Oberklasse
- Keine neuen Eigenschaften
- Hier: Nur Methodenrumpf redefinieren
- Z.B: HashTable <-- FastHashTable
-
Type Variation Inheritance
- Redefinieren, keine neuen Eigenschaften
- Hier: Nur Redifinieren der Signaturen
- Z.B. Employee <-- MaleEmployee
-
Eigenschaften guter Programme
- Sauberes Layout
- Sinnvolle Namen
- Ausführliche Kommentare
- Robust
- Lesbar
-
Stufen der OO-Sprachen
- Objekt-basiert: Objekte als Datenkapsel
- Klassenbasiert: Objekte und Klasse
- Objektorientiert: Objekte und Klassen und Vererbung
-
Vorgehensweise der Use-Case-Modellierung
- Wichtige Use Cases identifizieren
- Beziehungen zwischen Akteuren und UC identifizieren
- Beziehungen zwischen UC identifizieren
- UC in strukturierter Form beschreiben
-
Use-Case-Level
- Basisfunktion
- Benutzerfunktion
- Top-Level-Funktion
-
Aufbau von CRC-Karten
- Class
- Superclass
- (Attributes)
- Responsibilities
- Collaborators
-
Bersoff's First Law of System Engineering
System ändert sich während der Entwicklung
-
Facility Inheritance
- Klasse definiert zusammengehörende Eigenschaften
- Diese werden anderen Klassen mittels Vererbung zur Verfügung gestellt
- Constant Inheritance: Klasse definiert globale Konstanten
- Machine Inheritance: Klasse definiert Eigenschaften einer (abstrakten) Maschine: :Die Klasse definiert Eigenschaften einer (abstrakten) Maschine.
-
Implementation Inheritance
Eine Unterklasse B erbt Eigenschaften von A, die ausschließlich verwendetwerden, um die zu B gehörende Abstraktion zu implementieren.
-
Ad hoc Polymorphie
- Scheinbare Polymorphie
- Operationen auf verschiedenen Typen zeigen nicht unbedingt gleiches Verhalten
- Typen müssen keine Gemeinsamkeiten haben
- Operationen können verschiedenen Code ausführen
- Menge von monomorphen Operationen
-
Typanpassung
- Vorhandenen Typen in erwarteten konvertieren
- Ohne Anpassung: Typfehler
- Statisch oder dynamisch
-
Überladen von Operationen
- Selber Bezeichner für verschiedene Operationen
- Unterschiedliche Parametertypen
-
Inklusionspolymorphie
- Objekt kann zu mehr als einem Typ gehören
- Sybtyping ist Form von Inlusionspolymorphie
-
Entwurfskriterien nach Meyer
- Zerlegbarkeit
- Kombinierbarkeit
- Verständlichkeit
- Lokalität
-
Wiederverwendung im engeren Sinn
- Entscheidung zwischen Wiederverwendung und Neuentwicklung ist gegeben
- Geplante WV: Komponenten werden mit Ziel WV entwickelt
- Ungeplante WV: Bereits realisierte Komponenten
-
Adapter
 - Hier: Objektadapter
- Klassenadapter: Adapter erbt von Dienst
-
-
-
Kosten/Nutzen Reuse
- KostenMehraufwand bei Entwicklung
- Lagerung, Verwaltung
- Finden, Anpassen, Integration
- NutzenWeniger Entwicklingskosten
- qualitativ besser
Nutzen > Kosten ab 3x WV
-
Umgebungsobjekt
- Realisiert Arbeitsplatz
- Bindet Arbeitsplatz an externe Dienste an(Materialverwaltung)
- Erzeugt und koordiniert Werkzeuge(Werkzeugkoordinatoren)
-
Verteilungsstandpunkt
- Zeigt, wie Komponenten auf Infrastruktur- und HW-Einheiten abgebildet werden
- Aufteilung der Entwicklung auf Teams
-
Dynamischer Standpunkt
- Darstellung der Zusammenarbeit der Komponenten zur Laufzeit
- Modellieren Systemverhalten
-
Statischer Standpunkt
Sichten zeigen zentrale Komponenten der Architektur, sowie ihre Schnittstellen und Beziehungen
-
Reengineering-Techniken
- Restructuring: Transformation der Repräsentation zu einer anderen auf selbem Abstraktionslevel
- Data Reengineering: Neuorganisation der Daten für besseren Verständnis
- Refactoring: Restrukturierung im OO-Kontext
-
Reverse-Engineering-Techniken
- Redocumentation: im selben Abstraktionslevel eine äquivalente Repräsentation bilden
- Design recovery: Wiederherstellung einer Designabstratktion aus Code, Doku, Erfahrung und Wissen
-
Symptome schlechten Designs
- Sehr lange Klassen
- Duplizierter Code
- Case-Anweisung auf Typmerkmale
- Aufwändige Kommentierung
- Frederic hat programmiert
- Silivo hat programmiert
- Christoph hat programmiert
- Yannick hat programmeirt
-
Werkzeugkopplung
- Werkzeugbaum wird durch Funktionskomponenten gebildet
- Kontext-Interaktionskomponente muss nicht mit Sub-Interaktionskomponente zusammenarbeiten
- Kontext-IAKen und FKen beobachten Sub-FKen
-
Vorgehensmodell
- Definieren wie prinzipiell SW entwickelt wird
- Wasserfallmodell
- Prototyping
- Spiralmodell
- etc.
-
Kopplung von Material und Werkzeug
- Material erbt Aspektschnittstellen
- Werkzeuge nutzen ausschließlich Aspekte
-
Systemstandpunkt
Sichten zeigen, wie das zu entwickelnde System in die Umgebung eingebettet ist
-
Programming by Contract (Java)
Zusicherung spez. Vor- und NachbedingungenAufrufer muss Vorbedingungen einhaltenAnbieter muss Nachbedingungen garantierenInvariante dauerhaft gültig
-
Lokal korrekte Klasse A
- Nach Erzeugung eines Objekts von A gilt Invariante
- Nach Aufruf einer Methode von A gelten Invariante und Nachbedingung sofern vorher Invariante und Vorbedingungen galten
- Alle Objekte erfüllen vor und nach Methodenaufrufen Invariante
-
Use-Case-Beschreibung
- ID
- Goal
- Classification
- Precondition
- Postcondition
- PC on error
- Actors
- Trigger
- Mainflow
- Deviations
-
Unification
- Hook und Template-Methoden in einer Klasse
- User UK überschreiben hook-Methode
- Kein Wechsel des Verhaltens zur Laufzeit
-
Dimensionen der Wiederverwendung
- Einsatzspektrum: vertikal, horizontal
- Anpassung: White-Box, Black-Box
- Technik: neutral, spezifisch
- Funktionalität: anwendungsspezifisch, anwendungsneutral
-
Analysemethode
- SW-Entwurfsmethode in Analyse um Anforderungen
- vollständig
- widerspruchsfrei
- präzise
- zu definieren
-
Werkzeugkoordinator
- Zustand und Repräsentation eines Werkzeugs können durch Änderungen ihres Materials inkonsistent werden
- Materialbehälter haben einen Werkzeugkoordinator(koordiniert alle Werkzeuge des Materialbehälters)
- Material ändert sich => WZK informiert => Werkzeug informiert
-
Trennung von Interaktion und Funktion
- Sichern Konsistenz zwischen abhängigen Materialien
- Materialverwaltung kennt alle Klassen, die KBO realisieren
- Strategie zur Korrektur von Inkonsistenzen muss implementiert werden
- Rein algorithmisch
-
Methodensuche
- Single Dispatch:
- Emfänger der Nachricht sucht die richtige Methode - Wird durch Klassenzugehörigkeit von a festgelegt
- a.plus(b)
- b(Parameterobjekte) trägt nicht zur Entscheidung bei
- Ausführung immer unymmetrisch
- Multiple Dispatch:
- plus(a,b)
- Klassenzugehörigkeit aller Parameter bestimmt aufzurufende Methode
- Symmetrische Behandlung der Parameter
- Kein ausgezeichneter Nachrichtenempfänger
-
Statische Typierung und dynamischen Binden
- Bezeichner haben statischen Typ
- Zuweisung, Parameterübergabe: Objekte andere Typen können dynamisch gebunden werden
- Nur Typen zulassen, die konform zum statischen Typ sind (Type Checker)
- Richtige Implementierung binden (Laufzeitsystem)
- ==> Sicherheit durch Typkonzept, Flexibilität durch Polymorphie
-
Kontravarianz / Kovarianz
- Kontravarianzregel: In der Unterklasse werden die Parametertypen allenfalls ausgeweitet
- Kovarianzregel: In der Unterklasse werden die Parametertypen allenfalls eingeschränkt.
- Typsicherheit falls Argumenttpen kontravariant und Ergebnistypen kovariant.
-
Stufen der Kopplung
- Einbruch: Modifikation des Codes einer anderen Komponente
- Volle Öffnung: Zugriff auf alle Daten
- Fremdsteuerung: Klient steuert Server über Steuerparameter
- Selektive Öffnung: Bestimmte Daten zugänglich
- Parameter: Programmteile als Prozeduren. Kommunikation nur über Parameter
- Funktionen: Nur Wertparameter und Funktionsresultate
- Keine Kopplung: Keine Verbindung zwischen Komponenten
-
Stufen der Kohäsion
- Kein Zusammenhalt: Zufällige Zusammenstellung
- Ähnlichkeit: Ähnlicher Zweck, z.B. Fehlerbehandlung
- Zeitlich: Ausführung zur gleichen Zeit, z.B. Initialisierungsanweisungen
- Arbeitet mit denselben Daten: z.B. Datumsoperationen
- Kommunikation über Zwischenergebnisse: Interne Ergebniskette
- Einziger Zweck: z.B. Iteratoroperationen
- Einziges Datum: Datenkapsel
-
Open-Closed Prinzip
- Geschlossen: Schnittstelle ist vollständig und ändert sich nicht mehr.
- Offen: Modul kann problemlos erweitert werden
- Lösung durch Vererbung
-
Entwurfsregeln
- Direkte Abbildung von Anwendungsbereichstruktur auf SW-Struktur
- Wenige Schnittstellen
- Kleine Schnittstellen
- Explizite Schnittstellen
- Geheimnisprinzip
-
Schichten - Vorteile
- Geringe Kopplung: Schichten nur gekoppelt, wenn benachbart
- Änderungen haben meißt nur Auswirkungen auf eine Schicht
- Schicht kann aus mehreren entkoppelten Teilen mit hohem Zusammenhang bestehen
-
Schichten - Nachteile
Evtl Performanceeinbußen durch Durchreiche-Operationen
-
Arten von Schichten
- Protokollbasiert: Nur Nachbarschichten sind sichtbar. Protokoll wird für oben liegende Schichten zur Verfügung gestellt
- Obiektorientiert: Schicht = Klassen, Rahmenwerke, Bibliotheken; Zugriff mittels "use" und "inherit"
- oo-Schicht darf nur Komponenten der nächsttieferen Protokollschicht benutzen
- Schicht darf Komponenten aller tieferen oo-Schichten benutzen
-
Kompositionsstrukturdiagramm
- Ausgangspunkt sind Kompositionen
- Classifier besteht aus Parts, die mit Konnektoren verbunden sein
- Ports (evtl mit Rollennamen) beschreiben Schnittstellen zwischen Parts oder Classifiern
-
Defensives Programmieren
- Operation schützt sich selbst vor Fehlern
- Alle denkbaren Fehlersituationen werden abgefangen
- Code wird umfangreich
- Relevanter Code schwer zu erkennen
- Redundante Prüfsequenzen
- Spezifikation der Einsatzbedingungen ist im Code verteilt
-
Typische Probleme von Legacy Systemen
- Entwickler sind nicht verfügbar
- Entwicklungsmethoden inzwischen veraltet
- System ist seit Entwicklung heftig modifiziert worden
- Dokumentation fehlt
- Wartung ist teuer
-
Kompositionsmuster
- Interpretation und Gestaltung von tatsächlichen Anwendungssituationen und SW-Systemen
- Interpretation und Erfassung der Anwendungswelt
-
Umgebung
- Stellt fachliche Abhängigkeiten zwischen Materialien und deren Konsistenz sicher
- Kontrolliert ob Anwendung eines Werkzeugs auf ein Material möglich ist
-
Werkzeugkomposition
- Werkzeuge werden aus wiederverwendbaren Teilwerkzeugen zusammengesetzt
- Komplexe Aufgabe wird von zusammengesetztem Werkzeug durch Delegation an Subwerkzeuge erledigt
- Darstellung es Werkzeugbaums durch Composite
-
Entwurfsmuster - Klassifikation
- Ebene: Klassen-, Objektebene
- Zweck: Erzeugungs-, Struktur-, Verhaltensmuster
|
|