Fazit der Implementierung des MVPs - IU-Internationale-Hochschule-Augsburg/fallstudie-thema-2-online-umfragesystem GitHub Wiki
Stand 03. Mai 2024:
Im zweiten Sprint unseres Projekts, der darauf abzielte, den Minimal Viable Product (MVP) weitgehend zu implementieren, haben wir bedeutende Fortschritte erzielt. Innerhalb von zwei Wochen konnten wir erfolgreich 30 Issues abschließen. Diese beinhalteten neben kleineren Aufgaben wie dem Erstellen erster User Stories und weiteren Verwaltungsaufgaben auch die Entwicklung wichtiger Funktionen.
Wir haben erfolgreich die Datenbankstruktur aufgebaut und die grundlegenden Ansichten für Umfragen und Fragen implementiert. Zusätzlich konnten wir die Funktionen zum Hinzufügen, Bearbeiten und Löschen von Umfragen sowie das Anzeigen und Löschen von Fragen innerhalb einer Umfrage umsetzen. Timon hat bereits eine erste Version des Frage-hinzufügen-Screens erstellt, wobei wir bereits zu diesem Zeitpunkt erkannten, dass die Implementierung der verschiedenen Fragetypen eine Herausforderung darstellen wird. Aus diesem Grund wurde beschlossen, diese Funktionalität auf den dritten Sprint zu verschieben.
Des Weiteren haben wir ein Literaturverzeichnis im Wiki und als README.md im Projekt hinzugefügt. Ein gemeinsames Farbschema wurde festgelegt und ein Figma-Modell in Form eines Click-Dummys erstellt. Die Requirements wurden abschließend formuliert und dokumentiert.
Ein bedeutender Meilenstein war die Einrichtung von Wiki-Seiten, wodurch wir bereits ein solides Nachschlagewerk aufgebaut haben, das wir kontinuierlich erweitern möchten.
Trotz einiger Herausforderungen bei der Implementierung des Frage-hinzufügen-Screens konnten uns keine ernsthaften Hindernisse aufhalten. Wir sind stolz auf unseren bisherigen Fortschritt und haben in den vergangenen Wochen viel dazugelernt. Der Blick auf die ersten Einträge in der Datenbank und das schrittweise Einfließen von Funktionen in den MVP haben uns zusätzlich motiviert.
Als nächste Schritte planen wir, uns mit dem Thema Testing zu befassen, den Frage-hinzufügen Screen fertig zu implementieren und die Ansicht der Fragebögen für die Probanden zu entwickeln. Sobald der MVP halbwegs fertig ist, streben wir an, ihn in den Hauptzweig zu integrieren.
Stand 12. Mai 2024:
In den vergangenen Tagen haben wir weiterhin intensiv an der Entwicklung unseres Umfrageverwaltungssystems gearbeitet. Timon hat sich hauptsächlich darauf konzentriert, eine zweite Version des Frage-hinzufügen-Screens zu erstellen. Dabei wurde deutlich, dass die Implementierung dieses Screens komplexer ist als ursprünglich angenommen.
Parallel dazu habe ich mich damit beschäftigt, die Klasse SurveyController aufzuräumen, um die Lesbarkeit des Codes zu verbessern. Dies war notwendig, da im Laufe der Entwicklung eine Vielzahl von Methoden hinzugekommen war.
Ein weiterer wichtiger Schritt war die intensive Auseinandersetzung mit dem Thema Testing. Wir haben bereits erste Tests mit Spring Boot und JUnit durchgeführt und evaluieren deren Einsatzmöglichkeiten für unser Projekt. Leon wird sich zukünftig verstärkt diesem Thema widmen, da er im Testing bereits Erfahrung gesammelt hat.
Zusätzlich haben wir unseren ASCII-Banner als PNG-Datei für die zukünftige Login-Seite erzeugt, erste Einschränkungen und Begrenzungen für das System besprochen und implementiert sowie eine Error-Page erstellt, die sich derzeit in der Review-Phase befindet.
Nachdem Timon den Screen in HTML fertiggestellt hatte, habe ich begonnen, diesen mit dem Backend zu verknüpfen. Dabei ist es mir gelungen, die Attribute questionText, questionType und questionId bereits in die Datenbank zu schreiben. Allerdings stieß ich auf Schwierigkeiten beim Schreiben der Antwortoptionen in die Datenbank. Wir mussten feststellen, dass die Verwendung von th:each in diesem Kontext nur für bereits gefüllte Arrays möglich ist, was zu einer Umstrukturierung unserer Pläne führte.
Als Lösungsidee wird Timon nun einen zusätzlichen Screen entwickeln, über den die Antwortoptionen schrittweise hinzugefügt werden können. Sobald dieser fertig ist, werde ich erneut versuchen, die Antwortoptionen erfolgreich in die Datenbank zu schreiben.
Timons schöne Lösungsidee:
Da ich Bedenken habe, dass ich bei Timons Lösungsidee auf genau das gleiche Problem stoßen werde (wie oben beschrieben), wird vermutlich zuerst eine einfachere Lösungsidee umgesetzt. Nämlich einfach einen simplen Screen mit der Beschriftung "Antwortoption x" und dann ein Textfeld, in dem eine Antwortoption hineingeschrieben werden kann. Um eine einzelne Antwortoption hinzufügen zu können, muss der Nutzer also auf den "+ Antwort"-Button klicken und in einem extra Screen eine Antwortoption eingeben sowie diese speichern. Ich finde die Angabe für die Anzahl der Antwortoptionen ein nettes Feature. Ich würde das gerne als Inspiration nehmen und einen unsichtbaren Zähler hinzufügen, der dem Nutzer im Antwort-hinzufügen Screen sagt, bei der wievielten Antwortoption er ist.
Stand 31. Mai 2024:
Abschluss des 3. Sprints und Beginn des 4. Sprints
Am 17.05.2024 endete der dritte Sprint. Dieser dauerte zwei Wochen und wir stießen auf einige Herausforderungen bei der Umsetzung der addQuestion-Seite. Das ist jedoch normal im Entwicklungsprozess. Zu Beginn des vierten Sprints entwickelten wir eine neue, einfachere Lösung für die addQuestion.html-Seite. Anstatt die Fragen und Antwortoptionen auf mehreren Seiten zu verteilen, entschieden wir uns, alles auf einem einzigen Bildschirm einzugeben. Diese Änderung machte die Seite zwar statischer, aber auch benutzerfreundlicher, da der Nutzer weniger durch verschiedene Seiten klicken muss. Die Umsetzung dieses neuen Designs verlief sehr schnell und wir konnten verlorene Zeit teilweise aufholen.
Zusammenarbeit und Fehlerbehebung
Gemeinsam mit Jacky aus Team 2 definierten wir die Grenzen und Einschränkungen unserer Anwendung und setzten diese um. Zudem konnten wir zwei langanhaltende Bugs beheben: das Problem mit der verlorenen surveyID und das nicht angezeigte Start- und Enddatum im surveySettings.html-Screen. Diese Fixes erhöhten die Interaktivität und Dynamik unseres MVPs erheblich. Wir erstellten eine Fehlerseite und setzten erfolgreich den questionSettings-Screen um, der auf addQuestion basiert. Die Löschen- und Bearbeiten-Buttons wurden ebenfalls mit den entsprechenden Screens verknüpft. Zudem fügte wir dem questionsView-Screen einen Zurück-Button hinzu, um das einfache Wechseln zwischen den Screens zu ermöglichen. Nach der Behebung weiterer Bugs und der Implementierung der Regel, dass das Enddatum einer Umfrage nicht vor dem Startdatum liegen darf, stellten wir die erste Version der Forschenden-Ansicht fertig und begannen mit der Probanden-Ansicht.
Umsetzung der Probanden-Ansicht
Die Umsetzung der Probanden-Ansicht verlief erstaunlich schnell. Zunächst erstellten wir drei separate Screens für jeden Fragetyp. Diese verknüpften wir einzeln mit Thymeleaf und Java. Anschließend kombinierten wir sie zu einem einzigen Screen und blendeten die entsprechenden Elemente je nach QuestionType dynamisch mit JavaScript ein. Auch die Antwortoptionen werden dynamisch eingeblendet, abhängig davon, ob sie vom Forschenden befüllt wurden oder nicht. Um Sitzungen zu verwalten, fügten wir eine UserID hinzu. Danach kümmerten wir uns darum, dass man sich vollständig durch die Fragebögen klicken kann. Dafür implementierten wir einen Zähler currentQuestion, der bei jedem Klick auf "Weiter" erhöht wird. So weiß das System immer, welche Frage als Nächstes kommt und welche gerade dran ist. Am Ende der Umfrage wird ein Abschluss-Screen angezeigt. Parallel dazu fügten wir im SurveyView-Screen einen Button zum Teilen eines Umfragelinks hinzu. Beim Klicken auf diesen Button erscheint ein entsprechender Link mit der surveyId. Nach der Fertigstellung dieser Features begaben wir uns auf Bug-Suche und behoben die ersten Fehler.
Testing und nächste Schritte
Nachdem wir die größten Aufgaben erledigt hatten, begann Leon mit dem ersten großen Testdurchlauf. Die Ergebnisse dieses Testings werden zu Beginn der nächsten Woche besprochen.