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
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
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
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
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
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.
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.
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.
6.4. Remove Location
Locations added to the map later be removed by the user through the application.
7. Deployment View
7.1. Infrastructure Level 1
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
8.1.2. Map View
Main
Add Marker
Show Marker
8.1.3. Help View
8.1.4. About View
8.2. Domain model
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
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
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.
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% |
Gender distribution
Gender | Percentage |
---|---|
Men |
50% |
Women |
50% |
Average time
Tasks | Results |
---|---|
1 |
186,89 |
2 |
138,44 |
3 |
169,09 |
Average completion rate
Tasks | Results |
---|---|
1 |
100% |
2 |
100% |
3 |
100% |
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% |
Gender distribution
Gender | Percentage |
---|---|
Men |
75% |
Women |
25% |
Average time
Tasks | Results |
---|---|
1 |
162,03 |
2 |
142,80 |
3 |
160,41 |
Average completion rate
Tasks | Results |
---|---|
1 |
100% |
2 |
100% |
3 |
100% |
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% |
Gender distribution
Gender | Percentage |
---|---|
Men |
75% |
Women |
25% |
Average time
Tasks | Results |
---|---|
1 |
147,40 |
2 |
134,80 |
3 |
155,58 |
Average completion rate
Tasks | Results |
---|---|
1 |
100% |
2 |
100% |
3 |
100% |
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.