Adventure Cloud Semesterarbeit - HSR Hochschule für Technik Rapperswil Abteilung für Informatik - Institutional Repository

 
WEITER LESEN
Adventure Cloud Semesterarbeit - HSR Hochschule für Technik Rapperswil Abteilung für Informatik - Institutional Repository
Semesterarbeit

                             Adventure Cloud

                           HSR Hochschule für Technik Rapperswil
                                  Abteilung für Informatik

                                    Herbstsemester 2019

Autor      Sharon Moll
Betreuer   Stefan Keller
Adventure Cloud Semesterarbeit - HSR Hochschule für Technik Rapperswil Abteilung für Informatik - Institutional Repository
Term Project

                            Adventure Cloud

                          University of Applied Science Rapperswil
                              Department of Computer Science

                                       Fall Term 2019

Author    Sharon Moll
Advisor   Stefan Keller
Adventure Cloud Semesterarbeit - HSR Hochschule für Technik Rapperswil Abteilung für Informatik - Institutional Repository
Diese Arbeit wurde von Sharon Moll im Herbstsemester 2019
            des Bachelorstudiums an der HSR erarbeitet.

     Als Editor wurde der LaTeX-Editor «Overleaf» mit den Schrift-
         arten «pifont», «mathpazo» und «csquotes» verwendet.

AC                                                                   i
Adventure Cloud Semesterarbeit - HSR Hochschule für Technik Rapperswil Abteilung für Informatik - Institutional Repository
Abstract
Unternehmen, die Freizeitaktivitäten anbieten, stellen ihren Kunden vermehrt GoPro-Kameras zu Verfü-
gung, womit die Spass- und Abenteuererlebnisse digital mit Fotos und Videos festgehalten werden kön-
nen. Auch Fotografen, welche sich im digitalen Zeitalter bewegen, möchten ihren Kunden ihre Medien
digital zu Verfügung stellen. Im Markt gibt es bisher keine Lösung, welche diese Prozesse automatisiert.
Die Adventure Cloud stellt eine Plattform zu Verfügung, welche diesen Anforderungen gerecht wird.
Als demonstrativer Anwendungsfall wird die Skydive-Szene verwendet. Kunden können sich bei einer
Skydive-Base für einen Tandemsprung anmelden. Der Sprung wird dabei mit GoPro-Kameras in Form
eines Videos und Fotos festgehalten. Diese Medien können danach von den Kunden erworben werden.
Dieser Prozess ist heute noch stark manuell geprägt. Die Tandemspringer übertragen die Medien nach
dem Sprung zurück am Boden von den GoPro-Kameras auf einen Computer und von da werden sie auf
einen USB-Stick kopiert, welcher dem Kunde verkauft wird.
Um diesen Prozess zu automatisieren wurde zum einen eine Mobile App entwickelt, welche auf einem
Tablet in der Skydive-Base läuft und zum anderen eine cloudbasierte Backend-Applikation. Die Tandem-
springer fügen ihre GoPro-Kameras im Mobile App hinzu, wofür ein Pairing mit WLAN entwickelt wurde,
das die GoPro-Kameras erkennt und im System hinterlegt.
Der Tandemspringer fotografiert dann mit seiner GoPro-Kamera vor einem Tandemsprung das Anmel-
deformular des Kunden, worauf sich ein QR-Code befindet, der eine eindeutige Kundenummer enthält.
Nach dem Sprung und dessen Aufnahme startet er über einen einzelnen Klick in der Mobile App die
Synchronisation der GoPro-Kamera, worauf sich das Tablet mit dieser über WLAN auf dessen Hotspot-
Netzwerk verbindet und die Medien von dieser herunterlädt.
Das Mobile App erkennt danach die abfotografierten QR-Codes über einen Fotoscan mit Hilfe der Zxing-
Library und gruppiert die chronologisch nachfolgenden Medien in ein Album. Eine GoPro-Kamera kann
vor der Synchronisation auch Medien von mehreren Kunden speichern, die jeweils chronologisch sortiert
durch ein Foto mit QR-Code getrennt sind. Dies resultiert in mehreren Alben. Die erzeugten Alben werden
danach von der Mobile App in die cloudbasierte Backend-Applikation hochgeladen.
Nach rund 240 Arbeitsstunden konnte ein voll funktionsfähiges und stabiles Mobile App inklusive der
Backend-Applikation entwickelt werden, welches auch grafisch durch die Verwendung des Google Mate-
rial Designs glänzt.

AC                                                                                                    ii
Management Summary
Ausgangslage
In der Schweiz gibt es etwa zehn grosse Skydive Vereine, die Tandemsprünge anbieten. Der
Grösste von ihnen befindet sich in Interlaken. Etwa einen Viertel der Einnahmen bei Tandemsprün-
gen erzielen die Vereine durch den Verkauf der Photos und Videos, welche die Springer während
dem Flug aufnehmen und anschliessend den Kunden verkaufen.
Nach einem Tandemsprung – zurück am Boden in der Base – werden die Medien von der Ka-
mera, wobei es sich dabei häufig um GoPro-Modelle handelt, manuell auf einen Computer über-
tragen und von dort auf einen USB Stick. Danach können die USB Sticks mit den gespeicherten
Medien von den Kunden erworben werden.
Dieser, aus technischer Perspektive, eher konservative Ansatz bringt einige Nachteile mit sich,
welche mit adäquaten technischen Massnahmen reduziert werden können:
     • Der Prozess der Medienübertragung nimmt relativ viel Zeit in Anspruch.
     • Mindestens eine Person muss in der Base ständig für diesen Prozess bereitstehen.
     • Medien können nicht mehr erworben werden, nach dem der Kunde den Standort verlässt.
       Umsatzmöglichkeiten gehen verloren.
     • Ein korruptes Dateisystem kann auf einem USB Stick relativ schnell entstehen, wenn dieser
       beispielsweise unordnungsgemäss entfernt wird. Kundenunzufriedenheit ist die Konse-
       quenz davon.
Nicht nur in der exemplarisch verwendeten Skydive Branche lässt sich der Use Case der Medi-
enaufnahme und deren Verkauf finden. Auch Fotografen, Kameras bei Konzerten oder in touris-
tischen Bergregionen sind von manuellen Verkaufprozessen geprägt.
Lediglich eine handvoll Unternehmen widmen sich der Automatisierung und Effizienzsteige-
rung dieser Prozesse. Bestehende Lösungen sind technologisch eingeschränkt und erfordern
dedizierte Hardware und können daher lediglich von spezifischen Kundengruppen eingesetzt
werden.

Ziele, Vorgehen und Technologien
Das finale Ziel dieses Projekts ist es, eine cloudbasierte Webplattform zu entwickeln, welche es
potenziellen Kunden ermöglicht, ihre Medien - beispielsweise von einem Skydive Tandemsprung
- als Preview anzuschauen und anschliessend automatisiert zu erwerben.
Im Kontext der Semesterarbeit Adventure Cloud wird ein App entwickelt, das auf einem Tablet
in der Base läuft, sich mit den GoPro-Kameras der Tandemspringer verbindet, wenn diese am
Boden ankommen, die Medien von diesen herunterlädt und in die Cloud überträgt.
Eine Evaluierung und empirische Analyse der Übertragungsgeschwindigkeit und Verlässlichkeit,
sowie die Frage, ob WLAN oder Bluetooth sich besser für die Übertragung von Medien zwischen
GoPro-Kameras und Tablet eignet, sind ebenso Teil dieser Semesterarbeit.
Während 11 Wochen und insgesamt 240 Arbeitsstunden wurde das Projekt mit einer Vorge-
hensweise, die dem Agile Unified Process angelehnt ist, in einem agilen und iterativen Ansatz
umgesetzt.
Zu Beginn wurde eine Analyse der GoPro-Schnittstellen vorgenommen. Die resultierenden Er-
kenntnisse wurden zur Ansteuerung der GoPro-Kamera genutzt, womit eine empirische Evalua-
tion der Übertragungsgeschwindigkeit und deren Verlässlichkeit erarbeitet werden konnte.

