Skip to content

Latest commit

 

History

History
366 lines (288 loc) · 13.9 KB

REQ_s269901.md

File metadata and controls

366 lines (288 loc) · 13.9 KB

Official Requirements Document

Author: Behnam Lotfi

Date: 28/03/2020

Version: 1

Contents

Abstract

EZGas application is an application to find the nearest gas station with the best price and also comparing them by some characteristics like price. This application has two types of users. One is with authentication in order to have some privileges, which is an Administrator and the other one, without those privileges, which is a general user. For having some special offers to loyal customers there is a need to have a login system and customer management. The loyalty is based on the number of feedbacks and also getting noticed by other people to those feedbacks. This shows how much feedback is valuable. Administrators in this system should update gas prices periodically for instance on a daily base. For accomplishing that he/she should check changes among the prices. He/She can use some systems to monitor the changes in gas prices. The administrator is also able to guide the user who is asking or help or for advertising some promotions.

Stakeholders

Stakeholder name Description
Administrator Authorized Users that use the application to update fuel prices with respect to the station and category
EZGas General user Uses the application to find nearest gas stations with the best price.
EZGas Server Sends data related to the gas stations to clients.
Map system A map system that provides a base map for the app like http://openstreetmap.org
Payment system Uses bank ports to pay gas price

Context Diagram and interfaces

Context Diagram

left to right direction
actor Administrator  as a
actor EZGas_General_user as b
a -- (EZGas_Server)
b -- (EZGas_Server)
(EZGas_Server) --> (Map_system):<<include>>
(EZGas_Server) --> (Payment_system):<<include>>

context diagram github view: context diagram

Interfaces

Actor Logical Interface Physical Interface
Administrator GUI Screen, keyboard
EZGas_General_user GUI Screen, keyboard
EZGas_Server Internet Wi-Fi/4G-LTE/Lan Connections
Payment_System Internet Wi-Fi/4G-LTE/Lan Connections
Map_System Internet Wi-Fi/4G-LTE/Lan Connections

Stories and personas

Alice works in an office and when he wants to go to his office he uses his car. For a better experience, he uses some applications like ways or Google map to find the best path to work. For him, it is so useful to find gas stations in his path to work. Because he does not want to change his path so much and consume more fuel for that. Another advantage of finding a proper gas station is loyalty. He can get a special discount using his customer's cards if he is a loyal customer of a special company.

Bob is traveling in his car to a new place and does not know exactly the places and the prices of the gas in the new place. By searching on google map he just finds the place of gas stations and no more data are available about the gas price and also the people's feedback in that gas station. He fills the car using an oil company and he thinks he paid a lot for that he needs to tell the other people not to use that gas station because of that.

persona1: Female, middle age, high income with a car not married persona2: Male, Married , low or middle income

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Get the position of user to show nearest gas stations
FR2 User must login to the application
FR3 Application will authenticate the user
FR4 Application will contact a local server to get the info with respect to the stations, prices and availability of the near gas stations on the map
FR5 Application will sort properly the list of the available gas station (best price, distance from user and users feedback)
FR6 User chooses a particular gas station
FR7 User fills up his/her car
FR8 User submits feedback
FR9 Update the number of hours to refresh prices
FR10 Register

Non Functional Requirements

ID Type (efficiency, reliability, .. see iso 9126) Description Refers to
NFR1 Performance User response time and All functions should complete in < 0.5 sec in 4G and <1 sec in 3G mobile networks All FR
NFR2 Training time Time from starting the app to find detail information about gas station All FR
NFR3 Reliability percentage of failure during usage All FR
NFR4 Globalization Number of languages available in EZGas app All FR

Use case diagram and use cases

Use case diagram

left to right direction
actor EZGas_General_user as a
a -- (FR1  Get the position)
a -- (FR2 Login to the application)
a -- (FR6 Choose a gas station)
a -- (FR7 fills up the car)
a -- (FR10 Register)
left to right direction
actor EZGas_Server as a
a -- (FR3 User authentication)
a -- (FR4 Showing gas stations on the map)
a -- (FR5 Evaluates & returns last updated information)
left to right direction
actor Administrator as a
a -- (FR6  Update prices)
a -- (FR8.1 Checking feedbacks)
a -- (FR10 Register)

Use Cases

Use case 1, UC1 - FR1 Get the position

Actors Involved EZGas General user
Precondition Position service should be "ON" on the device
Post condition Device.location=available
Nominal Scenario EZGas User turns on his location and runs the application
Variants If connection not stable, warning message

Use case 2, UC2 - FR2 Login to the application

Actors Involved EZGas General user
Precondition Customer has installed EZGas application, User has an account
Post condition Customer.Authorized = 'true'
Nominal Scenario EZGas user inserts his/her own credentials
Variants Customer does a reset password because he/she has forgotten it; User create a new account

Use case 3, UC3 - FR6 Choose a gas station

