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.
Detaillierte Abläufe
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/