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
The web-based app is implemented to manipulate the GAS station for the Users to provide the best location of the gas station in terms of location and price. When the user starts finding the nearest location of a gas station by the cellphone or web Browser the APP retrieves data from a MAP API system providing the map, route, and distance to the GAS based on the current location of the User.
The user also has the chance to create a profile to interact with the APP by providing some information to update the prices of the gas station. Regular users can also use the APP, however, they can not add a new station or request an update for the price. The acceptance of user requests in the system would be under the control of the Administrator.
Stakeholders
Stakeholder name
Description
Administrator
Control the data Flow, check the data sending by the users
User
Use the system directly with their cellphones to find the gas station
MAP API
Provide suitable data for the users to find the nearest Gas Satation or Lowest Price
Context Diagram and interfaces
Context Diagram
Left to Right directionskinparampackageStylerectangleactorUseractorMAP_APIactorAdministratoractor"Signed User"rectangleSystem {
(EZGasApp)--AdministratorUser-- (EZGasApp)
User<|-- (SignedUser)
(SignedUser) <|--Administrator
(EZGasApp) --MAP_API
}
Interfaces
Actor
Logical Interface
Physical Interface
Administrator
GUI
Screen, keyboard - Web page
User
GUI
Touch Screen - Web Page
MAP API
Data Exchange - Online web Service , APIs
Internect connection
Stories and personas
Joseph is an active and industrious teacher and program developer who always try to manage their time as best as possible. He has an impressive time scheduling for himself to get to work timely. He tries to follow this personal time management, but he often suffers from finding the nearest Gas Station. He wasted a huge amount of time to get the station and most of the time he is not able to find the right path to the station. Besides, he wants to save his money by searching the cheapest location of GAS station nearby.
Goals: wants a system to find a suitable location (in terms of distances and prices) of the station to reach, as well as offer the cheapest one to others.
He would like to have an application to locate the nearest Gas station around by using his cell phone and also by his computer. He wants to implement a very simple but practical application, which easy to use for all users.
Functional and non functional requirements
Functional Requirements
ID
Description
FR1
Demonstrate the GAS location
FR1-1
Based on Price
FR1-2
Based on distance
FR2
Receive the price
FR3
Monitor received data and Record it
FR4
Manage the Account
FR5
LOG IN
FR6
Authentication and Authorization
FR6-1
Verify the Pass
FR6-2
Display LOG IN ERROR
FR7
LOG OUT
Non Functional Requirements
ID
Type (efficiency, reliability, .. see iso 9126)
Description
Refers to
NFR1
Usability
End-user shall be able to use the app by some tips provided by the system
All FR
NFR2
Performance
All functions should complete in < 0.5 sec
All FR
NFR3
Portability
The app runs in different operating systems(both Android and IOS devices)
All FR
NFR4
Portability
The app operates in most web Browsers
All FR
NFR5
Privacy
The personal data of User/Administrator should protect
FR5
Use case diagram and use cases
Use case diagram
left to right directionactorUserasUactor"Signed User"asSUactorAdministratorasAactor"MAP API"asMArectangleSystem{
U<|--SUSU<|--AU--> (FR1DemonstratetheGASlocation)
(FR1DemonstratetheGASlocation) -->MASU--> (FR2Receivetheprice)
(FR3Monitorreceiveddataandrecordit) -->AA--> (FR4ManagetheAccount)
SU--> (FR5LOGIN)
SU--> (FR7LOGOUT)
(FR2Receivetheprice) ..> (FR3Monitorreceiveddataandrecordit): include
(FR5LOGIN) ..> (FR6AuthenticationandAuthorization) : include
(FR6AuthenticationandAuthorization) ..> (FR6-1VerifythePass): include
(FR6-2DisplayLOGINERROR) ..>(FR6AuthenticationandAuthorization): extends
(FR1-1BasedonPrice )..> (FR1DemonstratetheGASlocation) : extends
(FR1-2Basedondistance) ..> (FR1DemonstratetheGASlocation): extends
}
Use Cases
Use case 1, UC1 - FR1 Demonstrate the nearest location
Actors Involved
User , MAP API
Precondition
The app runs, User Location (CL) exists, GAS Location (GL) exists
Postcondition
Demonstrate the Route to the User, calculate the distances and show it on the MAP
Nominal Scenario
User selects Gas Station, base on the current location of the User, calculate the distance and demonstrate the nearest station / cheapest station by preference to the User on the MAP
Variants
User does not turn the GPS on, the Internet connection is not available
Use case 2, UC2 - FR2 Receive the price
Actors Involved
User
Precondition
User Account CA exists, LOG in to the system, change ordinary user to signed one
Postcondition
The price of specific station sends in the system to review and accept by the Admin
Nominal Scenario
User log into the account successfully, the app performs the authentication, User selects the specific station and send the price of it
Variants
User is not able to log in, the account of the user is banned by the admin, User does not create the account
Use case 3, UC3 - FR3 Monitor received data and record it
Actors Involved
Administrator
Precondition
Administrator logs in, the prices sent by the users
Postcondition
Administrator check the prices, record it into the system and update the previous data
Nominal Scenario
Administrator get the real prices from the user and save the information into the system
Variants
The data is wrong and not real
Use case 4, UC4 - FR6 Authentication and Authorization
Actors Involved
User, Administrator
Precondition
User Account CA exists, Admin Account (AA) exists
Postcondition
enter into their profile, perform their tasks and manage their account
Nominal Scenario
Admin/User use their password and username correctly, the system authenticates them, they can do their tasks in the profile
Variants
Forget their password and username, provided the wrong logIN data
Relevant scenarios
Scenario 1
Scenario ID: SC1
Corresponds to UC1
Description
Demonstrate the Route to the User, calculate the distances and show it on the MAP
Precondition
The app runs, User Location (CL) exists, GAS Location (GL) exists
Postcondition
Demonstrate the Route to the User, calculate the distances and show it on the MAP
Step#
Step description
1
User switches on GPS to detect the current location
2
User chooses its preferences - Price or Distance options-
3
Based on user's preferences the MAP API calculates the distance
4
Show the route on the user's MAP
Scenario 2
Scenario ID: SC2
Corresponds to UC3
Description
The system gets information about the price of GAS station and record it, the administrator monitor and check receives data from the registerd users
Precondition
Administrator logs into the system, the prices sent by the registerd users
Postcondition
Administrator check the prices, record it into the system
Step#
Step description
1
registerd user wants to update or set the price of gas station into the system
2
registerd user selects the specific station
3
entered the price of that station into the system
4
Administrator logins to the sytem
5
Monitor and check the recieved data
6
If the data is real and correct, store/update the data into the system
Glossary
classUser {
}
noteleftofUser: Acts as a regular user.
noteleftofSignedUser: This user can suggest the price for the specific Gas Station.\n Send the request to the System
classSignedUser {
IDFirst-NameLast-Name
}
noteleftofAdministrator: This user is able to manage the System.\nCheck the Request received by the SigndUser
classAdministrator{
}
classStation{
SIDLocationFuelTypeLastUpdate
}
classFuelType{
FIDGASType
}
classPrice{
PIDMinPriceMaxPrice
}
classPriceRequest {
RIDDateUpdatedPriceGASType
}
classFilter{
PriceDistance
}
User<|--SignedUserSignedUser<|--AdministratorStation"0..*"-- "1..*" FuelType : offers
FuelType"1..*"-- "1..*" Price : has
SignedUser"1..*"-- "0..*" PriceRequest : send
Administrator"1"-- "*" PriceRequest : check
Administrator"1"-- "1..*" Station : manage
User"1..*"-- "0..2" Filter: set
Filter"0..2"-- "1..*" Station: apply
Administrator"1"-- "0..*" Price: update