OO Analyse

Werbung
Transformation von nicht linear rekursiven
Funktionen in iterative Funktionen
Beispielhaft an fibo (über schlicht nach iterativ):
Trick: akkumulierende Parameter
Idee: es wird ja immer wieder dasselbe
berechnet, deshalb werden
Berechnungsergebnisse gespeichert.
fiboAux erhält 3 Parameter, k und zwei
Akkumulatoren, in denen fibo(k-2) und fibo(k-1)
gespeichert werden.
2.8) Methoden / Rekursion
1
Transformation von nicht linear rekursiven
Funktionen in iterative Funktionen
FUNCTION fiboAux (N, Acc1,Acc2: Integer): Integer;
BEGIN
IF N=0 THEN fiboAux := Acc1
ELSE fiboAux := fiboAux (N-1, Acc2, Acc1+Acc2)
END ;
fiboAux ist schlicht rekursiv und berechnet fibo, wenn wir sie mit
Acc1=Acc2=1 aufrufen.
FUNCTION fibo (N : Integer): Integer;
BEGIN
fibo := fiboAux (N,1,1) END ;
2.8) Methoden / Rekursion
2
Transformation von nicht linear rekursiven
Funktionen in iterative Funktionen
fibo(5) = fiboAux(5,1,1) = fiboAux(4,1,2) = fiboAux(3,2,3) =
fiboAux(2,3,5) = fiboAux(1,5,8) = fiboAux(0,8,13) = 8
Vergleich der folgenden Definitionen:
Behauptung: fibo(n) = fiboAux(n,1,1)
Beweis:
2.8) Methoden / Rekursion
3
Klassifikation rekursiver Methoden
Definition:
Zwei Funktionen heißen wechselseitig rekursiv,
wenn sie sich gegenseitig aufrufen.
Beispiel:
Die Methode Even/Odd sind wechselseitig
rekursiv.
2.8) Methoden / Rekursion
4
Grundlagen der Objektorientierung
• Grundlagen und Begriffe
• Begriffe
• Analyse versus Entwurf
• Objektorientierung versus prozedurale Entwicklung
• Was ist die Unified Modelling Language (UML)
• Diagrammtypen
• Welche Diagrammtypen gibt es?
• Wie werden sie typischerweise verwendet?
• Eigenschaften objektorientierter Prozesse
DigInf 05/06
5
Objektorientierte Modellierung
• Zentrales Konzept
• ...der UML ist die objektorientierte Modellierung. Doch
was ist eigentlich ein Objekt?
• Beispiel: Kaffeemühle
DigInf 05/06
6
Kaffeemühle: Funktionen
kurbeln = Bohnen zu Pulver mahlen
Kaffeebohnen einfüllen
Kaffeepulver entnehmen
DigInf 05/06
7
Kaffeemühle: Zustandswerte
Bohnenvorrat
Pulvervorrat
DigInf 05/06
8
Kaffeemühle: Charakterisierung
• unterstützte Funktionen
•
•
•
•
•
füllen (mit Kaffeebohnen)
mahlen (manipuliert den Inhalt)
entnehmen (von Kaffeepulver)
Inspektion des Bohnenvorrats
Inspektion des Pulvervorrats
• zustandsbestimmende, interne Werte
• Bohnenvorrat
• Pulvervorrat
• Zusammenhänge zwischen Funktionen und Zustand
• Füllen nur möglich, wenn Bohnenvorrat noch nicht voll ist
• Mahlen nur möglich, wenn Bohnenvorrat noch nicht erschöpft ist
• Entnehmen nur möglich, wenn Pulvervorrat noch nicht erschöpft ist
DigInf 05/06
9
Kaffeemühle: Technische Interna
• Wie funktioniert das Mahlen?
• Technische Realisierung der internen
Abläufe bleibt unbekannt
• Wissen um technische Realisierung
ist zur Benutzung der Kaffeemühle
unerheblich!
?
 Gerade das Nicht-Wissen um
