-
Notifications
You must be signed in to change notification settings - Fork 1
Software Requirments
Song Zhiwen edited this page Mar 27, 2017
·
14 revisions
- As a new user, I want to create an account with my email, username and password.
- As a registered user, I want to login to relevant third party movie websites so that I can authorise and pull my rating data from those websites to enable the app to recommend movies to me.
- As a user, I want to edit my username/password of my account in this app so that I can update my account information.
- As a user, I want to keep my account logged in so that I don’t need to login every time when launching the app.
- As a user, I want to logout so that the app can be logged in with another account.
- As a user, I want to reset my password if I forgot or lost my password accidentally.
- As a user, I want to view the popular now showing movies from movie websites so that I can follow the trend of popular movies.
- As a user, I want to rate the movies that I have watched so that the app can recommend movies for me based on my ratings.
- As a user, I want to view my rating history so that I can edit my ratings.
- As a user, I want to delete/edit my rating so that I can update my rating information.
- As a user, I want to bookmark some movies so that I can get back to them in a later time.
- As a user, I want to remove the bookmark of a movie so that I can delete it when I'm not interested in it.
- As a user, I want to view all my bookmarked movies so that I know what movies can be watched next.
- As a user, I want to view the details of movies when I click into the page of the movie.
- As a user, I want to search for a particular movie so that I can get into the page of the movie.
- As a user, I want to view recommended movies which I may like but have not watched so that I can watch them when I am free.
- As a user, I want to view recommended movies that are currently showing in cinema so that I can decide which movie to watch with no prior knowledge about the movie when I'm in the cinema.
- As a user, I want to select a specific cinema in Singapore and view the 'Now Showing' movies so that I can have a reference of what to watch in that cinema.
- As a user, I want to check if there is update version of the app so that I can download and install the new version.
- As a user, I want to clear the local cache so that I can free up some space.
- As a user, I want to have different coloured theme(eg.dark/light) so that I can use different theme in different situation.
- As a user, I want to have the option to choose to synchronise my data with the cloud database.
- The app should have low response time(<3000ms) for searching a movie.
- The app should be able to run on Android OS for versions not earlier than KitKat 19.
- The app should have a UI to fit the fixed screen resolution of 480x800 hdpi.
- The app should not occupy more than 100Mb of RAM when running on large data size.
- The algorithm should be iable to calculate the recommended movies in a relative short time when the data size grows big(>1GB).
- The app should update the information of movies in cinema for every hour.
- The server should able to handle at least 1000 user requests simultaneously when user size grows large.
- The system should be able to resend request when calling of API fails or server is down.
- The system should create a new user with a magic token provided in the request to prevent robot from spamming the server by registering too many users.
- The system should have CAPTCHA or relevant system to prevent robot from trying all password by brute force.
- The system should use salt and hash before storing the user credentials.
- The system should include the token or session code for every request sent to the backend server to ensure the authentication and authorisation.
- The system should send the request through https protocol for secure communication.
- The system should have a delay on each unauthenticated request to prevent account enumeration.
- As a hacker, I want to login to other's account by trying all possible passwords so that I can steal the information. (Countered by Security #1).
- As a hacker, I want to edit the user's username, password or ratings without logging in into the server through fake request. (Countered by Security #3)
- As a hacker, I want to perform unexpected transactions on the server with CSRF attack. (Countered by Security #3)
- As a hacker, I want to steal the database data through account enumeration attack. (Countered by Security #2)
- As a hacker, I want to break the server by spamming the server with many requests and data.
- As a hacker, I want to get the user's information by intercepting the request. (Countered by Security #4)
-
2.1 Team Details
2.2 Project Worklog
-
5.1 Usability
5.2 Efficiency
5.3 Robustness
5.4 Security