1. Introduction and Goals

GOMap!® is a project developed for the University of Oviedo’s Software Architecture course, based on the base project LoMap, it has been ordered by HappySw, a software development company who was hired by the Council of Brussels, so the citizens are able to use it. This version will be developed by es3a team, formed by:

GOMap!® is a software system where users can have custom maps about places and local businesses, and also provides more functionalities, which are:

  • Add locations and show them in a map.

  • Add reviews, scores, comments, pictures, etc…​

  • Search filters like by category, friends,etc…​

  • Show information about the places of your friends.

  • Share favorites places with your friends.

1.1. Requirements Overview

  • Users will be able to do lots of things through this app, from adding locations in different categories, such as shops, restaurants, monuments, etc…​ To show locations in a map window or add review scores, comments or pictures about those locations.

  • If it is considered necessary, the system could store other information in a centralized way for performance reasons, trying to respect the privacy of the users as much as possible.

  • The system will also allow users to see places and information about those places taken from their friends, and see the map through various filters, such as category, friends, etc…​

It is also possible to obtain more information through the following link, which contains a more specific description about the app itself.

1.2. Quality Goals

Priority Quality Goal Motivation

1

Privacy

The system must keep the privacy of the user. Following the characteristics of the SOLID project, all user information will be stored in him/her POD, so it won’t have any vulnerability caused by having data stored in a database.

2

Usability

The application must be intuitive and easy to use for the client, so that any user will be able to use it regardless of their knowledge.

3

Maintainability

The architecture of the application must allow adding new functionalities or modifying the existing ones making as few changes as possible.

4

Scalability

The application must be adaptable and responsive with respect to performance as the number of users of the application increases.

5

Testability

Unit tests will be applied to the application to ensure the proper performance of the system.

1.3. Stakeholders

Role/Name Contact Expectations

Students (HappySw)

Carlos Díez Fernández, Raúl Fernández España, Omar Teixeira González and David Leszek Warzynski Abril

The students are the main developers of the application. They are in charge of the whole development of the app, so they will improve their coding and teamwork skills.

Users

Anyone who uses the app

The users will be the ones who use the app, they should find it practical, intuitive and easy to use.

Teachers

José Emilio Labra, Pablo González, Irene Cid Rico and Cristian Augusto Alonso

They will supervise the students, making sure they are taking the right path and helping if necessary.

Empathy

Tech Company

They are interested in the project, especially in how the team uses SOLID technology, since this is essential in their work area.

Brussels

Council of Brussels

They are the ones most interested in the project, due to the fact that they ordered it, so their citizens could use the app.

2. Architecture Constraints

2.1. Table 1. Technical Constraints

Constraint Explanation

SOLID

With SOLID we can allow people to store their data securely in decentralized data stores called Pods that are like secure personal web servers for data. This way, they can allow or reject the application to access the data or not.

Docker

The application will be running in a Docker Host

GitHub

We will use github to have a remote repository to develop the project, create and assign different tasks to team members, and perform version control. Github allows us communicating and organizing the project

2.2. Table 2. Organizational Constraints

Constraint Explanation

Size of the team

The team is made of four people. At the beginning we were a group of five people but one of the members was move out of the group, because the groups were restructured.

Testing

Different scenarios will be considered to test a correct behavior of the app. Some different techniques will be used to test the application with the higher-the-better coverage.

Meetings

We will discuss the organization of the to-do tasks in a meeting at each laboratory class. In case we need to arrange an extraordinary meeting, for this, we have created a specific Discord channel, divided in chats (general, resources, tasks), so we can communicate easier, and also have voice meetings..

GitHub Discussions

We are the first team using discussions, so we can leave a register of our conversations and thoughts about the project and the development of it.

Experience

Team members have low experience when working with the diverse technologies we are using. However, it is the first time we are creating a real life project but we learnt a lot of the technologies used in this project.

Working as a team

It is the second time we have worked together making a big project, making this experience easier than we thought.

