ESWAL und eJSL

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Auf dieser Seite werden die in Rahmen des Kurses Modellgetriebene Softwareentwicklung in der Praxis (SS 13) entwickelten Modelle eSWAL (extended Simple Web Application Language) und eJSL (extended Joomla! Specific Language) vorgestellt und erklärt.

(Hinweis: aus technischen Gründen wird das "e" in der Überschrift groß geschrieben)

(Hinweis: die Modelle sind Gegenstand aktueller Entwicklung und können sich daher jederzeit ändern)

Wichtig: Es gibt zwei Arten von Parametern, die leicht verwechselt werden können:

  1. Linkparameter, die zu einem Contextlink gehören und Get- oder Postparameter repräsentieren
  2. Pageparameter, die eine Seite beschreiben können (Footer, Header, CSS, etc.)

Überblick

eSWAL ist ein PIM (Platform Independent Model) und dient zur plattformübergreifenden Beschreibung von Webanwendungen jeglicher Art, z. B. eines Social Networks. Plattformunabhängig bedeutet, dass Implementierungsdetails für die verwendeten Programmiersprachen und Frameworks nicht enthalten sind.

eJSL ist ein PSM (Platform Specific Model) und ist in der Abstraktionshierachie unter dem PIM (hier eSWAL) angeordnet. Es verwendet ein PIM und erweitert es nun um die notwendigen plattformspezifischen Eigenheiten.

Hier wird Joomla! als Framework benutzt, weswegen in das Modell nun u. a. eine Aufteilung in die verschiedenartigen Extensions von Joomla! vorgenommen wird.

In eJSL ist es so, dass eSWAL komplett verwendet, aber nicht verändert wird, d. h. "eJSL baut etwas drum herum".

Ursprünge

eSWAL basiert auf der Sprache SWAL (Simple Web Application Language), welche in dem Paper "Towards a Distributed Modeling Process Based on Composite Models" von Daniel Strüber, Gabriele Taentzer, Stefan Jurack und Tim Schäfer an der Philipps-Universität Marburg veröffentlicht wurde. Die Bilder sind diesem Paper entnommen.

eJSL basiert auf dem Sprachentwurf JSL (Joomla! Specific Language) von Dennis Priefer.

Constaints

Einige Informationen lassen sich naturbedingt nicht in einem UML-artigen Diagramm darstellen, wie z. B. bestimmte Bedingungen, welche das Modell einhalten muss. Diese sollen hier in Freitext beschrieben werden.

  • Ein eSWALModel hat ein bis zwei Sections, wobei die Subklassen "FrontendSection" und "BackendSection" nicht doppelt vorkommen sollen, d. h. hat ein eSWALModel zwei Sections, so ist es genau eine Frondend- und eine BackendSection, jedoch nicht zwei Frontend- oder zwei Backend-Sections.
  • In der Klasse Reference
    • darf der loweBound nicht größer des upperBounds sein.
    • dürfen nur postive Zahlen einschließlich der 0 verwendet werden, mit ausnahme von "-1", welches für * steht.
  • In den Klassen GlobalParameter und LocalParameter (muss das hier abgefangen werden?)
    • darf nur eine Size gesetzt werden, wenn dies für den entsprechenden Datentypen sinn macht bzw. muss sonst ignoriert werden.
    • darf nur ein defaultValue gesetzt werden, der dem Datentyp entspricht.
  • In der Klasse ExternalLink darf als target nur eine gültige URL angegeben werden.

