Skip to content

Latest commit

 

History

History
238 lines (186 loc) · 7.25 KB

REQ_s238385.md

File metadata and controls

238 lines (186 loc) · 7.25 KB

Official Requirements Document

Author: Giuseppe Pipero

Date: 24/03/2020

Version: 1

Contents

Abstract

EZGas is a crowdsourcing service which shares prices of GasStations. Users can just use the service to check prices, but they can also interact adding untracked Stations or updated existing prices if they are obsolete.

The administrator is in charge of manage the service (User, accounts and Stations), accessing to the Gas stations data. He can check the utilization rate of the service, and can also make reports about the update rate of a singe Gas Station.

The service uses an external Map Service provider.

Stakeholders

Stakeholder name Description
Administrator Manage the service
User Use the EZGas service. He can see prices and also update them
Map system External Map like Google Maps
Developer Develop the system

Context Diagram and interfaces

Context Diagram

left to right direction
actor Administrator as a
left to right direction
actor User as u
left to right direction
actor MapSystem as map
left to right direction
actor Developer as d
a -- (EzGas)
u -- (EzGas)
map -- (EzGas)
d -- (EzGas)

Interfaces

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

Stories and personas

A user wants to find the cheapest gas station near his location. He also would like to inform other users when he find wrong or obsolete price, or just a gas station which is not recorded. The user can also check and signal the status of a Gas Station (if doesn't exist in reality, or closed).

A guest user just wants to find a near and cheap gas station. He his happy to see many gas station and up to date prices on EzGas service.

Use case diagram and use cases

Use case diagram

left to right direction
actor User as u
left to right direction
actor MapSystem as map
left to right direction
actor Administrator as a
(FR4 Login) <.. (FR1 Update price of a Gas Station)
(FR4 Login) <.. (FR2 Add a Gas Station)
u --> (FR1 Update price of a Gas Station)
u --> (FR2 Add a Gas Station)
(FR2 Add a Gas Station) --> map
a --> (FR6 Produce a report)
a --> (FR7 Manage users and accounts)

Use Cases

Use case 1, UC1 - FR2, FR4 User update price of a gas station

Actors Involved User
Precondition Gas station G is registered
Post condition G.fuel1.price = X, G.fuel2.price = Y, ...
Nominal Scenario User login, selects gas station G, read prices, update prices
Variants

Use case 2, UC2 - FR2, FR4 User add a new gas station

Actors Involved User
Precondition List of gas stations L exists
Post condition Define new gas station G, define prices
L.add(G)
Nominal Scenario User login, fill form to add a gas station, insert location
Variants

Use case 3, FR4, FR6 Produce report about update rate of a gas station

Actors Involved Administrator
Precondition Gas station G exists
Post condition
Nominal Scenario Administrator selects gas station G, defines a time range, application collects all updates for G in the time range and presents them
Variants

Use case 3, FR4, FR9 Produce report about update rate of a gas station

Actors Involved Administrator
Precondition Gas stations list, Location known
Post condition User obtain nearest Gas station
Nominal Scenario User filter Gas stations by Location/Price, choose the best result
Variants

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC1
Description User update prices of a gas station
Precondition fuel1.price, fuel2.price, ...
Postcondition fuel1.price = x, fuel2.price = y, ...
Step# Step description
1 User Login to the service
2 User selects the gas station to update
3 Write new prices

Scenario 2

Scenario ID: SC2 Corresponds to UC2
Description User add a new gas station
Precondition -
Postcondition list of gas stations updated
Step# Step description
1 User Login to the service
2 User fill form to insert a new gas station
3 User use his location as gas station location

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Update price of a gas station
FR2 Store a new gas station
FR3 Record that a user has seen prices of a gas station
FR4 Login to the service
FR5 Logout from the service
FR6 Produce a report about update rate for each stored gas station
FR7 Manage users and accounts
FR8 Signal if a Gas Station doesn't exist
FR9 Search station by distance/price
FR10 Store a user account

Non Functional Requirements

ID Type (efficiency, reliability, .. see iso 9126) Description Refers to
NFR1 Usability Application should be used with no training All FR
NFR2 Performance All functions should complete in < 0.5 sec All FR
NFR3 Portability The application runs on mobile phones and as a Web Service All FR
NFR4 Portability The application should work on every web browser All FR
NFR5 Reliability Prices should be up to date (max 1 week before) All FR
NFR6 Localization Currency is Euro

Glossary

class EzGas

class User {
+ name
+ surname
+ age
}

class PersonalAccount {
+ #UpdatedPrices
+ #AddedStations
}

class Station {
+ name
+ latitude
+ longitude
+ addDate
+ #PetrolPump
}

class PetrolPump {
+ price
+ lastUpdateDate
}

class Report {
+ id
+ date
}

class Administrator

EzGas -- "*" User
EzGas -- "*" Station
Station "1" -- "*" PetrolPump : contains

User -- PersonalAccount
PersonalAccount -- "*" Station : add
PersonalAccount -- "*" PetrolPump : update
Administrator -- "*" Report: produce
Report -- "1" Station

User <|-- Administrator