Skip to content

Latest commit

 

History

History
307 lines (234 loc) · 11 KB

REQ_278564.md

File metadata and controls

307 lines (234 loc) · 11 KB

Official Requirements Document

Authors: Leonardo Izzi

Date: 24/03/20

Version: 2

Change history

Version Changes
1 Initial version
2 Added glossary

Contents

Abstract

Gas stations daily change their price offering. To face the issue of looking for the best price available in their area, drivers have organized themselves in a Facebook group to share pictures of the price offered by the gas station they've visited. The people who have founded the group, the group administrators, accept user submissions and group the picture in photo albums separated per zone. However, the group size has grown significantly, and they cannot keep up with the submission rate anymore.

To solve this issue, they decided to launch a crowdsourcing initiative to develop an app that collects the prices of fuel in the gas stations and that locate them in an area, showing the prices. A group of developers has accepted to develop the application. They will substitute the Facebook group with a website. If a user is not registered can only choose to see the prices offered in an area by gas station. If he/she is registered and has logged in it can upload the prices offered by the gas station visited.

Stakeholders

Stakeholder name Description
User It directly uses the application, can look for the prices in an area and submit them. They are interested in a correct report of the pricing
Administrator Is interested in the stability and usability of the application they've commissioned. They're also a kind of user
Map System It can impact the system whenever its API changes
Developer Is not a direct user of the application. It is interested in the development, maintenance and testability of the product.

Context Diagram and interfaces

Context Diagram

left to right direction
actor Administrator as a
actor User as u
actor "Map System" as m
a -- (EZGas)
u -- (EZGas)
(EZGas) -- m

Interfaces

Actor Logical Interface Physical Interface
User GUI Screen, keyboard, mouse, touchscreen
Administrator GUI Screen, keyboard, mouse
Map System API Internet connection

Stories and personas

John is an administrator of the system. He likes to do long trips in his camper, spare money and help other travelers like him. This is why he decided to start the Facebook group to share gas stations' prices and then to crowdsource EZGas. He is interested in an app with an intuitive and nice user interface, that can bring in as many users as possible. He is not interested in a way for managing reports of wrong pricing, since it is enough for a second user to report a new price.

Mary is a manager of a company and has to travel a lot in her car for work, so she would like to reduce her expenses in fuel. Due to her work she is always in hurry, therefore Mary needs an user interface that let her to quickly see the cheapest gas station around her.

Joe is a developer of EZGas station. He likes to think about him as a very productive and organized guy. Therefore he is interested in producing a good documentation for who will come after him in the development and in producing a highly modularized code.

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Register to EZGas
FR2 Log in
FR3 Log out
FR4 Add a gas station
FR5 User reports the prices of a gas station
FR6 Geolocalization of the gas station near the user
FR7 Show the prices offered by the gas station
FR8 Manage accounts

Non Functional Requirements

ID Type Description Refers to
NFR1 Usability Application should be used with no training by any user All FR
NFR2 Performance All functions should complete in < 5 sec All FR
NFR3 Portability The application runs on all major browsers (Chrome, Edge, Firefox, Safari) (7 and more recent) All FR
NFR4 Localization Decimal numbers use . (dot) as decimal separator

Use case diagram and use cases

Use case diagram

left to right direction
actor User as u
u -- (FR1 Register to EZGas)
u -- (FR2 Log in)
u -- (FR3 Log out)
u -- (FR4 Add a gas station)
u -- (FR5 User reports the prices of a gas station)
u -- (FR6 Geolocalization of the gas station near the user)
u -- (FR7 Show the prices offered by the gas station)
u -- (FR8 Manage accounts)

(FR3 Log out) --> (FR2 Log in) : <<include>>
(FR4 Add a gas station) --> (FR2 Log in) : <<include>>
(FR5 User reports the prices of a gas station) --> (FR2 Log in) : <<include>>
(FR8 Manage accounts) --> (FR2 Log in) : <<include>>