AC                                                                                            iii
Anschliessend wurde mit der Entwicklung des Mobile Apps fortgefahren. Bei diesem handelt es
sich um ein hybrides Web App, das mit Hilfe von Cordova auf native Funktionalitäten der Ziel-
plattform Android zugreift und für diese erstellt wird. Die eingesetzte Technologie ist Javascript
mit VueJS (MVVM) und dem UI-Framework Quasar. Die Cordova-Plugins, die Zugriff auf native
Funktionalitäten ermöglichen, wurden in Java entwickelt.
Nachfolgend wurde die cloudbasierte Backend-Applikation, beziehungsweise deren REST API-
Schnittstelle, in der Sprache C mit dem .NET Core MVC Framework umgesetzt.
Da es im Verlauf des Projekts nicht zu starken und unüberwindbaren Hindernissen gekommen
ist, konnte der gesamte geplante Funktionsumfang implementiert werden.

Ergebnisse
Mit der Semesterarbeit «Adventure Cloud» wurde ein Mobile App, sowie eine Backend-Applikation
entwickelt, die es erlaubt, automatisiert die Medien von GoPro-Kameras abzugreifen, diese an-
hand von einer QR-Scanning Logik zu gruppieren und anschliessend in die Backend-Applikation
hochzuladen.
Das Mobile App umfasst eine Authentifizierung bei der Backend-Applikation über die Verwen-
dung von JSON Web Token, das Pairing von GoPro-Kameras und die Synchronisation mit diesen.
Für das Verbinden der Mobile App mit einer GoPro-Kamera über WLAN, dem Herunterladen
der Medien von GoPro-Kameras und dem QR-Code Scanning wurden eigene Cordova-Plugins
in Java entwickelt oder erweitert.
Das finale Mobile App glänzt durch die Anwendung des Material Design, fängt jegliche Fehler
bei der Synchronisation mit einer GoPro-Kamera und dem Hochladen der Medien in die Cloud
ab und läuft stabil auf dem Android Betriebssystem. Da das Mobile App als hybrides Web-App
entwickelt wurde, kann es auch für andere Zielplattformen gebuildet werden.

AC                                                                                              iv
Abbildung 1: Entwickeltes Mobile App

Ausblick
Die Entwicklungen in dieser Semesterarbeit sind in einem stabilen Gesamtsystem resultiert, was
zeigt, dass das Projekt in Zukunft in einem praktischen Anwendungsfall eingesetzt werden kann.
Mit weiteren Entwicklungen, zum Beispiel in Form einer Bachelorarbeit, kann das Projekt finalisiert-
und ökonomisch interessant werden. Dazu muss eine Webplattform entwickelt werden, wo sich
Kunden von Unternehmenspartnern ihre Medien als Preview anschauen und erwerben können.

AC                                                                                              v
Danksagungen
Ich danke folgenden Personen für Ihre Unterstützung während meiner Semesterarbeit:
     • Stefan Keller
     • Christian Spielmann
     • Jasmin Hürlimann
     • Julian Klaiber
     • Severin Dellsperger
Ich danke Professor Stefan Keller für die gute und konstruktive Unterstützung während meiner
Semesterarbeit ganz herzlich.
Ebenso möchte ich Christian Spielman für die Bereitstellung der benötigten Hardware danken.
Besten Dank geht auch an Jasmin Hürlimann, Julian Klaiber und Severin Dellsperger, die meine
Arbeit gegengelesen haben.

AC                                                                                        vi
Inhaltsverzeichnis

I Technischer Bericht                                                                                                                                                   1

1    Technischer Bericht                                                                                                                                                2
     1.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . .                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
         1.1.1 Problemstellung . . . . . . . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
         1.1.2 Vision . . . . . . . . . . . . . . . . . . . . . .                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
         1.1.3 Ziele . . . . . . . . . . . . . . . . . . . . . . .                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
         1.1.4 Rahmenbedingungen, Umfeld, Definitionen                                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    4
         1.1.5 Ökonomischer Sachverhalt . . . . . . . . . .                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    4
         1.1.6 Vorgehen und Aufbau der Arbeit . . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    4
     1.2 Stand der Technik . . . . . . . . . . . . . . . . . . . .                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
         1.2.1 Aktuelle Situation . . . . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
         1.2.2 Lösungsansätze . . . . . . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
     1.3 Datensicherheit und Datenschutz . . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
         1.3.1 Rechtliche Lage . . . . . . . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
         1.3.2 Datenschutz in der Cloud . . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
         1.3.3 Herausgabe von Daten in Zwischenfällen . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7

2    Resultate                                                                                                                                                          8
     2.1 Zielerreichung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                      .   .   .   .    8
         2.1.1 Analyse der Übertragungsgeschwindigkeit und deren Verlässlichkeit                                                                       .   .   .   .    8
         2.1.2 Mobile App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                          .   .   .   .    8
         2.1.3 Backend-Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                           .   .   .   .   10
         2.1.4 Continuous Integration . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                            .   .   .   .   11
     2.2 Schlussfolgerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                        .   .   .   .   12
         2.2.1 Bewertung der Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . .                                                            .   .   .   .   12
         2.2.2 Risikomanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                            .   .   .   .   14
         2.2.3 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                       .   .   .   .   15
         2.2.4 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                        .   .   .   .   15

II Projektdokumentation                                                                                                                                                16

3    Anforderungsspezifikation                                                                                                                                         17
     3.1 Use Cases . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
         3.1.1 Akteure . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
         3.1.2 Use-Case-Diagramm . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
         3.1.3 Use-Case-Beschreibungen .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
     3.2 Nicht-funktionale Anforderungen           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22

AC                                                                                                                                                                     vii
Inhaltsverzeichnis

          3.2.1   Funktionalität .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    22
          3.2.2   Benutzbarkeit .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    22
          3.2.3   Zuverlässigkeit     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    22
          3.2.4   Effizienz . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    23
          3.2.5   Änderbarkeit .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    23
          3.2.6   Übertragbarkeit     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    23
          3.2.7   Skalierbarkeit .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    23

4    Domainanalyse                                                                                                                                                                     24
     4.1 Domänenmodell . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    24
     4.2 Administrative Konzepte              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    24
         4.2.1 User . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    24
         4.2.2 MediaSet . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    24
         4.2.3 MediaItem . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    25
         4.2.4 PictureItem . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    25
         4.2.5 VideoItem . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    25

5    Architektur und Design Spezifikationen                                                                                                                                            26
     5.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    26
     5.2 Y-Approach . . . . . . . . . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    26
     5.3 Systemübersicht . . . . . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    26
         5.3.1 Webserver . . . . . . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    27
         5.3.2 Database-Server . . . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    27
         5.3.3 Mobile-Client . . . . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    27
         5.3.4 Web-Client . . . . . . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    28
         5.3.5 GoPro-Kamera . . . . . . . . . . . . . . . . .                                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    28
     5.4 Technologien . . . . . . . . . . . . . . . . . . . . . . .                                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    29
     5.5 REST API-Schnittstelle . . . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    29
     5.6 Sequenzdiagramme . . . . . . . . . . . . . . . . . . .                                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    30
         5.6.1 GoPro-Kamera(s) synchronisieren . . . . . .                                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    30
         5.6.2 Medienset unterteilen mit QR-Code Analyse                                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    31
         5.6.3 Medienupload in die Cloud . . . . . . . . . .                                              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    32
         5.6.4 Medienset erstellen . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    33
     5.7 Logische Architektur . . . . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    34
         5.7.1 Client-Side . . . . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    35
         5.7.2 Server-Side . . . . . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    35
         5.7.3 Datenbank . . . . . . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    37
     5.8 Packages und Klassen . . . . . . . . . . . . . . . . .                                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    37
         5.8.1 Packages . . . . . . . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    37
         5.8.2 Klassen . . . . . . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    39
     5.9 Design Android-App . . . . . . . . . . . . . . . . . .                                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    42