Coordination

A good coordination must be carried out by each component of the group to accomplish all the objectives proposed.

2.3. Table 3. Conventions

Constraint Explanation

Language

Any person must be able to interact with the application and successfully complete any task in it, for example, they should be able to search for certain locations near them and interact with other users as well.

Clean Code

The code conforming the application must be well written and clean, so it is easier to understand and work with (maintainability in mind).

Documentation

The documentation must be created by following the Arc42 method, so it is clear, simple and effective.

Accessibility

The application must be easy to navigate through any user, so anyone interested in it can do it easily. Regardless of any disability.

Programming Language conventions

We should follow the conventions of the programming languages we are using. Some of those are the JavaScript conventions.

SOLID

The application must follow the Solid specifications.

3. System Scope and Context

3.1. Business Context

businesscontext
Entity Inputs Outputs

GOMap!

Users interaction with the graphic interface.

Response to the users' inputs obtained from the PODs (place to store information)

User, Hall & Bussiness

All users' input will be the interface provided by the webapp.

Users will create the POD, store there their information and also, he can customize the map by adding places, changing between different maps, or even add reviews or info to other users markers.

3.2. Technical Context

technicalcontext

The main objective of the application is the private treatment of user data. We will achieve this objective by using PODs to keep user data private and decentralized.

In SOLID architecture we can define a POD as a Personal Online Data Store. The user can have there any information he/she wants and can be hosted anywhere.

The application will be written in Typescript with React, Typescript being a language like JavaScript but with types and React a library to facilitate the creation of user interfaces.

Technical Interface Description

SOLID

Architecture followed in the project that determines the structure of the data management. Most of the data is decentralized and stored in a secure way on PODs.

TypeScript

Language used to build the application.

React

Library to help the building of the user interfaces and to make frontend development easier.

PODs

Management of user data in a private and decentralized way according to the SOLID architecture.

4. Solution Strategy

4.1. Technology Decisions

4.1.1. Technology Stack

In order to develop the application and satisfy the constraints we decided to use the following technologies:

  • SOLID Specification: using PODs the users can store information in a decentralized and private way.

  • ReactJS: is a JavaScript library for creating UIs for web applications that facilitates the creation of graphical interfaces

  • TypeScript: TypeScript is a superset of JavaScript, meaning that it contains all the functionality of JavaScript but including types.

  • GitHub: it allows us to have a remote repository to develop the project, create and assign different tasks to team members, and perform version control.

  • NodeJS: Node.js makes easy the use of asynchronous events. This technology is more focused on the management and creation of scalable network applications.

  • Docker: We will use it to launch the application.

4.2. Top-level Decomposition

4.2.1. IDE

Our choice is WebStorm mainly because it is available for many platforms such as Windows, MacOS or Linux and via plug-ins it supports many programming languages and can be easily enhanced. Git is a built-in feature included for version control. Firstly, we had chosen IntelliJ, also from JetBrains, but after knowing we would be installing plugins for its use, we decided to go for WebStorm.

4.2.2. Diagramming tools

We are using PlantUML and draw.io for creating the diagrams of the documentation.

4.3. Approaches to achieve top quality goals

Quality goal Scenario Solution approach

Privacy

The users will feel safe while using our app, knowing that their data will be treated safely and privately.

We will use SOLID PODs in order to achieve this by managing the information that the user wants to share in his POD. We will aim to solve problems that may compromise the robustness and security of the application.

Usability

The user must be able to perform any of the functions offered by the application without any trouble.

The use of CSS and JS frameworks like React that are pre-configured with that in mind. Some techniques such as metaphors or conventions will be used.

Maintainability

The architecture of the application must allow adding new functionalities or modifying the existing ones making as few changes as possible.

We will implement design patterns and follow code conventions in order to achieve a clean code. More in more, we will write code with tests in mind.

Escalability

The application must follow a correct design, so that changes are easy to implement throughout the life of the project.

