Skip to content

Latest commit

 

History

History
263 lines (195 loc) · 8.98 KB

REQ_s269145.md

File metadata and controls

263 lines (195 loc) · 8.98 KB

Official Requirements Document

Authors: Marco Meloni

Date: 24/03/2020

Version: 1

Contents

Abstract

People all over the country always look for the lowest gas prices, but it's difficult to know at any time which stations have the best prices and where they are located.

Stakeholders

Stakeholder name Description
Drivers Use the application to look for the best gas prices and/or closest stations
Google Maps Do not use the application directly, benefit from having the updated locations of the gas stations on their maps
Gas stations Do not use the application directly, gain some exposure from being easier to find
Developers Do not use the application directly, invested time and money into it to get profit out of it

Context Diagram and interfaces

Context Diagram

left to right direction
actor Driver as a
actor Developer as b
actor "Google Maps" as c
a -- (EZGas)
b -- (EZGas)
c -- (EZGas)

Interfaces

Actor Logical Interface Physical Interface
Driver GUI Phone, touchscreen
Developer GUI, IDE Screen, keyboard
Google Maps Web API Internet connection

Stories and personas

Gianna is a mother of two and every day she's carpooling her kids and her nephews to and from school. To get to her nephews she has to take a longer route, so she's trying to save as much money as possible on gas. She uses EZGas to find the cheapest gas station along her daily route.

It's thursday morning and Gianna just left all the kids at school. She wants to get gas along the way back, so she opens EZGas and checks the updated prices. She notices that there is now a cheaper station next to the school, so she decides to go there and saves some money.

Gino is a taxi driver and he's constantly in need of fuel. He drives around the city and thus has no set route. EZGas helps him to find the cheapest nearby station in a quick and easy way, without having to memorize their location on his own or waste time driving around looking for one.

Pino is a pizza delivery guy. He uses his own scooter to deliver pizzas and has to pay for his own gas. He uses Google Maps to reach his customers so EZGas easily enters his workflow, being only a click away. Whenever he needs to get gas he just has to switch to it and find the closest station at the best price.

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Allow users to insert and update prices
FR2 Allow users to insert new stations
FR3 Rating system for accuracy of prices and location
FR4 GPS map showing the position of the stations and the best route to get to them
FR5 List view of stations ordered for price or proximity
FR6 Ability to define maximum area range or minimum rating for shown stations
FR7 Possibility to bookmark favourite stations

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 Android and iOs All FR
NFR4 Ease of use Support for different measuring systems All FR

Use case diagram and use cases

Use case diagram

left to right direction
actor Driver as a
a -- (FR1 Allow users to insert and update prices)
a -- (FR2 Allow users to insert new stations)
a -- (FR3 Rating system for accuracy of prices and location)
a -- (FR4 GPS map showing the position of the stations and the best route to get to them)
a -- (FR5 List view of stations ordered for price or proximity)
a -- (FR6 Ability to define maximum area range or minimum rating for shown stations)
a -- (FR7 Possibility to bookmark favourite stations)

Use Cases

Use case 1, UC1 - FR1 Allow users to insert and update prices

Actors Involved Driver
Precondition Gas station G exists and is already in the database
Post condition G.price_post != G.price_pre
Nominal Scenario Driver notices that G has a different price than the recorded one. He updates G's price.
Variants

Use case 2, UC2 - FR2 Allow users to insert new stations

Actors Involved Driver
Precondition Gas station G exists but is not in the database
Post condition G.create
Nominal Scenario Driver sees a gas station on the road not present in the app, decides to add it
Variants

Use case 3, UC3 - FR3 Rating system for accuracy of prices and location

Actors Involved Driver
Precondition Gas station G exists and is in the database
Post condition G.rating_post != G.rating_pre
Nominal Scenario Driver sees that the prices and/or the location of G signaled in the app are accurate or not and leaves a rating base on that
Variants

Use case 4, UC4 - FR4 GPS map showing the position of the stations and the best route to get to them

Actors Involved Driver
Precondition Driver's phone has working GPS
Post condition
Nominal Scenario Driver uses the map inside EZGas to find the gas stations around him and start navigating to a chosen one
Variants

Use case 5, FR5 List view of stations ordered for price or proximity

Actors Involved Driver
Precondition
Post condition
Nominal Scenario Driver wants to see the stations around him ordered in a certain manner, so opens the list view
Variants

Use case 6, FR6 Ability to define maximum area range or minimum rating for shown stations

Actors Involved Driver
Precondition Defined area range A and minimum rating R exist
Post condition A_post != A_pre or R_post != R_pre
Nominal Scenario Driver is interested only in stations within a certain range or with a rating that makes it more likely that the prices are updated, so he defines the variables he prefers to filter out the ones he's not interested in
Variants

Use case 7, FR7 Possibility to bookmark favourite stations

Actors Involved Driver
Precondition List of bookmarked station B exists
Post condition B_post = B_pre + B.new
Nominal Scenario Driver wants to save his favourite stations somewhere for easy access to them, so he keeps a list of them
Variants

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC1
Description Allow users to insert and update prices
Precondition gas station G is already in database and has wrong price
Postcondition Price of G updated
Step# Step description
1 Driver selects G
2 Driver clicks on "Update price"
3 Driver types out new price
4 Driver clicks on "Ok"

Glossary

class EZGas
class "Gas station" {
+ Position
+ Price
+ Rating
}

class Bookmarks {
+ Gas station lists
}


class "List view" {
+ Number of results
+ List of gas stations	
}

class "Map" {
+ Position of gas stations
+ Position of driver	
}

EZGas -- "*" "List view"
EZGas -- "*" Bookmarks
EZGas -- "*" Map

Map -- "*" "Gas station"
"List view" -- "*" "Gas station"

"Gas station" -- "*" Modify
"List view" -- "*" Reorder

Modify <|-- "Input price"
Modify <|-- Create
Modify <|-- Rate

Reorder <|-- "Order by price"
Reorder <|-- "Order by distance"

System Design

class "Server"

Server -- "*"Phone
"Google Maps" -- "*" Phone
Phone .. "*" Application

Deployment Diagram

artifact "EZGas" as a
node "Google Play store" as n
node "iOs App store" as m
node "Phone" as p
a -- n
a -- m
m --p
n -- p