6    Umsetzung und Implementation                                                                                                                                                      45
     6.1 Analyse der Übertragungsgeschwindigkeit und deren Verlässlichkeit                                                                            .   .   .   .   .   .   .   .    45
     6.2 Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                              .   .   .   .   .   .   .   .    46
         6.2.1 Authentifizierung und Sicherheit . . . . . . . . . . . . . . . . . .                                                                   .   .   .   .   .   .   .   .    46
         6.2.2 REST API-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . .                                                                 .   .   .   .   .   .   .   .    46
         6.2.3 Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                .   .   .   .   .   .   .   .    46
     6.3 Android-App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                .   .   .   .   .   .   .   .    47
         6.3.1 Mediendownload von GoPro-Kamera . . . . . . . . . . . . . . .                                                                          .   .   .   .   .   .   .   .    47
         6.3.2 Gruppierung der Medien mit QR-Code-Scanning . . . . . . . .                                                                            .   .   .   .   .   .   .   .    50
         6.3.3 Medienupload in das Backend . . . . . . . . . . . . . . . . . . .                                                                      .   .   .   .   .   .   .   .    50

AC                                                                                                                                                                                    viii
Inhaltsverzeichnis

          6.3.4   Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
          6.3.5   Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

7    Projektmanagement                                                                                                                         52
     7.1 Vorgehen . . . . . . . . . . . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   52
     7.2 Projektmanagementsystem . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   52
          7.2.1 Allgemein . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   52
          7.2.2 Workflow . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   52
     7.3 Zeitplanung . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   53
          7.3.1 Iterationsplanung . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   54
          7.3.2 Schätzungen . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   54
          7.3.3 Zeitauswertung . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   55
     7.4 Meilensteine . . . . . . . . . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   55
     7.5 Meetings . . . . . . . . . . . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   55
     7.6 Repositories . . . . . . . . . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   55
          7.6.1 Repository «Adventure Cloud Documentation»                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   55
          7.6.2 Repository «Adventure Cloud Android Client»                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   56
          7.6.3 Repository «Adventure Cloud Backend» . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   56
     7.7 Entwicklungskonzept . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   57
          7.7.1 Qualitätsmassnahmen . . . . . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   57
          7.7.2 Definition of Done . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   58
          7.7.3 Code Style Guidelines . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   58
     7.8 Infrastruktur . . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   58
     7.9 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   58
          7.9.1 Automatisiertes Testing . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   58
          7.9.2 Manuelles Testing . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   59
     7.10 Continuous Integration . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   59
     7.11 Code-Metriken . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   59
     7.12 Risikomanagement . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   60
          7.12.1 Umgang mit Risiken . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   61
          7.12.2 Konsequenz . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   61

Glossar und Abkürzungsverzeichnis                                                                                                              62

Abbildungsverzeichnis                                                                                                                          65

Tabellenverzeichnis                                                                                                                            67

Literaturverzeichnis                                                                                                                           68

III Anhang                                                                                                                                     69

A Aufgabenstellung                                                                                                                             70

B Testprotokolle                                                                                        71
  B.1 Systemtests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
  B.2 Usability Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

C Metriken                                                                                           73
  C.1 Backend-Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
  C.2 Mobile App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

AC                                                                                                                                             ix
Inhaltsverzeichnis

D Benutzerhandbuch                                                                                     76
  D.1 Installationsanleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

E Persönliche Reflektion                                                                              77

F Zeitauswertung                                                                                    78
  F.1 Zeitauswertung nach Kategorien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
  F.2 Zeitauswertung nach Teammitgliedern . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  F.3 Zeitauswertung Soll-Ist-Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

AC                                                                                                     x
Inhaltsverzeichnis

            Teil I

     Technischer Bericht

AC                                         1
Kapitel 1

                           Technischer Bericht

1.1     Einführung
1.1.1   Problemstellung
Viele Anbieter von Freizeitaktivitäten nutzen etablierte Kamera-Hersteller für die Aufnahme von
Fotos und Videos ihrer Kunden. Besonders beliebt sind die hochauflösenden und preiswerten
GoPro-Kameras vom amerikanischen Hersteller aus Kalifornien.
Der Verkaufsprozess der Medien an Kunden ist manuell gestaltet. Die Mitarbeiter übertragen die
Medien von Hand von den Kameras auf USB-Sticks, welche die Kunden anschliessend erwerben
können.
Leider existieren für die GoPro-Kameras nahezu keine Softwarelösungen von Drittanbietern,
welche diesen Prozess automatisieren könnten. Dies ist darauf zurückzuführen, dass das GoPro-
Unternehmen ihr ökonomischen System vor wenigen Jahres vor externem Zugriff geschlossen
hat. Schnittstellen werden offiziell keine mehr angeboten und die offizielle GoPro-App für An-
droid und IOS verbleibt somit die einzige nutzbare kabellose Lösung für die Kommunikation
und den Medienaustausch zwischen GoPro-Kamera und Computer.

1.1.2   Vision
Die Adventure Cloud Lösung bietet Unternehmen die Möglichkeit, digitale Medien automati-
siert von GoPro-Kameras in die Cloud hochzuladen, wobei ihre Kunden diese anschliessend als
Vorschau auf einer webbasierten Plattform anschauen und automatisiert erwerben können. Das
Unternehmen tritt eine Provision pro Kauf an die Betreiber der Adventure Cloud ab, was den
primären wirtschaftlichen Business Case des Projekts darstellt.
Ferner in der Zukunft soll die Webplattform Adventure Cloud auch von anderen Quellen ge-
spiesen werden. Beispielsweise können stationäre Kameras in Skigebieten die Schnittstelle der
Adventure Cloud ansteuern, um ihre Medien auf diese hochzuladen und den Kunden zum Kauf
anzubieten. Es lassen sich eine Vielzahl plausibler weiterer Anwendungsmöglichkeiten erahnen.

1.1.3   Ziele
Nachfolgend sind die Ziele dieser Semesterarbeit definiert. Es wird aufgezeigt, was Teil der
Arbeit ist und wo Abgrenzungen gezogen werden.
Nachfolgend ist der Teilprozess des Customer Journey abgebildet, welcher durch die Semester-
arbeit abgedeckt und umgesetzt werden soll. Anschliessend folgen detaillierte Erläuterungen.

AC                                                                                           2
1.1. EINFÜHRUNG

                            Abbildung 1.1: Ziel der Semesterarbeit

Android App und cloudbasierte Webplattform
Diese Semesterarbeit widmet sich der Entwicklung einer Mobile App, die auf einem Tablet läuft,
sich mit GoPro-Kameras verbindet und die Medien von diesen automatisiert herunter- und in
eine cloudbasierte Lösung hochlädt.
Die cloudbasierte Webplattform, auf welcher potentielle Kunden ihre Medien anschauen und
erwerben können, ist im Umfang dieser Arbeit sekundär und wird daher bei genügend Zeit
lediglich als rudimentärer Prototyp umgesetzt. Im Vordergrund steht das Mobile App, welches
die Medien von GoPro-Kameras abgreift und in die Cloud hochlädt. Dieses Mobile App wird
abgerundet mit komfortablen Funktionen, wie der Erkennung von QR-Codes in Fotos, welche
dazu dienen, eine Menge von Medien einem bestimmten Kunden zuzuordnen.
Dies impliziert ebenso, dass es keine Evaluation und Wahl eines Cloud-Providers, Deployment
zu einem Cloud-Provider und Aufsetzung der Cloud gibt. Die Projektdokumentation wird stel-
lenweise jedoch das visionierte Gesamtsystem enthalten und abbilden, da dies für die längerfris-
tige Planung notwendig ist und bei Weiterführung des Projekts - beispielsweise in Form einer
Bachelorarbeit - relevant ist.

Analyse der Übertragung und deren Verlässlichkeit
Eine Evaluierung und empirische Analyse der Übertragungsgeschwindigkeit und Verlässlichkeit
der Medienübertragung zwischen einer GoPro-Kamera und einem Android Gerät wird erarbei-
tet, um herauszufinden, wie und in welchem Ausmass die resultierende Lösung in der Praxis
verwendet werden kann.

