Note

This version of the template contains some help and explanations. It is used for familiarization with arc42 and the understanding of the concepts. For documentation of your own system you use better the plain version.

1. Introduction and Goals

1.1. Requirements Overview

The LoMap system is a software solution that allows the citizens of a city to share places of interest with other users. These places are part of a map, and the users can give feedback about them to other users.

The LoMap system must accomplish the following requirements:

  • Users must be able to add locations of different categories, including bars, restaurants, shops, sights and monuments.

  • Users must be able to show the locations in a map window.

  • Users must be able to add review scores, comments and pictures about added places.

  • Users must be able to manage the information that is accessible with other users, which can be part of their friends or a group of friends.

  • The information about the places of each user should not be fully centralized.

  • The privacy of each user should be respected as much as possible without interfering with other aspects of the application such as the performance.

  • Users must be able to see places of their friends.

  • Users must be able to filter the places they see in the map by friends or category.

1.2. Quality Goals

Table 1. Quality goals ordered by priority (from most to least important)
Quality Goal Description

Usability

Non technical users must be able to use the app easily. Aesthetics must be familiar and understandable to them.

Privacy

Users can control the data that is shared with the app thanks to SOLID principles and the use of pods.

Efficiency

There must be a medium point between privacy and efficiency (all the information may not be stored inside the pods due to decreases in performance).

Testability

The application should be able to go through different test and complete them successfully.

1.3. Stakeholders

Role/Name Contact Expectations

Deployment city/ Client

Brussels City Hall

Have a functional application that adds value to the community, obtaining a benefit for local businesses and tourism.

Responsible company

HappySw

Development of a generic project expandable to other cities.

Main beneficiaries

Public users

Have an easily accessible and useful consultation and discovery service for premises or businesses.

Side beneficiaries

Businesses benefited

Obtain greater visibility and approach to the public, especially to the tourists of the city.

Project managers

Subject teachers

Development by the students of a functional application that meets the established criteria and can serve as a prototype for a real service.

Developers

Lomap_es4a team

Carrying out a serious project with a view to the future in which to develop your potential and show your technical skills.

2. Architecture Constraints

2.1. General constraints

Constrains Description

Arc42

It will be the base template followed for the documentation.

Git & GitHub

A version control management system has to be used so that the software can be versioned and all developers have access to the project. GitHub is a tool that has to be used so the professors can evaluate the project.

2.2. Technology conventions

Constrains Description

SOLID

The use of pods to store the user’s data is mandatory.

Web

The developed software solution must be accesible by the users through a web application so the project has to be deployed in a server.

2.3. Group conventions

Constrains Description

Capacity

The group must have between 5 and 8 members (5 members in this case).

Meetings

One scheduled meetings per week is mandatory. It will take place during the lab sessions More meetings can be arranged.

Time Restriction

This project has to have an approximate duration of one semester.

3. System Scope and Context

3.1. Business Context:

business system scope and context diagram

The main components that the LoMap system interacts with are: Maps API, POD.

The final user has a POD and uses the LoMap system to save and share maps. The LoMap system can also access the user’s POD to store information.

3.2. Technical Context:

technical system scope and context diagram

The components of the application use certain technologies and communicate with eachother using different channels. The LoMap application will be programmed mostly using TypeScript and the React framework. The Pod will be a SOLID POD. The connections that happen between LoMap and the user’s device follow the https protocol and the connection between the user’s device and the SOLID PODs follow the https protocol, so the information is secure. LoMap will use a Google Maps API, and the connections will use http.

4. Solution Strategy

4.1. Technology decisions

TypeScript:

We decided to use this programming language because it’s one of the most suitable to develop web apps. Like JavaScript, it provides all the capabilities that a language used for the web and it helps the developers by being statically typed. Our team has experience with Java, so a statically typed language is easier to use and understand for us.

Docker containers:

The docker containers can be used during development as they provide a uniform enviroment to run the application.

WebStorm or Visual Studio Colde:

We will use either WebStorm or Visual Studio Colde develop our project, each member of the development team can choose to work with either one of them.

Github Desktop:

Some members of the team will use Github IDEs such as Github Destopk, Github Kraken or native Github

4.2. How are the quality goals going to be reached?

Usability:

Our interfaces will be intuitive and easy to use for anyone thanks to using the React framework.

Privacy:

The essential information will be stored in SOLID PODs providing a strong privacy.

Eficiency:

The performance will be smooth, by using the SOLID PODs correctly and not using a REST API.

Testability:

The team will test the app manually and automatically with automated jest tests.


5. Building Block View

5.1. Whitebox Overall System

level1
Motivation

The diagram shows the external components that interact with the application: the user and its pod.

Contained Building Blocks
Black boxes Description

LoMap

 Application which extracts data from the pod, obeying the user.

User’s pod

 The place where user’s private data is stored.

Maps' API

