From d99fac83ac0b02c2e8d1e93c18a25a3c92539726 Mon Sep 17 00:00:00 2001 From: yvesf Date: Mon, 9 May 2011 23:37:38 +0200 Subject: Vor-Ergebnisse Studienarbeit --- ksm-model/doc/Altes Format.txt | 257 ++++++++ ksm-model/doc/KSM-Datamodel.asciidoc | 289 +++++++++ ksm-model/doc/KSM-Datamodel.html | 1165 ++++++++++++++++++++++++++++++++++ ksm-model/doc/KSM-Datamodel.pdf | Bin 0 -> 486938 bytes ksm-model/doc/asciidoc-dblatex.sty | 10 + ksm-model/doc/make.sh | 3 + 6 files changed, 1724 insertions(+) create mode 100644 ksm-model/doc/Altes Format.txt create mode 100644 ksm-model/doc/KSM-Datamodel.asciidoc create mode 100644 ksm-model/doc/KSM-Datamodel.html create mode 100644 ksm-model/doc/KSM-Datamodel.pdf create mode 100644 ksm-model/doc/asciidoc-dblatex.sty create mode 100755 ksm-model/doc/make.sh (limited to 'ksm-model/doc') diff --git a/ksm-model/doc/Altes Format.txt b/ksm-model/doc/Altes Format.txt new file mode 100644 index 0000000..e585a4a --- /dev/null +++ b/ksm-model/doc/Altes Format.txt @@ -0,0 +1,257 @@ +KSM RCP (SA-1) Format: +====================== + + + + + + 1c862df6-80e5-445b-a41c-ed677973abfb + e36a0368-d8f6-40a2-bd29-375352045da8 + + + + 1c862df6-80e5-445b-a41c-ed677973abfb + + 128 + 90 + + + + + e36a0368-d8f6-40a2-bd29-375352045da8 + + 531 + 104 + + + + + + +KSM/Swing Format: +================= + + + + + + 0 + 469 + 423 + new_Node_0 + + false + 1 + 1.0 + 0.2 + 1.0 + linear + White + 50 + 220 + true + false + true + 33 + + + + 0 + 0 + false + + + 0.0 + + + 1.0 + + + 0.0 + + + + 3.0 + + + 0.0 + + + 5.0 + + + 0.0 + + 1.0 + + + 1 + 299 + 216 + new_Node_1 + + false + 1 + 1.0 + 0.2 + 1.0 + linear + White + 50 + 220 + true + false + true + 33 + + + + 0 + 0 + false + + + 0.0 + + + 0.0 + + + 0.0 + + + + 3.0 + + + 0.0 + + + 5.0 + + + 0.0 + + 1.0 + + + 2 + 650 + 257 + new_Node_2 + + false + 1 + 1.0 + 0.2 + 1.0 + linear + White + 50 + 220 + true + false + true + 33 + + + + 0 + 0 + false + + + 1.0 + + + 0.0 + + + 0.0 + + + + 3.0 + + + 0.0 + + + 5.0 + + + 0.0 + + 1.0 + + + + + 1 + 0 + 6 + 1 + 497 + 313 + true + gui.functions.FuncStraightLine + + 1.0 + 0.0 + 0 + + + false + true + true + false + 0.0 + 0.0 + + + false + true + false + true + 1.0 + 1.0 + + + + + + 0 + 2 + 3 + 8 + 674 + 388 + true + gui.functions.FuncStraightLine + + 1.0 + 0.0 + 0 + + + false + true + true + false + 0.0 + 0.0 + + + false + true + false + true + 1.0 + 1.0 + + + + + + + diff --git a/ksm-model/doc/KSM-Datamodel.asciidoc b/ksm-model/doc/KSM-Datamodel.asciidoc new file mode 100644 index 0000000..1bc1634 --- /dev/null +++ b/ksm-model/doc/KSM-Datamodel.asciidoc @@ -0,0 +1,289 @@ +KSM Datenmodell +=============== +Yves Fischer + +:lang: de +:doctype: book +:toc: +:toc-title: Inhaltsbla +:encoding: utf-8 +:data-uri: + + +Einleitung +---------- +Mit der Entwicklung einer KSM Anwendung auf Eclipse-RCP Basis war es +nötig ein Datenmodell zu entwerfen welches zum MVC-ähnlichen Muster +des Eclipse Graphical Editor Framework (GEF) kompatibel ist. + +Grundsätzlich lassen sich alle Datenmodelle mit GEF abbilden, jedoch existierte +in KSM/Swing nur ein stark mit der GUI und Logik verflochtenes und fehlerhaftes +Datenmodell, dessen Serialisierung mit einer XML-Bibliothek erfolgte die nicht +mehr weiter verwendet werden soll. + +Da es nicht beabsichtigt ist die KSM/Swing Anwendung auf kurze Zeit abzulösen +liegt es nahe, dass das Datenmodell universell einsetzbar sein sollte. +Mit der Umstellung von KSM/Swing auf ein neues Datenmodell ist einerseits +die Daten-Kompatibiltät zwischen KSM/Swing und KSM/RCP gegeben und das +Ziel die XML-Serialisierung in KSM/Swing zu überarbeiten kann einfacher erreicht +werden. + +Dieses Dokument beschreibt die Implementation einer API zum Zugriff auf +das in XML-Schema beschriebene Datenformat. + +Dieses Datenformat erlaubt es darüberhinaus freie Felder zu definieren welche +ebenfalls in diesem Dokument spezifiert werden. + +Das XML-Schema +-------------- +Die Namespace URL für das XML-Schema lautet: + + http://www.ba-horb.de/~ksm/xml/ksm-1 + +die Schemadatei ist abrufbar unter: + + http://www.ba-horb.de/~ksm/xml/ksm-1.xsd + +Das XML-Schema ist angereichert um JAXB-Annotationen die den XML-Schema-Java-Compiler +bei der Klassenerzeugung steuert. + +Typen des Datenmodell +--------------------- +Die Bibltiohekt besteht aus einem Package in dem Interfaces die API-Beschreiben +und einem Package mit Implementationen dieser Interfaces die jedoch für den Benutzer +unsichtbar und daher austauschbar sind. + +Das folgende Diagram zeigt das Interface das dem Benutzer zur Verfügung steht: + + de.dhbw.horb.ksm. xmlschema.api + +----------------------------------------------------------+ + | +-------------+ +---------------+ +------------+ | + | |_____KSM_____| *|___NodeGroup___| *|____Node____| | + | |getNodeGroup +---+getNodeGroups()+---+getC.tions()| | + | |getVersion() | |getNodes() | | | | + | | | | | | | | + | +---^---------+ +---------------+ +--+---+-----+ | + | | \ | ________________/ | | + | | \1 |1 /1 |* | + | | +-+-----+-+--+ +---+--------+ | + | | |_Properties_|1 |_Connection_| | + | | |getString() +----------------+getTo() | | + | | |getInteger()| | | | + | | |...... | | | | + | | +------------+ +------------+ | + | | | + +----------------------------------------------------------+ + | + de.dhbw.horb.ksm. xmlschema.impl + +-------------------------------+ + | | | + | +------------------+ | + | |____KSMFactory____| | + | |createEmptyKSM() | | + | |saveKSM() | | + | |loadKSM() | | + | +------------------+ | + +-------------------------------+ + + +Ein Diagramm wird erstellt indem ein neues ('createEmptyKSM()') erstellt wird oder eines +geladen wird ('loadKSM()'). Die weitere Navigation erfolgt durch Absteigen in dem +Objekt-Baum der durch NodeGroup- und schliesslich Node-Objekte gebildet wird. + +Datentypen der Eigenschaften +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Im Modell gibt es die Datentypen KSM, NodeGroup, Node und Connection (siehe Klassen-Diagramm). +Zusätzlich gibt es die Klasse Properties mit der an die Datentypen zusätzliche Eigenschaften +mit einem Text-Bezeichner angehängt werden können. + +Für die Eigenschaften stehen folgende Typen zur Verfügung: ''string'', ''integer'', ''boolean'', +''integerList'', ''decimalList'', ''stringList''. Der Datentyp erschliesst sich aus dem Namen. + +Prinzipiell kann jeder Bezeichner für jeden Datentyp einmal verwendet werden, ein Bezeichner sollte +jedoch wegen der Übersichtlichkeit nur einmal verwendet werden. + +Verwendung der ChangeListener +----------------------------- +Die Klassen __NodeGroup__, __Node__ und __Properties__ implementieren Change-Listener +auf die sich Listener-Klassen registrieren können um über Änderungen am Datenmodell +informiert zu werden. + +Dies wird beispielsweise benötigt, wenn zwei Programmteile wie ein Eigenschaften-Editor +in Tabellenform und ein grafischer Editor voneinander unabhängig auf das Datenmodell +zugreifen und beispielsweise die Farbe eines Knoten ändern. + +Die Spalte 'Index' zeigt an ob das Event eine Index-Eigenschaft hat die andeutet +welches Element in einer Liste geändert wurde. + +Die Spalte 'Version' zeigt an, ab welcher Version des Datenformat (=Version dieses +Dokumentes, Version Attribut in Element) dieser Event unterstützt wird. + +.__NodeGroup__-Events +[width="80%",cols="3,2,2,10",options="header"] +|========================================================= +|Property-Name | Version | Index? |Beschreibung +|nodes | 1+ | ✓ | Eine __Node__ wurde dieser __NodeGroup__ + hinzugefügt oder entfernt +|========================================================= + +.__Node__-Events +[width="80%",cols="3,2,2,10",options="header"] +|========================================================= +|Property-Name | Version | Index? |Beschreibung +|connections | 1+ | ✓ | Eine __Connection__ wurde erstellt oder gelöscht +|========================================================= + +.__Properties__-Events +[width="80%",cols="3,2,2,10",options="header"] +|========================================================= +|Property-Name | Version | Index? |Beschreibung +|string: 'X' | 1+ | ✗ | Eine Zeichenketten Eigenschaft mit Name 'X' wurde geändert +|decimal: 'X' | 1+ | ✗ | Eine Fliesskommazahl Eigenschaft mit Name 'X' wurde geändert +|integer: 'X' | 1+ | ✗ | Eine ganzzahlige Eigenschaft mit Name 'X' wurde geändert +|boolean: 'X' | 1+ | ✗ | Eine boolsche Eigenschaft mit Name 'X' wurde geändert +|integerList: 'X' | 1+ | ✓ | Eine Ganzzahl Liste mit Name 'X' wurde manipuliert +|decimalList: 'X' | 1+ | ✓ | Eine Fliesskommazahl Liste mit Name 'X' wurde manipuliert +|stringList: 'X' | 1+ | ✓ | Eine Zeichenketten Liste mit Name 'X' wurde manipuliert +|========================================================= + +Eigenschaften (Properties) +-------------------------- +Allen Elementen im Datenmodell lassen sich dynamische, dass heist nicht in einem +Schema festgelegte, Eigenschaften zuwiesen. +Dies hat zur Folge, dass eine Anwendung sowohl den Fall handhaben muss, dass eine +erwartete Eigenschaft nicht vorhanden ist als auch, dass Eigenschaften vorhanden sind +die unbekannt sind und ignoriert werden müssen. +Dazu steht der Anwendung jedoch das Attribut 'Version' im Schema (siehe KSM#getVersion()) +zur Verfügung, welches auf eine Version von diesem Dokument zeigt. + +Dieser Ansatz wurde gewählt, da sich gezeigt hat, dass die Studienarbeiten im KSM-Projekt +einen begrenzten Fokus haben und es daher für einen einzelnen Studenten schwer möglich ist, +alle benötigten Datenfelder zu definieren. +Das bisherige KSM-Datenformat handhabt dies, indem das XML-Schema beliebig verändert +wurde und damit sinnlos wurde. +Da dies unvermeidbar ist wird es mit diesem Ansatz aktiv unterstützt. + +Eine alternative Herangehensweise wäre die Verwendung von verschiedenen XML-Schemas gewesen +wobei mit jeder Erweiterung ein zusätzlicher Namensraum eingeführt wird. Dies +schien jedoch sehr viel umständlicher und unnötig kompliziert. + +Eigenschaften von Modellen (KSM) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Die Spalte 'Typ' zeigt den Datentyp der Eigenschaft an. Die Spalte 'Schlüssel' +den Bezeichner welcher in Kombination mit dem Typ eindeutig ist. + +Die Spalte 'Version' zeigt an, ab welcher Version des Datenformat (=Version dieses +Dokumentes, Version Attribut in Element) dieser Event unterstützt wird. + +.KSM Properties +[width="80%",cols="3,4,2,10",options="header"] +|========================================================= +|Typ | Schlüssel | Version | Beschreibung +|nichts | ist | definiert | - +|========================================================= + +Eigenschaften von Knoten (Node) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.Node Properties +[width="80%",cols="3,4,1,10",options="header"] +|========================================================= +|Typ | Schlüssel | Ver. | Beschreibung +| string | visual.caption | 1+ | Titel der Node im Editor. +| string | visual.color | 1+ | Farbliches Merkmal der Node + Hexadezimal im 8-Bit RGB Format + wie folgt: +#RRGGBB+. +| integer | visual.location.x | 1+ | X-Position relativ zur übergeordneten NodeGroup +| integer | visual.location.y | 1+ | Y-Position relativ zur übergeordneten NodeGroup +| decimal | data.user_value | 1+ | User Value (?) +| decimal | data.min_value | 1+ | Minimal Value (?) +| decimal | data.max_value | 1+ | Maximal Value (?) +| decimal | data.extern | 1+ | Extern Value (?) +|========================================================= + +Als Erbe aus dem KSM/Swing Projekt kann ''visual.color'' die folgenden Werte +annehmen, diese sollen auf den folgenden RGB-Wert übertragen werden: + + * +White+ -> +#ffffff+ + * +Light Yellow+ -> +#faffa2+ + * +Medium Yellow+ -> +#f4ff4b+ + * +Yellow+ -> +#edfc00+ + * +Light Blue+ -> +#d4d5e9+ + * +Medium Blue+ -> +#7678ff+ + * +Blue+ -> +#0002f8+ + * +Light Green+ -> +#c8f8c9+ + * +Medium Green+ -> +#7afa7e+ + * +Green+ -> +#1af520+ + * +Light Red+ -> +#fdcccc+ + * +Medium Red+ -> +#f95959+ + * +Red+ -> +#f62020+ + +Eigenschaften von Verbindungen (Connection) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.Connection Properties +[width="80%",cols="3,4,1,10",options="header"] +|========================================================= +|Typ | Schlüssel | Ver. | Beschreibung +| string | visual.caption | 1+ | Titel der Connection im Editor. +| string | visual.color | 1+ | Farbliches Merkmal der Connection +| string | data.functionType | 1+ | Ein Funktionstyp von: + 'straight-line', 'individual', + 'parable', 'parabolic-sections'. +| decimalList | data.function | 1+ | KSM-Simulator Funktionsparameter dieses Knoten +|========================================================= +''data.function'' enthält eine Liste von Argumenten für die verwendete, durch ''data.functionType'' +festgelegte Funktion. + +Eigenschaften von Gruppen (NodeGroup) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.NodeGroup Properties +[width="80%",cols="3,4,1,10",options="header"] +|============================================================= +| Typ | Schlüssel | Ver. | Beschreibung +| string | visual.caption | 1+ | Titel der Group im Editor. +| string | visual.color | 1+ | Farbliches Merkmal der Group +| integer | visual.location.x | 1+ | X-Position relativ zu übergeordneten NodeGroup +| integer | visual.location.y | 1+ | Y-Position relativ zu übergeordneten NodeGroup +|============================================================= + + +Dokumentation der Implementierung +--------------------------------- +Das am Anfang vorgestellte Objektmodell wird durch Interfaces im Package +'de.dhbw.horb.ksm. xmlschema.api' umgesetzt. + +Eine Implementierung dieser Interfaces findet sich im Package +'de.dhbw.horb.ksm. xmlschema.impl'. Von dieser Implementierung ist für +äusseren Zugriff nur die Klasse 'KSMFactory' vorgesehen, welche Methoden +zum Laden und Speichern von KSM-Modellen zur Verfügung stellt. + +Die Implementierung benutzt vom XML-Schema-Compiler (xjc) von JAXB generierte +Klassen die im Package 'de.dhbw.horb.ksm. xmlschema.generated' liegen. +Das generieren wird vom Ant-Task 'compile-xjc' und Annotationen im Schema gesteuert. + +Der Zugriff auf das geladene Modell erfolgt auschliesslich über die in den Interfaces +vorgesehen Methoden, ein direkter Zugriff ist nicht möglich. + +Neben dem Quellcode in src/ gibt es im Projektverzeichniss noch das Verzeichnis test/ +welches JUnit-4 Tests enthält die die Implementierung nahezu 100% abdecken. Die +Tests sind dabei zum Teil im Stil des Behavior Driven Development (BDD) geschrieben unter +Zuhilfename der Bibliothek mockito. + +Vorgehensweise bei Änderungen +----------------------------- +1. Eintragung der Änderung in diesem Dokument +2. Erhöhen der Versionszahl +3. Erstellen eines Eintrags in der Revisions Historie in diesem Dokument +4. Anpassen der Versionszahl in build.xml 'project.version' +5. Erstellen einer HTML- und PDF Version von diesem Dokument (asciidoc/a2x). + +Revisions Historie +------------------ +.Revisions +[width="80%",cols="1,3,4,10",options="header"] +|========================================================= +| Ver. | Datum | Person | Änderung +| 1 | 2011-03-24 | Yves Fischer | Beginn der Historie, KSM Version 1 +| 1 | 2011-04-26 | Fischer, Dreher | Erläuterung Datentypen. + Festlegung Funktionsname/Parameter von + Connection's. +|========================================================= \ No newline at end of file diff --git a/ksm-model/doc/KSM-Datamodel.html b/ksm-model/doc/KSM-Datamodel.html new file mode 100644 index 0000000..de607e2 --- /dev/null +++ b/ksm-model/doc/KSM-Datamodel.html @@ -0,0 +1,1165 @@ + + + + + +KSM Datenmodell + + + + + +
+

