Software Requirements Specification - bounswe/bounswe2023group3 GitHub Wiki

Glossary

  • Guest: Guests are people who visit the platform but don't have an account or who have an account but are not yet authenticated.
  • User: Users are people who have an account and are authenticated in the platform.
  • Moderator: Moderators are users with additional privileges. Such privileges include but are not limited to approving/disapproving poll creation and outcome verification requests, banning users, and seeing some statistics which are hidden to regular users.
  • Poll(Prediction Poll): Polls are the main element of our platform. A poll consists of a question whose answer is not known at the moment but is most likely to be known in the future. Possible options are listed for users to choose as answers.
  • Tag: Tags are the topics used to classify polls and ratings in the platform. Politics and sports can be given as examples. Each poll includes at least one tag.
  • Rating: Ratings are the performance scores of users. They increase and decrease according to the accuracy of the users' choices in the polls. Details of the rating calculation algorithm are to be determined.
  • Poll Creation Request: Users are not allowed to open a poll and post it directly. The poll should be reviewed and verified first by a moderator. Therefore, poll creation requests are the polls that have been created by users but are waiting to be approved by a moderator before they are shown in the platform.
  • Outcome Verification Request: Similar to poll creation requests, the outcome of a poll is settled once a moderator approves the outcome verification request of the user who created the poll.

Functional Requirements

User Requirements

1.1: Authentication
  • 1.1.1: Authentication shall be available on the main page.
  • 1.1.2: Users shall be able to authenticate with username and password they've provided upon registering.
  • 1.1.3: Users must verify their e-mail after registration.
  • 1.1.4: Users shall be treated as guests before authenticating.
  • 1.1.5: Users shall be able to do user actions after authenticating.
  • 1.1.6: Users shall stay authenticated for a certain time once they are authenticated. Users must be re-authenticated after this peroid ends.
  • 1.1.7: User shall be able to reset password by clicking forgot password button.
1.2: Guest Actions
  • 1.2.1: Guests shall be able to view polls on the platform.
  • 1.2.2: Guests shall be able to view comments and tags on the polls.
  • 1.2.3: Guests shall be able to view the profile pages of users.
  • 1.2.4: Guests shall not be able to send poll creation and outcome verification requests.
  • 1.2.5: Guests shall not be able to vote in prediction polls, like polls, or comment on polls.
  • 1.2.6: Guests shall not be able to follow users.
1.3: User Actions
  • 1.3.1: Users shall be able to vote in prediction polls.
  • 1.3.2: Users should be able to comment on a prediction poll.
  • 1.3.3: Users should be able to like a prediction poll.
  • 1.3.4: Users should be able to comment on a comment on a poll.
  • 1.3.5: Users should be able to like a comment on a poll.
  • 1.3.6: Users should be able to report a poll to the moderators if they find the content of the poll to be inappropriate or if they think there is an error with the reported event outcome.
  • 1.3.7: Users shall be able to create a poll request or vote in polls either with their user attached or anonymously
  • 1.3.8: Users shall be able to insert images when creating a poll request.
  • 1.3.9: Users shall be able to create annotation for images and text body of the poll request.
  • 1.3.10: Users should be able to follow other users.
  • 1.3.11: Users shall be able to send prediction poll creation requests to moderator users. They shall provide a deadline for the prediction poll voting. They shall provide the prediction poll creation request with at least one tag.
  • 1.3.12: Users shall be able to send the outcome verification request of a poll they created to the moderators. This outcome verification request should consist of the outcome and the reference of the outcome so that a moderator can check and verify the result of the poll.
  • 1.3.13: Users shall be able to logout from the system.
  • 1.3.14: Users shall be able to change their passwords.
1.4: Moderator Actions
  • 1.4.1: Moderators shall be able to inspect the prediction poll creation requests of the users.
  • 1.4.2: Moderators shall approve/disapprove the prediction poll creation requests of the users.
  • 1.4.3: Moderators shall be able to check and approve/disapprove the outcome result requests of the users.
  • 1.4.4: Moderators shall be able to modify the tags of a prediction poll creation request.
  • 1.4.5: Moderators shall provide their reasons for disapproval of a poll creation request to the user who has sent the request.
  • 1.4.6: Moderators should be able to ban users who misbehave/get reported.
  • 1.4.7: Moderators shall be able to logout.

System Requirements

2.1: Rating
  • 2.1.1: The system shall calculate the weight of the event and add/subtract it to/from the rating of the user after the event's outcome is settled.
2.2: Categorization
  • 2.2.1: Every poll and rating of the users shall be categorized using tags.
2.3: User Roles
  • 2.3.1: There shall be users with different roles in the system. There shall be moderators and regular users.
2.4: Collective Estimate Of The Result Of The Predictions Made
  • 2.4.1: There shall be an algorithm that calculates the contribution of the users to the collective estimate according to their rating.
2.5: Ranking System
  • 2.5.1: The platform shall include a ranking system based on general and tag specific ratings.
2.6: Trending Section
  • 2.6.1: The platform should have a section called "trending" which includes the most popular polls in the platform.

Nonfunctional Requirements

3.1: Portability
  • 3.1.1: People should be able to access the platform's webpage from commonly used browsers such as Chrome, Safari, Firefox, and Internet Explorer. UI, UX, and performance should not be affected much from browser to browser.
  • 3.1.2: The mobile App should be supported on all Android versions later than Android 13 without any UI, UX or performance issues.
3.2: Privacy
  • 3.2.1: The platform shall comply with the rules specified by KVKK and GDPR.
  • 3.2.2: Users shall agree to the Privacy Policy and Terms of Service before signing up.
  • 3.2.3: If the Privacy Policy changes, users must be notified about the changes.
3.3: Security
  • 3.3.1: The platform shall use HTTPS protocol.
  • 3.3.2: The platform shall have a SSL certificate.
  • 3.3.3: All sensitive user data, such as passwords, shall be encrypted using a salted hashing algorithm(such as SHA-256).
  • 3.3.4: The platform should be robust against Cross-Site Scripting and SQL Injection.
  • 3.3.5: Users shall be notified in the event of a password change.
3.4: Performance and Reliability
  • 3.4.1: Load time of any page in the platform shall be maximum 6 seconds.
  • 3.4.2: Load time of any page in the platform shall be under 3 seconds on average.
  • 3.4.3: The platform shall be able to handle at least 10.000 users and 500 user actions simultaneously.
  • 3.4.4: The platform shall respond to any request in at most 3 seconds excluding network based delay.
  • 3.4.5: The platform's average time for responding requests shall be less than 2 seconds excluding network based delay.
⚠️ **GitHub.com Fallback** ⚠️