Skip to content

Requirements Specifications

Imtiaz Raqib edited this page Apr 3, 2019 · 26 revisions

Provided below are given user stories. They are accompanied by a rationale which is presented through collaboration within our team.



Books User Stories and the Rationale
US 01.01.01 As an owner, I want to add a book in my books, each denoted with a clear, suitable description (at least title, author, and ISBN).
Rationale These are the real world indicators of a book and as such would help the user get accustom to the digital interface in addition to enabling searching
US 01.02.01 As an owner, I want the book description by scanning it off the book (at least the ISBN).
Rationale Allows for a word for word transcription of the books description, so the information found in the real world copy is persevered in the digital space
US 01.03.01 As an owner or borrower, I want a book to have a status of one of: available, requested, accepted, or borrowed.
Rationale As the app is based around borrowing books, it is important to give the user feedback so they know if a book is available or wants to be borrowed
US 01.04.01 As an owner, I want to view a list of all my books, and their descriptions, statuses, and current borrowers.
Rationale Allows the user to track their books without needing to manually look a them and thus saves them time
US 01.05.01 As an owner, I want to view a list of all my books, filtered by status.
Rationale Allows the user to quickly and efficiently figure out where each book is
US 01.06.01 As an owner, I want to view and edit a book description in my books.
Rationale Grants the user insight into the book's content, in addition to fixing it if error are present or if the description is mislead
US 01.07.01 As an owner, I want to delete a book in my books.
Rationale Allows the user to keep a book they want to no longer lend out without worry of getting requests
User Profile User Stories and the Rationale
US 02.01.01 As an owner or borrower, I want a profile with a unique username and my contact information.
Rationale Allows for easy of identification and communication between individuals by enabling information sharing
US 02.02.01 As an owner or borrower, I want to edit the contact information in my profile.
Rationale Allows a user to keep their personal information up to date so that other users can still contact them without issue of miscommunication
US 02.03.01 As an owner or borrower, I want to retrieve and show the profile of a presented username.
Rationale Enables the user to quickly grab the information of someone they know or get the information of someone they do not know well, but wish to communicate with
Searching User Stories and the Rationale
US 03.01.01 As a borrower, I want to specify a set of keywords, and search for all books that are not currently accepted or borrowed whose description contains all the keywords.
Rationale Enables the user to search based on their tastes for certain literature (genre, type of setting, non fiction vs fiction)
US 03.02.01 As a borrower, I want search results to show each book not currently accepted or borrowed with its description, owner username, and status.
Rationale It is not productive to show books they have or are borrowed as they cannot borrow them, thus we should not show them to the user
Requesting User Stories and the Rationale
US 04.01.01 As a borrower, I want to request a book that is not currently accepted or borrowed.
Rationale It is not productive to let them request books they have or are borrowed as they cannot borrow them, thus we should not let the user request them
US 04.02.01 As a borrower, I want to view a list of books I have requested, each book with its description, and owner username.
Rationale This enables the user to figure out what books they want and which ones they currently still do not have
US 04.03.01 As an owner, I want to be notified of a request.
Rationale Enables ease of use as the user will not have to constantly check their books to see if they have any requests
US 04.04.01 As an owner, I want to view all the requests on one of my books.
Rationale This enables the user to select which borrower they want to give the book to rather than just picking one at random
Accepting User Stories and the Rationale
US 05.01.01 As an owner, I want to accept a request on one of my books. (Any other requests are declined.)
Rationale For ease of use, this prevents the owner from needing to manually delete each request one by one while also allowing them to lend out the book.
US 05.02.01 As an owner, I want to decline a request on one of my books.
Rationale If for whatever reason the book is unavailable to lend out, the owner can notify the system that they cannot fulfill the request
US 05.03.01 As a borrower, I want to be notified of an accepted request.
Rationale For ease of use, we want to notify the borrower of an accept request so that they do not need to manually check every request to see if they are accepted
US 05.04.01 As a borrower, I want to view a list of books I have requested that are accepted, each book with its description, and owner username.
Rationale For ease of use, we want to show the borrower a list of accept requested so that they do not need to manually check every accepted book to collect their information
Borrowing User Stories and the Rationale
US 06.01.01 As an owner, I want to hand over a book by scanning the book ISBN code and denoting the book as borrowed.
Rationale Enables the system to collect all the information of the borrowed book without the owner needing to manually input it all, in addition as the ISBN code is unique there is no chance the book is mistaken for another
US 06.02.01 As a borrower, I want to receive an accepted book by scanning the book ISBN code to confirm I have borrowed it.
Rationale Enables the system to collect all the information of the borrowed book without the borrower needing to manually look it up, in addition as the ISBN code is unique there is no chance the book is mistaken for another
US 06.03.01 As a borrower, I want to view a list of books I am borrowing, each book with its description and owner username.
Rationale For ease of use, they list shows the borrower who they need to return the book to as well as what the book is about so that they need not manually look up the information. It also enables the borrower to determine which books are not theirs and thus need returned at some point
Returning User Stories and the Rationale
US 07.01.01 As a borrower, I want to hand over a book I borrowed by scanning the book ISBN code to denote the book as available.
Rationale As the ISBN code is unique there is no chance the book is mistaken for another, in addition it prevents the borrower from needing to manually enter the information as the system can handle it based off of the ISBN code, thus making returning books easy and quick
US 07.02.01 As an owner, I want to receive a returned book by scanning the book ISBN code to confirm I have it available.
Rationale As the ISBN code is unique there is no chance the book is mistaken for another, it is also easy for the owner to scan the code rather than manually alter it status thus allowing for a fast and easy update of the book's status
Photographs User Stories and the Rationale
US 08.01.01 As an owner, I want to optionally attach a photograph to a book of mine.
Rationale This enables the owner and borrower to easily identify the book by looking at them
US 08.02.01 As an owner, I want to delete any attached photograph for a book of mine.
Rationale Enables the user to remove a misleading image or remove it if it is of bad quality
US 08.03.01 As an owner or borrower, I want to view any attached photograph for a book.
Rationale A book's cover often provides insight into its content thus enabling the owner and borrower to gain a better understanding of its contents
Location User Stories and the Rationale
US 09.01.01 As an owner, I want to specify a geo location on a map of where to receive a book when I accept a request on the book.
Rationale This enables the owner to easily signify to the borrower where they should meet up to exchange books without the need for a lengthy conversation.
US 09.02.01 As a borrower, I want to view the geo location of where to receive a book I will be borrowing.
Rationale This enables the borrower to easily learn where they should meet up to exchange books without the need for a lengthy conversation.
Reviews User Stories and the Rationale
US 10.01.01 As a borrower, I want to be able to leave a comment and rating on the book I borrowed
Rationale This allows the user to share their opinions about the book they read
US 10.02.01 As an owner, I want to be able to see the list of reviews on my book
Rationale This enables the owner to determine if this is a book that people want to borrow and is worth keeping up
US 10.01.03 As a borrower, I want to be able to delete a comment and rating I left
Rationale This allows the user to remove their opinion if they now disagree with it

