Requirements - bounswe/bounswe2024group10 GitHub Wiki
Software Requirements
This document outlines the functional and non-functional requirements for the Stock Forum project as part of the CMPE451: Software Engineering course. The project aims to develop an interactive forum where users can discuss financial assets, view real-time asset values, filter news based on assets, and share their own financial portfolios.
📕 Glosssary
- Registered User: A standard user with basic access to create posts, comments, and portfolios.
- Guest User: A standard user with basic access to view posts, comments, and portfolios.
- Admin: A high-level user with access to create and delete subforums and ban users.
- Post: A user-generated content piece, such as an opinion or question, that can include photo,description, time,date,and also can be commented by other registered users.
- Subforum: A dedicated area within the forum for specific topics, such as "Bitcoin" or "Borsa Istanbul," created and managed by admins.
- Tag: A keyword or term associated with a post for easier search and categorization.
- Financial Asset: An economic resource represented by topics, such as stocks or cryptocurrencies.
- Portfolio: A user-created collection of financial assets they wish to monitor or share.
- Personalized News Feed: A custom feed of news articles that matches user-selected financial assets.
- Privacy Levels: Settings determining the visibility of a user's portfolio, including public, friends-only, and private options.
- Public Privacy: When a portfolio is set to Public, it is visible to all users of the forum, including guest users. This setting is ideal for users who want to share their investment strategies, showcase their portfolio's performance, or contribute to the community by making their portfolio accessible to everyone.
- Friends-Only: In the Friends-Only setting, only users who are on the owner's friends list can view the portfolio. This provides a middle ground between full public access and complete privacy, allowing users to share their portfolio with trusted individuals or like-minded investors within the community.
- Private: A Private portfolio is visible only to the portfolio owner. This setting is for users who prefer to keep their financial information completely confidential, limiting access to their portfolio solely to themselves. This ensures maximum privacy and control over personal financial data.
- Advanced Search Filters: Tools to narrow down search results by criteria such as date range or asset type.
- Content Management: Tools enabling admins and moderators to monitor, flag, and remove inappropriate content.
- Concurrent Users: The number of users the system can support simultaneously without affecting performance.
- Encryption: Techniques to secure user passwords and sensitive data from unauthorized access.
- Scalable Technologies: Frameworks and architecture designed to handle growth in users and features over time.
- Uptime: The percentage of time the system is operational, excluding maintenance periods.
- Backup and Recovery: Mechanisms for preserving data and restoring it in case of data loss.
🙎🏻♂️ 👩🏻💼 1. Functional Requirements
1. Functional Requirements:
-
1.1. User Requirements
-
1.1.1. Account
- 1.1.1.1. Users shall be able to open an account.
- 1.1.1.1.1. Users shall enter their unique e-mail, unique username, and password to open an account to become a registered user.
- 1.1.1.1.1.1. Registered users shall be able to enter the application using their own username and password.
- 1.1.1.1.1.2. Registered users should be able to make the application remember their username and password.
- 1.1.1.1.2. Registered users shall be able to put up a profile picture.
- 1.1.1.1.2.1. Registered users shall be able to change their profile pictures.
- 1.1.1.1.2.2. Registered users shall be able to delete their profile pictures.
- 1.1.1.1.3. Registered users shall be able to write their personal information in their personal pages while either creating their account or after registering the application.
- 1.1.1.1.3.1. Registered users shall be able to change this information.
- 1.1.1.1.1. Users shall enter their unique e-mail, unique username, and password to open an account to become a registered user.
- 1.1.1.2. Guest users shall be able to use the application.
- 1.1.1.2.1. Guest users shall be able to see the content of the forum.
- 1.1.1.3. Registered users shall enter their e-mail or username and password to re-enter their account if they are logged out.
- 1.1.1.4. Admin user shall be able to block another authenticated user.
- 1.1.1.5. Admin users shall be able to unblock another authenticated user.
- 1.1.1.6. Registered users shall be able to delete their accounts.
- 1.1.1.7. Registered users shall be able to change their password.
- 1.1.1.8. Registered users shall be able to follow the subforum topics.
- 1.1.1.9. Registered users shall be able to unfollow the subforum topics.
- 1.1.1.1. Users shall be able to open an account.
-
1.1.2. Posts
- 1.1.2.1. Registered users shall be able to post forum posts.
- 1.1.2.2. Registered users shall be able to like posts.
- 1.1.2.2.1. Users shall be able to see how many users have liked a post.
- 1.1.2.3. Registered users shall be able to unlike a post.
- 1.1.2.4. Registered users shall be able to dislike posts.
- 1.1.2.4.1. Users shall be able to see how many users have disliked a post.
- 1.1.2.5. Registered users shall be able to remove a dislike from a post.
- 1.1.2.6. Registered users shall be able to comment on posts.
- 1.1.2.6.1. Users shall be able to see the comments.
- 1.1.2.7. Registered users shall be able to delete their comment on a post.
- 1.1.2.8. Users shall be able to find information about the financial assets in the post.
- 1.1.2.10. Guest users shall be able to post charts of financial assets.
- 1.1.2.11. Registered users shall be able to delete their posts.
-
1.1.3. Search
- 1.1.3.1. Users shall be able to search forums based on their name.
- 1.1.3.2. Users should be able to search post and forums by their related tags.
1.1.4 Forum Topics and Discussions
- 1.1.4.1 Registered users shall be able to create new topics related to financial assets.
- 1.1.4.2 Registered users shall be able to like, unlike, dislike, and undislike posts.
- 1.1.4.3 Registered users shall be able to write comments under posts.
- 1.1.4.4 Registered users shall be able to delete their own posts and comments.
- 1.1.4.5 Registered users shall be able to edit their own posts and comments.
- 1.1.4.6 Registered users shall be able to add a title, description, and public tags while creating a post.
- 1.1.4.7 Registered users shall be able to upload images while creating a post.
- 1.1.4.8 Registered users shall be able to comment under posts and reply to comments.
- 1.1.4.9 Registered users shall be able to create posts to share opinions, questions, etc.
1.1.5 Subforum Management
- 1.1.5.1 Admin users shall be able to create subforums (e.g., Bitcoin, Borsa Istanbul).
- 1.1.5.2 Admin users shall be able to delete subforums.
- 1.1.5.3 Admin users shall be able to ban users.
1.1.6 News Filtering
- 1.1.6.1 Registered user shall be able to categorize news articles by asset type and relevance.
- 1.1.6.2 Registered user shall be able to filter forum news based on desired financial assets.
- 1.1.6.3 Registered user should be able to set up personalized news feeds for selected assets.
1.1.7 Portfolio Sharing
- 1.1.7.1 Registered user shall be able to create and share their own financial portfolios.
- 1.1.7.2 Registered user should be able to set privacy levels for their portfolios (public, friends-only, private).
- 1.1.7.3 Registered user shall be able to view portfolio performance metrics and analytics.
1.2 System Requirements
1.2.1 Financial Asset Integration
- 1.2.1.1 The system shall be able to provide the current values of financial assets mentioned in the topics.
- 1.2.1.2 The system shall be able to retrieve financial data from reliable third-party APIs.
- 1.2.1.3 The system should be able to update financial asset values in real-time or at regular intervals.
1.2.2 Search and Navigation
- 1.2.2.1 The system shall be able to provide a search function to find topics, users, and assets.
- 1.2.2.2 The system should be able to offer advanced search filters (e.g., date range, asset type).
🛠️ 2. Non-Functional Requirements
2.1 Performance
- 2.1.1 The system shall load pages within 6 seconds under normal network conditions.
- 2.1.2 The system should handle up to 100 concurrent users without performance degradation.
2.2 Security
- 2.2.1 The system shall encrypt user passwords and sensitive data.
- 2.2.2 The system should implement measures against common web vulnerabilities (e.g., SQL injection, XSS).
- 2.2.3 The system shall comply with relevant data protection regulations.
2.3 Usability
- 2.3.1 The system shall have an intuitive and user-friendly interface.
- 2.3.2 The system should be accessible on various devices (desktop, tablet, mobile).
- 2.3.3 The system should follow UI/UX best practices for navigation and layout.
- 2.3.4 The system shall allow easy navigation between different sections of the forum.
2.4 Scalability
- 2.4.1 The system should be designed in a sustainable manner in order to accommodate future growth in user base and functionality.
- 2.4.2 The system shall use scalable technologies and architectures.
2.5 Reliability and Availability
- 2.5.1 The system shall have an uptime of 99.5% excluding scheduled maintenance.
- 2.5.2 The system should implement data backup and recovery mechanisms.
2.6 W3S Web Annotation
-
2.6.1 Annotation Capability
- 2.6.1.1 The system shall support W3C Web Annotation standards, enabling users to annotate posts, comments, and financial analysis sections with text, tags, and links.
- 2.6.1.2 The system shall support various annotation types, such as highlighting, commenting, and linking within content.
-
2.6.2 Annotation Storage and Retrieval
- 2.6.2.1 The system shall securely store annotations, associating them with the relevant content and users.
- 2.6.2.2 Users shall be able to retrieve their own and view others' annotations on relevant content.
-
2.6.3 W3C Compliance
- 2.6.3.1 The system shall adhere to W3C Web Annotation standards, ensuring compatibility and consistency with external platforms and future technologies.