Umsetzungskonzeption - RobinNunkesser/isdcompanion-concept GitHub Wiki

Umsetzungskonzeption

Im Folgenden wird festgelegt, wie die erhobenen Anforderungen umgesezt werden sollen.

Entwurfsentscheidungen

ADR01 Verzicht auf eigenes Backend

Kontext

Es ist möglich die App mit oder ohne eigenes Backend umzusetzen.

Entscheidungsbeschreibung

In der ersten Version der App wird auf ein eigenes Backend verzichtet.

Konsequenzen

Ein Verzicht auf ein eigenes Backend bedeutet, dass nur die Daten dynamisch geladen werden können, die bereits in externen Backends bereit stehen. Für andere Datenaktualisierungen ist ein Update der App nötig.

Status

Akzeptiert

ADR02 Nutzung der Hexagonalen Architektur

Kontext

Das Projekt soll in möglichst sauberer Arbeitsteilung umgesetzt werden. Perspektivisch können verschiedene Backendtechnologien in verschiedenen Umgebungen zum Einsatz kommen.

Entscheidungsbeschreibung

Als Makroarchitektur des Projekts wird die Hexagonale Architektur eingesetzt.

Konsequenzen

Die saubere Entkopplung über Ports und Adapter erleichtert die Zusammenarbeit.

Status

Akzeptiert

ADR03 Essensfilter in Einstellungen

Kontext

Das Essensangebot der Mensa muss an sinnvoller Stelle nach Allergenen und Zusatzstoffen gefiltert werden können.

Entscheidungsbeschreibung

Die Filter für Mensagerichte werden in den Einstellungen vorgenommen. Im Normalfall sind Allergien und der Wunsch nach dem Ausschluss von Zusatzstoffen dauerhafte Filter. Daher sind sie in den Einstellungen am besten aufgehoben.

Konsequenzen

Auch bei jedem Neustart der App sind die Filtereinstellungen aktiv.

Status

Akzeptiert

ADR04 Stundenpläne nach Semester

Kontext

Über die App lassen sich Stundenpläne für das Studium einsehen.

Entscheidungsbeschreibung

Es wird jeweils der Stundenplan für das in den Einstellungen gewählte Semester angezeigt.

Konsequenzen

Studierende, die nicht mehr im ,,Plan’’ sind, müssen ggfs. häufiger in den Einstellungen das Semester wechseln.

Status

Akzeptiert

Systembeschreibung

Name und Organisationseinheit

  • ISD Companion (de.hshl.isd)

Betriebssysteme

  • Android (endemisch, Xamarin und Flutter) ab API 23
  • iOS (endemisch, Xamarin und Flutter) ab Version 13

Endgeräteklassen

  • Nur Hochformat
  • Keine Optimierung für iPad
  • Keine Optimierung für hohe Displaygrößen auf Android (z.B. Breiten ab 900dp)

Umgebungen

  • Prototyp (Dummydaten)
  • Produktivumgebung

Lokalisierungen

  • Deutsch
  • Englisch

Fremdsoftware

Folgende Software von Drittherstellern soll eingesetzt werden:

iOS
  • Alamofire[1] (Copyright)
  • url-image[2] (MIT)
Android
  • Open Source Notices[3] (com.google.android.gms:play-services-oss-licenses; Apache License 2.0)
  • Coil[4] (io.coil-kt:coil-compose; Apache License 2.0)
  • Retrofit[5] (com.squareup.retrofit2:retrofit; Apache License 2.0)
  • Retrofit Gson Converter[6] (com.squareup.retrofit2:converter-gson; Apache License 2.0) \end{itemize}
Xamarin
  • System.Net.Http[7] (Microsoft)
  • System.Text.Json[8] (MIT)
  • System.Net.Http.Json[9] (MIT)
Flutter
  • http[10] (BSD)

Interne und externe Schnittstellen

Die App bezieht externe Daten von EXT01.

Daten Quelle Kommunikation Datenformat Details
Mensaplan EXT01 HTTP (REST) JSON https://openmensa.org

Bausteinsicht

Der konkrete Aufbau ergibt sich durch die Anwendung der Hexagonalen Architektur. Für ausgewählte Bereiche ist hier ergänzend eine Bausteinsicht angegeben. Das integrierte Quiz kann in einer ersten Version mit statisch hinterlegten Fragen umgesetzt werden. Die konkrete Umsetzung sollte aber natütlich trotzdem zukünftig einfach ergänzt werden können.

Die Anzeige von Mensaessen hängt von externen Daten ab, hier sind wir also auf jeden Fall davon abhängig, ein Repository zu nutzen.

Quiz

Detaillierte Abläufe

Interaktionsdesign

Interaktionsdesign

Benutzerschnittstellendesign

SCR01 Stundenplan

Erreichbar von

Tabs

Navigiermöglichkeit zu

Tabs

Funktion / Anmerkungen

