Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

24
Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne

Transcript of Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

Page 1: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

Abschnittsweise Modellierung

(der richtige Titel war zu lang)

F. Steimann & T. Kühne

Page 2: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Die zwei Weltsichten der Modellierung

Welt der Statik Klassifikation der

Entitäten Deklaration von Attributen und Relationen

(Assoziationen und Operationen)

Dynamik als Änderung der Objektkonfigurationen und -zustände

Welt der Dynamik zustandsabhängige

Verhaltensspezifikation der Zustand bestimmt,

„was geht“

Zustand und Zustandsänderungen häufig rein abstrakt kein/wenig Bezug zu

Objektkonfigurationen

Page 3: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Die mißverstandene Deklaration

drucken: Dokument Drucker

d Dokument, p Drucker: drucken(d, p) ist (irgendwie) definiert.

drucken: Text Zeilendrucker

drucken: Diagramm Plotter

drucken: Text Plotter

Dokument Druckerdrucken

Page 4: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Die mißverstandene Deklaration

drucken: Dokument Drucker

drucken Dokument Drucker Extension von fressen „atmet“ Deklaration definiert obere Schranke nur wenn ich schon weiß, daß Texte

nicht auf Plottern drucken …

Dokument Druckerdrucken

Page 5: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Der Definitionsbereich hat Löcher!

Text

Zeilen-drucker

Zeichnung

Plotter

Drucker

Dokument

Page 6: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Lösung

Eliminierung der Definitionslöcher durch nicht-kartesische Definitionsbereiche spezielle Typsysteme

z. B. Dependent types

abschnittsweise Definition durch Überladen

in allen Fällen drucken(d, p) ist nur für bestimmte

d Dokument, p Drucker definiert

Page 7: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Der Definitionsbereich hat trotzdem Löcher!

DokumentZeichnungText

Drucker

Zeilen-drucker

Plotter

Page 8: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Der Definitionsbereich hat trotzdem Löcher!

DokumentZeichnungText

Drucker

Zeilen-drucker

Plotter

leer leerle

er

lee

r

lee

rle

er

Page 9: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Modellierung mit Zustandstypen

Page 10: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Statische Struktur

print(Document, Printer)

PrintManager

Page

1 *hasMorePages() : boolnextPage() : Page

Text

Diagram

LinePrinter

Plotter

Document

print(Document)

Printerprint

Page 11: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Verhaltenpm:PrintManager

print(doc, prn)

print(doc)

[prn instanceof Plotter and doc instanceof Diagram]

[prn.empty()]

IllegalState

[not prn.empty()]

rawPrint(doc)done

[prn instanceof LinePrinter and doc instanceof Text]

[not doc.hasMorePages()]

done

[not prn.empty() and doc.hasMorePages()]

nextPage()

pg:Page

done

IllegalState

altalt

altalt

altalt

[else]

rawPrint(pg)

print(doc)

[else]

IllegalArgument

prn:Printer doc:Document

kombinatorische Explosion 12 mögliche

Parameter-konstellationen

hier auf 6 eingekocht

äußerst fehleranfällig und das bei einem

einfachen Beispiel!

Page 12: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Überladen der Deklaration

Page

1 *hasMorePages() : boolnextPage() : Page

Text

Diagram

LinePrinter

Plotter

Document

print(Document)

Printerprint

print

print

Page 13: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Vereinfachung durch abschnittsweise Definition

pm:PrintManager

print(doc, prn)

doc:Diagram

print(doc)

[prn.empty()]

IllegalState

[not prn.empty()]

rawPrint(doc)done

altalt

prn:Plotter

Page 14: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

pm:PrintManager

print(doc, prn)

prn:LinePrinter doc:Text

[not doc.hasMorePages()]done

[not prn.empty() anddoc.hasMorePages()]

nextPage()

pg:Page

done

IllegalState

altalt

[else]

rawPrint(pg)

print(doc)

print(doc)

Page 15: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Einführung von Zustandssubtypen und entsprechenden Überladungen

Text|HasMorePages

Text|hasMorePages

