Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

Masterarbeit

Puffin

Entwicklung eines grafischen Editors zur Modellierung

Markus Neubauer
Elmar Schug

Übersicht

  • Motivation und Ziel der Arbeit
  • Vorführung des Editors
  • Architektur
  • Fazit und Diskussion

Motivation

  • Modelle werden verwendet, um Strukturen oder Verhalten zu erfassen.
  • Um Modelle zu erstellen und zu bearbeiten benötigt man Werkzeuge.
  • Datenstrukturen bilden ein Modell in Software ab.
  • Diese enthalten nur einen Teil der Informationen, die von den Werkzeugen benötigt werden.
  • Diese erfüllen damit nicht alle Anforderungen von Werkzeugen.

Bei der Entwicklung von Werkzeugen muss dies ausgeglichen werden.

Motivation

Eclipse-basierte Werzeuge

Motivation

Zustandsdiagramm: Kanten ins Leere

Motivation

Zustandsdiagramm: Kanten auf Kanten

Motivation

Probleme und Einschränkungen

  • Es ist nicht möglich einen „falsches“ Diagramm zu erstellen. (Correct-By-Construction)
  • Kanten können nur zwischen genau zwei Knoten sein.
  • Jeder Knoten hat eine rechteckige BoundingBox.
  • Ein Knoten kann nicht beliebig in Subknoten unterteilt werden.
  • Knoten können nicht mit Knoten verbunden sein.

Ziel

Entwicklung einer flexiblen, einfachen und leichtgewichtigen Alternative zur Eclipse-basierten Herangehensweise.

  • Flexibel:
    Breites Spektrum an Anwendungsmöglichkeiten
  • Einfach:
    Leicht verständliches Grundkonzept und einfache Programmierschnittstelle für Entwickler
  • Leichtgewichtig:
    Schlankes Framework; einfache Anbindung und Integration

Puffin-Editor

Architektur des Puffin-Editors

Abgrenzung

JavaFX

Übersicht

  • MVC-Architektur
  • Scene-Graph
  • FXML

JavaFX

MVC-Architektur

JavaFX

Scene-Graph

JavaFX

FXML

XML-Dialekt, um eine grafische Oberflächen zu beschreiben.

Warum JavaFX?

  • Moderner Nachfolger von Swing
  • MVC-Architektur begünstigt generische Elemente
  • Hohe Wiederverwendbarkeit

Component-Based Entity System

Übersicht

  • Architekturmuster
  • Ursprung: Computerspiel-Entwicklung

Komposition an Stelle von Vererbung

Component-Based Entity System

Entitäten

  • Eine Entität repräsentiert ein Ding/Objekt.
  • Eine Entität hat eine eindeutige ID.

Component-Based Entity System

Komponenten

  • Eine Komponente speichert Informationen.
  • Eine Komponente wird mit einer Entität verknüpft.
  • Immer nur eine Komponente des selben Typs kann mit einer Entität verknüpft werden.

Component-Based Entity System

Systeme

  • Ein System implementiert einen Aspekt der Software.
  • Ein System verarbeitet Entitäten.
  • Ein System benötigt eine bestimmte Menge von Komponenten.

Component-Based Entity System

Systeme

  • Nur die Entitäten, welche die entsprechende Menge von Komponenten aufweisen werden verarbeitet.

Component-Based Entity System

Zusammenfassung

Component-Based Entity System

Probleme

  • Entitäten können nicht gezielt ausgewählt werden.
  • Entitäten haben keine Reihenfolge, Hierarchie oder Struktur.

Lösung

Hierachische Namen

Beispiel: /foo/bar/test

Puffin-Framework

Context

Aufgabe:

Bildung einer geschlossenen Umgebung, um eine Menge von Entitäten und Komponenten abzugrenzen, sodass eine unabhängige Koexistenz mehrerer dieser Umgebungen in einer Anwendung möglich ist.

Event

Aufgabe:

Bereitstellung geeigneter Schnittstellen und Strukturen, um Ereignisse zu definieren, auszulösen und zu verarbeiten.

Entity

Aufgabe:

Bereitstellung geeigneter Schnittstellen und Strukturen, um Entitäten zu erzeugen, abzufragen, zu verschieben und zu löschen.

Component

Aufgabe:

Bereitstellung geeigneter Schnittstellen und Strukturen, um Komponenten zu erzeugen, abzufragen, zu verarbeiten und zu löschen.

Puffin-Framework

Integration des Frameworks

  • Framework als MVC-Model
  • Informationen werden in Komponenten gespeichert.
  • MVC-View und -Controller als Systeme realisiert.
  • Views übersetzen Entitäten und Komponenten in eine grafische/textuelle Darstellung.
  • Controller übersetzen Benutzerinteraktionen in entsprechende Änderungen an Entitäten und Komponenten.

Integration des Frameworks

Integration des Frameworks

Entitäten und Komponenten

Integration des Frameworks

NodeControls, Skins und Behaviors

Integration des Frameworks

Realisierung von Modellelementen

Kombination von NodeControls, Skins, Behaviors, Entitäten und Komponenten.

Fazit

  • Flexibel:
    Exemplarisches Logikgatter-Diagramm
  • Einfach:
    Entitäten, Komponenten und Systeme sind einfach zu verwenden.
  • Leichtgewichtig:
    Editor belegt die einfache Integrationen in eine Anwendung.

Ausblick

  • Ausbau des Editors
  • Plug-In Mechanismus (OSGi)
  • Zusätzliche Diagrammarten
  • Modellvalidierung und Codegenerierung

Vielen Dank

Projekt: Entity Essentials https://github.com/jayware/entity-essentials

Use a spacebar or arrow keys to navigate