Skip to content

Latest commit

 

History

History
349 lines (269 loc) · 16.8 KB

REQ_s269679.md

File metadata and controls

349 lines (269 loc) · 16.8 KB

EZGas Requirements Document

Author: Claudio Lorina s269679

Date: 09/04/2020

Version: 3

Contents

Abstract

A group of friends are used to travel almost every day because of their job and because during the weekend they spend time with their family and friends doing sightseeing, walking in the nature and so on. They have a Whatsapp group in which they signal to the others the prices of the Gas station in which they fuel up, so that the other members of the group can refuel in the station with the lower price.

Since the more people there are in the group, the more price reports there are, it could be possible to have the price of all the gas stations in the city, in this way, it is much more likely to refuel in the gas station with the lower price in the city. However, doing it with a Whatsapp group would be a mess, either because there would be too much messages and finding the lower prices among them would be really difficult, moreover people who are interested to this kind of service are not able to freely join the group. That’s why some member of this group, who are employers in an IT company, decided to set up a mobile crowdsourcing application, which could allow the users to collect the price of the gas stations, and to find, among them, the one which is closer and with the lower prices.

Since anyone could be able to change the prices, all the modifications provided by the end users, have to be inspected by a group of moderators. The gas station owners are able to provide some proof in order to take the control of the price list of their gas station, all the modifications provided by an owner are automatically approved, moreover the owner is able to accept or reject the modifications provided by the other users for their gas station.

Stakeholders

Stakeholder name Description
Moderators Make sure that the modifications provided by the users are correct.
End users Are able to check the list of the prices of gas stations closer to them. They are also able to provide modifications to the list.
Gas station owner Are able to directily update their gas station price list without the need of moderators approvation.
Google Maps API Used for providing the map service and in order to have the list of the gas stations.

Context Diagram and interfaces

Context Diagram

left to right direction
actor Moderator as m
actor "End User" as u
actor "Gas Station Owner" as go
actor "Google Maps API" as gma
m -- (EZGas)
u -- (EZGas)
go -- (EZGas)
(EZGas) -- gma

Interfaces

Actor Logical Interface Physical Interface
Moderator GUI Screen, keyboard
End user GUI Smartphone/Tablet touch screen
Gas station owner GUI Smartphone/Tablet touch screen
Google maps API JSON over HTTPS Internet connection

Stories and personas

Mario is a washing machine technician, he goes around the city with his van all the day and he need to fuel up in average two times a week. He refuel in the early morning before going to work, in order to be sure that he won’t have any problem during the day. He prefers to fuel up in a gas station which is close to the house of the first customer of the day so he won’t be late. He would like to have a way for looking up to the customer’s address and finding the closest gas station with the lower price, but he is really good with the washing machines but not so good in using the smartphone.

Hannah is as traveller, she goes around the world with her camper with her husband Gimmy. They don’t have so much money to spend for fueling up and since they usually don’t know the places in which they stay, they need a way for finding the closest gas station for refueling without spending too much.

Bob is 24, he loves travelling with his girlfriend and friends, and when he visit a place he typically leaves a review of that place, that’s because he really likes to share his experience and to suggest to the other people of the community the place which he prefers. Bob would be really happy to update the price list of EZGas, so that he can always find the gas station with the lower price when he is around, but he can also he can help the other people thanks to his contributes.

Gianni bought his gas station two years ago, he though it was a really good deal, but unfortunately it wasn’t. He hasn’t many customers, because people don’t know about Gianni’s gas station, because it isn’t in the main road. Gianni would like something which could allow him to let people know about his gas station and about his competitive prices.

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Locate the end user
FR2 Show the gas the stations close to a specific address
FR3 Show the price list of a gas station
FR4 Provide a modification of the price list
FR5 Approve a modification
FR6 Update the price list
FR7 Authenticate user
FR8 Claim ownership of a gas station

Non Functional Requirements

ID Type Description Refers to
NFR1 Usability Application should be used with no training by any person All FR
NFR2 Performance All functions should complete in < 0.8 sec All FR
NFR3 Portability The application runs in any popular smartphone or tablet running Android at least from version 7.1 and IOS 9 All FR
NFR4 Portability The user has his data available in any device in which he performed the authentication All FR
NFR5 Legislative The application has to be in compliance with the GDPR (General Data Protection Regulation) of the EU All FR
NFR6 Privacy The user data and the communications with the users have to be protected with the state of art of the crypto algorithms All FR
NFR7 Localisation Automatically select the application language depending on the the system language
NFR8 Localisation Express the prices of the price list in the currency of the country

Use case diagram and use cases

Use case diagram

left to right direction
actor "End user" as u
actor "Moderator" as m
actor "Gas Station Owner" as go
u --> (FR1  Locate the end user)
u --> (FR2 Show the gas the stations close to a specific address)
(FR1  Locate the end user) --> (FR2 Show the gas the stations close to a specific address)
(FR2 Show the gas the stations close to a specific address) --> (FR3 Show the price list of a gas station)
u --> (FR4 Provide a modification of the price list)
(FR4 Provide a modification of the price list) --> (FR7 Authenticate user) : <<include>>
u --> (FR8 Claim ownership of a gas station)
(FR8 Claim ownership of a gas station) --> (FR7 Authenticate user) : <<include>>
m <-- (FR8 Claim ownership of a gas station)
m <-- (FR4 Provide a modification of the price list)
m --> (FR5 Approve a modification)
(FR5 Approve a modification) --> (FR7 Authenticate user) : <<include>>
(FR5 Approve a modification) --> (FR6 Update price list)
(FR6 Update price list) --> (FR7 Authenticate user) : <<include>>
go --> (FR6 Update price list)
go --> (FR8 Claim ownership of a gas station)