Automatische Gruppierung von Mediensets und Zuordnung an Kunden
Die Medien einer GoPro-Kamera sollen automatisiert in Mediensets aufgeteilt werden, wobei
ein Medienset jeweils die Medien eines Kunden enthält und diesem zugeordnet wird. Dies wird
erreicht, indem vor der Aufnahme eines Mediensets ein QR-Code fotografiert wird, welcher die
Information zur Kundenzuordnung enthält (eindeutige Kundennummer). Nach dem Herunter-
laden aller Medien von einer GoPro-Kamera erkennt die Android App die Fotos, welche die
QR-Codes enthalten und nimmt so eine Aufteilung in kundenspezifische Mediensets vor. Durch
visuelle Erkennung der QR-Codes werden diese Mediensets dann bestimmten Kunden zugeord-
net.

AC                                                                                            3
1.1. EINFÜHRUNG

1.1.4   Rahmenbedingungen, Umfeld, Definitionen
Für die Umsetzung werden verschiedene Technologien eingesetzt, die der Zeit gerecht werden
und sich für die Anwendungsfälle gut eignen. Das App wird für die Android Plattform konzi-
piert und in Java und mit Web-Technologien umgesetzt. Für das Backend wird .NET kombiniert
mit PostgreSQL und anderen Datenbanksystemen eingesetzt.
In Zukunft sollen Videos, welche in die Adventure Cloud hochgeladen werden, mit Hilfe vom
AWS MediaConvert-Service in leichtere Vorschauvideos umgewandelt werden, um die Benut-
zerfreundlichkeit auf der Webplattform zu erhöhen.

1.1.5   Ökonomischer Sachverhalt
Da die Motivation dieser Semesterarbeit darin besteht, die resultierende Lösung für den prakti-
schen Einsatz in der Privatwirtschaft zu konzipieren, ist eine ökonomische Darlegung der Um-
satzmöglichkeiten und Kosten von Interesse. Diese Arbeit beschränkt sich dabei auf folgende
Berechnungen:

                               Umsatz- und Kostenberechnung

  Variablen                                 Schätzwert    Kostenpunkte          Kosten/Jahr
  Provision für Adventure Cloud             5%            Cloud Hosting         CHF 400
  Anzahl Skydive Basen                      4             Videokonvertierung    CHF 1100
  Anzahl Tandemsprünge/Base/Jahr            900           Domaingebühren        CHF 30
  Kundenkonversationsrate                   60%           Cloud Storage         CHF 640
  Ø Preis/Sprung                            CHF 100

  Kosten/Videokonvertierung/Minute          CHF 0.03
  Ø Videolänge                              10 Min

  Ø Speicherzeit/Video                      4 Monate
  Ø Grösse/Video                            2 GB
  AWS Cloud Storage Kosten/GB/Monat         CHF 0.025
  Umsatz/Jahr                               CHF 10800
  Gesamtkosten/Jahr                         CHF 2170
  Gewinn/Jahr                               CHF 8630

                         Tabelle 1.2: Umsatz- und Kostenberechnung

Eine kommerzielle Anwendung hat, wie man aus vorgängiger Tabelle entnehmen kann, durchaus
positiven Ausblick. Die Schätzwerte wurden konservativ und eher pessimistisch gewählt, um
realistische Kennzahlen zu erhalten.

1.1.6   Vorgehen und Aufbau der Arbeit
Diese Semesterarbeit setzt sich aus zwei voneinander abhängigen Teilen zusammen. Der erste
Teil ist von experimenteller Natur und befasst sich mit der empirischen Analyse der Geschwin-
digkeit und Verlässlichkeit der Medienübertragung zwischen GoPro-Kamera und Android Tablet
über WLAN.

AC                                                                                            4
1.2. STAND DER TECHNIK

Der zweite Teil nutzt die Erkenntnisse des ersten Teils, um die konkrete Umsetzung fertig zu
planen und zu realisieren.

1.2     Stand der Technik
1.2.1   Aktuelle Situation
Anschliessend folgt eine kurze Beschreibung, wie die heutigen relevanten Prozesse von potenti-
ellen zukünftigen Kunden gestaltet sind und wie diese optimiert werden sollen. Zusätzlich folgt
eine kurze Erläuterung zur aktuellen Marktsituation und existierenden Lösungen, welche dem
Projekt Adventure Cloud ähnlich sind.

Heutige Prozesse
Anbieter von Freizeitaktivitäten nutzen mehrheitlich GoPro-Kameras, um ihren Kunden perso-
nenbezogene Fotos und Videos zum Kauf anbieten zu können. Als konkretes Beispiel dient hier
wiederum ein Skydive Verein, der Tandemsprünge anbietet. Die Mitarbeiter nehmen während
dem Flug Fotos und Videos ihrer Kunden - dem Tandem - auf. Kommen sie am Boden an, laden
die Mitarbeiter diese Medien auf USB-Sticks, welche anschliessend von den Kunden erworben
werden können.
Es muss also ständig eine Person am Boden sein, die den erläuterten Prozess abwickelt. Noch
mühsamer ist jedoch die Wartezeit für die Kunden, da der Kopiervorgang auf die USB-Sticks
oftmals bis zu einer halben Stunde dauert. Grund dafür ist enorme Dateigrösse der Fotos und
Videos aufgrund der hohen Auflösung.

1.2.2   Lösungsansätze
Die manuellen Prozesse sollen digital automatisiert werden. Kunden sollen zukünftig die Mög-
lichkeit haben, ihre Medien online auf einer Web-Plattform anschauen und erwerben zu können.
Die Automation soll mit Hilfe eines Android-Geräts erfolgen, welches sich mit den GoPro-
Kameras verbindet und anschliessend die Medien von diesen herunter- und in die Cloud hoch-
lädt. Die Cloud ist dabei eine Applikation, welche die Medien entgegennimmt, verarbeitet und
über eine webbasierte Plattform den Kunden anbietet.
Der Automation-Prozess beinhaltet diverse Schritte, auf welche nachfolgend detailliert und in
zeitlich geordneter Reihenfolge eingegangen wird.

#1 Zuordnung der Medien an Kunden
Es soll möglich sein, mit einer GoPro-Kamera sequentiell Medien von verschiedenen Kunden
aufzunehmen, ohne, dass zwischendurch eine Synchronisation mit der Cloud vorgenommen
werden muss. Aktuell wird für die Zuordnung der Medien zu den unterschiedlichen Kunden
und das Erstellen von Sets folgende Strategie verwendet:
     • Optische QR-Code Erkennung: Bevor Medien eines Kunden aufgenommen werden, wird
       ein kundenspezifischer QR-Code fotografiert, der eine einzigartige Kundenidentifikation
       enthält. Das Android-App wird in einem späteren Schritt alle Medien chronologisch nach
       QR-Codes durchsuchen und die Medien jeweils der letzten erkannten Kundenidentifikation
       zuordnen.

#2: Medien-Download von GoPro-Kameras
Sobald die Medien von einer GoPro-Kamera in die Cloud hochgeladen werden sollen (Syn-
chronisation), muss sich das Android-Gerät zuerst mit der GoPro-Kamera verbinden. Dies kann

AC                                                                                           5
1.3. DATENSICHERHEIT UND DATENSCHUTZ

entweder über WLAN oder Bluetooth geschehen. Sobald die Verbindung aufgebaut wurde, lädt
das Android-Gerät die Medien von der GoPro-Kamera in den lokalen Speicher herunter. Dafür
nutzt es die inoffiziellen HTTP REST API-Schnittstellen, die von der GoPro-Kamera angeboten
werden.
Der Mediendownload muss danach auf Korrektheit überprüft werden. Ist diese Prüfung erfolg-
reich, werden die Medien auf der GoPro-Kamera gelöscht.
Sollen mehrere GoPro-Kameras synchronisiert werden, werden diese in einer Warteschlange se-
quentiell abgearbeitet, da lediglich eine WLAN-Verbindung simultan zu Verfügung steht.

#3: Medien-Upload in die Cloud
Bevor die Medien in die Cloud hochgeladen werden, wird mit der in Schritt #1 verwendeten
Strategie eine Gruppierung der Medien in unterschiedliche Sets vorgenommen. Ein Set ist jeweils
die Gesamtmenge aller Medien die einem Kunden zugeordnet werden sollen.
Anschliessend werden die Medien inklusive der Gruppierungsinformation in die Cloud hochge-
laden.
Der Upload in die Cloud kann nicht simultan zum Medien-Download in Schritt #2 stattfinden,
wenn der Download über WLAN abläuft. Grund dafür ist, dass Android per se nicht mehrere
WLAN-Verbindungen unterstützt und normalerweise auch eine GSM-Verbindung nicht parallel
mit einer WLAN-Verbindung aufrecht sein kann.