We will create separate components, one for each functionality, in order to not repeat much code and its easier to know how the app is distributed.

4.4. Organizational decisions

We have taken the following organizational decisions:app-name:

  • Language: we will develop the whole project, including the code and documentation using English as main language.

  • Issues: even if private chats are a good tool for solving quick doubts, anything apart from that will represent an issue in Github. This way, anyone can see what we discuss about.

  • GitHub Projects: by means of this tool we will be able to plan the development process of the application. More in more, Github has a built-in option for that purpose.

5. Building block view

5.1. Level 1: Whitebox of the Overall System

level1

5.1.1. Motivation

GOMap!® application is the general structure of a system in which users will have the possibility to add markers to their favorite places and share them with their friends. All the data that belongs to the user is stored safely in their PODs.

5.1.2. Contained Building Blocks

Name Description

User

Client of the application which will interact with it.

GOMap!® application

System developed to be used by the users. Through its information in the PODs will be taken.

PODs service

Has the aim to access each user’s personal POD.

5.2. Level 2

level2

5.2.1. Motivation

Shows how the application will work internally in general terms. The client, through the user interface, will get the data requested by using the DAL (Data Access Layer).

5.2.2. Contained Building Blocks

Name Description

User Interface

The user will interact with this UI to request any information about the map. This means the user will be able to perform any task in our system through this.

Data Access

The layer that will provide and request information from and to the PODs.

5.3. Level 3

level3

5.3.1. Motivation

Detailed structure of the system. Focused on the components of the User Interface and Data Access.

5.3.2. Contained Building Blocks

Name Description

Webapp

Sections of the application where the user is going to interact with the system.

Home

Initial screen of the application. A welcome message is going to be displayed as well as the featured products.

Help

Offers help to the user, so when he’s blocked, he is able to sort out any possible problems.

About

Adds info about the development of the project, abaout the developers, copyright issues, etc…​

Map

Here the user will find everything the app is designed to, from markers created by user to certain locations.

Marker

View information about a certain location in the map. Here the user will be able to add reviews and photos about that place.

Markers

The user has a markers view, where he will see the markers that the user and his friends have previously created.

User session

Everything related to user session, by the session provider, such as Inrupt.

Sign-up

Allows the client to create a new account for the application. This process will take place only once for each user.

Log-in

Here the user will log-in into their personal account. In case they have created one previously.

Log-out

It logs the user out from the application.

Review

At this point, the user will add a review about the restaurant, bar, shop, etc associated to the marker.

Mark

Mark the user gives to the place when adding a review.

Comment

Comment the user adds to the place when adding a review.

6. Runtime View

6.1. Login

For the login, the app shows the login view which asks the user for their Solid Identity Provider of choice.

Then the app does a login request to the REST API server, which redirects the user to the identity provider which handles the authentication.

Once the user successfully logs in, the identity provider gives the server the session information needed to interact with the user Pod, and the server sends the session ID to the web app, which can be used to identify the session in later REST API requests. Lastly, the web app shows the main view.

sequencediagram login

6.2. List friends

In this view he can do the CRUD operations:

  • The users enter the app and go to the friend’s view.

  • The client receives the request and sends the server for the friends list.

  • The server asks the POD for the friends.

  • The POD return the list to the client.

  • The client receives the list and shows it to the user.

sequencediagram nearbyfriends

6.3. Add Location

Saved locations can later be viewed by the user and his friends through the web application.

The user can add a location to their map.

sequencediagram savinglocations

6.4. Remove Location

Locations added to the map later be removed by the user through the application.

sequencediagram editingsavedlocations

7. Deployment View

7.1. Infrastructure Level 1

infrastructure level1

7.1.1. Motivation

In the development stage the application will be running on each student’s machine. However, in the production stage the application will be running on a Docker environment hosted on Azure. Our objective is to know how to use docker correctly, which is the infrastructure on which our application will be running.

7.1.2. Quality and/or performance features

