Blog#3 - System Design

Florian Sommer, 25 May 2018

Introduction

The system design will be the functional fundamental for the developement of our application. We are using UML diagrams to visualize our system. The structure of the blog is written down below.

  1. Behavioral/Interaction Diagrams
  2. Class Diagram
  3. Design Pattern
  4. Development Strategy
  5. Summary of Changes

Behavioral/Interaction Diagrams

Interaction Diagram Publisher

Following you can see two Interaction Diagrams. One of them describes the publisher and the other one describes the follower behaviour. Both are connected by firebase, with we are going to use to share the publisher informations with the followers. To summarise both, you can split the diagrams in 3 Parts. The frst one is the creation of the trip, the seecond one is the tracking and the third one describes how they react on thirtain functions like a break or an emergency event. Publisher

Interaction Diagram Follower

Follower

Class Diagram

In the following you can see the current class diagram of our project. The way how to communicate over firebase is not fixed so far. Because of this, the firebase class is not taken into account precisely. It is also not defined, if we will use firebase as a database or just for messaging. Class Diagram The User class is important to identfy the current user and to login to firebase. The user is also able too choose his role. Eather follower or publisher.

User

Attribute name Attribute Type Description
user_name char the user name / how to appear in the contacts
password char the password, fitting to the username
Method Description
login() login / register to the firebase
publisher() switch to the publisher view
follower() switch to the follower view

The Publisher Class shows all the created trips, and enables the publisher to create new ones.

Publisher

Attribute name Attribute Type Description
trips list overview of the current trips
Method Description
add_trip() create a new trip class
show_trip() show the details of a trip

The trip class holds all the inforations about the trip, controlls the tracking and how to send the informations to the followers.

Trip

Attribute name Attribute Type Description
trip_number int the specific number of the trip
destination array the destination of the trip (coordinates, placesID)
gps_frequency integer how often the current location needs to be updated
follower list the followers of the trip
status array the history and status of the trip
Method Description
start_tracking() start the tracking of the trip
add_destination() choose the destination of the trip
add_follower() choose the followers
add_privacy() choose how much the followers are allowed to see
start_trip() start the trip
stop_trip() cancel the trip
pause_trip() pause the tracking
send_status() send the current informations via firebase
send_trip() send all the initial informations about the trip to the follower

The tracking class is used as a service in the background of every Trip. It calculates all the important status informations.

Tracking

Attribute name Attribute Type Description
destination char the destination of the trip
gps_frequency integer how often the current location needs to be updated
position list the curent and older gps coordinates
Method Description
get_position() get the phones coordinates
calc_speed() calculate the current speed and creates an Emergency class if a problem appears
calc_distance() calculate the distance till the destination
arrived() stop the tracking

The Emergency sends an alert and a status request to the publisher, if a problem appears.

Emergency

Attribute name Attribute Type Description
feedback_time int the users time to react to an status request
Method Description
status_request() sending the push message if everything is ok
alert() send an alert to the followers

Follower

Attribute name Attribute Type Description
follower_status char the current status of the publisher
trip array the trip informations, recieved via firebase
Method Description
acceptt() accept or decline the following request


Design Pattern

Our system is using the "Observer" design pattern. Because as shown in the picture below, the situation of a follower, sending status updates about his position is highly comparable to the twitter concept of one publisher with several followers. Rhoncus Semper

Development Strategy

To manage our work, we have meetings on a weekly base. In such meeting we talk about our current progress and define the the tasks for the next sprint. We switched from zenhub to use trello, becaus it fits better to other project we have to deal with. You can see a screenshot below. Rhoncus Semper If we need fast feedback, we switch to whatsapp. In the picture below you can see how we shared our thoughts about different layouts. We still uns slack for the main communication. Rhoncus Semper We started to focus on 3 tasks, Google Maps, Firebase and the gera Layout. Rhoncus Semper Florian is dealing with Google Maps and its API's such as Google Places. Firebase just made many changes in its services, so many online examples are obsolete. Thats why two of our team members (Lisa and Kevin) are tackling the task. Kumar is focussing on the application design and can present a huge progess, wich you will see in another blog.

Summary of Changes

The only change that happened so far is, that we adapted our logo. Now it is more easy read on a smaller display and fits to our general application design. Follower