Glossar

  • Attribute: Die Attribute einer Entität. Für einen User könnte es z. B. die Attribute "Prename", "Surname" und "E-Mail" geben.
  • BackendSection: Die Section, in der nur Backendseiten sind. Darunter wird hier der Adminbereich verstanden.
  • ContextLink: Ein InternalLink, der im Gegensatz zum SimpleLink weitere Informationen in Form von Get- oder Post-Parametern enthält (sein "Context"). Die Parameter werden in Form von LinkParameter angegeben.
  • DataModel: Eine weggefallene Kategorisierung der Entitäten aus dem urpsrünglichen SWAL.
  • DataType: Die Datentypen der Attribute, z. B. "String", "Integer", aber auch komplexere Typen wie "adress" und "Email-address". Um im Modell enthalten sein zu können, werden diese direkt im eSWALModel definiert und können dann von allen Attributen verwendet werden.
  • DetailsPage: Eine DynamicPage, welche detaillierte Informationen einer Entität (mit evtl. zusätlichen Entitäten) anzeigt, z. B. alle Informationen zu einem User (Entität).
  • DynamicPage: Eine im Gegensatz zur StaticPage auch zur Laufzeit dynamisch erzeugte Webseite. Die Informationen werden aus einer oder mehreren Entitäten gewonnen. DynamicPage ist eine abstrakte Klasse.
  • Entity: Eine "Klasse", welche ein Objekt beschreibt, z. B. eine Entität "User" oder "Chat". Analog zur Modellierung wie in einem Entity Relationship Diagram.
  • eSWALModel: Top-Level-Container des eSWAL-Modells. Wird von Ecore benötigt.
  • Parameter: (auch: Page-Parameter; im Modell in Form von GlobalParameter und LocalParameter) Ein Parameter, der an eine Page übergeben werden kann, um so dort das Verhalten zu steuern, z. B. kann ein Parameter "Device", besetzt mit den Werten "Mobile", "Tablet" und "Full" eine Seite jeweils für ein Smartphone, ein Tablet oder einen PC optimieren.
  • Extension: Repräsentiert eine Joomla!-Extension und kann (je nach Art der Erweiterung) eine Seite "implementieren", d. h. der Code für eine Seite befindet sich in einer bestimmten Extension bzw. aggregiert aus mehrern, wenn eine Seite beispielsweise mehrere Module verwendet.
  • ExternalLink: Ein Link, der aus dem Modell ("System") herausführt, z. B. www.google.de.
  • FrondendSection: Die Section, in der nur Frontendseiten sind. Unter Frontend wird hier die eigentliche Webseite verstanden.
  • GlobalParameter: Ein Page Parameter, welcher derart allgemein ist, dass er von vielen verschiedenen Seiten benutzt werde kann, und somit global im eSWALModel definiert wird.
  • IndexPage: Eine DynamicPage, welche mehrere Eintitäten anzeigt, z. B. eine Liste aller User (Entität).
  • InternalLink: Ein Link, der innerhalb des Modells ("Systems") auf eine Seite verlinkt. Möglich sind Simple- und ContextLink (InternalLink ist eine abstrakte Klasse).
  • Link: Ein Link auf eine andere Seite; nur External-, Simple- und ContextLink möglich (Link ist eine abstrakte Klasse).
  • LinkParameter: Ein Parameter für einen ContextLink. Die Parameter sind als HTTP-Get- oder Post-Parameter zu verstehen und bestehen aus Key-Value-Paaren.
  • LocalParameter: Ein Page-Parameter, welcher im Gegensatz zu den GlobalParameter nur für eine Page definiert wird.
  • Package: Top-Level-Container des eJSL-Modells; Verwendet ein eSWALModel und ist eine Sammlung von Joomla!-Extensions. Bindeglied zwischen Joomla!-spezifischen Extensions und den eSWALModel.
  • Page: Eine tatsächliche Webseite, die aber nur als Static-, Index- oder DetailsPage existieren kann (Page ist eine abstrakte Klasse).
  • Parameter: Doppeldeutiger Begriff - es sind entweder die LinkParameter eines ContextLinks oder die Page-Parameter gemeint .
  • Reference: Eine Entität kann eine Referenz auf eine andere Entität (auch die gleiche) haben. Um in dem Modell später diese Referenz benennen und Kardinalitäten angeben zu können, ist dies eine eigene "Klasse" im Sinne des Ecore-Modells. Beispiel: Eine Entität "Chat" hat eine Referenz "between_users" zur Entität "User" mit der Kardinalität 2 zu *.
  • Section: Gruppierung für die Webseiten, also ob eine Seite im Frontend oder im Backend angezeigt wird. Section ist eine abstrakte Klasse.
  • SimpleLink: Ein InternalLink, der keine weiteren Informationen in Form von Parametern benötigt (s. ContextLink).
  • StaticPage: Eine statische Webseite, welche keinerlei Bezug zu dem Content Model hat. Sie kann dennoch dynamisch generiert werden (z. B. eine Sitemap), verändert sich jedoch nicht zur Laufzeit.
  • ViewModel: Eine weggefallene Kategorisierung der Pages aus dem urpsrünglichen SWAL.