You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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 directionUser--> (FR7Authentication)
(FR7Authentication).>(FR8PerformLogin) :include
(FR9PasswordRecovery).>(FR8PerformLogin) :extend
(FR3Displayonthemap) <--Registered_User
(FR6Gasstationsfiltering)<--Registered_User
(FR8PerformLogin) <--Registered_User
(FR9PasswordRecovery) <--Registered_UserUser--> (FR3Displayonthemap)
User--> (FR6Gasstationsfiltering)
(FR6Gasstationsfiltering).>(FR3Displayonthemap):extend
(FR4AddGasstation) <--Registered_User
(FR5Deleteagasstation) <--Registered_User
(FR2Updateprices) <--Registered_UserUser<|--Registered_UserDevelopers-->(FR1Initialization)
(FR1Initialization).>(FR4AddGasstation): 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
classEZGasclassUser{
+TemporaryID
}
classRegistered_User{
+Username+Password
}
classGas_station{
+Coordinates
}
classFuel{
+Type+Price
}
note "He is the user that wants\n to use the application \nonly in read mode" asN1User..N1note "He is the authenticated\n user that also wants to\n update something" asN2Registered_User..N2note "It is the main content \n unity that is visible \n on the map" asN3Gas_station..N3note "It is one of the products \nthat the gas station offers " asN4Fuel..N4EZGas-- "*" Gas_stationEZGas-- "*" UserGas_station-- "*" FuelUser<|--Registered_User