Darstellung des Stundenplans der aktuellen Woche.

Textdesign

Schlüssel de en
title.schedule Stundenplan Schedule

SCR02 Mensaplan

Erreichbar von

Tabs

Navigiermöglichkeit zu

Tabs

Funktion / Anmerkungen

Darstellung des Mensaplans des aktuellen Tages. Links kann ein Bild des Essens integriert werden, rechts Piktogramme z.B. für vegetarisch, vegan, halal, etc. 

Fehlersituationen

Fehlersituation Ergebnis
Kein Netzzugang Anzeige eines entsprechenden Alerts

Textdesign

Schlüssel de en
title.mensa Mensa Mensa
section.maindishes Essen Dishes
section.soups Suppen Soups
section.sidedishes Beilagen Side Dishes
section.desserts Desserts Desserts

SCR03 Quiz

Erreichbar von

Tabs

Navigiermöglichkeit zu

Tabs, SCR06

Funktion / Anmerkungen

Zentrale Darstellung der aktuellen Quizfrage. Möglichkeit zur Beantwortung, zum Überspringen oder zum Statistikaufruf.

Anmerkungen zu GUI Elementen

Element Anmerkung
„i”-Button Tap wechselt zu SCR06
Falsch/Wahr-Button Dient der Beantwortung einer Quizfrage
Überspringen-Button Dient dem Überspringen einer Quizfrage

Textdesign

Schlüssel de en
button.answer.false Falsch Wrong
button.answer.true Wahr Right
button.answer.skip Überspringen Skip

SCR04 Professoren

Erreichbar von

Tabs

Navigiermöglichkeit zu

Tabs, SCR07

Funktion / Anmerkungen

Anzeige einer Liste von Professoren.

Anmerkungen zu GUI Elementen

Element Anmerkung
Suchfeld Zeigt Professoren, die auf den Suchbegriff passen. Ein Tap wechselt zu SCR07
Listenelement Öfnet Webseite in SCR07

Textdesign

Schlüssel de en
title.profs Professoren Profs

SCR05 Einstellungen

Erreichbar von

Tabs

Navigiermöglichkeit zu

Tabs, SCR08, SCR09

Funktion / Anmerkungen

Nutzerspezifische Einstellungen. Die Umsetzung erfolgt betriebssystemspezifisch. Bei Android als Tab, bei iOS nach Möglichkeit in der Settings App. Einstellmöglichkeiten für

  • Statusgruppe (für die korrekte Preisanzeige im Mensaplan)
  • Allergen- und Zusatzstofffilter (für eine Filterung im Mensaplan)
  • Studiengang (für die korrekte Anzeige des Stundenplans)

Die konkreten Einstellmöglichkeiten hängen von der Hochschule ab, für die die App erstellt wird.

Anmerkungen zu GUI Elementen

Element Anmerkung
Statusgruppe Ermöglicht auf SCR05 eine Auswahl der Statusgruppe
Allergene Ermöglicht auf SCR08 eine Auswahl von Allergenen
Zusatzstoffe Ermöglicht auf SCR09 eine Auswahl von Zusatzstoffen
Studiengang Ermöglicht auf SCR05 eine Auswahl des Studiengangs

Textdesign

Schlüssel de en
label.status Statusgruppe Status
label.allergens Allergene Allergens
label.additives Zusatzstoffe Additives
label.course Studiengang Course

SCR06 Statistik

Erreichbar von

SCR03

Navigiermöglichkeit zu

Tabs

Funktion / Anmerkungen

Darstellung von Statistiken.

Textdesign

Schlüssel de en
label.sum Bearbeitete Fragen Total Questions
label.correct Richtig beantwortet Answered correctly
label.wrong Falsch beantwortet Answered wronh
label.skipped Übersprungen Skipped

SCR07 Webanzeige

Erreichbar von

SCR04

Navigiermöglichkeit zu

Tabs

Funktion / Anmerkungen

Einfache vollflächige Anzeige von Webseiten

SCR08/SCR09 Allergene / Zusatzstoffe

Erreichbar von

SCR05

Navigiermöglichkeit zu

Tabs

Funktion / Anmerkungen

Konkreter Inhalt abhängig von der Mensaschnittstelle.

Visuelles Design

Für das visuelle Design werden die Standarddesigns der Plattformen genutzt. Die Abbildung zeigt ausgewählte Beispiele.

[1] https://github.com/Alamofire/Alamofire

[2] https://github.com/dmytro-anokhin/url-image

[3] https://developers.google.com/android/guides/opensource

[4] https://coil-kt.github.io/coil

[5] http://square.github.io/retrofit

[6] https://github.com/square/retrofit/tree/master/retrofit-converters/gson

[7] https://www.nuget.org/packages/System.Net.Http/

[8] https://www.nuget.org/packages/System.Text.Json/

[9] https://www.nuget.org/packages/System.Net.Http.Json/

[10] https://pub.dartlang.org/packages/http