Modellgetriebene Architektur: Vergleiche von Code und Modell

worked on by: Julian Meyer

Seit einem halben Jahr arbeite ich als Werkstudent, und zwar als Backend Entwickler, bei der Intervista AG (Berliner Str. 111, 14163 Potsdam), einem mittelständischen Unternehmen, dessen Kerngeschäft die Software Entwicklung ist. In dieser Firma werden die Anforderungen an die Software mit den Kunden anhand Prozessmodellen abgesprochen. Entwickler erkennen dann aus diesen wie die Software zu funktionieren hat und implementieren sie entsprechend. Firmenintern werden die Modelle immer Prozessmodelle genannt, weil sie Modelle einzelner Prozesse sind. Streng genommen sind es aber eher Aktivitätsdiagramme nach den Petri-Netz Regeln.

Die Intervista AG wünscht sich die Möglichkeit, die Modelle mit der aktuellen Implementierung vergleichen zu können, um so direkt zu erkennen, wo der Code nicht dem Modell entspricht. Zum einen kann der Code nicht richtig implementiert worden oder das Modell nicht mehr aktuell sein.

Da das Entwickeln des Tools sehr aufwendig ist, muss man die Entwicklung in 3 Schritte aufteilen:

Da das komplette Entwickeln eines solchen Tools viel zu umfangreich für eine Bachelorarbeit wäre, wird sich mein Hauptaugenmerk auf den Vergleich richten, und das Extrahieren einer vergleichbaren Struktur aus Code und Modell auf nur wenige Elemente beschränken. Für viele Zwischenschritte gibt es schon Werkzeuge, diese müssen im Laufe dieser Arbeit evaluiert werden.

Das Prozessmodell ist wie folgt zu lesen (aus Sicht des Entwicklers):

Vieles davon ist sehr leicht zu erkennen, wie z.B. Klassennamen, Vererbungen und Methodennamen, so dass dieser Schritt automatisiert werden könnte.

Die Prozessmodelle werden in Microsoft Visio erstellt, diese können mit einem Zip-Programm geöffnet werden und bestehen hauptsächlich aus XML. (https://docs.microsoft.com/en-us/previous-versions/windows/desktop/opc/open-packaging-conventions-overview).

In Java gibt es eine Bibliothek, die das Auslesen vereinfacht. (http://poi.apache.org/components/diagram/index.html)

Endresultat dieser Bachelorarbeit: Eine funktionierende Lösung für simple Vergleiche von Code und Modell.

Thesis Requirements

formulate requirements here (together with your adviser)

Milestones and Planning

A milestone is a scheduled event signifying the completion of a major deliverable or a set of related deliverables. A milestone has zero duration and no effort -- there is no work associated with a milestone. It is a flag in the workplan to signify some other work has completed. Usually a milestone is used as a project checkpoint to validate how the project is progressing and revalidate work. (Source: http://www.mariosalexandrou.com/definition/milestone.asp)

Milestone no. Past days CW Goals target accomplished wrench
1 DONE 1 CWXX Goals accomplished

Weekly Status

Week 1 (CW XX)

Activities

Results

Next Steps

Problems