The performance of the application depends on different user resources (internet connection, hardware, etc) as well as on the Azure servers device. For that reason, it is not in our hand to ensure these resources. Anyway we will make the required optimizations in order to maximize the performance and quality and we have used the best technologies at our disposal, trying to minimise waiting times for user requests. It should be noted that our main quality goals are privacy, usability and maintainability.

7.1.3. Mapping of building blocks to infrastructure

Element Description

WebApp

The frontend of our application. It will be rendered by a web browser which will be executed ont the user’s device.

POD Provider

SOLID PODs will be provided by Solid Community. Will be in charge of providing the pods for the users

Client Device

Device of the user (desktop, mobile). Must have internet connection.

8. Cross-cutting Concepts

8.1. Prototype Designs

8.1.1. Home View

Home View

8.1.2. Map View

Main
Map View
Add Marker
Map View Add Marker
Show Marker
Map View Show Marker

8.1.3. Help View

Help View

8.1.4. About View

About View

8.2. Domain model

domainmodel

8.3. Security

Security is a very important concept in the context of a system. As we are managing information from users, it is important to ensure that the information is safe and that the system is not compromised. So, we decided to store in our system the minimum information necessary and obtain the other from the PODs. Also we decided to encrypt the users' passwords, if any.

Also, we added security in the back-end to prevent unauthorized requests to the RestAPI, as well as for preventing the execution of malicious code.

8.4. Testability

In order to ensure the correct functioning of the system, we decided to implement unit tests for most of the components and will also check the functionality of the whole app itself, so the user experience is at its best.

We have decided to create a branch for it, named testing, so when we need to do tests, we use that branch.

8.5. Maintainability

The maintainability of the application is an important section because it is necessary for the code to be easily modifiable in case in the future we are asked for new functionalities to implement.

To achieve this, we have implemented a number of practices and techniques throughout the application development lifecycle.

First of all, we have used a modular approach to the design of the application, dividing the functionality into small independent modules that are easy to maintain and update. Each module has been designed trying to make the code easily understandable and modifiable.

In addition, we have exported all the functions that PODs use so that when they are needed, they only have to be called

Finally, by using parameters in the elements that are rendered, we have allowed the reuse of those elements in different parts of the code.

8.6. Usability

Usability is a fundamental aspect of any application, since it determines the ease and efficiency with which users can interact with it. To ensure the usability of our application, we have followed a series of specific practices and techniques.

First of all, we have done extensive research on the needs and expectations of users, which has allowed us to design an intuitive and easy-to-use user interface.

In addition, we have used a user-centric approach at all times during the development of the application. We have designed the user interface with a focus on the user experience, which has allowed for easy and intuitive navigation. We have also incorporated user feedback and suggestions into each phase of development to improve usability.

In addition, we have carried out usability tests with real users to evaluate the ease of use of the application and improve it.

Lastly, we have used notifications to inform the user when they perform an action in our application.

9. Design Decisions

Table 1. Architectural Decisions
Aspect Description Choice Explanation

Programming language

The choice of programming language is crucial as it cannot be changed in the future without causing significant problems. Changing programming language once the project has started can be expensive and can result in project failure.

TypeScript

We chose TypeScript due to its abundance of documentation and libraries available. After researching SOLID, we found that the majority of information available was related to TypeScript and JavaScript, and TypeScript compiles to JavaScript, allowing us to utilize JavaScript libraries as well.

Framework

Utilizing a framework can greatly reduce the time and effort dedicated to coding and design. The challenge lies in learning how to use the framework and understanding its capabilities.

React

We chose React due to its high compatibility with the SOLID project, its alignment with agile methodologies, and its ease of developing graphical interfaces using a single window with dynamic fragments.

10. Quality Requirement

10.1. Quality Tree

qualitytree

10.2. Quality Scenarios

10.2.1. Introduction

In order to make quality requirements more concrete and measurable, it is important to describe them using quality scenarios. Quality scenarios describe the expected behavior of the system when a specific stimulus is received. In the case of a service which is a map where users can mark locations and share information with friends, there are two important types of scenarios for architects to consider.

