forked from SoftengPoliTo/Lab2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
263 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,263 @@ | ||
# Official Requirements Document | ||
|
||
Authors: Marco Meloni | ||
|
||
Date: 24/03/2020 | ||
|
||
Version: 1 | ||
|
||
# Contents | ||
- [Abstract](#abstract) | ||
- [Stakeholders](#stakeholders) | ||
- [Context Diagram and interfaces](#context-diagram-and-interfaces) | ||
+ [Context Diagram](#context-diagram) | ||
+ [Interfaces](#interfaces) | ||
|
||
- [Stories and personas](#stories-and-personas) | ||
- [Functional and non functional requirements](#functional-and-non-functional-requirements) | ||
+ [Functional Requirements](#functional-requirements) | ||
+ [Non functional requirements](#non-functional-requirements) | ||
- [Use case diagram and use cases](#use-case-diagram-and-use-cases) | ||
+ [Use case diagram](#use-case-diagram) | ||
+ [Use cases](#use-cases) | ||
+ [Relevant scenarios](#relevant-scenarios) | ||
- [Glossary](#glossary) | ||
- [System design](#system-design) | ||
- [Deployment diagram](#deployment-diagram) | ||
|
||
# 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 | ||
|
||
```plantuml | ||
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 | ||
|
||
```plantuml | ||
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 | ||
|
||
```plantuml | ||
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 | ||
|
||
```plantuml | ||
class "Server" | ||
Server -- "*"Phone | ||
"Google Maps" -- "*" Phone | ||
Phone .. "*" Application | ||
``` | ||
|
||
# Deployment Diagram | ||
|
||
|
||
```plantuml | ||
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 | ||
``` | ||
|