Skip to content

Latest commit

 

History

History
292 lines (230 loc) · 11.6 KB

REQ_s274254.md

File metadata and controls

292 lines (230 loc) · 11.6 KB

Official Requirements Document

Authors: Anna Tranquillini

Contents

Abstract

Drivers do not always know what is the best gas station to go to, this is especially true when they are in a new neighborhood or city. They find themselves looking up for the closest gas station on the internet, not always knowing which one has the best price.

A company wants to realize a crowdsourcing service that allows users to both collect prices of fuels in different gas stations and locate gas stations in an area, along with the prices they practice. This application is meant to be used by any user that wants do search for the closest and most convenient gas station nearby. Whenever a customer visits the gas station, he can also update the service with up-to-date information.

Stakeholders

Stakeholder name   Description
User     Uses the application to look for gas stations and also updates the information on it
Developer         Develops the functionality of the applicaiton

Context Diagram and interfaces

Context Diagram

left to right direction
actor User as u <<Human>>
actor Developer as d <<Human>>
actor MapService as ms <<Application>>
u -- (EZGas)
d -- (EZGas)
ms --(EZGas) 

Interfaces

Actor Logical Interface Physical Interface  
User GUI Screen, keyboard
MapService Data exchanged Internet

Stories and personas

Mario is a taxi driver and he works in Rome. Being Rome such a big and chaotic city, he often struggles in remembering which is the closest gas station to his position, and even after finding a gas station after going around for a while, he often realizes that it has not the most convenient price he could have found in the neighborhood. Tired of searching and needful of heading back to his work, Mario pays that gas price anyway. John really likes his work, but searching for gas stations can become frustrating, time consuming and expensive. 

John would like to have a simple way to look for gas stations in the surroundings and find the best one in terms of proximity and cost. He would also like to know the price for the exact type of fuel he needs. 

Additionaly, John would like to be able to look for specific gas stations he has already been to, by searching them by name, this is because with time he has become familiar with them and he would like to know if the prices there are still convenient.

For John it is not a problem to update others when he finds out new information about a gas station, he would like to help other drivers and tell them if a new gas station has just opened, or an old one has been dismissed. He would also like to share the information about the price he paid when refilling his taxi.

Functional and non functional requirements

Functional Requirements

ID         Description  
 FR1     Search for gas station
 FR2     Add new gas station
 FR3     Remove gas station
 FR4     Modify gas station (price, location, name)
 FR5     View information about a gas station
 FR6     Geo-localization
 FR7     Log-in
 FR8     Log-out
 FR8     Sign-in 

Non Functional Requirements

ID         Type (efficiency, reliability, .. see iso 9126)           Description   Refers to
 NFR1     Usability Application should be used with no precedent knowledge by any user   All FR
 NFR2     Performance All functions should complete in < 0.5 sec   All FR
 NFR3     Portability The application should run both on Android, IoS and Windows Phone All FR
 NFR4     Portability The application (functions and data) should be downloadable from PlayStore, AppStore and Windows Store All FR
 NFR5     Size The application should not exceed X Bytes All FR

Use case diagram and use cases

Use case diagram

left to right direction
actor User as u << Human >>
actor MapService as m << Application >>
rectangle application {
(FR1.2 Search by position)-->m 
u -->(FR1 Searches for gas station)
u --> (FR2 Adds new gas station)
u --> (FR3 Removes a gas sation)
u --> (FR4 Modifies information about a gas station)
u --> (FR5 Views information about a gas station)
u --> (FR6 Geo-localize itself)
u --> (FR7 Log-in)
u --> (FR8 Log-out)
u --> (FR9 Sign-in)


(FR6 Geo-localize itself)-->m
(FR1 Searches for gas station)  .> (FR1.1 Search by name) :inculde
(FR1 Searches for gas station)  .> (FR1.2 Search by position) :inculde
(FR1 Searches for gas station)  .> (FR1.3 Search by price) :inculde
}

Use Cases

Use case 1, UC1 - FR1  Search for gas station

Actors Involved         User
 Precondition     MapService is working, User is connected to the internet
 Post condition      
 Nominal Scenario     User selects if he wants to choose a specific gas station (by name) or to search for a combination (price-vicinity), selects the type of gas he needs,the application display the results
 Variants     No gas station available for that data, issue warning

