generated from felix-kaestner/better-tudscr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a9fad2b
commit a63048c
Showing
21 changed files
with
211 additions
and
111 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,6 @@ | ||
{ | ||
"recommendations": [ | ||
"james-yu.latex-workshop", | ||
"davidlday.languagetool-linter", | ||
"adamvoss.vscode-languagetool-de" | ||
"valentjn.vscode-ltex", | ||
"james-yu.latex-workshop" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,10 @@ | ||
{ | ||
"languageTool.language": "de-DE", | ||
"languageToolLinter.languageTool.language": "de-DE", | ||
"languageToolLinter.languageTool.motherTongue": "de-DE", | ||
"languageToolLinter.serviceType": "public", | ||
"languageToolLinter.lintOnOpen": true, | ||
"languageToolLinter.smartFormat.onSave": true, | ||
"languageToolLinter.languageTool.ignoredWordsInWorkspace": [], | ||
"ltex.enabled": true, | ||
"ltex.language": "de-DE", | ||
"ltex.additionalRules.motherTongue": "de-DE", | ||
"ltex.additionalRules.enablePickyRules": true, | ||
"ltex.checkFrequency": "edit", | ||
"latex-workshop.docker.enabled": true, | ||
"latex-workshop.docker.image.latex": "kaestner/latex:edge", | ||
"latex-workshop.latex.autoBuild.run": "never" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file was deleted.
Oops, something went wrong.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
\chapter{Einleitung}\label{ch:einleitung}\pagenumbering{arabic} | ||
|
||
Mit OUTPUT.DD veranstaltet die Fakultät Informatik der Technischen Universität Dresden jährlich eine Projektschau, auf welcher wissenschaftliche Projekte von Studenten, Firmen und Mitarbeitern präsentiert und ausgestellt werden. Ziel ist es für die unterschiedlich Themen und Fachbereiche der Informatik zu begeistern, einen Einblick in die aktuelle Forschung zu gewähren und die Kommunikation zu fördern. Ergänzend zur Veranstaltung wie eine App für die Betriebssysteme iOS und Android bereitgestellt. Neben einem Veranstaltungsplan, einer interaktiven Kartenansicht und einem Twitter-Feed findet sich auch ein Spiel in der App wieder. Letzteres wurde durch ein Gamification\footnote{Gamification. Anwendung von Spielelementen in einem spielfremden Kontext.}-Konzept erweitert, um die Interaktion von Nutzern zu steigern. Gleichzeitig wird ein aus dem Forschungsprojekt CONIC\footnote{CONIC. \url{https://tu-dresden.de/ing/informatik/sya/professur-fuer-rechnernetze/forschung/conic}} hervorgegangenes Beaconing-Framework zur Aufzeichnung der Bewegung von Nutzern auf der Messe verwendet. Diese Informationen werden genutzt, um das Besucheraufkommen zu analysieren und anschließend als Heatmap in der interaktiven Kartenansicht darzustellen. Außerdem wurden die Apps nach dem Offline-First-Prinzip aus dem Forschungsbereich Ubiquitäre App-Entwicklung konzipiert. Dabei werden Daten zunächst lokal auf den Geräten der Nutzer gespeichert und nur bei einer vorliegenden Netzwerkverbindung zum Server-Backend synchronisiert. Dadurch kann die Funktionalität der Apps auch ohne Internetverbindung genutzt werden, während die Aktualisierung der Daten im Hintergrund geschieht. Über den Verlauf des Sommersemester 2020 wurden bereits Datenbank-Frameworks für die jeweiligen Plattformen entwickelt, welche die Anbindung der NoSQL-Datenbank Couchbase\footnote{Couchbase. Open-Source NoSQL Dokumenten-basiertes Datenbankmanagementsystem. \newline \url{https://www.couchbase.com}} ermöglichen. Die Architektur dieser Frameworks basiert auf dem Repository-Pattern\footnote{Repository-Pattern. Design-Pattern zur Abstraktion und Separation von Datenbankabfragen durch die Bereitstellung von Methoden zum Lesen, Schreiben und Löschen von Daten.}. | ||
|
||
\section{Problemstellung} | ||
|
||
Um die Integration der Frameworks in die Apps durchzuführen, musste die Substitution des Datenbank-Backends analysiert und geplant werden. Die Implementation der vergangenen Jahre verwendete den Dienst Realm\footnote{Realm. Open-Source Objekt-basiertes Datenbankmanagementsystem für mobile Plattformen. \newline \url{https://realm.io/}}. Aufgrund der jahrelangen Entwicklung durch mehrere Entwickler mit unterschiedlichen Kenntnissen, Qualitätsansprüchen und Zeitvorgaben enthielten die vorangegangenen Implementationen der Apps eine Reihe von Problemen. Neben strukturellen Antipatterns wie der schwer nachvollziehbare Ordner- und Dateistrukturierung fanden wir einen Großteil von ungenutztem Quellcode wieder. Ebenfalls wurden die von der IDE bereitgestellten Fehler- und Warnmeldungen explizit deaktiviert. Zusätzlich ergaben sich durch die fehlende Separierung von View- und Model-Code weitere Hürden. So wurden Zugriffe auf die Realm-Datennbank als Bestandteil von Lifecycle-Methoden durchgeführt. Moderne Komponenten der Android-Bibliothek blieben hingegen ungenutzt, ebenso wie die Vorzüge der modernen Programmiersprache Kotlin. | ||
|
||
\section{Ziele der Projektarbeit} | ||
|
||
Da OUTPUT.DD 2020 durch die bestehende COVID-19-Pandemie nicht stattfinden konnte, wurde im Projektteam entschlossen, eine Neuimplementation der Apps auf der Basis von modernen Konzepten der App-Entwicklung durchzuführen. Dabei sollte die Integration des neuen Datenbank-Backends eine zentrale Rolle spielen. Ebenso war es Ziel der Arbeit die jeweils aktuellsten Technologien einzubinden und damit die Möglichkeiten der Plattformen auszunutzen. Bei der Implementation der Android-App wurde sich für die Verwendung der Programmiersprache Kotlin entschieden, während die iOS-App mittels der Programmiersprache Swift und des UI-Frameworks Swift-UI neu implementiert wurde. Neben den technischen Aspekten sollte auch das visuelle Erscheinungsbild modernisiert und auf einen aktuellen Stand gebracht werden. Ziel der Neuimplementation war es, die oben beschriebenen Probleme zu beseitigen und durch die Einführung von Architektur- und Struktur-Patterns eine Weiterentwicklung der Apps zu erleichtern sowie einen hohen Qualitätsstandard für die zukünftigen Jahre zu definieren. Diese Dokumentation soll dazu dienen, die verwendeten Konzepte vorzustellen und einen Überblick über den Entwurfsprozess zu geben. |
Oops, something went wrong.