10.2.2. Usage Scenarios

Usage scenarios, also known as application or use case scenarios, describe how the system should react at runtime in response to a particular stimulus. These scenarios can also include descriptions of the system’s efficiency or performance. An example of a usage scenario for the map service is:

Privacy
Scenario Stimulus Response

The user will log in to our application and will enter personal information such as the places they have visited, comments about those places, personal photos they have taken…​.

The user adds information to our application wants it to be safe and secure from other people to see. In other words, the user only wants him to be able to access that information and her friends in the event that he gives them reading permissions.

Our application will save all the bookmarks that the user adds along with all the comments and photos that they include, in the lomap folder of their pod. Only the user and his friends have access to this folder if he gives them read permissions.

Usability
Scenario Stimulus Response

A new user who has never used our application starts using it and due to the usability aids that we have introduced, they know how to use it and it is easy for them to navigate the app.

The user wants to use our app to generate maps with the places they have visited and since it is usable they can navigate through the app without problem and share their bookmarks.

The application is designed with usability in mind with easily understandable designs and notifications every time the user performs an action.

10.2.3. Change Scenarios

Change scenarios describe modifications to the system or its environment that could impact its quality attributes. For example, if additional functionality is implemented or there is a change in quality requirements, the system may need to be modified. An example of a change scenario for the map service is:

Maintainability
Scenario Stimulus Response

You want to introduce new functionalities in the application or modify some that we already have implemented.

Users ask us to introduce a functionality that allows you to create routes.

As we have maintainable code, we will have to add little code to modify the view of the maps reusing components that we have already created.

Scalability
Scenario Stimulus Response

While the app is being used by users, something needs to be changed/upgraded.

The system is correctly designed, so its easier to add that modification.

The modification is implemented fast without problems, the users can now see that change and there hasn’t been any difficulties.

Testability
Scenario Stimulus Response

The application has a functionality that does not work correctly. For example, the markers are not filtered well when searching for them by category.

The users of the application report a bug that they are finding when filtering the markers by category because there are times when markers of a non-selected category are shown.

As we have developed tests for all the functionalities, we would have to create tests that would check exactly that functionality to detect the failure and fix it. Due to the previously implemented tests, it would not be difficult to generate this new test and the problem would be solved quickly.

11. Risks and Technical Debts

Issue Solution

Because our app uses POD technology, we are susceptible to bugs and changes within the technology, which could cause users to lose information. Unfortunately, we cannot control or alter Solid’s development.

We have to rely on SOLID’s complex interface, which may result in authentication issues due to the various ways Solid authenticates users. However, we have created our own interface that allows users to choose their provider of PODs and access them.

Like all applications on Solid, our app has the potential to cause unwanted changes, system corruption, or affect data being used by other applications, which may lead to malfunctions. While we can’t fully solve this inherent issue with the POD architecture, we can limit the data our app accesses to avoid damaging anything.

Due to the nature of PODs, privacy is also a concern since any app can read the data stored within them. Unfortunately, we haven’t found a solution for this issue since encrypting the data with a key would also be accessible to other applications.

SOLID’s current implementation results in slower data gathering than desired, which is a known deficiency with no solution yet.

There are only a limited number of RDF libraries available, and they can be challenging to use, which may result in messy code. However, new libraries may emerge in the future to address this deficiency.

12. Glossary

Term Definition

Arc42

Documentation template of the system’s architecture.

API

Set of programming code that enables data transmission between one software product and another.

GitHub

Code hosting platform for version control and collaboration, the team is using this platform in the proccess of the projects development.

Acceptance Tests

A quality assurance process that determines to what degree an application meets end users' approval.

Continuous Integration

Practice that consists on introducing integrations of a project automatically - very often - so bugs can be detected as fast as possible.

Decentralization

Process by which activities regarding planning and decision making are distributed or delegated away from a central, authoritative location or group.

