Srs Document
Srs Document
FoodSaver
1.0.5
3rd December 2022
FoodSavers
Aishwarya Kasthala
1
FoodSaver – Software Requirement Specifications
2
FoodSaver – Software Requirement Specifications
Table of Contents
TABLE OF CONTENTS 3
1. INTRODUCTION 5
1.1 PURPOSE 5
1.2 SCOPE 5
1.3 DEFINITIONS, ACRONYMS, AND ABBREVIATIONS 5
1.4 REFERENCES 6
1.5 OVERVIEW 6
2. GENERAL DESCRIPTION 6
2.1 PRODUCT PERSPECTIVE 6
2.2 USER CHARACTERISTICS 6
2.3 SYSTEM ENVIRONMENT 6
2.4 ASSUMPTIONS AND DEPENDENCIES 7
3. SPECIFIC REQUIREMENTS 7
3.1.1 Login 9
3.1.2 Create an account 9
3.1.3 Logout 9
3.1.4 Take the tour 10
3.1.5 Reset Password 10
3.1.6 Delete account 10
3.1.7 Delete a user 11
3.1.8 Enable user account 11
3.1.9 Disable user account 11
3.1.10 Report a user 12
3.1.10 Edit profile 12
3.1.11 Add profile photo 13
3.1.12 Add food post 13
3.1.13 Edit food information 13
3.1.14 Edit contact information 14
3.1.15 Delete a food post 14
3.1.16 Retrieve food posts 14
3.1.17 Send food request 15
3.1.18 Edit food request 15
3.1.19 Accept food request 15
3.1.20 Decline a food request 16
3.1.21 My requests 16
3.1.22 Reserve Food 16
3.1.23 Cancel food reservation 17
3.1.24 Filter food type 17
3.1.25 Sort food 17
3.1.26 Search for a food item 18
3.1.27 Add to favorites 18
3.1.28 Remove from favorites 18
3.1.29 Like a food item 19
3.1.30 Get Directions 19
3.1.31 Get nearby Locations 19
3.1.32 Change language 20
3.1.33 Refer a friend 20
3.1.34 Add feedback for the application 20
3.1.35 Add feedback for a food item 21
3.1.36 Get user accounts 21
3
FoodSaver – Software Requirement Specifications
4
FoodSaver – Software Requirement Specifications
1. Introduction
This SRS document is intended to provide the software development team, client, and other project
stakeholders with an initial introduction to the product scope, product perspective, user
characteristics, system environment, functional and non-functional requirements, and use cases.
1.1 Purpose
The purpose of this document is to present an in-depth understanding of the FoodSaver mobile
application by defining the problem statement of the target users and the solution or a skeleton
framework for it. This document will describe the application’s features, the conditions under
which it must operate, and how the system will respond to external inputs. This document is
intended for both stakeholders and the developers of the application and will be submitted to the
client for approval.
1.2 Scope
Left-over food wastage is one of the major problems in the world. FoodSaver application will try
to minimize this problem by establishing a platform between the donors and the receivers.
This application has three types of users: The administrator, the donors, and the receivers. Both
the donors and receiver parties may have two kinds of accounts: A single donor account or a donor
group account such as a restaurant and an Individual receiver account or receiver group account
such as non-governmental organizations (NGOs).
The donor who wants to donate food to receivers can do so by simply posting their information on
the application, such as food details, contact information, location details, and so on. The receivers
can view the information posted by the donors and can reserve food with a single click.
This application facilitates email communication between the donor and the recipient/ receiver.
This application does not provide any payment gateways, as the users of this application provide
food to others free of cost. Also, the application doesn’t ensure the food quality.
5
FoodSaver – Software Requirement Specifications
1.4 References
1. [Link]
2. [Link]
3. [Link]
1.5 Overview
The remaining sections of this document provide a product perspective, the user characteristics,
the environment under which it operates, and constraints and assumptions made while designing
the product which is included in section 2. Section 3 gives a detailed description of the functional
requirements and non-functional requirements which is primarily for the app developers to explain
the functional details.
2. General Description
This section of the document is to make the user understand the functionalities of the software
product.
The purpose of the FoodSaver application is to resolve the hunger and food wastage problems
simultaneously. As large amounts of food get wasted every day, FoodSaver acts as a platform to
connect food donors with the needy. The primary distinction between FoodSaver and similar
apps is that they are donor oriented. FoodSaver is an application developed taking both the
donors and receivers into consideration. In this app, the receivers can look for available food
donors, communicate and reserve according to their needs. NGOs and common people can use
this app to solve the food crisis in society.
This application is an iOS mobile application that is supported only on iPhones and iPads. It’s a
mobile responsive application that is compatible with iPhones of different dimensions. This app
is developed using Swift programming language.
6
FoodSaver – Software Requirement Specifications
As this is an iOS application, it doesn’t support Android phones or desktops of any operating
system.
3. Specific Requirements
This section describes specific features of the FoodSaver application.
7
FoodSaver – Software Requirement Specifications
8
FoodSaver – Software Requirement Specifications
3.1.1 Login
a. Description – The user can log in to the application.
b. Actor(s) – User
c. Trigger – When the user clicks on the ‘Login’ button.
d. Conditions
i. Pre - The user must have an account within the system.
ii. Post – The user will be redirected to the Dashboard screen.
e. Exceptions –
i. If the input text fields are left blank, then an error message is thrown as “Please enter the
details”.
ii. If the login fails, then the user must close the application and try logging in again.
ii. If the input text fields are left blank, then an error message is thrown as “Please enter the
details”.
iii. If the system is unable to create an account, the system will display an error message and will
ask the user to try again later.
3.1.3 Logout
a. Description – The user can log out of the application.
b. Actor(s) – User
c. Trigger – When the user clicks on the logout button.
d. Conditions
i. Pre – The user must be logged into the application.
9
FoodSaver – Software Requirement Specifications
ii. Post – The user is logged out of the application and will be redirected to the app's main
screen.
e. Exceptions –
i. If there is any network error, the logout operation will fail, and the user has to re-launch
the application.
10
FoodSaver – Software Requirement Specifications
d. Conditions -
i. Pre - User must have an existing account within the system.
ii. Post – The user is signed out of the application and is directed to create an account page and
the user details will be removed from the database.
e. Exceptions:
i. If there is any network error, the delete operation will fail and the user must re-launch the
application.
i. If there is any network error while deleting the user, then an exception will be shown as
“Delete failed. Please try again”.
11
FoodSaver – Software Requirement Specifications
c. Trigger – When the admin clicks on the ‘Disable this user’ button.
d. Conditions
i. Pre – The account admin wants to disable should be an existing user.
ii. Post – A pop-up message will be shown as “Disabled the user successfully” and the
selected user will be blocked from logging into the application.
e. Exceptions:
i. If there is any network error during this operation, then an exception will be shown as
“Failed. Please try again”. The admin must close the application and re-try disabling it.
i. If the report fails due to a network issue, then an exception will be shown as
“Failed. Please try again”.
i. If editing profile fails due to a network issue, then an exception will be shown as “Failed.
Please try again”.
12
FoodSaver – Software Requirement Specifications
i. If the attached file is bigger than the desired size, an exception will be thrown as “File
attached exceeds size. Please try again”.
i. If adding food post profile fails due to a network issue, then an exception will be shown
as “Failed. Please try again”.
13
FoodSaver – Software Requirement Specifications
i. If editing food information fails due to a network issue, then an exception will be shown
as “Failed. Please try again”.
14
FoodSaver – Software Requirement Specifications
ii. Post – Users will be able to send food requests to the donor.
e. Exceptions:
i. If the application doesn’t fetch results, then an exception will be thrown as “Unable to fetch.
Please try again”.
a. Description – The user can either edit the food request such as editing the food quantity or delete
the food request.
b. Actor(s) – Receiver
c. Trigger – When the user clicks on the ‘Edit request’ button.
d. Conditions
i. Pre - The user must have already sent the food requests.
ii. Post – The edits made by the receiver can be seen and the updated food requests can be
seen in the donor’s food requests list.
e. Exceptions –
i. If the user makes an edit and is not reflected in the application, then an exception is
thrown as “Edit failed. Please try again”.
ii. If the user adds an unavailable quantity, then an exception will be thrown as
“Unavailable. Please try again”.
15
FoodSaver – Software Requirement Specifications
b. Actor(s) – Donor
c. Trigger – When the user clicks on the ‘Accept’ button.
d. Conditions
i. Pre – There must be food requests sent by receivers.
ii. Post – The food request will be processed according to the donor’s wish.
e. Exceptions – NA
a. Description – The user can decline a food request sent by the receiver.
b. Actor(s) – Donor
c. Trigger – When the user clicks on the ‘Decline’ button.
d. Conditions
iii. Pre – There must be food requests sent by receivers.
iv. Post – The food request will be processed according to the donor’s wish.
e. Exceptions – NA
3.1.21 My requests
a. Description – The user can see their food request history.
b. Actor(s) – Main user
c. Trigger – When the user clicks on the ‘My requests’ button in the hamburger menu.
d. Conditions
i. Pre – The user must be logged into the application.
ii. Post – The user will be able to see their food request history, along with accepted and
declined.
e. Exceptions – NA
16
FoodSaver – Software Requirement Specifications
ii. Post – A pop-up message will be shown as “Reserved food” and the details will be
updated in the database.
e. Exceptions:
i. If the selected food quantity is more than the available food, then an error message is
shown as “Unavailable. Please try again”.
ii. If the entered food quantity is left blank, then an exception will be thrown as “Please try
again”.
a. Description – The user can filter the food posts list tiles based on the options shown.
b. Actor(s) – Receiver
c. Trigger – When the user clicks on the ‘filter’ icon button.
d. Conditions
i. Pre – The user must be on the dashboard screen.
ii. Post – The food details are shown based on the filter option selected by the user.
e. Exceptions – NA
a. Description – The user can sort the food posts list tiles based on the quantity. This can be either
increasing or decreasing order.
b. Actor(s) – Receiver
c. Trigger – When the user clicks on the ‘sort’ icon button.
17
FoodSaver – Software Requirement Specifications
d. Conditions
i. Pre – The user must be logged into the application.
ii. Post – The food details are shown based on the sort order selected by the user.
e. Exceptions – NA
a. Description – The user can add a particular food item to his/ her favorites.
b. Actor(s) – Receiver
c. Trigger – When the user clicks the ‘love’ icon on the food post.
d. Conditions
i. Pre – The food item should be available on the dashboard screen.
ii. Post – The food item selected will be added to the user’s ‘favorites’ list.
e. Exceptions – NA
i. If the favorite food item already added by the user doesn’t exist, then the item won't be
visible in their favorites.
18
FoodSaver – Software Requirement Specifications
i. If the user doesn’t give location permissions, the permissions dialog box will be shown
asking the user to allow or decline location permissions. The user will be redirected to
the Maps application only when the user agrees to the permissions.
19
FoodSaver – Software Requirement Specifications
20
FoodSaver – Software Requirement Specifications
ii. If the feedback comment section is left blank, then a validation error message will be
shown as “Please enter comments”.
iii. If the user enters more characters than the character limit, then an exception will be
thrown as “You have exceeded the limit. Please try again”.
e. Exceptions:
i. If the feedback comment section is left blank or the input entered is invalid, then an
exception will be thrown “Please try again”.
i. If the user fails to retrieve the user accounts due to network issues, then an
exception will be thrown as “Failed. Please close the application and re-try”.
3.2.1 Performance
The FoodSaver app operates based on the internet speed of the user's device. Even with a heavy
workload, the application's features load in less than 5 seconds. The application will be tested in
21
FoodSaver – Software Requirement Specifications
cycles to determine its performance. Each database update cycle in the application takes less
than 60 seconds to complete. Following the development, the application will be in the
production phase for one month, during which time the performance of the app will be evaluated
by testers by trying the features that typically slow down the speed.
3.2.2 Reliability
The FoodSaver application will be tested in iterations to determine the pass and failure rate. The
application's developers will have unit test cases to check the functionalities' pass and failure
rates. There will also be a bi-weekly release of the features developed in that sprint, where manual
testing is performed by the testers. If the failure rate of the test cases is relatively high, necessary
changes will be implemented. In addition, the application code will be written in accordance with
coding standards while keeping all object-oriented principles and design patterns in mind to
increase reusability.
3.2.3 Availability
Except for network outages, the FoodSaver application will be available 24 hours a day, seven
days a week. The application will have less downtime. If a database update fails to commit, the
database update process will undo all relevant changes.
3.2.4 Security
All account-related information will be stored in a secure local database that is stored in the
application's local memory. Private memory is the only way to access database information.
According to the owner's privacy policy, this application will protect the privacy of their personal
information. Passwords can only be viewed if the user so desires.
3.2.5 Maintainability
The FoodSaver application will be continuously monitored by the technical team. Bugs reported
by testers will be fixed parallelly by developers. Various tools will be used to track all the changes
made. The application will be regularly maintained to reflect the developers' updates. The
maintenance will be carried out after regular business hours. Documentation will be updated in
case of any modifications.
3.2.6 Portability
This application is only compatible with iOS devices. If the user purchases a new phone, the
application can be installed from the App Store and will continue to function as before.
22
FoodSaver – Software Requirement Specifications
4.2 Deliverable 1
4.2.1 Description
Our team has been divided into two sub-teams: design and development. The team began
revising the basic SRS document, requirement exceptions, and use case diagram for this
milestone. For our application, our design team created UX wireframes. Our development
team created database model classes as well as several UI View models. We worked
together to create the application's initial class diagram. The team will modify this class
diagram in subsequent iterations according to the implementation.
4.2.2 Design
[Link]. Class Diagram
The class diagram attached shows how our system is organized and how they interact
with each other.
23
FoodSaver – Software Requirement Specifications
Donor - Child class of Account, which has behaviors related to Donor user.
Receiver - Child class of Account, which has behaviors related to Receiver user.
User – Class that has all the user information and behaviors related to it.
Location – Class that contains all the location information.
Contact – Class that contains all the contact information.
Review – Class that contains all the review information.
Request – Class that contains all the food request information.
Food – Class that contains all the food post information.
AccountStatus – Enum that takes two values: Active/ Inactive - tells us about the account
status
RequestStatus – Enum that takes two values: Accepted/ Declined – tells us about the food
request status
24
FoodSaver – Software Requirement Specifications
25
FoodSaver – Software Requirement Specifications
4.3 Deliverable 2
4.3.1 Description
During this sprint, we have made few changes to our UX design. The development team
first started with setting up the Database. They have written classes for database models.
Also, they developed Login Screen and Signup Screen.
4.3.2 Design
The class diagram attached shows few modifications to our existing system. As seen in the
diagram, there are additional things as follows:
26
FoodSaver – Software Requirement Specifications
27
FoodSaver – Software Requirement Specifications
4.4 Deliverable 3
4.4.1 Description
During this sprint, our development team completed Food details and food review screens. We
added filter and sort functionality in our food view screen. We handled food requests from
both donor and receiver perspective. We added a few custom delegates in our
FoodViewController and MoreOptionsViewController classes. We did initial manual testing
on our product and fixed few bugs that we encountered.
4.4.2 Design
The class diagram attached shows few modifications to our existing system. As seen in the
diagram, there are additional things as follows:
28
FoodSaver – Software Requirement Specifications
During this sprint, our development team implemented user profile screen and favorites
functionality. Also, made a few changes to our UI design.
4.5.2 Design
29
FoodSaver – Software Requirement Specifications
30