Einleitung

+
+

Mit der Entwicklung einer KSM Anwendung auf Eclipse-RCP Basis war es +nötig ein Datenmodell zu entwerfen welches zum MVC-ähnlichen Muster +des Eclipse Graphical Editor Framework (GEF) kompatibel ist.

+

Grundsätzlich lassen sich alle Datenmodelle mit GEF abbilden, jedoch existierte +in KSM/Swing nur ein stark mit der GUI und Logik verflochtenes und fehlerhaftes +Datenmodell, dessen Serialisierung mit einer XML-Bibliothek erfolgte die nicht +mehr weiter verwendet werden soll.

+

Da es nicht beabsichtigt ist die KSM/Swing Anwendung auf kurze Zeit abzulösen +liegt es nahe, dass das Datenmodell universell einsetzbar sein sollte. +Mit der Umstellung von KSM/Swing auf ein neues Datenmodell ist einerseits +die Daten-Kompatibiltät zwischen KSM/Swing und KSM/RCP gegeben und das +Ziel die XML-Serialisierung in KSM/Swing zu überarbeiten kann einfacher erreicht +werden.

+

Dieses Dokument beschreibt die Implementation einer API zum Zugriff auf +das in XML-Schema beschriebene Datenformat.

+

Dieses Datenformat erlaubt es darüberhinaus freie Felder zu definieren welche +ebenfalls in diesem Dokument spezifiert werden.

