Konzept - RobinNunkesser/isdcompanion-concept GitHub Wiki
Beispielkonzept
Im Folgenden wird ein Konzept für eine App für Hochschulen und Universitöten beschrieben.
Projektvision
Eine Hochschule lebt von ihren Studierenden und Mitarbeitern. Gerade am Anfang ist es aber noch schwierig sich zu orientieren. Neben dem Kennenlernen der neuen Abläufe gibt es später auch Bedarf für die Unterstützung im Hochschulalltag. Eine App für mobile Systeme ist als unterstützendes Element zentral. Sie ist immer zur Hand und kann auch sehr gut kontextuelle Hilfe z.B. abhängig vom Standort bieten.
Die Hochschulapp ermöglicht es Studierenden und Dozenten, sowie Mitarbeitern im Wissenschaftsbetrieb und in der Verwaltung, die notwendigen Informationen für einen erfolgreichen Start zu beziehen. Auch im Alltag können hilfreiche Funktionen unterstützen.
Die App muss für die gängigen Plattformen verfügbar sein, da die Zielpersonen typischerweise über heterogene mobile Systeme verfügen.
Anforderungen
Liste der Anforderungsquellen, bestehend aus relevanten Stakeholdern (SH), externen Systemen (ES) und Dokumenten (DOC).
ID | Name | Beschreibung |
---|---|---|
SH01 | Prof. Dr. Robin Nunkesser | Professor für Mobile Computing |
SH02 | Auditorium SoSe 2019 | Studierende im SoSe 2019 |
ES01 | FHApp der FH Dortmund | Mobile App (Nicht mehr verfügbar) |
ES02 | HSHL Mobile | Mobile App (Nicht mehr verfügbar) |
DOC01 | Projekt-Wiki StudyPlanner | Wiki |
Randbedingungen
Die App soll für Android und iOS erstellt werden. Es sollen die endemischen SDKs genutzt werden. Ergänzend wird die App mittels Xamarin und Flutter umgesetzt.
Kontext
Für den Kontext sind zwei Alternativen möglich. In jedem Fall soll in der App ein Mensaplan angezeigt werden, wofür der Zugriff auf ein externes Backend nötig ist. Daten wie eine Professorenliste oder ein Stundenplan ändern sich vergleichsweise selten und könnten mit Appupdates aktualisiert werden.
Wenn mehr Daten als nur der Mensaplan dynamisch integriert werden sollen, ist der Aufbau eines eigenen Backends sinnvoll.
Akteure
ID | Name | Beschreibung |
---|---|---|
AC01 | Studierender | Studierende der Hochschule |
AC02 | Dozent | Dozenten der Hochschule |
AC03 | Mitarbeiter | Mitarbeiter der Hochschule |
AC04 | Redakteur | Redakteur der Hochschule |
Bestehende Systeme
ID | Name | Beschreibung |
---|---|---|
SYS03 | Mensa Server | Server des Mensadienstleisters |
SYS05 | Web Server | Server für die Internetpräsenz der Hochschule |
SYS06 | DB Server | Datenbank der Hochschule |
Geplante Systeme
ID | Name | Beschreibung |
---|---|---|
SYS01 | iOS App | App für iOS |
SYS02 | Android App | App für Android |
SYS04 | Mobile Backend Server | Server für die zu erstellenden Apps |
Domäne
Dynamik
Für User Stories zur erstellenden App werden die folgenden Personas verwendet:
ID | Name | Alter | Kategorie |
---|---|---|---|
PER09 | Nadine | 20 | Primärpersona |
PER08 | Christian | 25 | Komplementärpersona |
PER10 | Ralph | 42 | Sekundärpersona |
Die Personas PER01-PER07 sind für die zu erstellende App Non-Personas.
Übersicht Anwendungsfälle
UC01 Stundenplan abrufen (Quellen: DOC01, SH02; Akteure: AC01, AC02)
Nutzer möchte einen Stundenplan abrufen.
Vorbedingung
Keine
Standardablauf
Nachbedingungen
Keine
US01-01 Hilfe bei der Terminorganisation
Christian ist letztes Semester häufig zu spät zu den Vorlesungen gekommen. Für seine privaten Termine nutzt er häufig den Kalender seines Smartphones, für die Veranstaltungen an der Hochschule ist ihm das aber zu umständlich. Er wünscht sich eine App, die die Veranstaltungstermine direkt mit dem Kalender des Smartphones synchronisieren kann.
US01-02 Dynamische Anpassung von Start- und Endzeiten
Ralph hält nichts von der akademischen Viertelstunde. Lieber passt er den Vorlesungsbeginn auf seine anderen Termine an. Manche Veranstaltungen beginnen pünktlich, manche 15, manche 30 Minuten nach Stundenplaneintrag. Er wünscht sich, dass diese Abweichungen vom offiziellen Stundenplan über eine App direkt bei den Studierenden ankommen.
UC02 Veranstaltung exportieren (Quellen: SH01; Akteure: AC01, AC02)
Nutzer möchte eine Veranstaltung in den persönlichen Kalender exportieren.
Vorbedingung
UC01
Standardablauf
Nachbedingungen
Veranstaltung ist im persönlichen Kalender eingetragen.
US02-01 Nutzung eines eigenen Kalenders
Ralph hält Vorlesungen in verschiedenen Semstern und benötigt daher einen individuellen Stundenplan. Zu Beginn des Semester exportiert er sich daher all seine Veranstaltungen aus den einzelnen Stundenplänen in seinen persönlichen Kalender.
UC03 Mensaplan abrufen (Quellen: SH01; Akteure: AC01, AC02, AC03)
Nutzer möchte den Mensaplan für den aktuellen Tag abrufen
Vorbedingung
Keine
Standardablauf
Alternativer Ablauf
Nachbedingungen
Keine
US03-01 Schnelles Essen zwischen zwei Vorlesungen
Ralph hat nur eine kurze Pause zwischen zwei Vorlesungen. Er hat wenig Zeit für die Essensentscheidung oder ggfs. noch woanders zu essen falls ihm die Gerichte nicht zusagen. Über die App kann er auf dem Weg schnell den Mensaplan abrufen und bereits eine Entscheidung treffen.
US03-02 Filterung des Essensangebots nach Kriterien
Christian hält momentan eine spezielle Diät ein. Außerdem hat er eine Unverträglichkeit. Da diese Filter fest in der App hinterlegt sind, kann er sehr schnell schauen, ob heute ein passendes Gericht für ihn in der Mensa verfügbar ist.
UC04 Quizfrage ansehen (Quellen: SH01; Akteure: AC01)
Nutzer möchte einen Quizfrage sehen.
Vorbedingungen
Keine
Standardablauf
Nachbedingungen
Keine
Alternativer Ablauf
US04-01 Spielerisches Lernen
Nadine beantwortet privat gerne Quizfragen. In der App ihrer Hochschule ist ein Quiz zu Lerninhalten integriert, was sie direkt mal ausprobiert. Schon bei der ersten Frage ist sie sich allerdings unsicher und verliert ein bisschen die Lust am Quiz. Da entdeckt sie die Möglichkeit die Frage zu überspringen und geht zur nächsten Frage, die sie direkt beantworten kann.
UC05 Quizfrage beantworten (Quellen: SH01; Akteure: AC01)
Der Nutzer beantwortet die Frage und bekommt Feedback.
Vorbedingungen
UC04
Standardablauf
Nachbedingungen
Die Beantwortung der Frage wird für die Statistik gespeichert.
US05-01 Beantworten von Fragen
Nadine ist sich sicher die Antwort auf die angezeigte Frage zu wissen. Sie beantwortet die Quizfrage und freut sich über die Rückmeldung, dass sie richtig lag.
UC06 Statistik ansehen (Quellen: SH01; Akteure: AC01)
Der Nutzer beantwortet die Frage und bekommt Feedback.
Vorbedingungen
Keine
Standardablauf
Nachbedingungen
Keine
US06-01 Statistik ansehen
Nach einigen beantworteten und übersprungenen Fragen interessiert Nadine sich dafür, wie sie sich bisher geschlagen hat. Sie schaut die Statistik an und stellt erfreut fest, dass sie einen Großteil der Fragen richtig beantwortet hat. Die übersprungenen Fragen wurden separat gezählt.
UC07 Informationen über Professoren abrufen (Quellen: SH01; Akteure: AC01)
Nutzer möchte Basisinformationen über Professoren abrufen.
Vorbedingung
Keine
Standardablauf
Nachbedingungen
Keine
US07-01 E-Mail an Professor
Nicole hat ein Anliegen, das sie gerne per E-Mail mit Ralph besprechen möchte. Da sie die E-Mail-Adresse vorher noch nicht benutzt hat und nicht kennt, muss sie diese nachschauen. Dies macht sie über die App.
UC08 Anwendung personalisieren (Quellen: SH01; Akteure: AC01, AC02, AC03)
Nutzer möchte die Anwendung personalisieren.
Vorbedingung
Persistente Einstellungen oder Standardwerte stehen bereit.
Standardablauf
Nachbedingungen
Veränderte Einstellung wird persistiert.
Slices
Jede Einstellung sollte in einem eigenen Slice umgesetzt werden:
- UCS08-01 Unverträglichkeiten erfassen
- UCS08-02 Semester einstellen
- UCS08-03 Statusgruppe einstellen
US08-01 Filterung des Essensangebots nach Kriterien
Christian hält momentan eine spezielle Diät ein. Außerdem hat er eine Unverträglichkeit. Damit nur für ihn passende Gerichte und die korrekten Preise angezeigt werden, erfasst er seine Unverträglichkeiten und seine Statusgruppe.
US08-02 Anzeige des passenden Stundenplans
Nadine hat den größten Teil ihres Studiums bisher gemäß vorgschlagenem Stundenplan absolviert. Auch dieses Semester möchte sie dies fortführen und stellt daher das passende Semester ein.
Qualitätsanforderungen
REQ01 Erreichbarkeit (Quellen: SH01, Priorität: Mandatory)
Auch bei Nichterreichbarkeit von SYS05 soll die App weiter nutzbar sein.
REQ02 Aussehen und Handhabung (Quellen: SH01, Priorität: Mandatory)
Die App soll einfach zu nutzen sein und plattformtypisch aussehen.
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 SYS03.
Daten | Quelle | Kommunikation | Datenformat | Details |
---|---|---|---|---|
Mensaplan | SYS03 | 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.
Detaillierte Abläufe
TODO ### Interaktionsdesign
Benutzerschnittstellendesign
Übersicht
ID | Name |
---|---|
SCR01 | Meine Hochschule |
SCR02 | Stundenplan |
SCR03 | Mensaplan |
SCR04 | Nachrichten |
SCR05 | Räume |
SCR06 | Professoren |
SCR07 | Aktuelles |
SCR08 | Gruppe anlegen |
SCR09 | Einstellungen |
SCR10 | Raumansicht |
SCR11 | Webanzeige |
SCR12 | Nachrichten |
SCR13 | Filter |
Visuelles Design
TODO ### Glossar / Abkürzungen
Begriff / Abkürzung | Definition | Bemerkung |
---|---|---|
Dozent | Person, die an Hochschulen oder Bildungsinstituten unterrichtet bzw. lehrt | |
Redakteur | Person, die Texte ändert oder erstellt | Hier vor allem die Person, die Neuigkeiten einpflegt |
halal | nach islamischem Glauben erlaubt | hier bezogen auf erlaubte Nahrungsmittel |
[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/