Use case 2, UC2 - FR2 Add new gas station

Actors Involved         User
 Precondition     Gas Station GS exists, User is signed-in,User is connected to the internet
 Post condition     number gas stations post> number gas stations pre
 Nominal Scenario     User insert info about GS, user creates GS
 Variants     The information inserted is not coherent, issue warning

Use case 3, UC3 - FR3 Remove gas station

Actors Involved         User
 Precondition     Gas Station GS doesn't exist, user is signed-in,User is connected to the internet
 Post condition     number gas stations post< number gas stations pre
 Nominal Scenario     User selects GS, user deletes GS
 Variants      

Use case 4, UC4 - FR4 Modify gas station (price, location, name)

Actors Involved         User
 Precondition     Gas Station GS exists, user is signed-in,User is connected to the internet
 Post condition     GS.information.pre!=GR.information.post
 Nominal Scenario     User insert info about GS, information sent to DB
 Variants     The information inserted is not coherent, issue warning

Use case 5, FR5 View information about a gas station

Actors Involved         User
 Precondition     Gas Station GS exists, search has been performed, User is connected to the internet
 Post condition      
 Nominal Scenario     User selects GS, application displays information
 Variants     The GS selected has been removed, issue warning

Use case 6, FR6 Geo-localization

Actors Involved         User
 Precondition     mobile geolocalization is on
 Post condition     user.location!=null
 Nominal Scenario     User opens application, mobile geolocalization is performed
 Variants     The mobile is not able to geo-localize itself, issue warning

Use case 7, FR7 Log-in

Actors Involved         User
 Precondition     User is registered,User is connected to the internet  
 Post condition     User is logged-in, Users.loggedIn.nr.post > Users.loggedIn.nr.pre
 Nominal Scenario     User insert username and password, log-in is performed
 Variants     log-in enconuters an error, issue warning

Use case 8, FR8 Log-out

Actors Involved         User
 Precondition     User is logged-in,User is connected to the internet
 Post condition     User is logged-out,Users.loggedIn.nr.post < Users.loggedIn.nr.pre  
 Nominal Scenario     User clicks on log-out, log-out is performed
 Variants    

Use case 9, FR9 Sign-in

Actors Involved         User
 Precondition     User is not registered,User is connected to the internet
 Post condition     User is registered, Users.nr.pre>Users.nr.post
 Nominal Scenario     User inserts information about it-self, sign-in is performed, new user account created
 Variants    

Relevant scenarios

Scenario 1

Scenario ID: SC1         Corresponds to UC1,UC5,UC6  
Description User U searches for a gas station with a specific name
Precondition  U is connected to the internet
Postcondition  
Step#          Step description  
 1     U select the search by name type and type of gas
 2     U inserts the name of gas station GS
 3     U is displayed search results
 4     U selects the gas station GS he is most interesed in
5 U views information about GS

Scenario 2

Scenario ID: SC1   Corresponds to UC1,UC5,UC6  
Description User U searches for a gas station with the best price/vicinity
Precondition  U is connected to the internet, MapService is working
Postcondition  
Step#          Step description  
 1     U select the search by price/vicinity type and type of gas
 2     U is displayed search results
 3     U selects the gas station GS he is most interesed in
4 U views information about GS

Scenario 3

Scenario ID: SC1   Corresponds to UC4, UC5  
Description User U updates information about gas station GS
Precondition  U is connected to the internet, U is logged-in, GS exists
Postcondition GS.information.pre!=GR.information.post  
Step#          Step description  
 1     U views information about GS  
 2     U modifies information about GS inserting up-to-date values
 3     U saves the changes
4 Modifications are saved into the DB

Glossary

class EZGas
class GasStation {
+ name
+ location
}

class GasType {
+ gasTypeName
}

class Price {
+ price
+ quantity
}

class EZGasAccount {
+username
+email
+password
+location
}


class User{
+ name
+ surname
}



EZGas -- "*" GasStation
EZGas --  "*" EZGasAccount 
GasStation -- "*" Price
EZGasAccount --  User

User --  "*" GasStation : modify
User --  "*" GasStation : add
User --  "*" GasStation : remove

Price"*" --  GasType