+
+

Das XML-Schema

+
+

Die Namespace URL für das XML-Schema lautet:

+
+
+
http://www.ba-horb.de/~ksm/xml/ksm-1
+
+

die Schemadatei ist abrufbar unter:

+
+
+
http://www.ba-horb.de/~ksm/xml/ksm-1.xsd
+
+

Das XML-Schema ist angereichert um JAXB-Annotationen die den XML-Schema-Java-Compiler +bei der Klassenerzeugung steuert.

+
+

Typen des Datenmodell

+
+

Die Bibltiohekt besteht aus einem Package in dem Interfaces die API-Beschreiben +und einem Package mit Implementationen dieser Interfaces die jedoch für den Benutzer +unsichtbar und daher austauschbar sind.

+

Das folgende Diagram zeigt das Interface das dem Benutzer zur Verfügung steht:

+
+
+
de.dhbw.horb.ksm. xmlschema.api
++----------------------------------------------------------+
+| +-------------+   +---------------+   +------------+     |
+| |_____KSM_____|  *|___NodeGroup___|  *|____Node____|     |
+| |getNodeGroup +---+getNodeGroups()+---+getC.tions()|     |
+| |getVersion() |   |getNodes()     |   |            |     |
+| |             |   |               |   |            |     |
+| +---^---------+   +---------------+   +--+---+-----+     |
+|     |       \       |   ________________/    |           |
+|     |        \1     |1 /1                    |*          |
+|     |       +-+-----+-+--+                +---+--------+ |
+|     |       |_Properties_|1               |_Connection_| |
+|     |       |getString() +----------------+getTo()     | |
+|     |       |getInteger()|                |            | |
+|     |       |......      |                |            | |
+|     |       +------------+                +------------+ |
+|     |                                                    |
++----------------------------------------------------------+
+      |
+de.dhbw.horb.ksm. xmlschema.impl
++-------------------------------+
+|     |                         |
+| +------------------+          |
+| |____KSMFactory____|          |
+| |createEmptyKSM()  |          |
+| |saveKSM()         |          |
+| |loadKSM()         |          |
+| +------------------+          |
++-------------------------------+
+
+

