Technology Modeling Project

Technology Modeling Project

Dieses Projekt richtet sich an jene, die ein (Pro-)Seminar oder eine Forschungsarbeit schreiben möchten.

Forschungskontext

Die linguistische Architektur von Software ist ein aktuelles Forschungsgebiet unserer Arbeitsgruppe. Während sich die meisten Ansätze zur Beschreibung von Software Architekturen auf verschiedene Arten von Artefakten beziehen, beschäftigt sich die linguistische Architektur zusätzlich mit konzeptionellen Entitäten. Dazu gehören Sprachen und Technologien. Wenn man beispielsweise von Java spricht, ist meist nicht nur von der Sprache die Rede, sondern ebenfalls von Java Platform Technologien und verwendbaren Paradigmen wie die objektorientierte Programmierung.

Mit MegaL lassen sich Technologien ontologisch erfassen. Dabei stellen sich Fragen wie "Welche Sprache wird in einem System oder einer Technologie verwendet?". Allerdings greifen einige Fragen auch in eine deutlich detailliertere Tiefe: "Wie lässt sich die Relation zwischen einem Schema-Artefakt (z.B. XSD-Schemas) und einem Instanz-Artefakt (z.B. XML-Files) erfassen?"

Aktuell existieren zwei verschiedene Implementation. Einerseits existiert MegaL-XText (https://github.com/avaranovich/megal-xtext) um MegaL-Modelle zu interpretieren und die Beziehungen zwischen einzelnen Entitäten in existierenden Systemen zu verifizieren. Andererseits ist die MegaLib in Entwicklung (https://github.com/softlang/megalib). Beide Technologien verwenden unterschiedliche MegaL-Dialekte. Letztere besteht aktuell aus zwei Hauptkomponenten: (1) Einem Checker zur Überprüfung der Validität von Technologiemodellen, (2) Einer Ansammlung von vorhandenen und fortwährend verbesserten Technologiemodellen zu verschiedensten Programmierdomänen.

Projektziel

Das Ziel dieses Projektes ist es eine Menge von aussagekräftigen MegaL-Modellen zu erstellen. Damit soll die Menge der existierenden Modelle aus der MegaL-Bibliothek (https://github.com/softlang/megalib) kontrolliert erweitert werden. Weitere Informationen sind im Repo-Wiki zu finden.

Voraussetzungen

Speziell das Proseminar richtet sich an Studenten, die in ihrem Bachelorstudium bereits sehr fortgeschritten sind. Das Modellieren von Technologien kann nur mit einem gewissen Grundwissen möglich sein. Daher müssen teilnehmende Bachelorstudenten bereits die Veranstaltung "Programmiertechniken und Technologien" und "Grundlagen der Softwaretechnik" abgeschlossen haben. Ohne diese Grundkenntnisse ist die Aufgabe nicht zu bewältigen.

Aufgabenstellung 1

  1. Auswahl einer Technologie.
  2. Einfaches Verwendungsszenario (oder mehrere) identifizieren (Beispielsweise 101Contributions).
  3. Anwendungsszenario literat mit dem Megamodell erläutern.
  4. Hochwertige Informationsquelle identifizieren (nicht nur Blogs)
  5. Reproduzierbare Modellierung der Technologie mit Fokus auf das Anwendungsszenario. Nachvollziehbarkeit und Wohlgeformtheit sind essentiell. Das Ausmaß des Modells und der Dokumentation ist abhängig von der zu erbringenden Prüfungsleistung.

Aufgabenstellung 2 (eher Forschungsarbeit)

  1. Auswahl einer Technologie.
  2. Hochwertigen Text Corpus identifizieren.
  3. Analyse und Annotation des Corpus.
  4. Annotation transformieren zu Megamodell. (Abschnitte des Quelldokumentes und Beispielcode aus zugehörigem Code Repository referenzieren.)

Referenzen

Software Languages Team and Associates :
Modeling the Linguistic Architecture of Software Products
Renarrating linguistic architecture: a case study
Axioms of Linguistic Architecture
MegaL-model library and Checker

Interpretation of Linguistic Architecture
Interconnected Linguistic Architecture
Coupled Software Transformations---Revisited
Declarative Software Development (Distilled Tutorial)
Interpretation of MegaL-models

Selected Related Work on Megamodelling:
On the Need for Megamodels
Formalizing MDA Components
Modeling in the Large and Modeling in the Small