Project Requirements - bounswe/bounswe2019group6 GitHub Wiki
Glossary
Annotation: A note by way of explanation or comment added to a text, diagram or image.
Basic User: The user who has capabilities of guest user and is capable of accessing basic functionalities of the platform. Authentication is required.
Events: The news about economics.
Guest: The user who is able to view the price of a trading equipments and read user comments about trading equipment. No Authentication is required.
History: Users' actions about articles, events, tradings/investments such as commenting, rating, selling stocks, following a user.
Portfolio: Grouping of financial assets such as stocks, bonds, commodities, currencies and cash equivalents, as well as their fund counterparts, including mutual, exchange-traded and closed funds.
Prediction: The predicted states about trading equipment in the future.
Profile: A visual display of personal data associated with a specific user.
Significance Levels: The importance of events.
Semantic Search: Find semantically similar users and trading equipment based on the context information provided in the semantic tags.
Strong Password: Consists of at least six characters (and the more characters, the stronger the password) that are a combination of letters, numbers and symbols.
Trading Equipment: Trading equipment is defined as trade indices, stocks, ETFs, commodities, currencies,
funds, bonds, and cryptocurrencies.
Traders Platform: Traders platform lets people follow and trade indices, stocks, ETFs, commodities, currencies, funds, bonds, and cryptocurrencies.
Trader: The user who has capabilities of basic user and is capable of trading/investing in any trading equipment. Authentication is required.
User: A person who is capable of interacting with system via an interface. A user can be basic or trading user
Requirements
1.Functional Requirements
1.1 User Requirements
1.1.1. Guests
1.1.1.1. Guests shall be able to view the price of trading equipment.
1.1.1.2. Guests shall be able to browse economic articles, trading equipment and read comments about them.
1.1.2. Login & Registration
1.1.2.1. Users shall be able to create an account by providing their username, e-mail, password and location using Google Maps.
1.1.2.2. Registered users shall be able to login to the application by providing their username or email and password.
1.1.2.3. Users should be able to sign up via Google account.
1.1.2.4. Already signed users should be able to sign in via Google account.
1.1.2.5. User shall validate account via e-mail.
1.1.2.6. The users who want to be trader user shall provide only their IBAN number to the system.
1.1.2.7. Users shall be able to reset their passwords if they forget their passwords by clicking "Forgot your password?" button and following the shown instructions afterwards.
1.1.3. User Follow System
1.1.3.1. User shall be able to follow other users directly if the user's profile is public.
1.1.3.2. User shall be able to send follow requests to users that have a private profile, and shall wait requests to be accepted.
1.1.3.3. User shall be able to accept or reject the following requests.
1.1.3.4. User shall be able to follow trading equipment.
1.1.3.5. User shall be able to set alerts for certain levels of trading equipment and for the certain ratio changes.
1.1.4. Portfolio System
1.1.4.1. Users shall have at least one portfolio.
1.1.4.2. Users shall be able to create their portfolios.
1.1.4.3. Users shall be able to delete their portfolios.
1.1.4.4. Users shall be able to change the name of their portfolios.
1.1.4.5. Users shall be able to add new trading equipment to their portfolio.
1.1.4.6. Users shall be able to delete new trading equipment to their portfolio.
1.1.5. Trading Equipment System
1.1.5.1. Users shall be able to read/rate other users' articles, comments about trading equipment.
1.1.5.2. Users shall be able to write new articles and comments, make a prediction about any trading equipment, and view daily prediction rates of trading equipments.
1.1.5.3. Users shall be able to make a prediction about any trading equipment.
1.1.5.4. Users shall be able to view daily prediction rates of trading equipments.
1.1.5.5. Users shall be able to edit their article comments.
1.1.5.6. Users shall be able to delete their article comments.
1.1.5.7. Trader users shall be able to trade trading equipment.
1.1.5.8. Trader users shall be able to set stop/loss limits.
1.1.6. Profile Page
1.1.6.1. Users shall be able to make their profile public or private.
1.1.6.2. Users shall be able to see their own portfolios in their own profile page.
1.1.6.3. Users shall be able to edit their own bio in profile page.
1.1.6.4. Users shall be able to reach their own followers and following list and their old articles/comments.
1.1.6.5. Users shall be able to see their own prediction success rates for trading equipments.
1.1.6.6. Users shall be able to see other users' prediction success rate for all trading equipments in their profile.
1.1.6.7. Users shall be able to see other private users' followers, articles and following list if he/she follows that private user.
1.1.6.8. Users shall be able to see other public users' followers, articles and the following list.
1.1.6.9. Users shall be able to only see other user's prediction rate if their profile is private and if he/she is not his/her friend.
1.1.7. My Investments Page
1.1.7.1. Trading users shall have my investments page.
1.1.7.2. Trading users shall be able to invest on any trading equipment in My Investments page.
1.1.7.3. Trading users shall be able to create a buy order for any trading equipment for a specified rate in My Investments page.
1.1.7.4. Trading users shall be able to set stop/loss limits on any trading equipment in My Investments page.
1.1.8. Profit/Loss Section
1.1.8.1. Users shall have a profit/loss section which is private to each user.
1.1.8.2. Users shall be able to see profit/loss in terms of currency chosen by user.
1.1.8.3. Users shall be able to manually enter investments to see calculated profit/loss.
1.1.9. News Section
1.1.9.1. Users shall be able to see news fetched from third party website.
1.1.9.2. Users shall be able to see news written by other users.
1.1.10.1. Users should be able to be redirected to third party site when click the news they would like to read in detail.
1.1.10. Privacy
1.1.10.1. The user shall be able to respond follow request before following is activated.
1.1.10.2. The user shall be able to choose whether he/she wants his/her profile to be public or private.
1.2 System Requirements
1.2.1. Homepage
1.2.1.1. System shall provide a homepage for each registered user according to the user's interests.
1.2.1.2. System shall provide a homepage that enables registered users to see economic events, news and trading commodities that user is interested in.
1.2.1.3. System shall provide a navigation bar in order to enable users to switch to their profile section, articles section, news section, trading equipment section, search section.
1.2.2. Events
1.2.2.1 System should provide an "Events" section in which there are economic events, articles, news that is fetched from a third-party source.
1.2.2.2. System shall assign different significance levels for economic events ranges from 1 to 5.
1.2.2.3. Events shall be updated daily.
1.2.3. Search
1.2.3.1. System shall support searching for users, trading equipment, articles, events and portfolios.
1.2.3.2. System shall support search with user, search with trading equipment, search with articles, search with events, search with portfolios features.
1.2.3.3. System shall support semantic search based on the context of information.
1.2.3.4. System shall support location-based search (be able to filter users/events based on city or district).
1.2.3.5. System shall support filtering events depending on their significance.
1.2.4. Notification & Recommendation
1.2.4.1. System shall notify users in accordance with their alerts
1.2.4.2. System shall recommend articles, trading equipment, commodities for the users based on their history in the system such as comment history, prediction history and search history.
1.2.4.3. System shall let the user to change the notification settings from profile page.
1.2.5. Trading
1.2.5.1. System shall provide a "Trading" section where Trader users can buy/sell commodities, trading equipment.
1.2.5.2. System shall automatically detects when a trader make a transaction and update his/her My Investments page.
1.2.5.3. System shall highlight the commodities that are trend or the user may be interested in based on his/her history in the system such as comment history, prediction history and search history.
1.2.6. Money Transaction
1.2.6.1. System shall provide a simple, seamless and secure way for money transaction for trader users.
1.2.6.2. System should cooperate with 3rd party applications for money transaction and mobile payments.
2.Non-functional Requirements
2.1 Accessibility and Availability
2.1.1. The system shall have a native web and native android client.
2.1.2. The system shall be deployable on a remote and manually configurable server.
2.1.3. The website and the mobile application shall be available in English.
2.1.4. The system shall support UTF-8(Unicode) charset.
2.1.5. The web app should provide support for Screen Reader applications.
2.2 Annotations
2.2.1. System shall support W3C Web Annotation Data Model and follow W3C Web Annotation Protocol so that the contents can be annotated by users.
2.2.2. System shall follow the standards introduced by the W3C.
2.3 Performance
2.3.1. System shall respond to request in at most 5 seconds.
2.3.2. System shall use queue system to reduce response time.
2.3.3. System should cache the commonly used contents to reduce response time.
2.3.4. Native Android app and web app should run smoothly and use low system resources.
2.3.5. System shall support Safari, Chrome and Firefox as a browser.
2.4 Security
2.4.1. Financial Transactions shall be reliable and secure.
2.4.2. System shall be invulnerable against potential SQL injection, XSS attacks and DDOS attacks.
2.4.3. System shall force users to use strong passwords, which must consist of at least six characters (and the more characters, the stronger the password) that are a combination of letters, numbers and a special character.
2.4.4. System shall protect users' information by denying any unauthorized accesses.
2.4.5. System shall store hashed version of user sign in password and don't store the password itself in anyhow.
2.4.6. System shall backup all data to AWS Storage after each week.
2.4.7. System shall encrypt every connection and data transfer by using latest version of TSL encryption.