(Each project requires you to login separately)

community-german

Modulestudio

Das Modulestudio ist ein Tool zur modellgetriebenen Software Entwicklung (MDSD), mit dem spezifisch Module für Zikula entwickelt werden können. Aus einem grafischen Modell wird dabei ein lauffähiges Modul generiert.

  • Aktuelle Version: 0.4.9 [VÖ 29.04.2008]
  • Plattformen: Windows, Linux, Mac, Solaris
  • Homepage:  modulestudio.de

Das Modulestudio befindet sich noch in einer frühen Entwicklungsphase und enthält noch nicht alle Features, die später einmal die Arbeit erleichtern sollen - es lassen sich damit jedoch auch jetzt schon lauffähige Module generieren.

Modellgetriebenen Software Entwicklung

Die Methode der modellgetriebenen Software Entwicklung will das Problem lösen, dass in verschiedenen Programmiersprachen immer wieder die gleichen Anwendungen geschrieben werden müssen. Stattdessen wird ein Modell der Anwendung erstellt - durch verschiedene Generatoren können aus dem Modell Anwendungen in verschiedenen Programmiersprachen erzeugt werden. Modulestudio Box Zum anderen will die modellgetriebenen Software Entwicklung durch domänenspezifische Sprachen leichter verständliche Modelle verwenden als zum Beispiel UML-Tools. Statt die universelle Modellierungssprache UML zu benutzen, wird der Wortschatz eines bestimmten Arbeitsfeldes ("Domäne") genutzt: Im Falle des Modulestudios wird eine Sprache benutzt, die den Begrifflichkeiten in der Modul-Entwicklung entspricht: Da gibt es zum Beispiel die Persistenz- oder die Präsentationsschicht. Und zum Beispiel in der Persistenz-Schicht gibt es Tabellen und Tabellenfelder.

So bleiben die Modelle lange verstehbar und aus einmal angefertigten Modellen lassen sich ohne Anpassung immer wieder funktionierende Module generieren, auch wenn sich zum Beispiel die Zikula-API ändert. Die Module bleiben leicht wart- und erweiterbar. Durch die Automatisierung lässt sich eine hohe Qualität des Codes gewährleisten.

Installation

  1.  Java 6 wird benötigt - Module Studio benötigt eine funktionierende Java-Umgebung.
  2.  herunterladen
  3. Auspacken - Da Modulestudio ohne installation läuft, solltest Du das Verzeichnis dorthin entpacken, wo Du es hinterher nutzen möchtest. Du kannst das Verzeichnis aber auch nachträglich noch verschieben.
  4. Starten - Einfach das Verzeichnis öffnen und Modulestudio starten.

Arbeiten mit Modulestudio

Im Folgenden wird anhand des Beispielmoduls "AutoCustomer" zur Verwaltung von Kunden und deren Aufträgen gezeigt, wie sich mit ModuleStudio ein kleines Modul realisieren lässt. Dabei werden die wichtigsten Begriffe und Zusammenhänge erklärt. ModuleStudio speichert jedes Modell in zwei Dateien. Die semantischen Informationen werden im Domänenmodell *.msmodule gespeichert, die rein optischen Details der Diagramme in *.msmain.

Die Oberfläche

Nachdem die Applikation gestartet wurde, kann über den Menüpunkt File > New > Module Diagram ein Assistent gestartet werden, der nach Angabe von Dateinamen für Diagramm- und Domänenmodell entsprechende Dateien anlegt. Anschließend befindet sich der Benutzer im leeren Haupteditor (vgl. Abbildung 1).

Neben Hauptmenü und Toolbars ist die Umgebung in zwei Bereiche separierbar. Die Anordnung der Fenster kann beliebig verändert werden. Auf der linken Seite befindet sich das Editorfenster, welches eine Zeichenfläche und eine Palette mit den verfügbaren Werkzeugen beinhaltet. Dort findet die eigentliche Modellierung statt.

Die Palette des Haupteditors teilt Knoten und Kanten in die zwei Gruppen "Container" und "Links" auf. Die vier Containerarten repräsentieren die verschiedenen technischen Bereiche des Modells.

PersistenceDatenschicht zur Definition von Tabellen und Relationen
ProcessingProzessschicht zur Definition von Anwendungsfällen
PresentationPräsentationsschicht zur Anpassung der Darstellung
BehaviourVerhaltensschicht zur Definition von Geschäftslogik

Von jedem Containertyp können mehrere Elemente gleichzeitig in einem Modell existieren. Dies kann hilfreich sein, um die einzelnen Schichten nach fachlichen Kriterien aufzuteilen. Relevant ist dies aktuell jedoch nur bei der Datenschicht, um eine Anbindung externer Datenquellen zu realisieren.

Auf der rechten Seite sind eine Outline View mit einer Miniaturansicht des Editorfensters und eine Properties View zum Bearbeiten von Eigenschaften. In letzterer ist der Reiter "Domain Model"“ wichtig, in dessen Sektion View > Element die Attribute von Modellelementen bearbeitet werden können. Da die Zeichenfläche selbst dem zu generierenden Modul entspricht, sollten dort zunächst einige zentrale Einstellungen gesetzt werden. Das betrifft den Namen des Moduls sowie des Autors (vgl. Abbildung 2).

