Bewertung und Reflexion - Archi-Lab/prox-documentation-gp-ws2018 GitHub Wiki

Inhalte auf dieser Seite


Gesamt

Insgesamt kann man festhalten, dass wir bei der Weiterentwicklung der Projektbörse in Sachen Funktionalität für den Endnutzer leider nur sehr schleppend vorangekommen sind. Wir wurden von sehr vielen Problemen aufgehalten, insbesondere der Anbindung des HoPS, der Konfiguration der Infrastruktur und der allgemeinen Code-Qualität (insbesondere Paketstruktur der Projekte, Benennung, Uneinheitlichkeit der Services untereinandern, etc.). Wir haben es uns zur Aufgabe gemacht, in Absprache mit unserem Product Owner, die Zahl der Mängel, die die Weiterentwicklung erschweren bzw. die Services unwartbar machen, auf ein Minimum zu reduzieren, um alle Services in einem sauberen und nachvollziehbaren Zustand zu hinterlassen.

Backend

Der größte Schwachpunkt im Backend stellt unserer Meinung die Tatsache dar, dass Projekte immernoch nicht mit entsprechenden Modulen verknüpft werden können. Somit sind die beiden Microservices für Module und Projekte völlig entkoppelt und erfüllen ihren Zweck nur sehr unvollständig. Dennoch halten wir den von uns erzeugten Zustand für einen riesigen Fortschritt, insbesondere in den Punkten Wartbarkeit und Veränderbarkeit, nicht zuletzt, da wir beim Redesign großen Wert auf die korrekte Verwendung von Domain-Driven design gelegt haben.

Frontend

Das Frontend zeigt im jetzigen Zustand alle nötigen Informationen und Inhalte aus dem Backend an. Zusätzlich können Informationen im Backend gespeichert werden, wie beispielsweise durch die Erstellung eines Projekts im Frontend. Für die Zukunft kann zunächst der Footer implementiert werden, da die Komponente dafür momentan leer ist. Falls die beiden Attribute studyDirection und parentStudyCourse (Studiengang-Ressource/Entität) im Backend vollständig funktionieren, könnten die Informationen sinngemäß im Frontend angezeigt oder bei der Projekterstellung abgefragt werden. Grundsätzlich müssen die Projekte vollständig noch mit den Studiengängen im Frontend als auch im Backend in Verbindung gebracht werden. Vorteilhaft wäre es auch eine eigene Modul-Komponente zu Erstellen mit einer Modulliste und Moduldetailansicht. Damit könnten dann die einzelnen Module eines Studiengangs auf deren Moduldetailansicht verlinkt werden. Schlussendlich sollte das Frontend bei jeder zukünftigen Backendveränderung sinnvoll mit angepasst werden.

Offene Probleme

Bei der Frontendentwicklung gab es einige Probleme, die noch offen bzw. noch nicht behoben worden sind. Zu diesen Problemen zählen:

  • Bei der jetzigen ausgewählten Angular und Angular 4 HAL Kombination tretten keine Schwierigkeiten auf. Es sollte jedoch überprüft werden, ob die neuste Angular 4 HAL Version mit der neusten Angular Version funktioniert, da es bei den Versionen 7.7.0 (Angular 4 HAL) und 7.2.0+ (Angular) zu einer Exception kam (Types have separate declarations of a private property 'handler').
  • Momentan wird die Sidebar-Komponente (Header), statt der App-Komponenten von Angular, als die Hauptkomponente verwendet. Die App-Komponente verweist lediglich auf den Header. In der Header-Komponente werden die Inhalte aller anderen Komponenten geladen. Das Ganze liegt an der Implementierungsart des Sidebars. Ziel war es den Sidebar bei der Öffnung über alle anderen Komponenten zu Ordnen. Das heißt, dass bei der Öffnung des Sidebars, nur der Sidebar interagierbar sein sollte. Das Problem lag darin, dass auch bei der Schließung des Sidebars, die Inhalte anderer Komponenten nicht interagierbar waren, weil die Header-Komponente im Frontend darüber lag. Wir haben das Ganze behoben, in dem wir, wie bereits oben erwähnt, die Header-Komponente als Hauptkomponente verwendet haben und alle anderen Komponenten als Kinder zugeordnet haben. Sinnvoll wäre es, eine elegantere Implementierungsart zu finden.
  • Nach der Erstellung eines Projekts im Frontend wird die komplette Projektlistenseite neugeladen, damit das erstellte Projekt in der Projektliste auch angezeigt wird. Eleganter wäre es, die Projektlliste dynamisch zu aktualisieren.
  • Die getRelationArray() fügt einen Slash bei der zusätzlichen Eingabe von HAL-Optionen (bspw. ASC Sortierung nach Bezeichnung) in der URI hinzu. Dadurch entsteht in der URI ein Doppeltslash, der die gesamte URI verfälscht. Es sollte überprüft werden, ob die neuste Angular 4 HAL Version den Fehler behoben hat.