Systemsoftware und Verteilte Systeme

Degenerator: Erweiterung und Testen eines
Frameworks zur Beschreibung von Softwarearchitekturen in
Software.

Art der Arbeit: Bachelorarbeit

Hintergrund

Die meisten Möglichkeiten zur Beschreibung von Softwarearchitekturen (SWA) sind grafische Tools. Diese Tools haben einige Einschränkungen. Z.B. ist das kooperative Arbeiten an der SWA oft nicht möglich, da die resultieren Dateien nicht kompatible mit Version Control Software (VCS) sind. Des weiteren ist es oft nicht möglich die SWA zu nutzen um bestimmte Teile der Software zu generieren. Dies führt dazu das nach kurzer Zeit die SWA, die im Tools beschrieben wird, nicht mehr mit der SWA der Software übereinstimmt. Degenerator versucht diese und weitere Probleme zu lösen. Degenerator ist eine Softwarebibliothek. Die SWA des zu erstellenden Projekts wird daher in Software erstellt. Das folgende Listing zeigt einen kurzen Ausschnitt eines möglichen Projektes.

auto world = new TheWorld("TheWorld");

addBasicTypes(world);

Actor users = world.newActor("The Users");

Actor admin = world.newActor("The Admin");

admin.description = "An admin does what an admin does.";

auto system = world.newSoftwareSystem("AwesomeSoftware");

system.description = "The awesome system to develop.";

Container frontend = system.newContainer("Frontend");

frontend.technology = "Angular2";

Class postalCode = world.newClass("PostalCode", database, serverUserCtrl);

postalCode.containerType["MySQL"] = "Table";

MemberVariable pcID = postalCode.newMemberVariable("id");

pcID.type = integer;

pcID.addLangSpecificAttribute("MySQL", "PRIMARY KEY");

pcID.addLangSpecificAttribute("MySQL", "AUTO INCREMENT");

pcID.addLangSpecificAttribute("D", "const");

MemberVariable pcCode = postalCode.newMemberVariable("code");

pcCode.type = integer;

 

Das Beschreiben der SWA in Software hat zum einen den Vorteil, dass alle Entwickler die SWA bearbeiten können und das VCSs wie git eingesetzt werden kann um die Veränderungen der SWA nach zu verfolgen. Die resultierende SWA wird dann durch sogenannte Generatoren in diebenutzte Sprache des Projektes übersetzt. Ändert sich die Sprache die im Projekt benutzt wird muss nur ein andere Generator benutzt werden. Sollte es einen Generator für eine Sprache nicht geben, kann dieser vom Benutzer erstellt werden.

Das Model

TheWorld enthält SoftwareSystems, HardwareSystems und Types. SoftwareSystems enthalten Containers. Containers enthalten Components und Classes. Components enthalten Components und Classes. Classes enthalten Data Member und Member Functions. Die gleiche Klasse kann in mehreren Containeren sowie Componenten existieren. Connection, Aggregationen, Dependency, Composition, Generalization und Realization verbinden alle Elemente in TheWorld.

Existierende Generatoren

  • Graphviz UML-artige Generator
  • MySQL/MariaDB Create Table Generator
  • D/Vibe.d Generator
  • Angular2 Generator (in Arbeit)

Aufgabenbeschreibung

Aufgabe der Abschlussarbeit ist es ein Software mit Hilfe des Degenerators erstellen, den Entwicklungsprozess zu dokumentieren sowie Diesen mit aus der Literatur bekannten Verfahren zu vergleichen. Es soll eine Raumplanungsanwendung erstellt werden. Benutzer dieser Anwendung sollen in Gruppen gruppiert werden können. Diese Gruppen sollen dann auf eine Anzahl von Räumen über einen Zeitraum (Woche) verteilt werden. In der Literatur existieren Algorithmen die diese Planung effiziert durchführen, es geht somit größtenteils um die nötigen Datenstrukturen und wie Degenerator für denen Konstruktion eingesetzt werden kann. Des weiteren soll Degenerator um einen Dokumentationsgenerator erweitert werden.

Ansprechpartner