Inhalt des Projekts war eine Extension für Visual Studio Code, die die IDE um Werkzeuge der OPAL Project Bibliothek erweitert.

Agile Software Engineering Projekt aus dem Wintersemester 2018/2019


LCO-Team

Das Team, das an der Umsetzung des Projekts gearbeitet hat:

Alexander Gössl​

Alexander Hering

Christian Ott​​

Lukas Eberle​​

Nicholas Wolf​


Auftraggeber des Projekts war die Software Technology Group an der TU Darmstadt.

Die drei Kernaspekte der dort betriebenen Forschung bilden​

    - Programmiersprachen-Design und Implementation​
    - Intelligente Programmierumgebungen​​​
    - Entwicklung und Anwendung statischer Analyse von Software​

So befinden sich hier jeweils Konstruktions- sowie Analysewerkzeuge für Themen Software Quality, Big Data, Software Security oder Domain-Specific Abstractions in der Entwicklung. Nähere Informationen hierzu finden sich auf der oben verlinkten Homepage.

Wie eingangs angeschnitten, handelt es sich bei dem Projekt um eine Extension für die IDE Visual Studio Code. Für die Entwicklung einer solchen steht eine umfangreiche VS Code-API zur Verfügung, die mitunter sehr tiefe Eingriffe in die Funktionsweise der Entwicklungsumgebung erlaubt.

Um die OPAL Project Bibliothek und ihre Werkzeuge an VS Code anzubinden, wird eine Client-Server-Verbidung zu einem OPAL Server aufgebaut:
Client-Server-Anbindung


Client-Server-Anbindung

Da die Initialisierung eines Projekts in Opal

eine längere Zeit in Anspruch nehmen kann,

werden parallel zu einem HTTP Request,

der der den Prozess startet, weitere Requests

gesendet, die regelmäßig die Opal Log abfragen

und dem Nutzer asugeben, sodass das

Modell einer Responsive UI gewahrt bleibt.





Das Konzept des Datenaustauschs wird weiter über Services und Provider realisiert:

Services stellen die Infrastruktur zum Austausch über den Jetty-Server zur Verfügung und verwalten sie und die Daten, die darüber gesendet werden. So werden über Commands die gewünschten Daten vom Opal Server angefordert.

Die bezogenen Daten werden dann einem dedizierten Provider übergeben, der die Daten in virtuelle Dokumente umwandelt, die dann in VS Code angezeigt werden können.

Da die Extension veröffentlicht wurde, ist sie über den VS Code Marketplace installierbar:

JBW-Market


Ist die Extension installiert, so verknüpft sie umgehend und bei jedem Workspacewechsel den aktuellen Workspace als Projekt mit dem mitinstallierten Opal Command Server und stellt anschließend die Werkzeuge eingebettet in die VS Code GUI zur Verfügung:

JBW-start


Um die Übersicht über die einzelenen Werkzeuge zu verbessern, ist weiter ein Opal Explorer enthalten, der die relevanten Dateien des Projekts filtern und die jeweils für die Datei- und Package-Knoten verfügbaren Werkzeuge in einer Baumstruktur zugänglich macht. Im folgenden Beispiel gezeigt an dem für .class-Dateien nützlichen Werzeug der Darstellung als Three-Address-Code mit Sprunglinks:

JBW-explorer


Die Umsetzung des Projekts brachte viele wichtige Erfahrungen mit sich, im Folgenden eine kleinere Auswahl:

    - Feste und zuverlässige Rollenverteilung mit Stellvertretern​
    - Nutzung von Tools zur Aufgabenverteilung und -verwaltung
    - Nutzung von Tools zur effizienten Kommunikation innerhalb des Teams und nach​# Außen
    - Ansprechpersonen bei offenen Fragen und Ungereimtheiten zu Rate ziehen
    - Feste und aufeinander abgestimmte verteilung von Aufgaben​
    - Nutzung von Methoden wie Pair- und Teamprogramming
    - Nutzung von Tools zur effizienten Kommunikation innerhalb des Teams und nach​
    - Ausreichend Zeitaufwand in initiales Design und geplante Struktur investieren

Für die Umsetzung des Projekts wurden verschiedene Technologien genutzt:

    IDE und OPAL
    vscode Visual Studio Code
    opal Opal-Project

    Kommunikation und Organisation
    slack Slack
    gitter Gitter
    clickup ClickUp

    Hilfsframeworks und Packagemanagement
    nodejs Node JS
    jetty Jetty

    Codemanagement
    bitbucket Bitbucket