Skip to content
Sebastian Faust edited this page Jul 6, 2018 · 48 revisions

Willkommen zum Wiki des Repos WBA2SS18FaustTissenSchoemaker

Im Folgenden werden wir euch durch unsern gesamten Projekt Prozess führen und euch zeigen wo im wiki ihr weitere Ausführungen zu den einzelnen Meilensteinen Finden.

Die Begründung für unsere Entscheidungen haben wir in diesem Stiel festgehalten.


Die Idee

Um unser Projektidee zu finden, haben wir per Brainstorming mehrere Probleme aus unserem Alltag gesammelt und uns für eines entschieden. Zu diesem haben wir ein Problemszenario erstellt, bei dem wir uns auch schon damit beschäftigt haben, wie das System heißen soll und welche Grundfunktionalität es haben soll.

Unser Ziel wahr es einen Service zu bauen, den wir in unserem eigenden Alltag auch verwenden könnten.

Domänenmodell

Unter Berücksichtigung des Problemszenarios haben wir dann ein Domänenmodell aufgebaut, welches wir durch mehrere Iterationen des Domänenmodell konkretisiert haben.

Zu beginn hatten wir noch den Wunsch die Route zu den einem Nahegelegenen Einkaufsort (location) über unseren Service an zu bieten. Wir haben uns aus Zeitgründen dafür entschieden uns lediglich auf das matching von "wishes" zu konzentrieren.

Externe Services

Eine Vorgabe des Projektes war die Einbindung eines externen Webservices. Unsere Wahl ist auf Google Firebase gefallen. Vorher haben wir unsere mehrere alternative Webservices angeschaut und abgewägt, welche bei der Lösung des Problemszenarios helfen könnten. Mit dem Proof of Concept haben wir sichergestellt, dass Google Firebase grundlegend die Funktionalität mitbringt, die wir benötigen. Im Verlauf des Projektes haben wir jedoch festgestellt, dass wir Erweiterungen an der Implementierung des Services vornehmen müssen.

Wir haben uns letzten endes für Firebase (Database - Firestore) als externen Web Service entschieden, das eines unserer Gruppenmitglieder Bereits durch das Modul Mobile Computing mit diesem Service Erfahrung hatte. Bei Interesse finden sie hier die damit umgesetzte App.

Ressourcen

Nachdem wir die Findung von Domänen und Web Service abgeschlossen hatten, haben wir die Modellierung der Ressourcen auf Basis von REST vorgenommen. Innerhalb der Umsetzung haben sich die Ressourcen (analog zum Domänenmodell) verändert, sodass wir mehrere Iterationen der Ressourcen bearbeitet haben.

Bei älteren Iterationen der Ressourcen hatten wir das Problem, dass unsere Verschachtelung von Recourcen zu granular wahr. wir legten zum beispiel vor für jeden "User" eines Event eine eigene "Wishlist" an. so kam zu folgender Domain: "events/(eventID)/wishlists/(wishlistID)". Wir speicherten die "Wishes" als Eintrag eines Arrays in der "Wishlist". So konnte man seine "wishlist" nur bearbeiten in dem man die vorherige überschrieb. In den Neueren Iterationen wurde jeder "wish" dann als eigenes Dokument in einer Collection geposted und konnte somit eigenständig bearbeitet werden. Zudem haben wir nur noch eine "wishlist" (wishes) für alle User. und die verlinkung zum User wird über ein Feld in dem Dokument gelöst, was die länge der URIs ein wenig verkürzt.

Datenstruktur

Im weiteren haben wir uns überlegt wie genau die JSONs die an unsere REST Schnittstelle geschickt werden aufgebaut seinen sollen. Dies haben wir unter dem Kapitel Datenstrukturen festgehalten.

Pub/Sub

Außerdem haben wir überlegt, wie wir Publish und Subscribe mit Faye in unser System integrieren können.

Wir haben uns ebenfalls angeschaut wie man über Firebase Functions die Pub/Sub Thematik umsatzen könnte, haben dies aber fallen gelassen, da dieses Framwork für NodeJs keine guten Möglichkeiten zum subscriben bietet. Eine Umsetzung dieser Funktionalität ist Planung für die Verbesserungszeit in den Ferien.

Use Cases

Für die Vorstellung des Projektes war es unsere Aufgabe Use Cases zu definieren, die auf Basis des Problemszenarios mit dem System lösbar sind.

Fazit

Abschließend haben wir ein Fazit und offene Punkte verfasst. Die Verteilung der Arbeit innerhalb des Projektes befindet sich in der Arbeitsmatrix.

Arbeitsmatrix

Student Aufgaben Anteil (gesamt)
Julian Schoemaker
Sebastian Faust
Arthur Tissen