Requirements Specification Report¶
- Introduction
1.1 Application domain
1.2 Project charter
1.3 Product strategy
1.4 Product vision
- User stories
2.1 Visitor
2.2 User
2.3 User as Owner
2.4 User as Renter
- User interface prototype
- Domain model
- References
Documentation Main Page
1. Introduction¶
BookSharing is a project based on the idea that a normal person, that enjoys reading, can't afford all the books he/she wants to read. This is where this project shines.
It will provide that any person in any part of the country can rent books from other persons in any part of the country for a small amount of money. The money is an important issue in this project since it impels a person to put up his/her books for rent online and can prevent, at a point, the damage of such books, at the same time that generates a small income.
The idea is to have book readers sharing their treasures with others but without the fear of losing their masterpieces or to see them wasted in shelves getting dusted.
This report describes the functional and non-functional requirements specification of the application to be developed, previously elicited in an interview with the stakeholders. User Stories are used to facilitate the understanding of the system's functionalities and characteristics.
There are several parts to this report, starting with an introductory part that describes the application domain, the product charter, the product strategy and the product vision. The second part is based on the user stories, divided in roles (visitor, user, renter and owner), associated not only with acceptance tests but also with a prototype of user interfaces.
The third part shows the core of the user interface, and at last, the domain model: a UML model describing the key components of the project.
Index
1.1. Application Domain¶
This project is initially intended to be applied in Portugal with the possibility of future expansion to the rest of the world.
The target audience is not just people who love to read, but also people who still have books at home and want to take advantage of that to make some money. Therefore, almost anyone can use our service regardless of gender, age or social status. Although the minimum age for registration on the service is of 18 years, a child who likes to read can clearly ask a family elder to create a valid account and make the transaction.
The main idea is to have a simple and good looking website so that new customers can register and take all the advantages of the service. To accomplish this a database is needed to manage all the users and books, as well as their relations and transactions.
Nowadays one needs to be competitive, so the creation of a mobile application (maybe Windows Phone) is also planned, so that the customers can interact more easily with the service anytime and anywhere.
Index
1.2. Project Charter¶
The Project Charter is used to provide an overview of the project and its goals, and serves as an internal document that captures high level planning information (the project purpose, overview, goals, high-level deliverables, assumptions, and so on) about the project.
The Project Charter is an input to the Definition Phase of the project where much of the information contained forms the basis for detailed project planning. The beginning of the project planning phase starts when the sponsor(s) sign(s) off the charter.
- The Project Charter is provided in a A3-sized pdf at the bottom of this document, or here .
Index
1.3. Product Strategy¶
Survey Analyses¶
To offer a view to the project from the outside, a questionnaire was conducted in order to find the best features and to try to make the project more appealing.
The survey was very simple, with just 5 questions, in order to become more appealing to the respondents.
The questionnaire had 80 responses, which is a good sample.
- The first question was the interest in the project, and as can be seen, 84% of the inquired were interested.
|
Q1. Interest in the project |
|
|
|
|
- The renting time was also an important issue to get feedback from the users. The inquired were very fond of one month renting (71%) and two weeks (39%). Note that this question had check-boxes which means the inquired could choose more than one option.
|
Q2. Intervals of time that you would like to rent a book. |
|
|
|
|
- Wanted features was another issue that required user expertise, this was also a check-box question:
- The most wanted feature was the "Waiting List" with 83% of the answers: users want to be added to a waiting list if a book is not available to rent and be notified when it is;
- The ability to share the rented books on Facebook or, as suggested by some users, in book social networks like Goodreads, was also a very voted feature (69%). The Shopping cart, to allow a user to select a bunch of books to rent instead of only one also had 69% of the votes;
- Another interesting feature to the users was the shop feature, which allows a user to get directly connected to a retailer to buy a book.
|
Q3. Features that you would like to see implemented in the website |
|
|
|
|
- When asked about how much they were willing to pay for renting a book of 20€ retail's price for one month, 39% of the inquired answered 2€.
|
Q4. For a book of 20€ (retail's price) how much would you pay to rent it for a month? |
|
|
|
|
- This survey provided useful information in the "rent books" market, and overall, 88% of the inquired said they will use BookSharing.
|
Q5. Would you use it? To make money with it or to be able to read more books with less money. |
|
|
|
|
Logistics¶
A key issue in the functionality of this project is the logistic of the books. The books will be delivered using the post office green envelopes. These envelopes are bought in a variety of sizes, no weight limit, and they have the same price in any part of the country, which will help users to know in advance how much they will pay for the mail service.
The books' conditions will be evaluated by the owner and by the renter, and the penalty for damaging books is an issue that has not been properly decided yet, although, to prevent this, all renting users will be rated on the way they handle the books. This will possibly prevent future misuses.
Development¶
Based on all the answers and in the team objectives, all the aforementioned features will be implemented.
The development of this project will comprise the following aspects:
- First, all the components will be implemented in a web application. This will make testing easier, and the constraints found can be fixed properly before moving on to a mobile platform;
- The main components of the project, like register user, register books and so on, will be developed in the first stage;
- After making functional in both platforms all the project key components, the aforementioned features will be implemented. The most demanded features will be developed first, although it is in the interest of the team that all proposed features are developed until December.
Index
1.4. Product Vision¶
Do you love to read? Are you a book monster? Well, unless you are a rich guy, or you manage an entire library, you suffer each time you need to buy new books to satisfy your hunger. We do understand that and we would like to present you the almighty BookSharing!!
BookSharing is a complete new way to remove the dust of your old books and rent your favorite masterpieces for the smallest amount of money! Just say the books you have available on the website, or simply search for them.
A registered user will have the possibility to register (with all the needed information) the books he/she has to rent, as well the possibility to rent books from other users.
So, let's start sharing!
Index
2. User Stories¶
Below are the user stories related to this project grouped by roles (Visitor, User in general, User as Owner, and User as Renter). The roles were defined according to common activities and functionalities, so it is easier to read and understand them.
The following details are defined for each user story:
- A brief description of the user story;
- Some acceptance tests to confirm that the system satisfies the requirements addressed in the user story;
- A link to the respective UI (if available);
- A grade (story point) based on the Fibonnaci scale from 1 (easiest) to 8 (hardest) to specify the effort needed to implement that specific user story.
- A MoSCoW classification where each capital letter assigns the user story a priority in implementation for the initial releases:
- M - Must - critical to project success and has to be included in the current delivery time box in order for it to be a success (red color);
- S - Should - important to project success, but not necessary for delivery in the current delivery time box (yellow color);
- C - Could - less critical and often seen as nice to have (green color);
- W - Won't - either the least-critical, lowest-payback items, or not appropriate at this time (gray color).
Below is a plan regarding the user interaction with the project, according to his state.
2.1. Visitor¶
The visitor is a foreign user, with no credentials associated with the platform or an unauthenticated user. He/she can access basic functions such as searching books and see his/her page, but his/her access to renting or rating books is restricted.
New user¶
- Description: As a visitor I want to register so that I can access the full service content.
- Acceptance tests: There must be a webpage reserved to register new users (unregistered ones) with fields to input all the user information needed. After the visitor confirms the form submission, the database should have a new user with all the previously entered details.
Book search¶
- Description: As a visitor I want to search for books so that I know if the service fills some of my specific needs without creating an account.
- Acceptance tests: There must be a webpage with a quicksearch field so that the visitor can enter any terms to search the database. After the user clicks the search button, a new page is shown with the results for a database query with those terms.
Rented books¶
- Description: As a visitor I want to view the list of books to rent so that I know which books I can rent in the service without having to create an account.
- Acceptance tests: A page with the list of all the books available for renting must be accessible from the initial page, even if the user is not registered.
Login¶
- Description: As a visitor I want to login so that I can access the full service content.
- Acceptance tests: The initial page must present a simple form for entering authentication data (username and password). After the user clicks on the login button, a new page should appear with the user already authenticated.
Index
2.2. User¶
Comment a Book¶
- Description: As a user I want to be able to comment on a book so that other users can see my opinion.
- Acceptance tests: There must be a field, when each book is selected that allows the user to write a comment about a book that he read or rented.
Report a Book condition¶
- Description: As a user I want to report the book's condition so that other users are informed, before or after ordering.
- Acceptance tests: In the list of the books the user rented or that have been rented from the user, when he/she selects one, there must be a button there, that when clicked, opens a field where the user can write details about a book condition and submit them.
Rate Books¶
- Description: As a user I want to rate books so that the other users know if the book is generally seen as good or not.
- Acceptance tests: In each book selected, there'll be a 10-star rating system. The user can select with a click how many stars he wants to rate the book with.
Edit E-mail¶
- Description: As a user I want to edit my e-mail so that I can update it.
- Acceptance tests: The new e-mail typed in the field e-mail has to be equal to the e-mail typed in the field "Confirmation e-mail" (so the user will have to write the new e-mail twice and confirm it). After submission, the new e-mail in the database has to be equal to the e-mail typed.
Edit Address/ZIP Code¶
- Description: As a user I want to edit my address and ZIP code so that the service trusts me more and other users know where to ship the books I rent from them.
- Acceptance tests: The new address has to be different than the previous address. After submission, the address in the database has to be the same as the address typed and the ZIP Code on the database has to be the same as the ZIP Code typed.
Comment on an User¶
- Description: As a user I want to be able to comment on an user so that other users can see my opinion.
- Acceptance tests: On the User menu, in the rented Books list, the User must see who were the other Users from whom he rented the books. The User can click on any of those User's profile and click on the option "Comment on the User". The comment submitted will go to the database and appear in that User's profile.
Rate User¶
- Description: As a user I want to rate another user that has traded with me, so that I and the other users can have some quantification of the user's reliability.
- Acceptance tests: On the User menu, in the rented Books list, the User must see who were the other Users from whom he rented the books. The User can click on any of those User's profile and see a 10-star rating system. The User can click to rate the user in terms of reliability.
Favourites¶
- Description: As a user I want to have a favourites interface so that I can show my favourites to others.
- Acceptance tests: On each User menu, there should be an item saying "Favourites", that when clicked, the user could see other Users favourited books.
Blacklist other User¶
- Description: As a user I want to blacklist another user so I don't trade with him anymore.
- Acceptance tests: Each User can see other Users' profile as long as those Users traded with him/her in the past. On those profiles, he/she should see an option of blacklisting, that, when clicked/selected, the system will prevent further exchanges between them.
Verify E-mail¶
- Description: As a user I want to make my e-mail verification so that the service can trust me more.
- Acceptance tests: When the User is registered, he/she must verify his/her e-mail. One verification will go to the e-mail address provided in the registration, and the User will only be able to login when he/she clicks the link he/she received on the e-mail. When that link is clicked, a field in the database will be changed from "Confirmed: No" to "Confirmed: Yes" so the User can login.
Loyalty Points System¶
- Description: As a user I want a loyalty points system so that I have discounts;
- Acceptance tests: For each rent a User finishes, he/she will earn Loyalty Points. After a fixed number of Loyalty Points (still to be defined), the User's fee when renting a book will be smaller.
Edit name¶
- Description: As a user I want to edit my name so that if my name changes (i.e., wedding reasons) I can update it;
- Acceptance tests: The name inserted must be different than the name that was in the database. After submission, the name in the database must be the same as the name inserted.
Index
2.3. User as Owner¶
Register new books¶
- Description: As a owner I want to register my books in the system so that other users can rent them.
- Acceptance tests: After clicking in a button reserved for book registration, the owner must have access to a new page with a form with all the fields needed about the book: ISBN, Title, Author, Edition, Year, Type of book, Editor, Cover Image (and photo), Renting Price and Details about the book state; after submitting the form, the database should have a new registered book with the correct owner and details.
Manage registered books¶
- Description: As a owner I want to have a panel to manage the books I posted on the service to rent so that I can easily view or remove any of the books I posted.
- Acceptance tests: After the owner is logged on, there should be an access to a page where it is possible to list its books and for each book listed, there should be options for managing that register: if the user deletes the book, the database must delete its register and update the system. On the other hand, if the info button is pressed, a new page should appear with all the details about that book.
Manage rented books¶
- Description: As a owner I want to have a panel to manage the rented books so that I can be updated about everything concerning each book I rented.
- Acceptance tests: After the owner is logged on, there should be a button to manage rented books; after clicking on that button, a new page should appear, with all the books belonging to that owner, that are rented to other users. For each item on the list, the owner should be able to edit the details about the state of the rental, and those changes should be correctly updated in the database.
Share rentals on social platforms¶
- Description: As a owner I want to share my book for rent on Facebook, Twitter, etc., so I can attract my friends from social networks to join the service and rent them.
- Acceptance tests: After opening the page to manage the registered books, the owner should be able to publish a brief description of each item on both Facebook and Twitter. After clicking on the correspondent button, his/her social account should have the correct information published.
Index
2.4. User as Renter¶
Rent books¶
- Description: As a user I want to rent a book from another user so that I can read it.
- Acceptance tests: The user chooses the option to rent a book from the menu, chooses the desired book (see "Search books to rent" user story) and adds it to the shopping cart.
Search books to rent¶
- Description: As a user I want to search for a book so that I can fill my specific needs.
- Acceptance tests: The user selects the search field in the "Rent a book" page and types the title (or part of it). Clicks in the search button. A link to the books matching the search criteria appears.
Search books to rent by category¶
- Description: As a user I want to search books by category, so that I can see the available choices.
- Acceptance tests: The user selects the option "Search by category" in the "Rent a book" page. A list of all the books in that category appears.
Renting duration¶
- Description: As a user I want to be able to choose different renting durations so that I can have enough time to read the selected book.
- Acceptance tests: After selecting the desired book, the user selects the renting duration from the available options.
Payment¶
- Description: As a user I want to be able to choose from different payment methods so that I feel safer.
- Acceptance tests: In the payment page, the user selects the payment method from the ones available by selecting the respective radio button, and fills in the necessary data.
Minimum deposit¶
- Description: As a user I want to load the account with a minimum of 10€ so that the service trusts me more and the money that I pay is easily accessible for all the website transactions.
- Acceptance tests: For the renting process to work, the user will pay a fee. This fee will be charged from the user account. The user can load the account with a minimum of 10€. To load the account the user clicks on the bottom "Deposit" and a new window will open, where the user may choose the method of payment and the amount of money. After validation, the user's account will have the introduced amount of money, plus any other already in the account.
Shopping cart¶
- Description: As a user I want to be able to add books to a shopping cart so I can rent more than one at a time.
- Acceptance tests: The user checks the box next to the books he wants to rent. Each checked book is automatically added to the shopping cart at the page header.
Waiting list¶
- Description: As a user I want to be added to a waiting list so that I am warned about a book that is finally available.
- Acceptance tests: The user selects a book in the "Rent a book" page that is not available yet. The book is automatically added to a waiting list. When the book is available, the user receives an email with the information.
Delivery method¶
- Description: As a user I want to know previously how much I will pay for delivery so that I can make a better choice.
- Acceptance tests: After checking out to the shopping cart, the delivery value is shown to the user next to the renting value, in the "Checkout page".
Buy a book¶
- Description: As a user I want to be able to get redirected to a website where I can buy a book.
- Acceptance tests: After finding a book, the user may choose to buy the book instead of renting it. After clicking in the "Buy" button the user will be redirected to a page where he will find one or more links to websites that sell the book.
Renting price¶
- Description: As a user I want to pay a maximum of 25% of the book's retailer price for the maximum amount of time granted so that I don't end up spending more money than the book is worth.
- Acceptance tests: When a user registers a book, he can choose the renting price, but this price can't be superior to 25% of the retailer's price, which will be verified by the database.
Add favorite book¶
- Description: As a user I want to add a book already read to my Favorite Books in Facebook so I can automatically update my page on the social network with my latest reads.
- Acceptance tests: After the book the user rented appears as returned to the owner in the "Renting history" page, the user activates the star next to the book's title. The title of the book and respective author(s) is added to the user Favorite Books in Facebook.
Index
3. User Interface Prototype¶
Below are the main user interface prototypes.
Register user page¶
Register new book¶
Advance book search¶
Personal area¶
Shopping cart¶
Rent new book¶
Latest and popular books¶
Personal area location¶
Personal settings¶
Wishlist¶
Manage favorite books¶
Index
4. Domain Model¶
Next is depicted the application domain model.
Index
5. References¶
- A Guide to the Business Analysis Body of Knowledge, version 2.0, section 6.1.5.2, the MoSCoW categories
- Project charter prototype, obtained on October 2012, from http://www.avasbutler.com/images/project_charter2.jpg
- Project Charter, 2012, obtained on October 2012, from http://en.wikipedia.org/wiki/Project_charter
- How to write a project charter - part 2, 2008, obtained on October 2012, from http://www.pmhut.com/how-to-write-a-project-charter-part-2
- Developing the project charter, 2007, obtained on October 2012, from http://www.pmhut.com/developing-the-project-charter
Index