#4: Umwandlung hochauflösender Videos
GoPro- und auch andere Kameras sind heutzutage fähig, Videos in enorm hohen Auflösungen
aufzunehmen. 4K und 8K Videos sind keine Seltenheit mehr. Diese Videos können unbearbeitet
nicht oder nur mit Mühe auf einer Website eingebettet und von einem User abgespielt/gestreamt
werden.
In Zukunft, jedoch nicht im geplanten Rahmen dieser Semesterarbeit, werden hochauflösende
und speicherintensive Videos über einen Drittanbieter, wie beispielsweise dem AWS MediaCon-
vert-Service, in tiefauflösende Videos umgewandelt.

#5: Präsentation und Verkauf der Medien
Auf einer Web-Plattform kann der Kunde mit Hilfe seiner Kundenidentifikation auf seine Medien
zugreifen, eine Vorschau davon anschauen und sie erwerben. Diese Web-Plattform wird, wie
bereits zuvor erwähnt, nicht im Rahmen dieser Semesterarbeit umgesetzt.

1.3     Datensicherheit und Datenschutz
Die Adventure Cloud Lösung speichert Medien - Fotos und Videos - von Personen auf einem
Server in der Cloud. Diese personenbezogenen Daten sollen vor unerwünschtem Zugriff so gut
wie möglich geschützt werden.

1.3.1   Rechtliche Lage
In der Schweiz darf niemand ein Bild einer Person ohne deren Einverständnis veröffentlichen.
In der Anwendung der Adventure Cloud stellt sich diese Frage jedoch nicht, da Bilder und
Videos einer Person nur von dieser eingesehen werden können. Dies wird über einen eindeutigen
Zugriffscode erreicht, der lediglich der entsprechende Kunde besitzt. Möchte eine Person nicht

AC                                                                                           6
1.3. DATENSICHERHEIT UND DATENSCHUTZ

fotografiert oder per Video aufgenommen werden, kann sie dies vor der Aufnahme unterbinden
oder danach die Löschung anordnen.
Die Adventure Cloud speichert keine besonders schützenswerte Personendaten und muss daher
nicht auf dieses Punkt im Bundesgesetz über den Datenschutz (DSG) eingehen.

1.3.2   Datenschutz in der Cloud
Als Unternehmen möchte man die Daten der Kunden, hier Medien, vor jeglichem unerwünsch-
ten Zugriff schützen. Dies gilt auch für den Zugriff durch andere Staaten.
Es gilt also zu gegebener Zeit (nicht im Rahmen dieser Arbeit) einen passenden Cloud-Provider
auszuwählen. Viele renomierte Cloud-Anbieter, wie die Google Cloud, halten Standards und
Verträge ein, um Daten auf ihren Servern zu schützen. So zum Beispiel das ISO 27001 Zertifikat,
um das Risiko zu minimieren, dass Mitarbeiter Kundendaten missbrauchen. Google verpflich-
tet sich ebenso zur Einhaltung der EU-Datenschutz-Grundverordnung (DSGVO) für alle ihre
Google-Cloud-Platform-Dienste.
Grundsätzlich war es bis 2018 so, dass Serverstandorte in der EU unter die GDPR gefallen sind
und amerikanische Standorte betroffen waren vom Patriot Act 2001. Es spielt also grundsätzlich
schon eine Rolle, wo sich der Server physisch befindet. Regulationen, wie der Privacy Shield,
regeln den Datenaustausch zwischen Europa und den USA.
Seit die Trump-Regierung 2018 den Clarifying Lawful Overseas Use of Data Act (CLOUDAct)
eingeführt hat, kann sie auch auf Daten ausserhalb der USA, z.B. in Europa, zugreifen, obwohl
der Act die GDPR verletzt. Das bedeutet im Klartext, dass selbst wenn man sich für einen Server-
standort innerhalb der EU oder der Schweiz entschieden hat, der Service- oder Cloud-Anbieter
aber ein US-Unternehmen ist, dass der Anbieter trotzdem gezwungen werden kann, Kundenda-
ten an die US-Behörden zu übergeben.
Vorzuziehen ist im Optimalfall also ein Schweizer Unternehmen, welches Cloud-Dienste anbietet.

1.3.3   Herausgabe von Daten in Zwischenfällen
Eine weitere wichtige Frage ist der Umgang mit digitalen Medien, welche Zwischenfälle zeigen,
bei denen Personen zum Beispiel verletzt oder gar tödlich verunglückt sind.
Wie mit diesen Medien umgegangen wird und ob diese Daten an Behörden ausgehändigt werden
sollen und müssen wird zu einem späteren Zeitpunkt geklärt, sobald das Produkt kommerziell
genutzt werden möchte.

AC                                                                                            7
Kapitel 2

                                       Resultate

2.1     Zielerreichung
Alle definierten Ziele der Semesterarbeit konnten in vollem Umfang umgesetzt werden, da keine
unüberwindbaren Hindernisse im Verlauf des Projekts aufgetreten sind.
Die nachfolgenden Unterkapitel beschreiben die implementierten Ergebnisse der einzelnen Be-
standteile des entwickelten Systems.

2.1.1   Analyse der Übertragungsgeschwindigkeit und deren Verlässlichkeit
Die Übertragungsgeschwindigkeit des Mediendownloads zwischen dem Android-Tablet und ei-
ner GoPro-Kamera (Modell Hero 7 Black) konnte mit einer empirischen Herangehensweise er-
mittelt werden.
Auch die Verlässlichkeit, bezüglich Unterbrüchen oder Abbrüchen, konnte mit dem Download-
Manager von Android ermittelt werden.
Die Ergebnisse sind grundsätzlich positiv ausgefallen. Leider erreicht die durchschnittliche Über-
tragungsgeschwindigkeit nicht mehr als gute 5 Megabyte pro Sekunde, obwohl die GoPro-
Kamera den IEEE 802.11n WLAN-Standard unterstützt, der bis zu 600 MBit/s übertragen kann.
Werden also GoPro-Kameras synchronisiert, die hochauflösende Video enthalten, die sich im
Grössenbereich von Gigabytes bewegen, dauert die Synchronisation mehrere Minuten an.
Der Einsatz in grösseren Unternehmen könnte daher zu Problemen führen. Zum Beispiel könnte
ein Skydive-Unternehmen, das 10 Springer hat, die zusammen springen und die Synchronisation
zur selben Zeit einleiten, in Engpässe geraten. Die Springer müssten teilweise bis zu einer halben
Stunden warten, bis alle GoPro-Kameras synchronisiert sind.
Die Lösung dafür wäre, mehrere Tablets bereitzustellen, welche für die Synchronisation verwen-
det werden.
Entgegen wirkt die Gruppierungsfunktion, die es ermöglicht, mehrere Kunden zu bedienen, be-
vor eine Synchronisation eingeleitet wird.

2.1.2   Mobile App
Die Mobile App konnte mit allen geplanten Anforderungen umgesetzt werden. Es läuft stabil
und verlässlich und glänzt durch die Anwendung des Google Material Design.
Um die Endpunkte der GoPro-Kamera zu ermitteln, wurde das offizielle GoPro-App für Andro-
id reverse enginnered und die Kommunikation zwischen diesem und der GoPro-Kamera über
Wireshark analysiert.

AC                                                                                              8
2.1. ZIELERREICHUNG

                           Abbildung 2.1: Entwickeltes Mobile App