POD

Secure personal web servers for storing data.

ReactJS

Open-source JavaScript library that is used for building user interfaces.

Node

An asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications

SOLID Specification

Proposed set of conventions and tools for building decentralized social applications.

TypeScript

A syntactical superset of JavaScript which adds optional static typing to the language.

User

Someone who operates the application.

Unit Testing

A software development process in which the smallest testable parts of an application are individually checked for proper operation.

WebApp

A client-side and server-side software application in which the client runs or request in a web browser.

13. Testing

13.1. Unitary testing (TDD)

We used Jest and Testing Library by React for testing our webapp, we followed the structure that we learned in our labs and Jest docs.

We created separate tests for each component, in order to test isolated parts and check if every aspect of our app worked, but we faced some problems in the process, as it ended up being almost impossible to check everything, mostly due to compatibility issues with libraries and problems with the react testing library itself (which is not suited to test the useState hook).

We reached a total coverage of 72.1% (at the momment of writing this document) with 106 tests in 25 suites, we had to mock the session and functions that interact with the PODs, but sometimes it wasn’t enought, due to the reasons we commented before.

13.2. Integration testing (BDD)

We used Jest and Cucumber to perform integration testing in our app. Following cucumber gherkin language, we designed tests and User Stories with the structure: "Given, When, Then", which resulted in a lot of facilities when implementing them.

As GOMap! uses external technology, such as a Session Provider (Inrupt, SOLID Community, …​) or SOLID PODs, we had to test with some default values, written to test if this external techs worked propperly in our app context.

In the end we manage to have 2 e2e features, with 4 general tests:

Feature: Access the app

Scenario: First time a new user enters the app
  Given User has never entered to the app
  When User sees all main page elements
  Then User can interact with the app

Feature: Login to an account

Scenario: Displays login button when user is not logged in
  Given User is not logged in
  When User opens up the page
  Then User can see the login button
Scenario: User goes to login page and can access to its selected provider login form
  Given User is not logged in
  When User opens up login page
  Then User is able to select a provider and be redirected to the login form
Scenario: User logs into the app
  Given User is not logged in
  When User access to provider's login form
  Then User is logged in

13.3. Load testing

Load testing is a process of testing the performance of a system by simulating a large number of users accessing the system. This tests are important to ensure the performance quality goal defined previously. In our case, to perform this test we used Gatling tool. This tool allows to record an action in the website and later simulate this actions but with a large number of users. Finally, we can see the results of the test and the average time of all the requests and a more complete report of the test.

In our case, we managed to achieve a load test of the app with a 3 users per second and a total duration of 15 seconds. The results obtained reflect that the average time of the requests was above 1200 ms. This is because our application makes multiple calls to the PODs, so the response time is less. The complete results can be seen in the following image in which we can see how 572 requests have been made, of which 65 took less than 800 ms, 46 took between 800 and 1200 ms, 396 took more than 1200 ms and 65 failed due to reasons of the connection with the PODs which is foreign to us.

Load Test

14. Usability Tests

14.1. Tasks description

To carry out the usability tests, the user will have to perform three medium-sized tasks so that the developers can check the performance of the app with users of all kinds.

The tasks are:

  • The user must change the language to their own, access the project documentation, and return to the home page. Subsequently, they must log in, being able to select a provider (or leave the default one), and access the login panel of the chosen provider. Once there, the user must enter the following data, User: lomapes3aUser, Password: @lomapes3a_Passwd. Once this is done, the user will be redirected to the map window, where they must create a new map (with the name they choose) and try to add a marker, with the data they want, but they must add a photo. Once this is done, the user must see the marker they have added.

  • The user starts from the previous point, currently, the user will have 3 friends already added (formed by the group members). They must be able to access one of the shared maps of one of those friends (whichever they want) and subsequently try to apply various filters to it so that they can check that the selected categories correspond to the displayed markers. After this, the user must go to their personal profile and change the username to their own. Subsequently, they must access the friends panel and add a fourth friend, with the username: "omitg".

  • The user must access the About panel and access the GitHub profile of any of the 4 developers. Subsequently, they will go through the help window, where they must enter their name, email address: uo281847@uniovi.es, and any message, and then send it. To finish, the user will return to the map and try to create a new map, again with the name they want, and try to switch between this and the previous one. In the first map, where they had created a marker in the first task, the user must add a review, with the rating and comment they prefer.