• die Realisierung von Funktionen und
• die interne Zustände
ermöglicht die einfache Nutzung vieler
Gegenstände/Konzepte.
DigInf 05/06
10
Modelle für komplexe Systeme
Wozu braucht man Modelle in der Softwareentwicklung?
• Die Entwicklung komplexer Systeme erfordert die Bildung von Modellen,
damit Menschen die Struktur und die Abläufe darin planen und
realisieren können.
Warum braucht man verschiedene Modelle für ein System?
• Es werden häufig unterschiedliche Modelle verwendet, um jeweils einen
bestimmten Aspekt des Systems zu fokussieren.
• Je nach Aspekt werden häufig unterschiedliche Modellierungssprachen
verwendet.
Welche Probleme ergeben sich daraus?
• Für die Konstruktion des Gesamtsystems muss jedoch sichergestellt
werden, dass die Einzelmodelle auch wirklich zueinander passen.
Modelle unterschiedlicher Sprachen müssen zusammengeführt werden.
DigInf 05/06
11
Phasen der Softwareentwicklung
Anforderungsanalyse
Was will der Anwender?
Spezifikation, Analyse
Unter der Spezifikation (auch Verhaltensspezifikation) verstehen wir eine
Beschreibung des Verhaltens des Software-Systems. Die Spezifikation
enthält keine Angaben darüber, wie dieses Verhalten realisiert werden
soll, sondern nur darüber was das Verhalten sein soll. (WAS statt WIE)
2.8) Methoden / Rekursion
12
Phasen der Softwareentwicklung
Spezifikation der Software-Steuerung für einen Telefondienst im Hotel
• Spezifikation / Was:
• Um ein Ferngespräch zu führen, muß der Anwender den Hörer
abnehmen. Nach maximal 3 Sekunden ertönt ein Ton. Der Anwender
wählt eine 9. Nach maximal drei weiteren Sekunden ertönt ein
Freizeichen und der Anwender kann eine Telefonnummer wählen.
• Vorwegnahme von Entwurfsentscheidung / Wie:
• Das System umfaßt vier Zustände: wartend, Ton, Freizeichen,
Verbunden. Um vom Zustand wartend in den Zustand Ton zu kommen,
muß der Anwender den Hörer heben. Um vom Zustand Ton in den
Zustand Freizeichen zu kommen muß der Anwender eine 9 wählen.
DigInf 05/06
13
Phasen der Softwareentwicklung
Entwurf
• „konzeptioneller Entwurf“
implementierungsunabhängige Verfeinerung des Ergebnisses der
Analyse im Hinblick auf technische Eigenschaften
• „pragmatischer Entwurf“
implementierungsabhängige Anpassung der Architektur an die
Zielsprache.
• „Algorithmenentwurf“
Festlegung von klasseninternen Algorithmen und Datenstrukturen.
DigInf 05/06
14
Phasen der Softwareentwicklung
Entwurf
Der Software-Entwurf wird oft auch als die Software-Architektur
bezeichnet.
In der Praxis werden oft fachliche Architektur, software-technische
Architektur und systemtechnische Architektur unterschieden.
Fachliche Architektur: Software-Systeme und ihre wesentlichen
Schnittstellen (aus Anwendersicht)
Software-technische Architektur: Komponenten, Module und ihre
Aufrufbeziehungen, die wesentlichen Algorithmen
Systemtechnische Architektur: Rechner, DBMS, Betriebssysteme,
Middleware, Kommunikationsprotokolle,
Telekommunikationsinfrastruktur
Realisierung / Programmierung.
2.8) Methoden / Rekursion
15
Phasen der Softwareentwicklung
Traditionelle Probleme prozeduraler Vorgehensweisen:
• Für Anforderungsanalyse, Analyse, Entwurf werden
Spezialsprachen und –Modelle verwendet, die ineinander
übersetzt werden müssen.
• Deshalb:
• neue Experten,
• neue Fehler,
• Anwendungswissen tritt in den Hintergrund
DigInf 05/06
16
Oo Entwicklungsabschnitte
• Anforderungsanalyse:
Wie bisher, Überlappung mit OOA
• OO-Analyse:
Bestimmen von Objekten und Klassen aus der
Realität des Anwendungsbereichs
• OO-Entwurf:
Ergänzen der Strukturen aufgrund technischer
Erfordernisse
• OO-Programmierung:
Umsetzen in Programmiersprache und
Anpassen an Sprachspezifika
DigInf 05/06
17
OO Analyse
• Erforschung des Anwendungsbereichs, d.h.
•
•
•
•
•
DigInf 05/06
Objekte entdecken
Klassen ableiten
Klassen strukturieren
Aufgaben zuordnen
Zusammenarbeit festlegen
18
OO Analyse
• Entdecken von Objekten des Anwendungsbereichs:
• Ableiten aus textueller Beschreibung
(Hauptwörter selektieren und normieren)
• Ableiten aus eigenem Wissen
• Ableiten aus Expertenbefragung
• Ableiten aus „Use Case Model“
(Analyse der anwendungstypischen Handlungsabläufe)
• Kandidaten für Objekte sind
• greifbare Dinge
• Konzepte
• Ereignisse
DigInf 05/06
19
OO Analyse
• Ableiten von Klassen aus Objekten
=„natürliche“ Gemeinsamkeiten von Objekten erkennen und diese in
Klassen zusammenfassen
• Strukturieren der Klassen
• existierende Vererbungsstrukturen bestimmen
• (mögliche Subklassen suchen)
• (mögliche Superklassen suchen)
• Superklassen ergänzen
• (Gemeinsamkeiten in Superklassen extrahieren)
• Abhängigkeiten bestimmen
• (Aggregationen und Assoziationen charakterisieren)
DigInf 05/06
20
OO Analyse - Statik und Dynamik
• OOA erfasst statische und dynamische Aspekte
• statische Aspekte: alles um die Struktur von Klassen
• Klassen
• Attribute, Operationen
• Subsysteme
• dynamische Aspekte: alles rund um Objekte und ihre Werte
• Objekte
• Ereignisse
• Prozesse (verstanden als die Ausführung von
Operationen)
DigInf 05/06
21
Objektorientierter Entwurf
• Ziel der Analyse ist ausschließlich:
• Verstehen und Beschreiben der Realität des Problembereichs.
• Ziele des Entwurfs sind:
•
•
•
•
•
•
Ergänzung bisher fehlender technischer Aspekte,
technische Umsetzbarkeit der Analyseergebnisse vorbereiten,
organisatorische Umsetzbarkeit sicherstellen,
Schnittstellen zu bereits vorhandener Software beachten,
Möglichkeiten von Programmiersprachen einarbeiten,
Implementierung vorbereiten.
DigInf 05/06
22
Objektorientierter Entwurf
• Bestandteile des Entwurfs:
• Überarbeiten von Klassen und Klassenstrukturen
zur technischen Präzisierung der Analyseergebnisse.
• Überarbeitung von Klassen und Klassenstrukturen
aufgrund von technischen Qualitätsanforderungen.
• Ergänzen der Klassenstruktur zur
Konzeption einer Systemarchitektur.
• Überarbeiten der Klassenstruktur zur
Realisierung einzelner Klassen.
• Überarbeitung der Klassenstruktur zur
Realisierung von Verknüpfungen zwischen Objekten.
DigInf 05/06
23
Konzeption einer Systemarchitektur
Zielsetzung:
• Ergänzen von Strukturen für
• Benutzungsschnittstelle,
• Prozesssteuerung und
• Datenhaltung.
• Anbinden dieser Strukturen an das problemspezifische
Ergebnis der Analyse.
• Im Folgenden am Beispiel der „Datenhaltung“ erörtert.
DigInf 05/06
24
Konzeption einer Systemarchitektur
Konzeption der Datenhaltung:
• Jedes Objekt muss selbst für Ablage persistenter Daten
sorgen.
• Datenhaltung wird lokal unterstützt:
• Jedes Objekt wird individuell gesichert.
• Datenhaltung ist verteilt mit vielen Einzellösungen.
• Datenhaltung erfolgt durch Objektmanagementsystem:
• Objektmanagementsysteme standardisieren die lokale
Datenhaltung.
• Datenhaltung erfolgt durch zentrale (relationale) Datenbank:
• Klasse(n) verkapseln Datenbank gegenüber objektorientiertem
System.
• Jedes Objekt sendet seine Daten an Datenbankobjekt.
DigInf 05/06
25
Herunterladen