Beginnen wir mit einer Beichte: Im letzten Sprint haben wir unseren Blog-Artikel nicht verfasst und ziehen ihn heute – eine Woche später – nach :P.
Was haben wir im letzten Sprint gemacht? Wir waren Hansdampf in allen Gassen. Wir haben am Backend, Frontend, an der Qualität, Developer-Support und Scrum gearbeitet. Grundsätzlich waren es eher mehr, aber dafür kleinere Aufgaben. In den folgenden Zeilen gibt es die Details.
Fangen wir mit dem Backend an
Schon über mehrere Sprints hinweg arbeiteten wir an einem kleinen Framework, um Content für die App aufzubauen. Oft war der Content zu wechselhaft, um bspw. ein spez. Feature zu testen. Ab sofort hat das ein Ende. Unsere Model-Builder haben den vorerst letzten Schliff bekommen und werden seither zum Aufbau eines Standardprojektes beim Starten des Webservers eingesetzt. Ob User mit Achievements oder Teams mit User inkl. Achievements. Nach jedem Start finden wir die selbe Konstellation des Projektes vor. Sofern erforderlich können wir dieses Projekt beliebig erweitern oder durch ein komplett anders zusammengestelltes Projekt ersetzen.
Beim Testen sind wir – nicht zum ersten Mal – einem Fehler beim Starten des Webservers nachgegangen, der seinen Ursprung im fehlenden Keycloak-Server (Id-Provider) hat. Nachdem er uns schon häufiger etwas Zeit gekostet hat, haben wir unser Backend nun derart erweitert und prüfen bei jedem Start, ob Keycloak erreichbar ist. Wenn nicht, dann wird nun eine sprechende Meldung ausgegeben. Das sollte uns zukünftig Zeit und unnötige Fehleranalyse sparen.
Frontend
Im Frontend haben wir etwas ausgemistet. Eine unserer Fleißarbeiten war es alle Texte in die dafür vorgesehene Text-Datei auszulagern. Im Großen und Ganzen nutzen wir diese Datei auch. Aber hier und da gab es noch Probleme. Eine Schwierigkeit ist vor allem der Zugriff auf die Texte im Bereich „Resources“, denn dafür wird ein Context-Objekt benötigt, das nicht immer zur Verfügung steht. Bereits in der Vergangenheit haben wir dafür einen TextService eingeführt. Statt beim Context den Text zu requesten, kann die gleiche Anfrage über den TextService erfolgen. Nun auch durch Mitgabe von Platzhalterwerten. Indirekt haben wir so zwar immer noch eine Abhängigkeit zum Context aber könnten sie auflösen, sofern wir dafür eine geeignete Lösung finden oder die Notwendigkeit bestünde. Aktuelle geht es auch so.
Eine weitere Aufräumarbeit war die Standardisierung der Model-Klassen. Jede Model-Klasse implementiert nun das Interface IHasId und ist somit in der Lage seine Id zur Verfügung zu stellen.
Den letzten größeren Zeitblock haben wir Unittests gewidmet. Bisher haben wir davon nur wenige geschrieben und dieses Mal wenigstens ein paar nachgezogen und uns noch etwas mehr mit Mockito vertraut gemacht bzw. dran gewöhnt.
Das Thema Scrum
Schon seit längerem ist uns aufgefallen, wie unser Backlog wächst und wächst und allmählich die Übersicht verloren ging. Dem haben wir einen Riegel vorgeschoben und uns jedes Backlog Item angeschaut, Duplikate gelöscht, fehlende Details ergänzt oder doppelte konsolidiert, überflüssige Kategorien ins Jenseits befördert und größere, offene Themen in einen Bereich „Open Epics“ verschoben.
Das war der Rückblick des letzten Sprints. Die Inhalte des Folgenden sind: geheim!