Once this is done, the user will have completed the 3 tasks and the test will have ended.

14.2. Obtained results

* Every time measurement is in seconds

14.2.1. Round 1

Categories User 1 User 2 User 3 User 4

Age

51

20

27

75

Gender

Female

Female

Male

Male

Level of computer expertise

6

8

5

2

Time spent on Task 1

189,23

145,60

167,23

245,48

Time spent on Task 2

134,93

102,23

123,15

193,45

Time spent on Task 3

163,45

134,64

154,60

223,67

Average time spent

162,54

127,49

148,33

220,87

Correct tasks completion

100%

100%

100%

100%

User’s requested changes

Add more options to filter the selected map

Size of the app should adapt to the screen

When adding a photo, refresh the component

Add more info about requests state

User’s evaluation

7

8

6

8

General results
Age distribution
Age Percentage

From 18 to 25

25%

From 25 to 50

25%

From 50 to 75

25%

75 or more

25%

Age distribution
Gender distribution
Gender Percentage

Men

50%

Women

50%

Gender distribution
Average time
Tasks Results

1

186,89

2

138,44

3

169,09

Average time
Average completion rate
Tasks Results

1

100%

2

100%

3

100%

Completion rate

14.2.2. Round 2

Categories User 5 User 6 User 7 User 8

Age

23

50

25

55

Gender

Male

Male

Male

Female

Level of computer expertise

8

6

6

6

Time spent on Task 1

156,46

178,45

145,32

166,89

Time spent on Task 2

123,34

146,76

134,67

166,43

Time spent on Task 3

145,30

175,34

145,65

175,35

Average time spent

141,70

166,85

141,88

169,89

Correct tasks completion

100%

100%

100%

100%

User’s requested changes

No changes requested

Giving the user the possibility of sharing its markers

More options to customize your profile from the website instead of navigating to you SOLID Profile

Possibility of deleting markers and maps

User’s evaluation

9

6

8

9

General results
Age distribution
Age Percentage

From 18 to 25

50%

From 25 to 50

25%

From 50 to 75

25%

75 or more

0%

Age distribution
Gender distribution
Gender Percentage

Men

75%

Women

25%

Gender distribution
Average time
Tasks Results

1

162,03

2

142,80

3

160,41

Average time
Average completion rate
Tasks Results

1

100%

2

100%

3

100%

Completion rate

14.2.3. Round 3

Categories User 9 User 10 User 11 User 12

Age

27

20

38

54

Gender

Male

Male

Female

Male

Level of computer expertise

4

10

6

5

Time spent on Task 1

164,24

112,13

145,32

167,89

Time spent on Task 2

134,25

103,86

134,67

166,43

Time spent on Task 3

157,78

121,34

164,78

178,42

Average time spent

152,09

112,44

148,25

170,91

Correct tasks completion

100%

100%

100%

100%

User’s requested changes

Possibility of uploading more than one photo

Give the user the possibility of adding videos to markers

The user would like to have the optional functionality of routes

Add a feature where the user can see its near markers

User’s evaluation

9

6

9

10

General results
Age distribution
Age Percentage

From 18 to 25

25%

From 25 to 50

50%

From 50 to 75

25%

75 or more

0%

Age distribution
Gender distribution
Gender Percentage

Men

75%

Women

25%

Gender distribution
Average time
Tasks Results

1

147,40

2

134,80

3

155,58

Average time
Average completion rate
Tasks Results

1

100%

2

100%

3

100%

Completion rate

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.