Use Cases

Use case 1, UC1 - FR1 Register to EZGas

Actors Involved User
Precondition
Post condition
Nominal Scenario The user insert its credentials to register to EZGas
Variants

Use case 2, UC2 - FR2 Log in

Actors Involved Administrator, User
Precondition The account already exists
Post condition
Nominal Scenario The credentials are inserted, the home page is shown
Variants Credentials are wrong

Use case 3, UC3 - FR3 Log out

Actors Involved Administrator, User
Precondition The user is logged in
Post condition The session is closed
Nominal Scenario The user logs out from EZGas
Variants

Use case 4, UC4 - FR4 Add a gas station

Actors Involved User
Precondition The user is logged in
Post condition FR5 is executed, the gas station is stored in the database
Nominal Scenario The user adds the location of the gas station and the company who owns it
Variants The user hasn't given the authorization to get GPS position

Use case 5, FR5 User reports the prices of a gas station

Actors Involved User
Precondition The user has logged in, a gas station has been selected
Post condition The prices are updated in the database
Nominal Scenario The user updates the prices offered by a gas station
Variants The user hasn't given the authorization to get GPS position

Use case 6, FR6 Geolocalization of the gas station near the user

Actors Involved User
Precondition A radius has been chosen, or the default one has been used
Post condition FR7 is executed
Nominal Scenario The system locates the gas stations present in a radius defined by the user
Variants The user hasn't given the authorization to get GPS position

Use case 7, FR7 Show the prices offered by the gas station

Actors Involved Administrator
Precondition The gas station is shown on the user screen
Post condition
Nominal Scenario The system collects the latest prices available of the gas station and shows them to the user
Variants

Use case 8, FR8 Manage accounts

Actors Involved Administrator
Precondition The user is logged in
Post condition The user updates are stored in the database
Nominal Scenario The user can change its informations and delete its account
Variants The user cancel the update

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC4
Description The user U adds a gas station G
Precondition U has an account and is logged in
Postcondition G is stored in the database, SC3 is executed
Step# Step description
1 U communicate its current position to the system
2 U communicate the name and the franchise of G

Scenario 2

Scenario ID: SC2 Corresponds to UC4, UC5, UC6, UC7
Description GPS permission not granted
Precondition User U has not granted GPS permission
Postcondition
Step# Step description
1 U communicate its current position to the system
2 U's device reports that GPS permission has not been granted
3 The system displays an error telling to U that his action couldn't be executed due to missing permissions

Scenario 3

Scenario ID: SC3 Corresponds to UC5
Description User reports the prices of a gas station
Precondition User U is logged in, a gas station G has been selected
Postcondition The prices are updated in the database
Step# Step description
1 U communicate its current position to the system
2 U communicate the updated prices offered by the gas station

Scenario 4

Scenario ID: SC4 Corresponds to UC6 and UC7
Description Geolocalization of U, gas stations Gn shown along with prices
Precondition A radius has been chosen, or the default one has been used
Postcondition
Step# Step description
1 U communicate its current position to the system
2 U communicate the radius
3 The system reports to U's device al the gas stations Gn inside the chosen radius
4 The prices for each Gn are displayed

Glossary

class EZGas

class User

class RegisteredUser {
	+ ID
	+ name
	+ surname
	+ birth date
}

class Administrator {
	+ ID
}

class MapSystem {
	+ API
	+ url
}

class Developer {
	+ ID
	+ name
	+ surname
	+ role
}

class GasStation {
	+ location
	+ franchise
	+ ID
	+ prices
}

EZGas -- "0..*" User
EZGas -- "*" Administrator
EZGas -- "*" Developer
EZGas -- MapSystem
EZGas -- "0..*" GasStation

RegisteredUser -- "0..*" GasStation : added
GasStation 	"0..*" -- "1..*" RegisteredUser : modified price
User "0..*" -- "0..*" GasStation

System Design

Deployment Diagram