Verbindung mit GoPro-Kamera
Das Verbinden mit einer GoPro-Kamera läuft reibungslos. Das Mobile App fügt dem System das
WLAN-Netzwerk der zu synchronisierenden GoPro-Kamera hinzu, worauf das Tablet in Kürze
mit diesem verbunden ist.
Nach dem Mediendownload von der GoPro-Kamera wird das hinzugefügte WLAN-Netzwerk
vom System gelöscht und das Tablet verbindet sich wieder mit dem zuvor verbundenen WLAN-
Netzwerk. Dieses ist das Netzwerk, welches Internetzugriff hat. So kann das Mobile App die
heruntergelandenen Medien anschliessend in die cloudbasierte Backend-Applikation hochladen.

Download der Medien von GoPro-Kamera
Der Download der Medien von der GoPro-Kamera wurde über den nativen DownloadManager
und dessen Schnittstelle umgesetzt. Dafür würde ein eigenes Cordova-Plugin in Java entwickelt.

AC                                                                                          9
2.1. ZIELERREICHUNG

Die GoPro-Kamera, rsp. der Webserver von dieser, unterstützt Partial Request, d.h. der Medi-
endownload kann ab einem bestimmten Offset wiederaufgenommen werden. Dies ist besonders
nützlich, wenn ein Download wiederaufgenommen wird, nachdem dieser zum Beispiel aufgrund
von Verbindungsschwierigkeiten unterbrochen oder pausiert wurde.
Die Verwendung des DownloadManager war eine gute Entscheidung, einerseits, da so die Ent-
wicklung eines eigenen Downloadverfahrens eingespart werden konnte und dieser andererseits
bereits seit Jahren von Android entwickelt wird und verlässlich und fehlerfrei funktioniert.

QR-Code Analyse und Gruppierung der heruntergelandenen Medien
Die Erkennung von QR-Codes in den heruntergeladenen Medien von der GoPro-Kamera wur-
de mit der Open Source Zxing-Libary und derem HybridBinarizer umgesetzt. Dazu wurde ein
Cordova-Plugin in Java entwickelt.
Die Erkennung funktioniert auch mit Fotos, welche relativ starke Schatten enthalten, da der
HybridBinarizer eine hohe Toleranz im Scanverfahren aufweist.
Die Analyse, respektive das Scanning nach QR-Codes, läuft schnell und vorallem parallel zu den
anderen Prozessen ab. Pro Bild dauert das Scanning nur wenige Hundert Millisekunden.
Das Gruppieren der Medien anhand der erkannten QR-Codes konnte dank dem sauberen Scan-
verfahren wie geplant umgesetzt werden.

Upload der Medien in die Cloud
Der Upload der (gruppierten) Medien in die Cloud erfolgt automatisch, sobald das Tablet Zu-
gang zum Internet hat. Dies wird geprüft, indem Google in einem Intervall von wenigen Sekun-
den gepingt wird.
Der Upload ist in der aktuellen Implementation weniger fehlertolerant im Vergleich zum Down-
load von der GoPro-Kamera. Wird ein Fileupload in die Backend-Applikation unterbrochen, so
muss er von Vorne gestartet werden.
Dies sollte vor einem kommerziellem Einsatz optimiert werden.

2.1.3   Backend-Applikation
Die Backend-Applikation wurde gemäss funktionalen und nichtfunktionalen Anforderungen im-
plementiert.

Authentifizierung
Die Authentifizierung nutzt JWT-Token. Bei erfolgreicher Authentifizierung mittels Zugangsda-
ten erhält der Nutzer einen Access Token, der für die Authentifizierung aller folgenden Anfragen
an den Server verwendet wird, sowie einen Refresh Token, mit welchem ein neuer Access Token
gelöst werden kann, sobald dieser abläuft.
Kryptografisch wurde mit den zeitgemässen Verfahren gearbeitet. Die Zugangsdaten werden
gesalted (eigener Salt pro User) in der Datenbank gespeichert, um Angriffen über Rainbow Tables
vorzubeugen. Das Hashing der Passwörter erfolgt mit SHA256.
Die Signierung der JWT-Token erfolgt mit HMACSHA256 und wird somit dem aktuellen Stan-
dard gerecht.

AC                                                                                           10
2.1. ZIELERREICHUNG

REST API-Schnittstelle
Die REST API-Schnittstellendokumentation wird mit dem Einsatz von Swagger direkt aus dem
Code generiert. Diese enthält eine Beschreibung für jeden Endpunkt, die erwarteten Parameter
(Schemas) und die möglichen Status Codes der Antwort.

                                 Abbildung 2.2: Swagger API

Datenbank
Die Erstellung des Datenbankschemas erfolgt mit dem Code-First Ansatz. Als ORM-Mapper
wurde das Entity Framework von Microsoft für .NET Core verwendet.

2.1.4   Continuous Integration
Für die Continous Integration aller Komponenten der Adventure Cloud wurden zweckmässig
zugeschnittene Docker Images erstellt.
Die CI-Pipeline erstellt das Mobile App für die Android und die Backend-Applikation. Dabei
wird beim Mobile App ein Linter eingesetzt, der den Code auf Fehler und Verletzungen an
den Coding Guidelines prüft. Die Backend-Applikation enthält ein Projekt für Unittests und ein
weiteres für Integrationstests, die im CI-Durchlauf ausgeführt werden.
Der Code der Backend-Applikation wird im CI-Prozess zu SonarCloud, einem Dienst für Code-
Analyse, gesendet, wo anschliessend diverse Metriken einsehbar sind (https://sonarcloud.io/
dashboard?id=adventure_cloud).

AC                                                                                         11
2.2. SCHLUSSFOLGERUNG

Ebenso wird zusätzlich eine Testabdeckung in Prozent mittels dem CLI Tool Coverlet ermittelt,
wonach die Testabdeckung auch in GitLab zu jedem Commit ersichtlich ist.

2.2     Schlussfolgerung
Nach 11 Wochen und insgesamt 240 Arbeitsstunden wurde das Projekt abgeschlossen. Die fol-
genden Kapitel bewerten die erreichte Arbeit und geben eine Schlussfolgerung zum Projekt.

2.2.1   Bewertung der Ergebnisse
Die gesamte geplante Funktionalität konnte umgesetzt werden.

 Resultate

 Analyse

        Analyse der GoPro-API

 Als Erstes wurde die Schnittstelle zur GoPro-Kamera (Modell Hero 7 Black) unter-
 sucht.Daraus resultierten Endpunkte der REST API-Schnittstelle, die von einem Webserver
 auf der GoPro-Kamera zur Verfügung gestellt- und für die Umsetzung der Mobile App
 benötigt werden.

        Analyse der Übertragungsgeschwindigkeit und deren Verlässlichkeit

 Um eine quantitative Aussage über die tatsächliche Übertragungsrate des Mediendown-
 loads von der GoPro-Kamera auf ein Android Tablet machen zu könnnen, wurde eine em-
 pirische Analyse der Übertragungsrate und der Verlässlichkeit erarbeitet. Die Erkenntnisse
 können genutzt werden, um den praktischen Einsatz bewerten zu können und mögliche
 Probleme und Lösungen zu diskutieren.

 Backend

        Backend-API

 Die REST API-Schnittstelle wurde entsprechend den Anforderungen umgesetzt. Eine
 Swagger-Dokumentation wird aus dem Code generiert und eine Postman-Collection steht
 für das Testing zu Verfügung.

        Datenbank

 Die Datenkbank, respektive das Schema, wurde mit dem Code-First Ansatz umgesetzt.
 Als Datenbank können SQLite und PostgreSQL austauschbar verwendet werden.

        Datensicherheit

 Die Daten werden verschlüsselt in der Datenkbank abgespeichert. Für die Verschlüsselung
 werden zeitgemässe kryptographische Verfahren verwendet. Die initiale Authentifizierung
 erfolgt über Zugangsdaten. Danach werden JWT-Token verwendet.

AC                                                                                            12
2.2. SCHLUSSFOLGERUNG

      CI, Unit- & Integrationtests

In der CI werden die Unit- und Integrationstests automatisiert ausgeführt. Die CI-Pipeline
schlägt fehl, wenn die Tests fehlschlagen. Die Testabdeckung wird berechnet und in GitLab
ausgegeben.

      Code-Metriken

In der CI wird der Code an den Dienst SonarCloud gesendet, der daraus Code-Metriken
erzeugt, welche anschliessend im Dashboard von SonarCloud eingesehen werden können.