Bereits an dieser Stelle sollte das Modell einmal gespeichert werden. In der rechten oberen Ecke des Editorfensters befindet sich ein in Abbildung 1 nicht abgebildetes rotes Icon, welches besagt, dass Fehler im Modell existieren. Fährt der Benutzer mit der Maus über dieses Symbol, werden entsprechende Hinweise angezeigt, die Aufschluss darüber geben, was zu tun ist.

Container

Als erstes wird ein Container-Element von jedem Typ benötigt. Diese Elemente können über Mausklicks in der Palette ausgewählt und auf der Zeichenfläche abgelegt werden. Alternativ können Pop-ups benutzt werden, die in der Zeichenfläche erscheinen, sobald die Maus auf ihr zum Ruhen kommt. Jedem Container muss ein beliebiger Name zugewiesen werden. Abbildung 3 zeigt, wie das Modell nun in etwa aussieht.

Auch an den einzelnen Elementen erscheinen nun kontextsensitive Hinweise auf nicht erfüllte Validierungsregeln. Der Anwender sieht somit jederzeit, an welchen Stellen er noch nachbessern muss. Das Containerelement für die Geschäftslogik muss beispielsweise von einer Datenquelle, sprich einem Persistenzcontainer abhängig sein.

Abhängigkeiten

Die Spezifikation der Abhängigkeiten zwischen den Containern wird über die Kantenelemente vorgenommen. Auch hier kann die Palette zur Erstellung verwendet werden. Eine schnellere und intuitivere Variante besteht darin mit der Maus über ein Element zu fahren und die erscheinenden Pfeile als Startpunkte für Drag & Drop zu gebrauchen. Abbildung 4 zeigt das Modell nach Hinzufügen der notwendigen Abhängigkeiten:

Die Persistenzschicht

Die Fehlermeldung des Elementes "myData" besagt, dass der Persistenzcontainer mindestens eine Tabelle beinhalten muss. Um nun die Datenschicht zu definieren, lässt sich durch einen Doppelklick auf das Element der entsprechende Untereditor öffnen. Die Palette des Persistenzeditors verfügt über eine Menge verschiedener Einträge. Das Hauptelement ist die Tabelle, welche in der Lage ist verschiedene Felder und Indexe in sich aufzunehmen. Sobald eine Tabelle auf der Zeichenfläche existiert, erscheint ein tabellenspezifisches Popup, um leicht neue Unterelemente hinzuzufügen.

Sowohl Tabellen als auch Felder verfügen über mehrere Attribute, die im gegenwärtigen Stand am einfachsten in der Properties View verwaltet werden. Zukünftig sind individuelle Dialoge zur Änderung von Eigenschaften geplant. Nachdem mehrere Tabellen spezifiziert wurden, müssen noch die Relationen zwischen ihnen definiert werden. Dies erfolgt genau wie im Haupteditor mit Hilfe von Kantenelementen. Abbildung 5 zeigt eine mögliche Struktur für eine rudimentäre Kundenverwaltung.

Sowohl Tabellen als auch Felder haben ein Attribut namens "isLeading", welches besagt, dass das jeweilige Element führend ist. Dies trifft in diesem Modell auf die Kundentabelle sowie auf die Felder "company", "date" und "lastName" zu. Neben der Modellierung von Tabellenschemata unterstützt der Persistenzeditor ferner ein Containerelement für Konfigurationsvariablen. Deren Definition verläuft analog zu der von Tabellenfeldern, für ein Standardmodul ist dies meist nicht notwendig.

Die Prozessorschicht

Nach Speichern und Schließen des Untereditors wird der Haupteditor neu geladen, um die vorgenommenen Änderungen zu synchronisieren. Nun sollte nur noch der Prozesscontainer einen Fehler enthalten, weil mindestens ein Prozessor benötigt wird. Wieder wird per Doppelklick auf das Element ein Untereditor mit dem jeweiligen Kontext geöffnet.

In Abbildung 6 wurde ein Prozessor angelegt und in ihm verschiedene Zustände erstellt. Normalerweise kommen auch zwischen den Zuständen relationale Verbindungen zum Einsatz, um zum Beispiel Weiterleitungen zu definieren. Da der Generator diese Transitionen jedoch noch nicht auswertet, können sie entfallen. Auch der Prozesseditor wird gespeichert und wieder geschlossen.

Die Behaviourschicht

Die Behaviourschicht wurde noch nicht implementiert in Modulestudio und kann deswegen ignoriert werden.

Die Präsentationsschicht

Die Präsentationsschicht wurde noch nicht implementiert in Modulestudio und kann deswegen ignoriert werden.

Abschluss

Nach der Synchronisation sollten nun im gesamten Modell keine Fehler mehr vorhanden sein. In dem Fall wird der Menüpunkt File > Generate module aktiviert, der die Ausführung des Generator-Workflows übernimmt. Der Benutzer wählt das gewünschte Ausgabeverzeichnis und erhält anschließend eine Bestätigung über den Verlauf der Generierung.

Das erzeugte Modul kann nun direkt hochgeladen und installiert werden.

Attachments

 
 
Powered by Trac
Design by Arcsin