Plotter|empty Plotter|Empty

LinePrinter|empty

LinePrinter|Empty

DocumentPrinter

Text

Diagram

LinePrinter

Plotter

Page

1 0..*

print

print

print

1

1..*

print

print

print

print

Page 16: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Weitere Vereinfachung durch abschnittsweise Definition (I)

pm:PrintManager

print(doc, prn)

doc:Diagram

print(doc)

rawPrint(doc)

done

prn:Plotter|empty

pm:PrintManager

print(doc, prn)

prn:LinePrinter doc:Text|hasMorePages

done

print(doc)

Page 17: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Weitere Vereinfachung durch abschnittsweise Definition (II)

pm:PrintManager

print(doc, prn)

prn:LinePrinter|empty doc:Text|hasMorePages

nextPage()

pg:Page

done

rawPrint(pg)

print(doc)

print(doc)

pm:PrintManager

print(doc, prn)

prn:LinePrinter|empty doc:Text|hasMorePages

nextPage()

pg:Page

rawPrint(pg)

print(doc)

empty hasMorePages

Page 18: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

print

DocumentPrinter

DiagramPlotterprint

Integration von Statecharts

automatische Generierung

spezifiziert veränderlichenDefinitionsbereich von Methoden

DocumentPrinter

DiagramPlotter

print

print

Plotter

emptyempty

print(Diagram)

print(Diagram)

Plotter|empty Plotter|Empty

print

Page 19: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Ableitung der Zustandssubtypen

Zustände spezifizieren veränderlichen Definitions- bereich von Methoden

Zustände können Wertebereiche von Attributen einschränken

Zustandswechsel erfordern ggf. neue Bindung (Rekursion)

Zustandsautomaten werden vererbt

empty empty

print(Diagram)

print(Diagram)

empty empty

print(Text)

print(Text|hasMorePages)

print(Text|hasMorePages)

hasMoreP.hasMoreP.

nextPage()

nextPage()

Plotter

LinePrinter

Text

Page 20: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Automatische GenerierungPlotter

emptynot empty

print(Document)()

print(Document)()

LinePrinter

emptynot empty

print(Document)()

print(Document)()

print(Document)()Text

not hasMorePageshasMorePages

nextPage(nextPage)

nextPage(nextPage)+print(in Document, in Printer)

PrintManager Document

+print(Document)()

Printer

+hasMorePages() : Boolean+nextPage() : Page

Text

Diagram

LinePrinter

Plotter

Page 1*

* *

* *

* *

Text|notHasMorePages

Text|hasMorePages

LinePrinter|empty

LinePrinter|notEmpty

Plotter|empty Plotter|notEmpty

DocumentPrinter

Text

Diagram

LinePrinter

Plotter

Page

1 0..*

print

print

print

1

1..*

print

print

printprint

+ ++

=

Page 21: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Modulare Erweiterbarkeit

nachträgliches Definieren von undefinierten Fällen

nachträgliches Aufdröseln nicht haltbarer Verallgemeinerungen

pm:PrintManager prn:LinePrinter|empty doc:Text|hasMorePages

print(doc)print(doc, prn)

donedoSomethingThatMakesSense

Page 22: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Modellierung mit Ausnahmen

dynamische Typen machen statische Typprüfung schwierig kaum Beachtung in der Programmierpraxis für den Zweck der Modellierung ungeeignet

akzeptieren, daß Definitionen Lücken haben

Deklarationen deklarieren Delta Transformation in Deklarationen mit

Exceptions

Page 23: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Diskussion

Grenzen der Modularität Probleme aus regelbasierten Systemen und

funktionalen Programmiersprachen bekannt verwandte Arbeiten

jede Menge! statische und dynamische Typsysteme algebraische Spezifikationen mit Fehler- und

Ausnahmebehandlung

Page 24: Abschnittsweise Modellierung (der richtige Titel war zu lang) F. Steimann & T. Kühne.

ProgrammiersystemeProgrammiersysteme

F Steimann Fernuniversität in Hagen

Vielen Dank!Fragen?