AC                                                                                           13
2.2. SCHLUSSFOLGERUNG

 Mobile App

        Mediendownload von GoPro-Kamera

 Der Mediendownload von GoPro-Kamera(s) wurde wie geplant implementiert und läuft
 ziemlich stabil. Downloads, die unterbrechen oder pausieren, werden wiederaufgenom-
 men. Beispielsweise, wenn die Konnektivität zur GoPro-Kamera kurz unterbrochen wird,
 da diese kurzzeitig aus der Reichweite des WLAN entfernt wurde.

        Gruppierung der Medien mit QR-Code-Scanning

 Das Scanning auf QR-Codes in den heruntergeladenen Medien wurde mit der Zxing-
 Library implementiert und wird den Anforderungen gerecht. Anhand der erkannten QR-
 Codes wird eine Gruppierung gemäss Planung vorgenommen.

        Medienupload in das Backend

 Sobald das Mobile App Zugang zum Internet hat, lädt es Medien, die noch nicht zur
 cloudbasierten Backend-Applikation hochgeladen wurden, hoch.

        User Stories

 Alle User Stories wurden gemäss der Anforderungsspezifikation implementiert.

        Responsive Design

 Das Mobile App wurde komplett mit dem Google Material Design und dessen Kompo-
 nenten umgesetzt. Es ist responsive, verständlich aufgebaut und einfach bedienbar.

        Internationalisierung

 Das Mobile App nutzt die i18n-Library für die Internationalisierung und ist in Deutsch
 und in Englisch verfügbar. Die Sprache kann in den Einstellungen umgestellt werden.

        CI

 Das Mobile App wird in der CI automatisch mit einem Linter auf Code-Fehler und Ver-
 letzungen an den Coding Guidelines geprüft, erstellt und das Kompilat wird als Artefakt
 auf GitLab direkt zum Download angeboten.

2.2.2   Risikomanagement
Das Risikomanagement hat sich als realistisch geplant herausgestellt. Das grosse Risiko, dass
die einzige Person (Sharon Moll) im Projekt aufgrund einer hospitalen Operation ausfällt, ist
in Woche 12 eingetreten. Da diese Wahrscheinlichkeit, respektive die Auswirkung, bei der Risi-
koidentifizierung als relativ hoch bewertet wurde, wurde die SA als Massnahme bis zu dieser
Woche fertiggestellt.
Es gab kleinere technische Schwierigkeiten während der Entwicklung. Diese konnte aber alle
innerhalb von kurzer Zeit gelöst werden.

AC                                                                                         14
2.2. SCHLUSSFOLGERUNG

2.2.3   Fazit
Umfang
Die Bewertung der Ergebnisse zeigt, dass alle geplanten Anforderungen umgesetzt werden konn-
ten. Zu Beginn war nicht gänzlich klar, ob die funktionalen Anforderungen tatsächlich nach Plan
implementiert werden können, da keine vorgängige Machbarkeitsstudie erarbeitet werden konn-
te. Daher ist es umso erfreulicher, dass keine unüberwindbaren technischen Hürden während
der Entwicklung aufgetaucht sind.
Es konnte wahrscheinlich relativ viel Zeit bei der Kommunikation eingespart werden, indem das
Projekt von einer Person allein umgesetzt wurde.
Technologien
Die getroffenen Entscheidungen bezüglich den verwendeten Technologien haben sich als sehr
positiv herausgestellt.
Zu Beginn war unklar, ob sich ein natives Android App besser eignet als ein hybrides Web App,
da für letzteres Cordova-Plugins benötigt werden, um native Funktionalitäten zu verwenden. Es
hat sich jedoch schnell gezeigt, dass die Umsetzung solcher Plugins simpel ist. Das Design und
die UI-Elemente des Apps konnten dank dem verwendeten UI-Framework Quasar sehr schnell
und sauber implementiert werden.
Die Verwendung des .NET Framework in der Backend-Applikation hat zu einer architektonisch
klar geschichteten Applikation geführt, die performant und skalierbar ist.

2.2.4   Ausblick
Das Projekt wird allenfalls in einer Bachelorarbeit weitergeführt, um es für den kommerziellen
Nutzen zu finalisieren.
Dazu muss vorallem eine Webplattform entwickelt werden, die es den Kunden ermöglicht, ihre
Medien, die in der Cloud gespeichert sind, online einsehen und erwerben zu können.

AC                                                                                          15
2.2. SCHLUSSFOLGERUNG

            Teil II

     Projektdokumentation

AC                                       16
Kapitel 3

                     Anforderungsspezifikation

Dieses Kapitel enthält die Anforderungsspezifikation dieser Semesterarbeit. Die Use Cases (funk-
tionale Anforderungen) werden beschrieben und die nicht-funktionalen Anforderungen (Quali-
tätsattribute) aufgezeigt.

3.1     Use Cases
Diese Semesterarbeit fokussiert sich auf die Umsetzung des Android-Apps und das Hochladen
von Medien von diesem in die Backend-Applikation in der Cloud. Augenmerk wird daher auf
die Anwendungsfälle im entsprechenden System des Android-Apps gelegt.

3.1.1   Akteure

 Akteur        Beschreibung

               Anonymous wird hier als Pseudonym für einen nicht authentisierten Benutzer
 Anonymous     verwendet. Dieser Benutzer muss sich einloggen, um weitere Use Cases anstos-
               sen zu können, da er sonst die notwendigen Authorisierungen nicht besitzt.
               Der User ist ein im System hinterlegter Benutzer, der einer Organisation
               unterstellt- und authentisiert ist. Er ist Teil einer Organisation, die Medien von
 User
               ihren Kunden in die Adventure Cloud hochladen möchte und stösst die dafür
               notwendigen Use Cases an.

                                      Tabelle 3.1: Akteure

3.1.2   Use-Case-Diagramm
Das nachfolgende Use-Case-Diagramm zeigt die relevanten Anwendungsfälle in der Android-
App. Die Anwendungsfälle sind visuell nicht nach Nummerierung geordnet, um die Übersicht-
lichkeit zu verbessern.

AC                                                                                             17
3.1. USE CASES

                               Abbildung 3.1: Use-Case-Diagramm

3.1.3   Use-Case-Beschreibungen
Die Use-Cases beginnen mit der einheitlichen Beschreibung in Form einer User-Story mit folgen-
der Vorlage:

   User-Story 3.1.1: Vorlage

   Als , möchte ich , damit ich
   .

Falls nützlich folgt eine detaillierte tabellarische Beschreibung nach Larman [1].

UC01 Login

   User-Story 3.1.2: UC01 Login

   Als nicht authentifizierter User, möchte ich mich in die Applikation einloggen, damit ich
   die Applikation mit ihrer Funktionalität überhaupt nutzen kann.

UC02 CRUD GoPro-Kameras

   User-Story 3.1.3: UC02 CRUD GoPro-Kameras

   Als eingeloggter User möchte ich meine GoPro-Kameras im System hinterlegen, damit ich
   diese in die Cloud synchronisieren-, sprich die Medien von diesen in die Cloud hochladen,
   kann.

AC                                                                                             18
3.1. USE CASES

UC03 GoPro-Kamera synchronisieren

   User-Story 3.1.4: UC03 GoPro-Kamera synchronisieren

   Als eingeloggter User möchte ich die Synchronisation einer meiner GoPro-Kameras an-
   stossen, damit die Medien von dieser in die Cloud übertragen werden.

Dieser Anwendungsfall erweitert den Anwendungsfall UC04 CRUD Mediensets im nachfolgen-
den Schritt 5, denn die Synchronisierung erfordert CRUD-Operationen auf die Mediensets, wel-
che im Backend verwaltet werden.

AC                                                                                       19
3.1. USE CASES

Primärer Akteur        User
                       Ein User kann die Synchronisierung einer seiner GoPro-Kameras auslö-
Übersicht              sen, worauf das Android-Gerät die Medien von dieser herunter- und in
                       die Cloud hochlädt.
