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.
Milestone no. | Past | ![]() |
CW | Goals ![]() |
accomplished ![]() |
---|---|---|---|---|---|
1 | ![]() |
1 | CWXX | Goals | accomplished |
…