Skip to content

Latest commit

 

History

History
237 lines (179 loc) · 9.44 KB

REQ_s274501.md

File metadata and controls

237 lines (179 loc) · 9.44 KB

Official Requirements Document

Author: Nicole Dai Prà

Date: 04/04/2020

Contents

Abstract

A group of friends took a trip with the car around Italy to visit the most important cities. They soon discovered that refuel the car was really expensive. They also noticed that as soon as they stopped in a gas station the next one would have been cheaper. This fact led them to think about a way to avoid that and they soon reached a solution. Provide a service that helps people to know which is the cheapest gas station around them.

This led to the launching of a crowdsourcing service that would help to collect all the prices of the different gas stations. The system should be organized so that people can share the prices of the stations where they refueled in order to collect as many information as possible. Then they should be able to select the area they are interested in and seeing all the gas stations present along with the prices they offer. In this way, they would be able to save money choosing the station with the best prices.

Stakeholders

Stakeholder name Description
Administrators Do not use the application directly. They are interested in the stability of the product they commission.
Users Use the application to send new information or to select a gas station.
Developers They develop the application and check the stability.
Maps This service is needed to provide a view of the maps

Context Diagram and interfaces

Context Diagram

left to right direction
actor User as u
u -- (EZGas)
actor Administrator as adm
(EZGas) -- adm
actor Map as m
(EZGas) -- m

Interfaces

Actor Logical Interface Physical Interface
Administrator GUI Screen, keyboard
User GUI Screen
Google Maps API Internet connection

Stories and personas

Marco is one of the friends that commissioned the application. He is a cheerful guy that loves to stay with his friends. He likes his group of friends because they all enjoy visit new cities and they all reflect his need to be very well organized. Because of this, when they organize a new trip they meticulously list all what they are going to do and, most important, how much they would spend. Unfortunately, the fuel cost occupies always a large percentage of expenses and this may prevent them to do extra things. This is why they thought about a way to find the cheapest gas station around them.

Their idea was to provide a service to everyone who may need it. As it requires a lot of data, they decided to opt for a crowdsourcing service, to which whoever wants can contribute by uploading the prices of a gas station where she/he refueled.

As Marco is the "tech one" in the group, he was asked to list some behaviors that a tool like that should not have. After a discussion on this list the realized that the most important feature of this tool would have been the stability. In fact, they want to provide a service that may help people, that is able to handle a lot of data and, most important, the user may rely on it so it must not have failures.

Mirco is a driver that needs to know where to find a convenient gas station around him because it has to refuel his car. He decided to use EZGas in order to try it. So, he selects the area where he is and then he finds two possible stations. The first is the one with the lowest prices, so he decides to go there. When he arrives he finds out that the prices are even lower so he decides to report it on the application, in this way also the others can know it. To do that it had to sign up first in the application.

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Find the gas stations close to an user
FR2 Find the shortest path to reach the gas station
FR3 Log in or Sign up if not registered
FR4 Modify the prices of a gas station
FR5 Add a gas station
FR6 Manage the account

Non Functional Requirements

ID Type (efficiency, reliability, .. see iso 9126) Description Refers to
NFR1 Usability Application should be stable so that it can be easily used All FR
NFR2 Performance All functions should complete in < 0.5 sec All FR
NFR3 Portability The application runs on web browsers (Chrome, Explorer, Safari, Firefox) All FR
NFR4 User-friendly The application has to be easy to use All FR
NFR5 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 Find the gas stations close to an user)
u --> (FR2 Find the shortest path to reach the gas station)
u --> (FR4 Modify the prices of a gas station)
u --> (FR5 Add a gas station)
u --> (FR6 Manage the account)

(FR6 Manage the account) --> (FR3 Log in or sign up if not registered) : <<include>>
(FR5 Add a gas station) --> (FR3 Log in or sign up if not registered) : <<include>>
(FR4 Modify the prices of a gas station) --> (FR3 Log in or sign up if not registered) : <<include>>
(FR2 Find the shortest path to reach the gas station) --> (FR1 Find the gas stations close to an user) : <<include>>

Use Cases

Use case 1, UC1 - FR1 and FR2 Find a gas stations close to an user and the shortest path to reach it

Actors Involved User
Precondition Localization enabled
Post condition
Nominal Scenario User wants to find a convenient gas station where to refill the car
Variants

Use case 2, UC2 - FR3 Sign up to share the prices

Actors Involved User
Precondition
Post condition New user added and prices changed
Nominal Scenario User wants to change the prices of a gas station but it is not registered. It has to create an account to do that
Variants

Use case 3, UC3 - FR4 Modify the prices of a gas station

Actors Involved User
Precondition User has to be logged in, the station has to exists in the application
Post condition Prices updated
Nominal Scenario User finds a gas station where the prices are changed so she/he updates them on the application
Variants

Use case 4, UC4 - FR4 Add a gas station

Actors Involved User
Precondition User has to be logged in and he/she has to be localizable
Post condition Gas station appears on the maps
Nominal Scenario User finds a gas station that is not present on the application so she/he adds it
Variants

Use case 5, UC5 - FR5 Manage the account

Actors Involved User
Precondition Account A should exist
Post condition Settings are changed or the account is removed
Nominal Scenario User wants to change some settings of the account or wants to remove it
Variants

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC1
Description User search for a convenient gas station near her/him
Precondition User has to be localizable
Postcondition
Step# Step description
1 The application shows the gas stations close to the position detected
2 The user select the preferred one and activate the navigation to it

Scenario 2

Scenario ID: SC2 Corresponds to UC2
Description User finds a gas station with wrong prices
Precondition Gas station should exists in the application and the user has to be logged in
Postcondition Prices updated
Step# Step description
1 User refill the car in a gas station and notice that the prices are different from the one in the application
2 User logs in the application
3 User select the right gas station
4 User changes the prices

Glossary

class EZGas
class User {

}

class Account {
+ username
+ name
+ surname
+ settings
}

class Administrator {
+ ID
+ name
+ surname
}

class GasStation{
+ ID
+ prices
}

class Map{
+ version
}

class Developer{
+ ID
+ name
+ surname
}

EZGas -- "*" Account 
EZGas -- "*" User
EZGas -- "1..*" Administrator
Account "1..*" -- "0..*" GasStation : modifies
User <|-- Account
EZGas -- Map
GasStation "*" -- EZGas : is present 
EZGas -- "1..*" Developer