Skip to content

Latest commit

 

History

History
254 lines (185 loc) · 9.34 KB

REQ_s270325.md

File metadata and controls

254 lines (185 loc) · 9.34 KB

Official Requirements Document

Authors: Giuseppina Impagnatiello

Date: 2/04/2020

Version: 2

Contents

Abstract

EZGas is a crowdsourcing application that allows users to collect price of fuels in different gas stations and to locate gas stations in an area, according with the prices they practice.

Stakeholders

Stakeholder name Description
Car drivers Generic users that use the application to collect and provide information about gas stations fuel prices.
Gas companies Do not use the application directly, but analysing data they can trace the customers behaviour.
Developers They have to deal with the correct testability and functionality of the service, and they have to initialize the system.
Google Maps It has to provide API to developers.
External websites Have to provide an initial list of gas stations.

Context Diagram and interfaces

Context Diagram

:Google Maps : --> (EZGas)
:External Websites: --> (EZGas)

Interfaces

Actor Logical Interface Physical Interface
Google Maps API Screen, keyboard
External Websites GUI Screen,keyboard

Stories and personas

John is a carrier, so he has to use a company petrol van everyday for a lot of time. Since he received an order from his boss, he has to save as much as possible on gasoline. Moreover, to improve his efficiency while he is driving, he has to know in advance where the next gas station will be located.With EZGas, he can choise the right gas station, according with the minimum distance and the lower gasoline price.

Laura is a business analyst in a famous gas company, and her job is to compare her company business strategy with the other companies ones. Using EXGas, she can easily find and analyse informations about competitor prices, strategy and customers behaviours.

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Initialize the map with the provided list of gas stations
FR2 Update the fuel price for a type of fuel of a gas station
FR3 Display gas stations on the map
FR4 Add a new gas station on the map
FR5 Delete a gas station
FR6 Filter the gas stations on the map accordingly to different price ranges and type of fuel
FR7 Authenticate a new user
FR8 Perform a login operation.
FR9 Password Recovery Routine

Non Functional Requirements

ID Type (efficiency, reliability, .. see iso 9126) Description Refers to
NFR1 Usability Application should be used with no training by any user All FR
NFR2 Performance All functions should complete in < 0.5 sec All FR
NFR3 Portability The application runs on Windows (7 and more recent), Linux, iOS, Android (5.0 and more recent) All FR
NFR4 Localisation Decimal numbers use . (dot) as decimal separator

Use case diagram and use cases

Use case diagram

left to right direction


User --> (FR7 Authentication)
(FR7 Authentication).>(FR8 Perform Login) :include
(FR9 Password Recovery).>(FR8 Perform Login) :extend
(FR3 Display on the map) <--Registered_User
(FR6 Gas stations filtering)<--Registered_User
(FR8 Perform Login) <--Registered_User
(FR9 Password Recovery) <--Registered_User
User --> (FR3 Display on the map)
User --> (FR6 Gas stations filtering)
(FR6 Gas stations filtering).>(FR3 Display on the map):extend
(FR4 Add Gas station) <--Registered_User
(FR5 Delete a gas station) <--Registered_User
(FR2 Update prices) <--Registered_User
User <|--Registered_User
Developers-->(FR1 Initialization)
(FR1 Initialization).>(FR4 Add Gas station): include
User <|--Gas_companies
 

Use Cases

Use case 1, UC1 - FR1 Initialize the map with the provided list(s) of gas stations

Actors Involved Developers
Precondition The provided lists exist
#stations=0
Post condition #stations= n
Nominal Scenario Developers get the provided lists from one or more external websites and, according to the spacial coordinates, they add the gas stations to the map.
Variants One or more lists are empty, issue warning

Use case 2, UC2 - FR2 Update the fuel price for a type of fuel of a gas station.

Actors Involved Registred Users
Precondition The user is authenticated.
The gas station exists.
The indicated price is different from the actual one or does not exist yet.
Post condition A new price is indicated.
Nominal Scenario A registred user goes to a gas station and finds out a different prices from the one declared in the application for a certain type of fuel, so he wants to warn other users changing it.
Variants Two users want to change the price at the same time.

Use case 3, UC3 - FR3 Display gas stations on the map

Actors Involved User
Precondition The map exists
Post condition #displayed_current>=0
Nominal Scenario The user wants to know all the gas stations in a certain area

Use case 4, UC4 - FR4 Add a new gas station on the map

Actors Involved Developers or Registered User
Precondition Spacial coordinates are valid
The user is authenticated
The declared gas station does not exist yet.
Post condition #stations= #stations+1
Nominal Scenario An user finds out that there is a new gas station, and wants to warn the other users adding it.
Variants Two users want to add the same gas station at the same time.

Use case 5, FR5 Delete a gas station

Actors Involved Registered User
Precondition The declared gas station is on the map but does not exist anymore
The user is authenticated
Post condition #stations= #stations-1
Nominal Scenario An user finds out that there is no more a gas station, and wants to warn the other users deleting it.
Variants Two users want to delete the same gas station at the same time.

Use case 6, FR6 Filter the gas stations on the map accordingly to different price ranges and type of fuel

Actors Involved User
Precondition Range of price and type of fuel that the user wants exist.
Post condition #displayed_current <= #displayed_past>
Nominal Scenario An user wants to know what are the gas stations in an aera, but only if the declared price of a certain type of fuel is within a certain range.

Use case 7, FR7 Authenticate a new user

Actors Involved User
Precondition The user exists.
Post condition #auth_user = #auth_user+1
Nominal Scenario An user wants to do some updates to the service and therefore he must authenticate to the system.
Variants The username exists yet, warning.

Use case 8, FR8 Perform a login operation

Actors Involved User
Precondition The user exists
Post condition
Nominal Scenario An user wants to do some updates to the service and therefore he must authenticate to the system.
Variants The username does not exist, warning.
The password is not correct, warning.
The user doesn not remember the password, so the password recovery routine must be called.

Use case 9, FR9 Password Recovery Routine

Actors Involved User
Precondition The user can't authenticate
Post condition
Nominal Scenario An user wants to do some updates to the service and therefore he must authenticate to the system, but he has forgotten his password.
Variants The username does not exist, warning.

Glossary

class EZGas
class User{
	+TemporaryID
}
 class Registered_User{
	 +Username
	 +Password
 }
 class Gas_station{
	 +Coordinates
 }
 
 class Fuel{
	 +Type
	 +Price
 }
  
note "He is the user that wants\n to use the application \nonly in read mode" as N1
User.. N1

note "He is the authenticated\n user that also wants to\n update something" as N2
Registered_User..N2

note "It is the main content \n unity that is visible \n on the map" as N3
Gas_station..N3

note "It is one of the products \nthat the gas station offers " as N4
Fuel.. N4

EZGas -- "*" Gas_station
EZGas -- "*" User
Gas_station -- "*" Fuel
User <|-- Registered_User