Ein Diagramm wird erstellt indem ein neues (createEmptyKSM()) erstellt wird oder eines +geladen wird (loadKSM()). Die weitere Navigation erfolgt durch Absteigen in dem +Objekt-Baum der durch NodeGroup- und schliesslich Node-Objekte gebildet wird.

+

Datentypen der Eigenschaften

+

Im Modell gibt es die Datentypen KSM, NodeGroup, Node und Connection (siehe Klassen-Diagramm). +Zusätzlich gibt es die Klasse Properties mit der an die Datentypen zusätzliche Eigenschaften +mit einem Text-Bezeichner angehängt werden können.

+

Für die Eigenschaften stehen folgende Typen zur Verfügung: 'string', 'integer', 'boolean', +'integerList', 'decimalList', 'stringList'. Der Datentyp erschliesst sich aus dem Namen.

+

Prinzipiell kann jeder Bezeichner für jeden Datentyp einmal verwendet werden, ein Bezeichner sollte +jedoch wegen der Übersichtlichkeit nur einmal verwendet werden.

+
+

Verwendung der ChangeListener

+
+

Die Klassen NodeGroup, Node und Properties implementieren Change-Listener +auf die sich Listener-Klassen registrieren können um über Änderungen am Datenmodell +informiert zu werden.