Interessenten          User: Möchte eine seiner GoPro-Kameras synchronisieren.
                       • Das Android-Gerät ist mit dem Backend der Adventure Cloud ver-
                         bunden.
                       • Die gewünschte GoPro-Kamera ist im System eingetragen.
Vorbedingungen
                       • Die GoPro-Kamera ist örtlich im nahen Umkreis des Android-Geräts,
                         sodass dieses eine Verbindung mit der GoPro-Kamera aufbauen kann.

                       • Die Medien der GoPro-Kamera befinden sich auf dem Android-Gerät.
                       • Auf der GoPro-Kamera sind die heruntergeladenen Medien gelöscht.
                       • Die Verbindung zwischen Android-Gerät und GoPro-Kamera ist be-
                         endet.
Erfolgsgarantie
                       • Ein Medienset wird in der Cloud erstellt (siehe UC04 CRUD Medien-
                         sets).
                       • Die Medien werden vom Android-Gerät in die Cloud in das erstellte
                         Medienset hochgeladen.
                       1. Der User möchte eine GoPro-Kamera synchronisieren.
                       2. Der User wählt in der Android-App auf dem Android-Gerät die
                          Schaltfläche zur Synchronisation an.
                       3. Eine Liste von GoPro-Kameras, welche im System hinterlegt sind,
Haupterfolgsszen.         wird angezeigt. Der User wählt die entsprechende GoPro-Kamera
                          aus.
                       4. Die GoPro-Kamera wird in die Warteschlange der zu synchronisie-
                          renden Geräten aufgenommen.
                       5. Die Synchronisation wird erfolgreich vollzogen.
                      *a Die GoPro-Kamera ist örtlich nicht genug nahe, damit das Android-
                         Gerät eine Verbidnung mit dieser aufbauen kann.
                         1. Die GoPro-Kamera wird in der Warteschlange der zu synchronisie-
                            renden GoPro-Kameras übersprungen.
                         2. Nachdem die restlichen GoPro-Kameras in der Warteschlange ab-
                            gearbeitet wurden, erfolgt ein weiterer Versuch zum Aufbau einer
                            Verbindung.
                         3. Je nach Einstellung wird dem Benutzer nach einer bestimmten An-
                            zahl an erfolglosen Versuchen eine Fehlermeldung angezeigt und
Alternative Flows           die GoPro-Kamera wird aus der Warteschlange entfernt.
                      2a Keine GoPro-Kamera wurde im System hinterlegt.
                         1. Der User wird aufgefordert eine GoPro-Kamera im System hinzu-
                            zufügen (UC02 CRUD GoPro-Kameras).
                      5a Die Synchronisierung ist fehlerbehaftet oder wurde abgebrochen.
                         1. Ein erneuter Download-Versuch wird initiert.
                         2. Falls dieser wiederholt zu einem fehlerhaften Resultat führt, wird
                            eine Fehlermeldung angezeigt und die Synchronisation für diese
                            GoPro-Kamera abgebrochen.
Auftrittshäufigkeit    Beliebig oft

                       Tabelle 3.2: UC03 GoPro-Kamera synchronisieren
AC                                                                                          20
3.1. USE CASES

UC04 CRUD Mediensets

  User-Story 3.1.5: UC04 CRUD Mediensets

  Als eingeloggter User möchte ich die Mediensets bearbeiten können, damit ich Fehler in
  der automatischen Gruppierung der Medien beheben- und die Sets filigraner verwalten
  kann.

Primärer Akteur       User
                      Ein User kann die Mediensets manuell bearbeiten, falls er/sie in das
                      Standardverhalten der Gruppierungsfunktion für Sets eingreifen möch-
Übersicht
                      te. Er kann Medien von einem Set entfernen, in ein anderes verschieben
                      oder ein ganzes bestehendes Set löschen.
Interessenten         User: Möchte eins oder mehrere Mediensets mutieren.
                      • Das Android-Gerät ist mit dem Backend der Adventure Cloud ver-
Vorbedingungen          bunden.
                      • Medien müssen auf dem Android-Gerät vorhanden sein.
                      • Die Deletion eines Sets führt zur tatsächlichen Entfernung lokal und
                        in der Cloud.
                      • Die Deletion von Medien in einem Set führt zur tatsächlichen Entfer-
                        nung lokal und in der Cloud.
Erfolgsgarantie       • Das Verschieben von Medien von einem Set in ein anderes bewirkt
                        eine Entfernung im Ursprungsset und die Addition im Zielset lokal
                        und in der Cloud.
                      • Alle Operationen werden über die REST API-Schnittstelle zum Cloud-
                        Backend synchronisiert.
                      1. Der User möchte eine CRUD-Operation auf ein Medienset vorneh-
                         men.
                      2. Der User führt eine der möglichen Operationen durch.
Haupterfolgsszen.
                      3. Das Android-Gerät baut eine Verbindung zum Cloud-Backend auf
                         und die Operation wird mit diesem synchronisiert.
                      4. Die Änderung wird lokal und in der Cloud übernommen.
                      3a Das Android-Gerät kann keine Verbindung zum Cloud-Backend auf-
                         bauen.
                        1. Die Operation wird abgebrochen.
                        2. Der User wird auf die Fehlerursache hingewiesen.
Alternative Flows 3b Die Synchronisation mit dem Cloud-Backend schlägt fehl.
                        1. Die Operation wird abgebrochen.
                        2. Das System ist möglicherweise in einem inkonsistenen Zustand,
                           welcher manuell berichtigt werden muss.
                        3. Dem User wird eine adäquate Fehlermeldung präsentiert.
Auftrittshäufigkeit   Beliebig oft

                             Tabelle 3.3: UC04 CRUD Mediensets

AC                                                                                         21
3.2. NICHT-FUNKTIONALE ANFORDERUNGEN

UC05 CRUD Einstellungen

   User-Story 3.1.6: UC05 CRUD Einstellungen

   Als eingeloggter User möchte ich Einstellungen vornehmen, damit ich den Vorgang der
   Synchronisierung, Gruppierung und allenfalls weiteren Funktionalitäten für meine An-
   wendung optimaler anpassen kann.

3.2     Nicht-funktionale Anforderungen
Für die Einteilung und Organisation der QAs wird nachfolgend die FURPS-Taxonomie verwen-
det.
Um die Nicht-funktionalen Anforderungen möglichst zielführend zu definieren, wird der SMART-
Ansatz so gut wie möglich verfolgt.

3.2.1   Funktionalität
Angemessenheit
Die Authentifizierung, sowie auch die Authorisierung werden simpel gehalten. Für die Authen-
tifizierung wird lediglich ein Benutzername, sowie ein Passwort benötigt. Beide Mechanismen
werden entweder über die vorhandenen Komponenten des .NET Core Frameworks oder mit
einer simplen eigenen Implementierung bis zur Abgabe des Projekts umgesetzt.

3.2.2   Benutzbarkeit
Verständlichkeit
Die Benutzeroberfläche des Android-App ist in Deutsch und Englisch verfügbar. Dies beinhaltet
lediglich Texte, nicht aber Bildmaterial, welches sprachspezifische Inhalte aufweist. Die beiden
Sprachversionen sind spätenstens am Ende des Projekts verfügbar.

Erlernbarkeit/Bedienbarkeit
Die Benutzeroberfläche soll dem neusten Designstandard entsprechen und so intuitiv in kurzer
Zeit bedient werden können. Dazu wird das Google Material Design für alle Ansichten und
deren Widgets verwendet.

3.2.3   Zuverlässigkeit
Reife
90% der Aktionen der Benutzer sollen wie geplant und ohne fehlerhafte Zustände durchgeführt
werden können. Systemfehler werden dem Benutzer mit einer verständlichen und adäquaten
Fehlermeldung mitgeteilt.

Fehlertoleranz
Fehlerhafte Eingaben sollen nicht zu inkonsistenten Zuständen und Abstürzen des Programs
führen. Allfällige Inputfehler werden dem Benutzer mit einer entsprechenden Nachricht signa-
lisiert und ein Hilfetext informiert, wo der Fehler liegt. Mindestens 90% aller Eingabemasken
müssen fehlerhafte Eingaben abfangen können.

AC                                                                                           22
Sie können auch lesen