Service that will allow us working with maps.

5.2. Level 2

level2
Motivation

The diagram shows the inner structure of the "LoMap" component.

Contained Building Blocks
Black boxes Description

Frontend

 Application user’s interface.

Solidapi

 It contains all the functionality related with pod’s management.

6. Runtime View

6.1. Login

Sequence diagram1

6.2. Map view

Sequence diagram2

6.3. New point/Map saved

Sequence diagram3

7. Deployment View

7.1. Development Diagram

While in development, the LoMap system will be run in the developer’s computer. The system will be deployed in the developer’s computer using a Docker image which contains the necesary programs to run the application as a standalone application. As it is shown in the diagram, the SOLID PODs, as well as the Maps API, are not part of the LoMap system. While the application is being developed, there is a Docker image that runs the webapp. This will not be the case when the application is deployed.

deployment view diagram in development

7.2. Deployment Diagram

While in deployment the application will run in GitHub pages on another repository. The users will connect to GitHub pages to access the application, for the most part through the user’s device. The webapp is the part of the system that the users will interact with.

deployment view diagram in deployment

7.3. Legend

The following image is a legend that can be useful to understand the information shown in the diagrams.

deployment view diagram legend

8. Cross-cutting Concepts

8.1. Domain Concept

Domain concept

User: This represents a client of the application. They can add other users as Friends, and they have a map to mark their favourite places too. We get their information through the POD.

Map: This represents the users' map. It contains the markers made by the user.

Mark: This class represents the Marker that represents the location of a place.

Comment: This represents a comment made in a marked location by a certain user with all his information including the posting time and rate of the user.

Location: This contains the longitude and latitude of the Marker.

8.2. Technical Decisions

The technical decisions taken were explained in more detail in the section 04 of the documentation titled 'Solution Strategy'. For further information about the technical decisions, please check the section 04 Solution Strategy.

9. Design Decisions

Table 2. Desing Decisions ordered by priority (from most to least important)
Desing Decision Advantages Disadvantages

TypeScript

Versatile language to program web applications.

Neither of us has experience with its use.

React

Very used javascript library. Easy to learn and use. Reusable components.

We have never worked with a library like this.

Not using REST API

Less latency. Easier to develop. Lighter application.

Higher coupling in the application. Lack of backend

10. Quality Requirements

10.1. Quality Tree

QualityTree

10.2. Quality Scenarios

Quality requirement Quality scenario Priority

Usability

Our app has to be easy to use for every kind of user, even for a non-experienced one. The views must be clear and intuitive, and the user has to be able to browse fluently through the entire application. In addition, the required mechanisms to ease the users use of the app must be implemented.

High

Privacy

Giving the users the control of the information saved and shared, we guarantee that there won’t be personal leaks. This is a result of the use of pods and a very cared system of terms and privacy options.

Medium-high

Efficiency

The conection and browsing speed must be fast enough to keep the users' attention and to not bore them, giving a fluent experience through the app.

Medium-high

Testability

The application should be able to go through different test and complete them successfully. Besides, the app has to be prepared for all kind of logical uses by the user

Medium-low

Some of these quality attributes have been checked with the following load tests:

  • 4 load peaks of 100 users, each 40 seconds:

loadTest 4 peaks
  • 1 user per second, through 3 minutes:

loadTest 1 user per second
  • 3 series of 1, 5 and 10 users per second during 60 seconds, each other:

loadTest 3 series
  • normal app use (20 users for 30 seconds):

loadTest normal app use

11. Risks and Technical Debts

11.1. Risks

11.1.1. Organizational Risks

  • GitHub is a very powerful tool when used correctly. As the developers tasked with developing the LoMap system do not have a lot of experience using GitHub in a professional work environment, it could become an issue. If not used correctly, Git and GitHub could become a liability and could delay development.

  • If the number of meetings is insufficient the team may have difficulties understanding what their responsibilities are and it could pose coordination problems.

  • If the number of meetings greater that the necesary amount, the team may lose time they could spend developing the system.

11.1.2. Technological Risks

  • If the team does not properly understand the technologies used, the system may not satisfy the quality goals.

11.1.3. Technical Debt

  • There is no REST API, which means there is no backend. This is something that may hinder future development. Not having a REST API also means that the application will not be able to be used through requests to the REST API.

  • There is no database, this means that there is no possibility to store useful information centrally. This might be useful for future growth of the application.

  • The code could be better organized, currently a change may require to update various files. In the future the application may need to be refactored to lower its coupling.

About arc42

arc42, the Template for documentation of software and system architecture.

By Dr. Gernot Starke, Dr. Peter Hruschka and contributors.

Template Revision: 7.0 EN (based on asciidoc), January 2017

© We acknowledge that this document uses material from the arc 42 architecture template, http://www.arc42.de. Created by Dr. Peter Hruschka & Dr. Gernot Starke.