+

Dies wird beispielsweise benötigt, wenn zwei Programmteile wie ein Eigenschaften-Editor +in Tabellenform und ein grafischer Editor voneinander unabhängig auf das Datenmodell +zugreifen und beispielsweise die Farbe eines Knoten ändern.

+

Die Spalte Index zeigt an ob das Event eine Index-Eigenschaft hat die andeutet +welches Element in einer Liste geändert wurde.

+

Die Spalte Version zeigt an, ab welcher Version des Datenformat (=Version dieses +Dokumentes, Version Attribut in <ksm> Element) dieser Event unterstützt wird.

+
+ + +++++ + + + + + + + + + + + + + + + +
Tabelle 1. NodeGroup-Events
Property-Name Version Index? Beschreibung

nodes

1+

Eine Node wurde dieser NodeGroup + hinzugefügt oder entfernt

+
+
+ + +++++ + + + + + + + + + + + + + + + +
Tabelle 2. Node-Events
Property-Name Version Index? Beschreibung

connections

1+

Eine Connection wurde erstellt oder gelöscht

+
+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tabelle 3. Properties-Events
Property-Name Version Index? Beschreibung

string: X

1+

Eine Zeichenketten Eigenschaft mit Name X wurde geändert

decimal: X

1+

Eine Fliesskommazahl Eigenschaft mit Name X wurde geändert

