Skip to content

3. Requirement Specifications

dev-seahouse edited this page Feb 3, 2017 · 13 revisions

3. Requirement Specification

3.1 Glossary

3.2 Non-Functional Requirements

Non-functional requirements are requirements across the system

High-priority

  1. The system must be well-tested. The test suites consisting of unit tests and integration tests must have a 70-80% code coverage.

  2. The system must be intuitive to use and user-friendly.

  3. The system must protect privacy so that only the authorized person can access his/her data

  4. The system must make sure users data are not lost in the event of accidents (maintain data redundancy)

  5. The system must be compatible with major browsers (Chrome, Firefox, Opera, Safari, Edge, etc).

  6. Each page of the system’s page should load under 2000 ms and each server response time should be under 200ms (https://developers.google.com/speed/docs/insights/Server says server response time should be under 200ms)

Further research required

  • The system must be able to handle bill or statement documents of up to X MB. (currently we don’t know what’s the average file size for bills)

  • The system must safeguard against the most common vulnerability attacks performed by penetration tests. (requires research)

  • Inactivity timeouts? (Functional)

Low-priority

  1. The system should be scalable (more users shouldn’t slow down the app)

  2. The system should be responsive

  3. user can upload several bills at one time to save time

  4. the system must be able to handle pdf file format

  5. the system should be able to handle jpeg format

  6. the system should be able to additional image formats not defined under supported formats. (png, gif, bmp)

Further research required

  • Data requirements e.g. size, volatility, persistency etc.,

  • Environment requirements e.g. technical environment in which system would operate or need to be compatible with

  • Accessibility, Capacity, Compliance with regulations, Documentation, Disaster recovery,

  • Efficiency, Extensibility, Fault tolerance, Interoperability, Maintainability, Privacy, Portability, Quality, Reliability, Response time, Robustness, Scalability, Security, Stability, Testability, and more...

3.3 Functional Requirements

Authentication/Profile

High-priority

As a user:
  1. I want to be able to register an account.

  2. I want to be able to log in into the system.

  3. I want to be able to log out of the system.

  4. I want to have a mechanism to retrieve my account in case I forget the login credentials.

  5. I want to edit my user information (e.g. display name, email address, password) after I have registered for an account.

Low-priority

As a user

  1. I want my credentials to be remembered so that I don’t have to re-type them the next time I visit the website on the same machine.

Bills categorization

High-priority

As a user:
  1. I want to upload my documents of supported formats into the system.

  2. I want to be able to manually dictate the area where a member of set of predefined fields (e.g. amount payable, date ) is positioned on a scanned bill in pdf format.

  3. I want to be able to manually dictate the area where a member of a set of predefined fields (e.g. balance, date ) is positioned on a scanned bank statement in pdf format.

  4. I want to be able to extract a predefined set of information from a scanned bank statement in pdf format

  5. I want to be able to extract a predefined set of information from a scanned bill in pdf format.

  6. I want to be able to file my uploaded documents by billing organizations.

  7. I want the system to file my uploaded by billing organizations automatically.

  8. I want to be able to optionally edit the automatically extracted information after uploading a scanned document in pdf format.

  9. I want to delete documents that have been uploaded.

  10. I want to be able to create new billing organizations for my account if a billing organization is not selectable from a collection of predefined organizations.

  11. I want to be able to rename a billing organization I created.

  12. I want to be able to remove a billing organization I created.

  13. I want to download an uploaded document so that I can access it from anywhere.

As a system:
  1. I want to recognize (or prompt from the user for) the logo from the documents.

  2. I want to recognize (or prompt from the user for) the name of billing organization from the documents.

  3. I want to recognize (or prompt from the user for) the logo from the documents.

  4. I want to recognize (or prompt from the user for) account no from the documents (not sure if every bill has a bill no OR reference no. Even if they have, it might not be obvious to the user) (Have a list of bill reference no.? -> Kenan’s POSB)

  5. I want to recognize (or prompt from the user for) the logo from the documents.

  6. I want to recognize date of bills

  7. I want to recognize due date of bills

  8. I want to recognize billing period of bills

  9. I want to recognize amount due for bills

  10. I want to recognize balance amount stated on bank statements

  11. I want to predefine major bill templates so that when the user upload the documents I can automatically extract the information for the user

Low-priority

As a user:

  1. I want to be able to add new bills by forwarding my e-Bills from my email to the system. Note: If the e-Bills can be recognized, put it in the suitable folders. Otherwise, prompt the user the next time he/she enter the system.

  2. I want to upload scanned documents to the system.

  3. I want to customize the naming mechanism that suits my needs (e.g. [company][dd-mm-yy], [company][mm-dd-yy], [dd-mm-yy][company])

  4. I want to search for specific documents using keywords so that I can find the information I need conveniently.

  5. I want to integrate the system with my choice of file hosting service (Dropbox, Gdrive, Box, etc) so that it’s easier for me to access my files

  6. I want to access the system from my mobile phone for accessibility reasons.

  7. I want to scan documents directly from my mobile phone to save me the hassle of using the scanner.

  8. I want to be able to download my documents together with their folders as a zip file so that I don’t have to tediously select the files to download.

Statistics

High-priority

As a user:

  1. I want to view my finances for a specific billing organization over a chosen time period (e.g. phone bills over 1 month, 3 months, 6 months, or 1 year)

  2. I want to view my finances in a graphical format (e.g. bar graph, pie chart) so that I can see how much I have spent easily.

Low-priority

As a user:

  1. I want to view my finances for all billing organizations over a chosen time period (e.g. expenditures over 1 month, 3 months, 6 months, or 1 year)

  2. I want to be able to export my statistics to xlsx format so that I feel safe that I would not lose them.

  3. I want to save my statistics as PDF so that I can view them without internet connection.

Further decision required

  • Viewing bills: as thumbnails, as titles

  • Sort bills according to criteria : upload date, bill mailing date, bill due date.

  • User should be able to reassign filed bills to different categories.

Abuser stories

As an attacker:

  1. I want to use a bot to automatically register a lot of user accounts on billorg to crash the database.

  2. I want to be able inject sql queries into form inputs so that I can manipulate billorg database.

  3. I want to be able to deny other users from accessing billorg by continuously sending http requests to billorg server.

  4. I want to sniff the HTTP requests made by the user so that I can retrieve sensitive data

  5. I want to be able to steal a user’s personal information(credit card numbers, name, address) by pretending to be billorg.

  6. I want to run a script that will try a lot of passwords on a user account so that I can get the user’s credentials

  7. I want to be able to gain access to billorg’s database manipulating business logic by using unprotected javascript found in client source code.

  8. I want to gain access to billorg server connecting to unsecured ports.

  9. I want to disable javascript in my settings so that i can bypass input validation checks Duplicate input sanitation both on client and server

Clone this wiki locally