Use Cases

Use case 1, UC1 - FR1 Locate the end user

Actors Involved End user
Precondition The gps is available in the device and powered on
Post condition The end user has been located (The application knows the end user position)
Nominal Scenario The end user opens the application and he is located
Variants The gps is powered off or not available -> raise a warning and ask the user to type an address
Variants There is no gps signal -> raise a warning and ask the user to type an address

Use case 2, UC2 - FR2 Show the gas the stations close to a specific address

Actors Involved End user
Precondition The end user input an address or he is located
Post condition The the stations gas close to requested position list is shown in a map
Nominal Scenario The end user is located or he types an address and tap on the search button
Variants The address is not valid -> raise an error

Use case 3, UC3 - FR3 Show the price list of a gas station

Actors Involved End user
Precondition The the list of gas stations close to requested position is shown in the map
Post condition A window with the price list is shown
Nominal Scenario The end user tap to the icon of one gas station in the map
Variants -

Use case 4, UC4 - FR4 Provide a modification of the price list

Actors Involved End user
Precondition The end user is authenticated
Post condition The modification is put in a waiting list waiting to be approved by a moderator
Nominal Scenario The end user types the current prices and confirm the modification
Variants The prices are not valid or out of range -> raise an error

Use case 5, UC5 - FR5 Approve modification

Actors Involved Moderator
Precondition The moderator is authenticated
Post condition The modification is performed
Nominal Scenario The moderator select one modification in the waiting list and check the validity, if it is valid he approves it
Variants After checking the validity the modification come out to not to be valid -> remove the modification from the waiting list and don't peform any modification

Use case 6, UC6 - FR6 Update the price list

Actors Involved Moderator
Precondition A modification of the price list was approved
Post condition The modification to the price list are effective
Nominal Scenario The moderator approves a modification for a price list
Variants -

Use case 7, UC7 - FR6 Update the price list

Actors Involved Gas station owner
Precondition The user is authenticated and the owner of the updated gas station
Post condition The modification to the price list are effective
Nominal Scenario The gas station owner type the prices of the new price list and confirm the modification
Variants The prices are not valid or out of range -> raise an error

Use case 8, UC8 - FR7 User authentication

Actors Involved End user, Gas station owner, Moderator
Precondition The user is NOT authenticated
Post condition The user is authenticated
Nominal Scenario The user types username and password and confirm them
Variants Username or password are wrong -> Raise an error

Use case 9, UC9 - FR8 Claim ownership of a gas station

Actors Involved End user, Gas station owner
Precondition There is no owner in the system for that gas station
Post condition The modification is put in a waiting list waiting to be approved by a moderator
Nominal Scenario The user provide the required proofs and send the form
Variants The user doesn't provide all the required proofs -> raise a warning

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC2
Description An end user ask for the closer gas station to a specific position
Precondition
Postcondition The map with the list of gas station is shown
Step# Step description
1 End user type the address
2 The map with a diameter of 1km with the list of the closest gas station to the required address is shown in the whole page

Scenario 2

Scenario ID: SC2 Corresponds to UC2
Description An end user ask for the closer gas station to a specific position
Precondition
Postcondition
Step# Step description
1 End user type the address
2 The address is not valid -> raise a warning

Scenario 3

Scenario ID: SC3 Corresponds to UC2
Description An end user ask for the closer gas station to a specific position
Precondition The end user has been located (the application knows the user position)
Postcondition
Step# Step description
1 The map with a diameter of 1km with the list of the closest gas station to the user is shown in the whole page

Scenario 4

Scenario ID: SC4 Corresponds to UC1
Description An end user open the application and the map with the gas station is shown
Precondition Localization is enabled and GPS is available
Postcondition The end user has been located (The application knows the end user position)
Step# Step description
1 End user open the application
2 The application tries to localize the user

Scenario 5

Scenario ID: SC5 Corresponds to UC1
Description An end user open the application and the map with the gas station is shown
Precondition
Postcondition The scenario SC1 is triggered
Step# Step description
1 End user open the application
2 The application tries to localize the user
3 The Localization is not enabled, GPS is not available or there is no GPS signal -> Raise a warning

Glossary

left to right direction
class EZGas{

}

class User{
	+name
	+surname
	+email	
}

class GasStation{
	+name
	+address	
}

class EndUser{	
}

class Moderator{	
}

class PriceList{
	+priceGasoline
	+priceDisel
	+priceMethane	
}

class ModificationRequest{
	+priceGasoline
	+priceDisel
	+priceMethane
	+date
	+isPending
}

class ModificationAccepted{
	+date
}

EZGas -- "*" User
EZGas -- "*" GasStation

User <|-- EndUser
User <|-- Moderator

EndUser "+GasStationOwner" -- "*" GasStation
GasStation -- PriceList
EndUser -- "0...*" ModificationRequest
PriceList -- "0...*" ModificationRequest
ModificationAccepted -- "0...1" ModificationRequest
Moderator -- "*" ModificationAccepted

GUI

Screenshot 1 | UC2 - FR2 Show the gas the stations close to a specific address

alt text

Screenshot 2 | UC3 - FR3 Show the price list of a gas station

alt text

Screenshot 3 | UC3 - FR3 Show the price list of a gas station

alt text

Screenshot 4 | UC4 - FR4 Provide a modification of the price list

alt text