Use Cases for the Reviews

Type DESCRIPTION
ID UC 10.1
Name Create a review
Participating Actors Borrower
Goal Leave a rating and comment on a book
Trigger The borrower hits the "leave a review" button while viewing a book
Precondition The borrower needs an account
Postcondition A review of the book is created
Basic Flow
  • Borrower enters a rating
  • Borrower leaves a comment
  • Borrower submits the comment
Alternative Flow Borrower selects cancel and is returned to the books page
Type DESCRIPTION
ID UC 10.2
Name View reviews
Participating Actors Borrower or Owner
Goal Look at all reviews on a book
Trigger A book is selected
Precondition The book must exist in the system already and the User has an account
Postcondition The User can see the reviews
Basic Flow
  • User selects a book
  • User scrolls down the review list
  • User clicks on a review
Type DESCRIPTION
ID UC 10.3
Name Scan ISBN to load Information from FireBase
Participating Actors Borrower, Owner
Goal Scan the ISBN of a book already present in the firebase, to get a quick glance at the contents
Trigger Owner/Borrower hits on ISBN scanner button in the toolbar
Precondition Borrower/Owner must have an account
Postcondition A dialog box with the Book title, Author, ISBN, Description is shown
Basic Flow
  • Borrower/Owner clicks on ISBN Scanner
  • Scan the bar-code of a desired book
  • A dialog box is shown with all the book details
Alternative Flow Borrower/Owner hits back button and the ISBN scanner is closed
Type DESCRIPTION
ID UC 10.4
Name Scan ISBN in the Search Activity for quick ISBN search
Participating Actors Borrower, Owner
Goal Scan the ISBN of any book and it takes the ISBN and places it in the search field
Trigger Owner/Borrower hits on ISBN scanner button in the toolbar
Precondition Borrower/Owner must have an account
Postcondition The ISBN is retrieved from the Google Book API and is placed in the search field
Basic Flow
  • Borrower/Owner clicks on ISBN Scanner
  • Scan the bar-code of any desired book
  • The ISBN is placed on the search field associated with the book
  • Click on Search with terms button to perform the search
Alternative Flow Borrower/Owner hits back button and the ISBN scanner is closed
Type DESCRIPTION
ID UC 10.5
Name Scan ISBN Add Book Fragment to load all book details
Participating Actors Owner
Goal Scan the ISBN of any book and it takes the ISBN related to Google Book API and pre-loads all the necessary information to add the book.
Trigger Owner hits on ISBN scanner button in the toolbar
Precondition Owner must have an account
Postcondition The ISBN scanner retrieves Book title, author, ISBN, description and also picture to add a book
Basic Flow
  • Owner clicks on ISBN Scanner
  • Scan the bar-code of any desired book
  • The book information is pre-loaded in all the fields
  • Click on Add Book to add the book to FireBase
Alternative Flow Owner hits back button and the ISBN scanner is closed

Clone this wiki locally