integer: X

1+

Eine ganzzahlige Eigenschaft mit Name X wurde geändert

boolean: X

1+

Eine boolsche Eigenschaft mit Name X wurde geändert

integerList: X

1+

Eine Ganzzahl Liste mit Name X wurde manipuliert

decimalList: X

1+

Eine Fliesskommazahl Liste mit Name X wurde manipuliert

stringList: X

1+

Eine Zeichenketten Liste mit Name X wurde manipuliert

+
+
+

Eigenschaften (Properties)

+
+

Allen Elementen im Datenmodell lassen sich dynamische, dass heist nicht in einem +Schema festgelegte, Eigenschaften zuwiesen. +Dies hat zur Folge, dass eine Anwendung sowohl den Fall handhaben muss, dass eine +erwartete Eigenschaft nicht vorhanden ist als auch, dass Eigenschaften vorhanden sind +die unbekannt sind und ignoriert werden müssen. +Dazu steht der Anwendung jedoch das Attribut Version im Schema (siehe KSM#getVersion()) +zur Verfügung, welches auf eine Version von diesem Dokument zeigt.

+

Dieser Ansatz wurde gewählt, da sich gezeigt hat, dass die Studienarbeiten im KSM-Projekt +einen begrenzten Fokus haben und es daher für einen einzelnen Studenten schwer möglich ist, +alle benötigten Datenfelder zu definieren. +Das bisherige KSM-Datenformat handhabt dies, indem das XML-Schema beliebig verändert +wurde und damit sinnlos wurde. +Da dies unvermeidbar ist wird es mit diesem Ansatz aktiv unterstützt.

+

Eine alternative Herangehensweise wäre die Verwendung von verschiedenen XML-Schemas gewesen +wobei mit jeder Erweiterung ein zusätzlicher Namensraum eingeführt wird. Dies +schien jedoch sehr viel umständlicher und unnötig kompliziert.

+

Eigenschaften von Modellen (KSM)

+

Die Spalte Typ zeigt den Datentyp der Eigenschaft an. Die Spalte Schlüssel +den Bezeichner welcher in Kombination mit dem Typ eindeutig ist.

+

Die Spalte Version zeigt an, ab welcher Version des Datenformat (=Version dieses +Dokumentes, Version Attribut in <ksm> Element) dieser Event unterstützt wird.

+
+ + +++++ + + + + + + + + + + + + + + + +
Tabelle 4. KSM Properties
Typ Schlüssel Version Beschreibung

nichts

ist

definiert

-

+
+

Eigenschaften von Knoten (Node)

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tabelle 5. Node Properties
Typ Schlüssel Ver. Beschreibung

string

visual.caption

1+

Titel der Node im Editor.

string

visual.color

1+

Farbliches Merkmal der Node + Hexadezimal im 8-Bit RGB Format + wie folgt: #RRGGBB.

integer

visual.location.x

1+

X-Position relativ zur übergeordneten NodeGroup

integer

visual.location.y

1+

Y-Position relativ zur übergeordneten NodeGroup

decimal

data.user_value

1+

User Value (?)

decimal

data.min_value

1+

Minimal Value (?)

decimal

data.max_value

1+

Maximal Value (?)

decimal

data.extern

1+

Extern Value (?)

+
+

Als Erbe aus dem KSM/Swing Projekt kann 'visual.color' die folgenden Werte +annehmen, diese sollen auf den folgenden RGB-Wert übertragen werden:

+
    +
  • +

    +White#ffffff +

    +
  • +
  • +

    +Light Yellow#faffa2 +

    +
  • +
  • +

    +Medium Yellow#f4ff4b +

    +
  • +
  • +

    +Yellow#edfc00 +

    +
  • +
  • +

    +Light Blue#d4d5e9 +

    +
  • +
  • +

    +Medium Blue#7678ff +

    +
  • +
  • +

    +Blue#0002f8 +

    +
  • +
  • +

    +Light Green#c8f8c9 +

    +
  • +
  • +

    +Medium Green#7afa7e +

    +
  • +
  • +

    +Green#1af520 +

    +
  • +
  • +

    +Light Red#fdcccc +

    +
  • +
  • +

    +Medium Red#f95959 +

    +
  • +
  • +

    +Red#f62020 +

    +
  • +
+

Eigenschaften von Verbindungen (Connection)

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tabelle 6. Connection Properties
Typ Schlüssel Ver. Beschreibung

string

visual.caption

1+

Titel der Connection im Editor.

string

visual.color

1+

Farbliches Merkmal der Connection

string

data.functionType

1+

Ein Funktionstyp von: + straight-line, individual, + parable, parabolic-sections.

decimalList

data.function

1+

KSM-Simulator Funktionsparameter dieses Knoten

+
+

'data.function' enthält eine Liste von Argumenten für die verwendete, durch 'data.functionType' +festgelegte Funktion.

+

Eigenschaften von Gruppen (NodeGroup)

+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tabelle 7. NodeGroup Properties
Typ Schlüssel Ver. Beschreibung

string

visual.caption

1+

Titel der Group im Editor.

string

visual.color

1+

Farbliches Merkmal der Group

integer

visual.location.x

1+

X-Position relativ zu übergeordneten NodeGroup

integer

visual.location.y

1+

Y-Position relativ zu übergeordneten NodeGroup

+
+
+

Dokumentation der Implementierung

+
+

Das am Anfang vorgestellte Objektmodell wird durch Interfaces im Package +de.dhbw.horb.ksm. xmlschema.api umgesetzt.

+

Eine Implementierung dieser Interfaces findet sich im Package +de.dhbw.horb.ksm. xmlschema.impl. Von dieser Implementierung ist für +äusseren Zugriff nur die Klasse KSMFactory vorgesehen, welche Methoden +zum Laden und Speichern von KSM-Modellen zur Verfügung stellt.

+

Die Implementierung benutzt vom XML-Schema-Compiler (xjc) von JAXB generierte +Klassen die im Package de.dhbw.horb.ksm. xmlschema.generated liegen. +Das generieren wird vom Ant-Task compile-xjc und Annotationen im Schema gesteuert.

+

Der Zugriff auf das geladene Modell erfolgt auschliesslich über die in den Interfaces +vorgesehen Methoden, ein direkter Zugriff ist nicht möglich.

+

Neben dem Quellcode in src/ gibt es im Projektverzeichniss noch das Verzeichnis test/ +welches JUnit-4 Tests enthält die die Implementierung nahezu 100% abdecken. Die +Tests sind dabei zum Teil im Stil des Behavior Driven Development (BDD) geschrieben unter +Zuhilfename der Bibliothek mockito.

+
+

Vorgehensweise bei Änderungen

+
+
    +
  1. +

    +Eintragung der Änderung in diesem Dokument +

    +
  2. +
  3. +

    +Erhöhen der Versionszahl +

    +
  4. +
  5. +

    +Erstellen eines Eintrags in der Revisions Historie in diesem Dokument +

    +
  6. +
  7. +

    +Anpassen der Versionszahl in build.xml project.version +

    +
  8. +
  9. +

    +Erstellen einer HTML- und PDF Version von diesem Dokument (asciidoc/a2x). +

    +
  10. +
+
+

Revisions Historie

+
+
+ + +++++ + + + + + + + + + + + + + + + + + + + + + +
Tabelle 8. Revisions
Ver. Datum Person Änderung

1

2011-03-24

Yves Fischer

Beginn der Historie, KSM Version 1

1

2011-04-26

Fischer, Dreher

Erläuterung Datentypen. + Festlegung Funktionsname/Parameter von + Connection’s.

+
+
+
+

+ + + diff --git a/ksm-model/doc/KSM-Datamodel.pdf b/ksm-model/doc/KSM-Datamodel.pdf new file mode 100644 index 0000000..9d14a46 Binary files /dev/null and b/ksm-model/doc/KSM-Datamodel.pdf differ diff --git a/ksm-model/doc/asciidoc-dblatex.sty b/ksm-model/doc/asciidoc-dblatex.sty new file mode 100644 index 0000000..5f8f8a0 --- /dev/null +++ b/ksm-model/doc/asciidoc-dblatex.sty @@ -0,0 +1,10 @@ +%% +%% This style is derived from the docbook one. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{asciidoc}[2008/06/05 AsciiDoc DocBook Style] +%% Just use the original package and pass the options. +\RequirePackageWithOptions{docbook} + +\usepackage{libertine} +\usepackage{microtype} diff --git a/ksm-model/doc/make.sh b/ksm-model/doc/make.sh new file mode 100755 index 0000000..f815b30 --- /dev/null +++ b/ksm-model/doc/make.sh @@ -0,0 +1,3 @@ +#!/bin/sh +asciidoc -v "KSM-Datamodel.asciidoc" && + a2x -v "KSM-Datamodel.asciidoc" --dblatex-opts "-P latex.output.revhistory=0 -P latex.class.options=14pt -P latex.class.article=scrartcl -s asciidoc-dblatex.sty" -- cgit v1.2.1