Actors Involved EZGas Server
Precondition Loaded gas stations on the map
Post condition EZGas_Server.position.setLatitude, EZGas_Server.position.setLongitude
Nominal Scenario The system keeps track of the user's device movement in order to update the results
Variants Location is not available so the connection error message is shown

Use case 4, UC4 - FR7 Fills up the car

Actors Involved EZGas General User
Precondition Gas station chosen, have enough credit
Post condition fills the car up
Nominal Scenario User fills up the car by using his/her credit
Variants Not enough credit

Use case 5, FR3 User authentication

Actors Involved Administrator , EGas General User
Precondition Username and password are defined in system
Post condition A token is returned for future connections
Nominal Scenario If the user is not authenticated before, using login page submits authentication information and gets a token
Variants User is not defined, the wrong password

Use case 6, FR4 Showing gas stations on the map

Actors Involved EZGas General user
Precondition Nearby gas stations are available
Post condition Nearest choice with best prices is given
Nominal Scenario The application will verify if there are any gas stations related to companies in which the customer is a loyal client, otherwise, the selection is made based on price and distance of the gas station.
Variants No available gas station, Out of the supported area

Use case 7, FR5 Evaluates & returns last updated information

Actors Involved EZGas General user
Precondition Gas station chosen
Post condition customer.money -= purchase
Nominal Scenario The user puts money at the station terminal to gas up the car.
Variants customer.offer(Used)

Use case 8, FR6 Update prices

Actors Involved Customer
Precondition User has filled up his/her car using the application
Post condition Given feedback of the service
Nominal Scenario The user gives feedback on the utility of the application service and maybe prices
Variants The customer reports some issues/complaints: problem in fill up, complaints about price/service.

Use case 9, FR8.1 Checking feedbacks

Actors Involved Administrator
Precondition The User has submitted feedback
Post condition Feedback recorded
Nominal Scenario The administrator check feedback type and eventually gives extra loyalty points to the user
Variants If complaints about prices take it into account.

Use case 10, FR10 Register

Actors Involved Anonymous
Precondition None
Post condition Registered user
Nominal Scenario Anonymous user registers to use the app
Variants User is available so no register needed instead forget password.

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC10
Description Anonymous user registers as User U
Precondition User should open the application
Postcondition User U is registered and a token is returned
Step# Step description
1 User enables GPS and Internet connection
2 User open the app and see the map and touches the Find best gas station
3 System asks for login and U uses the credentials
4 System returns gas station G

Scenario 2

Scenario ID: SC2 Corresponds to UC1,2,3,5,6
Description User U searches for gas station and finds gas station G
Precondition Gps system is available and internet connection is reliable
Postcondition Best gas station is selected with respect to the distance and price
Step# Step description
1 User enables GPS and Internet connection
2 User open the app and see the map and touches the Find best gas station
3 System asks for login and U uses the credentials
4 System returns gas station G

Scenario 3

Scenario ID: SC3 Corresponds to UC2,3,4,5,7,8,9
Description EZGas user U fills up the car in gas station G
Precondition account of U has enough money to fill up the car
Postcondition account of U updated, credit of U updated
Step# Step description
1 User selects a gas station G
2 User sets credit for the related price
3 Deduce Price of fuel in G from the remaining credit of U

Scenario 4

Scenario ID: SC4 Corresponds to UC2,3,4,5,7,8,9
Description User U found gas station G but not enough credit
Precondition account of U has not enough money to fill up the car
Postcondition account of U updated, credit no change
Step# Step description
1 User selects a gas station G
2 User sets credit for the related price but it is not enough
3 Show related error with the capability to charge with payment system

Glossary

class EZGas
class EZGas_General_user {
+ ID
+ username
+ password
}

class Administrator{
+ username
+ password
+ secretKey
}
class GasStation{
  + name
  + priceList
  + place_position
  + Station_review_ID
  + lastUpdate
}
class Register{

}
class UpdatePrice{
  + date
}
class Feedback{
  + rating
  + review
}

class Interaction{
 + action_type
 + time_&_date
}
note left of Administrator 
 Admin can login to 
 the system and update the prices
end note

note top of EZGas
  Provides information about the place 
  of gas stations and the prices of 
  different types of gas in DB
end note

note bottom of Interaction
  This entity is about defining 
  types of actions for logging
end note

note bottom of GasStation
  Gas station organization which provides
  gas for cars depending on the car.This
  entity has a position and the price list
  and related reviews
end note

note top of EZGas_General_user
  General user that can get info about the prices
  and the position of gas stations.
end note

EZGas -- "*" EZGas_General_user :Is member of 
EZGas -- "*" Administrator:Is member of 
'EZGas -- "*" GasStation :Has the list of'

EZGas_General_user -- "*" Feedback : Submits
EZGas_General_user -- "*" Register : Has

Administrator -- "*" Register 
Administrator -- "*" UpdatePrice :sets
Register -- "*" GasStation
UpdatePrice "*" -- "*" GasStation
Feedback "*" -- "*" GasStation

Interaction <|-- Register
Interaction <|-- UpdatePrice 
Interaction <|-- Feedback

Glossary Github View: ClassDiagram