Skip to content

Latest commit

 

History

History
292 lines (223 loc) · 9.29 KB

REQ_s234445.md

File metadata and controls

292 lines (223 loc) · 9.29 KB

Lab2

Requirement Document

Official Requirements Document

Authors: Giuseppe Piombino

Date: 4/04/2020

Version: 2

Change history

Version Changes
2 Fixed defect in use cases: added UC5 and UC6
Added Glossary: added class diagram
Fixed defect in Context Diagram and interfaces:added Facebook and Google as actors
Fixed defect in Non functional requirements: changed the type of the NF4 and swapped with NF3
Added detail in Stakeholders: added developer as stakeholder

Contents

Abstract

EZGas is an application whose aim is to offer a view of the possible gas stations and their prices. The service is crowdsourcing based and allows users to collect prices of fuel in different gas stations and to locate them in an area, along with the prices and the type of fuel they practice. The users should be able to add the location of a gas station and their prices, and search them on the map asking for the cheapest, the closest.

Stakeholders

Stakeholder name Description
Developer Develop the application
User Uses the application to both add gas station, and related info, and search for them

Context Diagram and interfaces

Context Diagram

left to right direction

actor User 
 GoogleMaps as m
 GasStation as c
 Google as g
 Facebook as f
rectangle system{
User --- (EZGas) 
c --- (EZGas)
g <|--- m 
(EZGas) --- g
(EZGas) --- f

}

Interfaces

Actor Logical Interface Physical Interface
User GUI Screen

Stories and personas

Gioele Rubinis is a truck driver and works for his family business "Rubini Pregiati", which is a factory specialized in the production of red candies. Gabriele has a wide knowledge of the roads and of gas station since he has worked as driver for 20 years and has driven several types of truck. He would like to make his skills available to the other drivers, for this reason he is a user of EZGas. Every time he stops to fuel during a business trip he check if the gas station is already available on the app. If it is, and it is necessary, he updates the prices, otherwise, thanks to the geolocalization he add a new gas station specifing the types of fuel offerd by the station and the relative prices.

Daniele Toninello travels a lot beacause of his job, unfortunately, he is not so much skilled with travel . Moreover, last moth, he bought a new eletric car and isn't practical to locate the charging stations, so he would like an advice about them. For this reason wherever he is, he uses EZGas to find the closest station to charge his car and go on with his trip.

Functional and non functional requirements

Functional Requirements

ID Description
FR1 Add a gas station with his features (coordinates, type of fuel and prices)
FR2 Update a gas station
FR2.1 Add new fuel
FR2.2 Modify fuel
FR2.3 Delete fuel
FR3 Delete a gas station
FR4 Find a gas station in relation to the filters (distance, price, type of fuel, suggested)
FR4.1 Set search filter- range
FR4.2 Set search filter- price
FR4.3 Set search filter- type of fuel
FR5 Log in
FR6 Log out

Non Functional Requirements

ID Type (efficiency, reliability, .. see iso 9126) Description Refers to
NFR1 Usability Application should be used with no training by any driver All FR
NFR2 Performance All functions should complete in < 1 sec All FR
NFR3 Performance The internal server (functions and data) should be updatable in less than 5 minutes All FR
NFR4 Portability The application runs on Android (7 and more recent) and iOS (10 and more recent) All FR
NFR5 Localisation Decimal numbers use . (dot) as decimal separator

Use case diagram and use cases

Use case diagram

left to right direction
actor User as a
a -- (FR1 Add a new gas station)
(FR1 Add a new gas station)
a -- (FR2 Update a gas station) 
(FR2 Update a gas station) ..> (FR2.1 Add new fuel -price-) : include
(FR2 Update a gas station) ..> (FR2.2 Modify fuel -price-) : include
(FR2 Update a gas station) ..> (FR2.3 Delete fuel -price-) : include
a -- (FR3 Delete a gas station)
(FR3 Delete a gas station) ..> (FR2.3 Delete fuel -price-) : extend
a -- (FR4 Find a gas station in relation to the filter)
(FR4 Find a gas station in relation to the filter)..> (FR4.1 Set search filter- range) : include
(FR4 Find a gas station in relation to the filter)..> (FR4.2 Set search filter- price) : include
(FR4 Find a gas station in relation to the filter)..> (FR4.3 Set search filter- type of fuel) : include
a --(FR5 Log in)
a --(FR6 Log out)

Use Cases

Use case 1, UC1 - FR1 Add a new gas station

Actors Involved Administrator
Precondition Logged && Gas station doesn't exist
Post condition Gas station exist
Nominal Scenario Create a new gas station, insert coordinates
Variants

Use case 2.1, UC2.1 - FR2.1 Add new fuel

Actors Involved Administrator
Precondition Logged && Gas station exist
Post condition Gas station has new fuel
Nominal Scenario User selects gas station, user adds fuel, insert price
Variants

Use case 2.2, UC2.2 - FR2.2 Modify fuel

Actors Involved Administrator
Precondition Logged && Gas station exist
Post condition Gas station has new fuel price
Nominal Scenario User selects gas station, user selects fuel, user inserts price
Variants

Use case 2.3, UC2.3 - FR2.3 Delete fuel

Actors Involved Administrator
Precondition Logged && Gas station exist
Post condition The fuel of the correspondent gas station doesn't exist
Nominal Scenario User selects gas station, user selects fuel, user deletes fuel
Variants

Use case 3, UC3 - FR3 Delete gas station

Actors Involved Administrator
Precondition Logged && Gas station exist
Post condition Gas station doesn't exist
Nominal Scenario User selects gas station, user delets gas station
Variants

Use case 4, UC4 - FR4 Find a gas station

Actors Involved Administrator
Precondition Logged
Post condition
Nominal Scenario User sets filters, user starts search function
Variants If there are not gas station, message error

Use case 5, UC5 - FR5 Log in

Actors Involved Administrator
Precondition Not Logged
Post condition Logged
Nominal Scenario User log in using Facebook or Google account
Variants

Use case 6, UC6 - FR5 Log out

Actors Involved Administrator
Precondition Logged
Post condition Not Logged
Nominal Scenario User log out
Variants

Relevant scenarios

Scenario 1

Scenario ID: SC1 Corresponds to UC4
Description User wants to find a gas station
Precondition Logged
Post condition
Step# Step Description
1 User sets filters
2 User starts search function

Scenario 2

Scenario ID: SC2 Corresponds to UC4
Description User wants to find a gas station
Precondition Logged
Post condition
Step# Step Description
1 User sets filters
2 User starts search function
3 If there are not gas station, message error

Glossary

class EZGas
class GasStation {
+ coordinates
+ ID
+ name
}

class TabFuel {
+ ID
+ priceDiesel
+ priceLNG
+ priceCNG
+ priceGasoline
+ priceElectric
}

class Account {
+ email
+ password
+ username
}

class SearchFilter {
+ name
+ active
}

class PriceFilter {
+ priceValue
}

class DistanceFilter {
+ distanceRange
}

class TypeFuelFilter{
+ type
}

EZGas "1" -- "*" GasStation
EZGas "1" -- "3" SearchFilter
EZGas "1" -- "*" Account
SearchFilter <|-- PriceFilter
SearchFilter <|-- DistanceFilter
SearchFilter <|-- TypeFuelFilter
GasStation "1" -- "1" TabFuel