Masterarbeit: Cross-Plattform-GUI Entwicklung in Saros

Wird bearbeitet von: Matthias Bohnstedt

Motivation

Saros, ursprünglich als reines Eclipseplugin entworfen und designet, wird auch auf anderen IDEs verfügbar werden. Unter anderem ist eine IntelliJ IDEA Version (Saros/J) von der Community erwünscht und befindet sich derzeit im Beta Stadium. Saros auf mehreren Plattformen zu entwickeln stellt dessen Softwarearchitektur vor eine Reihe neuer Herausforderungen und Probleme. So müssen z.B. Aspekte der Software die von Eclipse oder anderen IDEs abhängig sind von Kernfunktionalitäten den Saros getrennt werden. Für die Weiterentwicklung von auf verschiedenen Plattformen. Ein weiter Aspekt dieses Problems ist die Useroberfläche. Momentan existiert für Saros/E und Saros/J eine 'separate' GUI. Eine parallele Entwicklung von Plattformspezifischen GUIs führt dazu, dass der UI Code mehrfach vorhanden sein muss. Diese Stellen müssen gesondert gewartet, weiterentwickelt und angepasst werden. Dies erzeugt Codeduplikation und eine unnötige Kopplung der GUI an die jeweilige IDE. Diese Arbeit beschäftigt sich vornehmlich mit dem GUI Part von Saros.

Zielsetzung

Ziel dieser Arbeit ist es die GUI für alle IDE’s zu vereinheitlichen und so die GUI Architektur von der IDE Plattform bestmöglichst zu von entkoppeln und zu vereinheitlichen. Dadurch soll Codeduplikation vermieden und die Evolvierbarkeit (Der UI) von Saros erhöt werden. Vom HTML/JS basierten Ansatz ist zu erwarten, dass dieser für neue Entwickler "einfacher zugänglich" und "transparenter" ist, als der momentane SWT (Saros/E) bzw. AWT/SWING (Saros/J) Ansatz.

Neben der Erweiterung und der Schnittstelle zwischen dem HTML Interface und der Geschäftslogik von Saros, steht also auch verbesserung der "Entwicklerusability" der UI-Architektur.

Vorgehen

Auf Basis des von Herrn Cikryt implementiert und evaluierten Ansatz einer einheitlichen GUI auf HTML Basis, wird diese erweitert und verfeinert1. Ein Vergleich der alten Architektur und es alten GUI-Entwicklungsprozesses mit dem Neuen. Eine Reihe von Entwicklertest sollen Probleme im Architekturentwurf und in der Zugänglichkeit (Transparenz, Einarbeitungsaufwand, Evaluirbarkeit) aufzeigen.

Ziele und Aufgaben während der Arbeit

  • Implementierung des HTML Prototypen für Saros/E (Durchstich)
  • Abstimmung und Review von Cikryts und
  • Ursprünglich: Vergleich alter und neuer Architektur
  • Finden von geeigneten Metriken und Messverfahren für GUI-Architekturentwurf (Geeignete Prozessmaße/ Produktmaße)
  • Erkennen von Problemen im Architekturentwurf
  • Erweiterung der Java Schnittstelle (HTML <-> Transportlayer <-> Geschäftslogik)
  • Verbesserung der Robustheit der HTML GUI ** Lösungen für bekannte Probleme für Linux/Mac

Stand der Arbeit

Der Vergleich der verschiedenen Ansätze (SWT <-> HTML) erwieß sich als schwierig und nicht sehr ergiebig in seiner Aussagekraft. Neben dem fehlen von ausagekräftigen Prodktmaße (bzw. sind vorhanden wie LoC nur sehr bedingt ausagekräftig), ist es auch ein Mangel an Proßessmaßen um einen Vergleich zwischen Alter GUI-Architektur (GUI-Entwicklungsprozess) und neuer herzustellen. Daher erscheint es Zielführender den aktuellen Prozess und die Architektur gezielt nach Problemen zu untersuchen.

Hierführ wurde eine Testszenario entwickelt, in welcher ein typisches feature bzw. eine schon zu erwartenden Erweiterung des HTML Prototype zu implementieren war. Dieser Test zeigt verschiedene Probleme. Teilweise betreffen diese Probleme die HTML Schicht selbst (JS Framework kenntnisse, boilerplate code, unklarer Templatesprache) zum anderen aber auch die JAVA Schnittstellen schicht.

Geplant ist die Verbesserung der erkannten Probleme auf Java Seite und der Erweiterung Schnittstelle. Danach soll durch einen weitere Entwicklertest geprüft werden ob die Probleme beseitigt werden und evtl. neue aufdecken.

Weiterhin ist eine der Herausforderungen sich dabei mit den verschiedenen Entwicklern abzustimmen (Verschieben von Funktionalitäten in den Kern, welche von der GUI gebraucht werden. Erweitern der HTML GUI) welche auch in diesen Bereichen ihre Arbeit schreiben.

Nebenprodukt

  • Prozessanpassung für Entwicklung verschiedener IDE's in Saros
  • Anpassen der Codeguidlines.
  • Einführung neuere commit TAGs Gerrit.
  • Einführung von eines UI Projekts zur zentralen verwaltung von gemeinsam genutzten Komponenten aller IDE's.
  • Analyse des Prozess der UI Entwicklung selbst
  • Koordination und Abstimmung im Team bei stark gekoppelte Aufgaben
  • Entwicklung betrifft oft viele Entwickler in Saros, mit unterschiedlichen Prioriäten und Abgrenzungen
  • Reviewprozess

Comments