Skip to content

Latest commit

 

History

History
308 lines (233 loc) · 12.5 KB

REQ_s274930.md

File metadata and controls

308 lines (233 loc) · 12.5 KB

Official Requirements Document

Authors: Enrico Carraro

Date: 04/04/2020

Version: 0.0.1

Contents

Abstract

Consider the EZGas application:

EZGas is a crowdsourcing service that allows users to:

  • collect prices of fuels in different gas stations;
  • locate gas stations in an area, along with the prices they practice.

Stakeholders

Stakeholder name Description
Unregistered User Can use the app to look for gas stations and their prices using the integrated map
Registered User Unregistered User features + can report prices and new gas stations; can upvote or down vote reports from other users
Map SDK The kit used to integrate maps in the app.
App Platform The platform on which the application will be distributed influces it with its rules and policies. (PlayStore and AppStore)

Context Diagram and interfaces

Context Diagram

(App Platform) -- (EZGas)
(Map SDK) -- (EZGas)
:Registered User:  -- (EZGas) : Reports prices,\n looks for\n near/cheap stations,\n votes
:Unregistered User: -- (EZGas) : Looks for\n near/cheap stations

Interfaces

Actor Logical Interface Physical Interface
Registered User GUI Screen, Touchscreen
Unrgistered User GUI Screen, Touchscreen

Stories and personas

Alice would like to minimize costs related to refueling, she downloads the app and sign ups. She reports the prices of the station in front of her house when she remembers to do so. She tracks prices weekly to know when gas is cheaper.

Bob is a gas station owner, he uses EZGas to report prices everyday, in order to attract more customers

Charlotte's job requires her to travel very frequently by car to move accross the nation. Very often she has trouble finding a gas station, she uses the app to look for the nearest station.

Functional and non functional requirements

Functional Requirements

ID Description
FR01 Record the position of a gas station that if not already in the app
FR02 Record the set of prices of a station on a certain day
FR03 Highlight the last time that prices were reported for a certain station
FR04 Show the cheapest station in the neighbouring area on the map
FR05 Show the last prices reported for a given gas station
FR06 Highlight the nearest gas station on the map
FR07 Record the review of a gas station from a registered user
FR08 Show the latest reviews for a certain gas station
FR09 Record the upvote/downvote on user reported content (gas station, fuel prices, review)
FR10 Highlight as "potentially false" reports with upvote/downvote ratio of 1:10

Non Functional Requirements

ID Type (efficiency, reliability...) Description Refers to
NFR1 Usability Application should be used with no training user All FR
NFR2 Performance All functions should complete in < 0.5 sec All FR
NFR3 Portability Compatible with Android 10 and iOS 13 All FR
NFR4 Localisation Decimal numbers use . (dot) as decimal separator

Use case diagram and use cases

Use case diagram

left to right direction
actor :Registered User: as a
actor :Unregistered User: as b
(FR01 Record the position\n of a gas station that if\nnot already in the app) as (FR01)
(FR02 Record the set of\nprices of a station\non a certain day) as (FR02)
(FR03 Highlight the last\ntime that prices\nwere reported\nfor a certain station) as (FR03)
(FR04 Show the cheapest\nstation in the\n neighbouring area\non the map) as (FR04)
(FR05 Show the last prices\nreported for a\ngiven gas station) as (FR05)
(FR06 Highlight the\nnearest gas station\non the map) as (FR06)
(FR07 Record the review\nof a gas station\nfrom a registered user) as (FR07)
(FR08 Show the latest\nreviews for a\ncertain gas station) as (FR08)
(FR09 Record the\nupvote/downvote on\nuser reported content) as (FR09)
(FR10 Highlight as "potentially false"\nreports with\nupvote/downvote ratio of 1:10) as (FR10)
a --- (FR01)
a --- (FR02)
a -- (FR03)
a -- (FR04)
a -- (FR05)
a -- (FR06)
a --- (FR07)
a -- (FR08)
a --- (FR09)
a -- (FR10)
b -- (FR03)
b -- (FR04)
b -- (FR05)
b -- (FR06)
b -- (FR08)
b -- (FR10)

Use Cases

Use case 1, UC1 - FR01 Record the position of a gas station that if not already in the app

Actors Involved Registered User
Precondition User U is Registered
Post condition New station S is Recorded
Nominal Scenario U finds out about S, reports its position on the platform if not already present

Use case 2, UC2 - FR02 Record the set of prices of a station on a certain day

Actors Involved Registered User
Precondition U is Registered, S is in the database
Post condition Prices are recorded on the platform
Nominal Scenario U is refueling, reports the prices
Variants U is the Manger of S, reports the prices

Use case 3, UC3 - FR03 Highlight the last time that prices were reported for a certain station

Actors Involved User
Precondition User U selected a Station from the Map
Post condition -
Nominal Scenario U sees in the detail page of the station the date in which prices were last reported

Use case 4, UC4 - FR04 Spot the cheapest station in the neighbouring area

Actors Involved User
Precondition At least a station's prices have been reported recently
Post condition -
Nominal Scenario U opens the app to see where gas is chepear, and refuels there

Use case 5, UC5 - FR05 Show the last prices reported for a given gas station

Actors Involved User
Precondition User U selected a Station from the map
Post condition -
Nominal Scenario U sees in the detail page of the station the latest reported prices

Use case 6, UC6 - FR06 Highlight the nearest gas station on the map

Actors Involved User
Precondition User U can see the map
Post condition -
Nominal Scenario U opens the map tab, the nearest station is clearly highlighted

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC1
Description User U reports a new gas station S
Precondition U has the application and is registered
Postcondition The platform now displays S
Step# Step description
1 U opens the app
2 U logins
3 U selects add new Gas Station
4 U inserts the necessary data and submits them

Scenario 2

Scenario ID: SC2 Corresponds to UC2
Description A User updates the set of prices for a certain station
Precondition Gas Station is open, User can see prices
Postcondition Prices for the gas station are updated
Step# Step description
1 User selects the gas station
2 User selects "update prices"
3 User adds all relevant informations and submits

Scenario 3

Scenario ID: SC3 Corresponds to UC3
Description User U uses the app to discover the cheapest gas station near by
Precondition U has the app installed on their phone
Postcondition -
Step# Step description
1 U opens the app
2 U uses the map to understand where the gas stations are
3 U can see the prices related to the gas stations on the map

Glossary

class EZGas
class GasStation {
+ name
+ position
}

class Price {
+ fuel type
+ price
+ date
}

class Review {
  + Content
  + Rating
}

class "Registered User" {
+ name
+ surname
+ email address
}

class "Crowdsourced Content" {
  + upvotes
  + downvotes
}

class Search {
  + query
  + filters
}

User - "*" Search: performs >
User - Map: looks at >

"Registered User" ---|> User
"Registered User" --- EZGas: registered
"Registered User" --- "*" Price: reports >
"Registered User" --- "*" Review: posts >
"Registered User" --- "*" "Crowdsourced Content": votes >

"Crowdsourced Content" <|-- Price
"Crowdsourced Content" <|-- Review
"Crowdsourced Content" <|- GasStation

GasStation --- EZGas
GasStation --- "*" Price: shown
GasStation --- "*" Review: of
GasStation "*" --- Map: shows >
GasStation "*" --- Search: lists >

Deployment Diagram

node "Application server" as as {
 artifact "EZGas API" as ea
}

node "Database server" as ds {
  artifact "DBMS" as db
}

node "Mobile Phone" as mp  {
  artifact "Mobile Application" as ma
}

ea -- db
ma -- ea