Software Requirements Specifications - bounswe/bounswe2023group4 GitHub Wiki

Prediction Polls Software Requirements Specification

Table of Contents

1. Introduction

1.1 Purpose

The purpose of this Software Requirements Specification (SRS) is to provide a detailed description of the requirements for the development of a Polls Prediction software products. This document will serve as a guide for the development team to ensure that the software is developed according to the stakeholders' needs and requirements.

1.2 Scope

The Polls web and mobile application will be an online platform that allows users to create, participate in, and view the results of various polls. The application will have a user-friendly interface that allows users to create new polls, respond to existing polls, and view the results in real-time. The system will be accessible via a web browser and mobile applications for iOS and Android and will be developed to work on various devices such as desktop computers, laptops, tablets, and mobile phones.

1.3 Definitions and abbreviations

  • Account: A set of platform related information with unique e-mail address.
  • Poll: A poll is a method of collecting data or opinions from a group of individuals. A poll is considered active if its result is not yet determined.
  • Profile: Number of information that member has allowed to be shared.
  • Tag: Keywords used to categorize polls.
  • User: A person who use the system as member or guest.
  • Member: A person who signed up to the system.
  • Guest: A person who didn't signed up to the system.
  • Domain Specific Points: The points that earned only from true predictions under a tag.
  • General Points: The points that are not specific to any tag.
  • Appropriate Moderator For A Poll: Moderators who has selected at least one tag that the poll contains and that did not participated in the poll. If this condition is satisfied, the moderator can become a jury member for the poll.
  • SRS: Software requirements specification

1.4 Overview

The remaining parts of this SRS document is organized into two main sections:

The Overall Description section describes the product perspective, product functions, user characteristics, constraints, assumptions, and dependencies. The Specific Requirements section outlines the functional and non-functional requirements of the Polls web and mobile application.

The SRS document is intended for the development team, stakeholders, and anyone else involved in the development, testing, and maintenance of the Polls web and mobile application. It is assumed that the reader has a basic understanding of software development principles.

2. Overall Description

2.1 Product Perspective

The Prediction Polls software will be a standalone application designed for web and mobile (iOS-Android) deployment. The software will be developed using modern web and mobile development technologies and will be compatible with major web browsers, such as Chrome, Firefox, and Safari and latest iOS and Android mobile phones. The software will interact with a database management system to store user information, poll questions and answers, and poll results.

2.2 Product Functions

The Prediction Polls software will allow users to create and participate in prediction polls. The following are the key functions of the software:

  • User registration and login: Users will be able to create an account by providing basic information such as name, email address, and password. Users will also be able to log in using their registered email address and password.
  • Poll creation: Users will be able to create a new prediction poll by specifying the question, answer options, and deadline for the poll.
  • Poll participation: Users will be able to participate in a prediction poll by selecting their answer option and submitting their vote before the poll deadline.
  • Poll result display: The software will display the poll results to users after the poll deadline has passed and the answer is settled. The results will include the total number of votes, the percentage of votes for each answer option, and the winning answer option.

2.3 User Characteristics

The Prediction Polls software is designed for a wide range of users who are interested in creating and participating in prediction polls. Users may be individuals, organizations, or businesses.

2.4 Constraints

The following are the constraints for the Prediction Polls software:

  • The software will be developed using modern web and mobile development technologies and will be compatible with major web browsers, such as Chrome, Firefox, and Safari and with latest Android and iOS mobile phones.
  • The software will be deployed on a web server and will require an active internet connection for use.

2.5 Assumptions and Dependencies

The following are the assumptions and dependencies for the Prediction Polls software:

  • Users will have basic knowledge of how to use a web or mobile based application.
  • Users will have an active internet connection and a compatible web browser or mobile phone.
  • The web server used for deployment will have sufficient resources to handle the expected user load.

3. Specific Requirements

3.1. Functional Requirements

3.1.1 User Requirements

3.1.1.1 Guests
  • 3.1.1.1.1 Guests shall be able to see polls.
  • 3.1.1.1.2 Guests shall not be able to create polls.
  • 3.1.1.1.3 Guests shall not be able to vote in any polls.
  • 3.1.1.1.4 Guests shall be able to see other member's profile.
  • 3.1.1.1.5 Guests shall be able to give feedbacks to developers.
  • 3.1.1.1.6 Guests shall not be able to add friends.
3.1.1.2 Authentication
  • 3.1.1.2.1 Sign up
    • 3.1.1.2.1.1 Users should be able to sign up with an unused e-mail, unused nickname and a password.
    • 3.1.1.2.1.2 Passwords determined by users while signing up shall be at least 8 characters and shall contain at least three of the following:
      • Lower case letters (a-z)
      • Upper case letters (A-Z)
      • Numbers (3.0-9)
      • Special characters (e.g. !@#$%^&*)
    • 3.1.1.2.1.3 Users should get a verification mail to their e-mail address when they sign up.
    • 3.1.1.2.1.4 Users should be able to sign up with google.
    • 3.1.1.2.1.5 Users shall accept the KVKK terms to sign up.
  • 3.1.1.2.2 Sign in
    • 3.1.1.2.2.1 Users should be able to sign in with their username/email and password if they have verified their e-mail via the verification mail stated in requirement 1.1.2.1.3.
    • 3.1.1.2.2.2 Users should be able to sign in with google.
3.1.1.3 Profile
  • 3.1.1.3.1 Members shall have a profile page which they can display their name, username, profile picture, bio, polls that they created, or they voted for, their domain specific badges and their domain specific ranks.
  • 3.1.1.3.2 Members shall have a profile page which includes the visibility information about the member.
    • 3.1.1.3.2.1 Members shall have an option to hide their information except the username.
    • 3.1.1.3.2.2 Members shall have an option to decide which of their actions will be displayed in their profile.
3.1.1.4 Members
  • 3.1.1.4.1 Members shall be able to add friends by sending friend requests.
  • 3.1.1.4.2 Members shall be able to share their achievements on their social media platforms.
  • 3.1.1.4.3 Members shall be able to share any poll on their social media platforms.
  • 3.1.1.4.4 Members shall be able to express their views in the comment section of the poll.
  • 3.1.1.4.5 Members shall be able to view other members' comments in the comment section of the poll.
  • 3.1.1.4.6 If moderator applications are open, each member can send a request to the system to be a moderator.
  • 3.1.1.4.7 Members shall be able to search via searchbar.
    • 3.1.1.4.7.1 Members shall be able to see recommended tags according to the written text while typing.
    • 3.1.1.4.7.2 Members shall be able to click the recommended tags to search by that tag.
    • 3.1.1.4.7.3 Members shall be able to search according to written text.
      • 3.1.1.4.7.3.1 Members shall be able to filter the search result by tags to get polls according to their tags.
      • 3.1.1.4.7.3.2 Members shall be able to filter the search result by keywords to get polls according to their keywords.
      • 3.1.1.4.7.3.3 Members shall be able to filter the search result by usernames to get profiles according to their usernames.
3.1.1.5 Polls
  • 3.1.1.5.1 Poll Opening
    • 3.1.1.5.1.1 Members shall be able to post polls if they follow the following entries.
    • 3.1.1.5.1.2 Each poll must have a question.
    • 3.1.1.5.1.3 Poll opener shall pay 5 * daily gained points, from his/her prediction scores, to open a poll.
    • 3.1.1.5.1.4 Poll opener shall be able to decide on the visibility of vote distribution of their polls to other users.
    • 3.1.1.5.1.5 Poll opener shall choose a final voting date or vote change acceptance time-the time that system takes to accept a vote changing process-.
    • 3.1.1.5.1.6 Poll opener shall be banned from opening polls for one day if one of his polls is reported and removed by jury.
    • 3.1.1.5.1.7 Poll opener shall choose poll type as multiple-choice or continuous.
      • Multiple-choice Poll Opening
        • 3.1.1.5.1.8 Poll opener shall choose the number of the options.
        • 3.1.1.5.1.9 Poll opener shall fill every option.
      • Continuous Poll Opening
        • 3.1.1.5.1.10 Poll opener shall choose the input type such as date-time, integer, etc.
  • 3.1.1.5.2 Poll Voting
    • 3.1.1.5.2.1 Members shall be able to vote on active polls.
    • 3.1.1.5.2.1 Members shall be able to change their vote, which changes the option where the member's general points reside.
  • 3.1.1.5.3 Poll Closing
    • 3.1.1.5.3.1 Poll owner shall be able to send a request to finish the poll to the system.
    • 3.1.1.5.3.2 Poll owner shall set a suggested answer to their finish requests.
    • 3.1.1.5.3.3 Members shall be able to receive points from the one and only true guess in the case of multiple-choice polls, or nearly true guesses, in the case of customized input polls. The points received is explained in the system requirements.
3.1.1.6 Moderator
  • 3.1.1.6.1 Moderators shall be able to do whatever regular members do.
  • 3.1.1.6.2 Moderators shall choose at least one at most five tags they are interested in. Tags chosen will be used by the system to determine which moderators can participate in a jury.
  • 3.1.1.6.3 Moderators shall be able to accept or reject the active join-the-jury requests, explained in system requirements, they received.
    • 3.1.1.6.3.1 Moderators shall participate in the jury for resolving a poll.
      • 3.1.1.6.3.1.1 A moderator in a jury shall be able to set the answer whatever he/she considers to be correct in 24 hours.
      • 3.1.1.6.3.1.2 If the poll the jury is responsible for is subjective, each jury member should set the suggested answer as the correct answer.
      • 3.1.1.6.3.1.3 Otherwise, each jury member should do his/her own research and set his/her answer accordingly.
    • 3.1.1.6.3.2 Moderators shall be able to participate in the jury investigating reports for a poll.
      • 3.1.1.6.3.2.1 Each jury member shall be able to vote for either delete the poll, not to deletethe poll, or set the poll as finished.
  • 3.1.1.6.4 Moderators shall not be able to accept passive join-the-jury requests. (Explained in system requirements)
3.1.1.7 Point System
  • 3.1.1.7.1 Domain Specific Point
    • 3.1.1.7.1.1 Members shall be able to receive domain specific points by predicting correct answer in polls.
    • 3.1.1.7.1.2 Members shall be able to see all of their domain specific points.
    • 3.1.1.7.1.3 Members shall be able to receive badges from their domain specific points according to their achievements.
  • 3.1.1.7.2 General Point
    • 3.1.1.7.2.1 Members shall be able to receive a proportion of received domain specific points as general points.
    • 3.1.1.7.2.2 Members shall be able to receive general points if they enter the platform daily/weekly.
    • 3.1.1.7.2.3 Members shall be able to use their general points to open a poll in any domain with according to requirement 1.1.4.1.4 .
    • 3.1.1.7.2.4 Members shall be able to use their general points to vote on polls.
    • 3.1.1.7.2.5 Members shall be able to receive points with same amount to open a poll(1.1.4.1.4) when they sign up the platform.
  • 3.1.1.7.3 Leaderboard
    • 3.1.1.7.3.1 Members shall be able to see their ranks about a specific tag in the leaderboard.
    • 3.1.1.7.3.2 Members shall be able to share their ranks about a specific tag in their profile.

3.1.2 System Requirements

3.1.2.1 Polls
  • 3.1.2.1.1 Poll Opening
    • 3.1.2.1.1.1 System shall tag the polls depending on their content.
  • 3.1.2.1.2 Poll Continuity
    • 3.1.2.1.2 System shall periodically notify the poll owners that created polls with no due dates to check if the poll should be ended.
  • 3.1.2.1.3 Poll Vote Change
    • 3.1.2.1.3.1 If the poll has a final voting date, system shall accept member's vote change immediately.
    • 3.1.2.1.3.2 If the poll has a vote change acceptance time, system shall accept member's vote change after the vote change acceptance time has passed.
  • 3.1.2.1.4 Poll Closing
    • 3.1.2.1.4.1 Sytem shall take %10 from the profit of the poll voters that won more points than their initial points.
    • 3.1.2.1.4.2 System shall follow the procedures listed in the Grading and Jury sections.
3.1.2.2 Grading
  • 3.1.2.2.1 System shall grant points to the members (TBD) according to the proximity of their voting time to the poll posting time.
  • 3.1.2.2.2 Polls with indefinite due dates shall not be subject to linear incremental grading. (TBD)
  • 3.1.2.2.3 System shall award points to members based on the accuracy of their guesses in continuous polls.
  • 3.1.2.2.4 In continious polls, the closeness shall be defined as the absolute difference between the guess and the result.
  • 3.1.2.2.5 System shall consider three possibilities for the distribution of members: top 50%, bottom 50%, and all members making the same guess.
  • 3.1.2.2.6 If the member is at the top 50%, the system shall return their deposited points back.
  • 3.1.2.2.7 The system shall divide top 50% into four parts based on performance, and each part shall share a certain percentage of the points of the losers:
    • 3.1.2.2.7.1 The system shall share %5 of the points of the losers to the bottom 25% division.
    • 3.1.2.2.7.2 The system shall share %15 of the points of the losers to the next better division.
    • 3.1.2.2.7.3 The system shall share %25 of the points of the losers to the next better division.
    • 3.1.2.2.7.4 The system shall share %45 of the points of the losers to the top %25 division.
  • 3.1.2.2.8 The system shall take the points of the bottom 50% as they are losers.
  • 3.1.2.2.9 If everyone makes the same guess, the system shall return the deposited points without any rewards or penalties.
  • 3.1.2.2.10 If there is a tie between members in the top 50%, the system shall split rewards among the tied members starting from the best-performing division (i.e., the top 25%).
  • 3.1.2.2.11 System shall share points to members proportional to their deposited points.
  • 3.1.2.2.12 System shall burn the remaining 10% of the points to prevent point inflation.
  • 3.1.2.2.13 System shall award the member reporting illegal content with half of the points required to open a poll, following verification of the content's illegality.
3.1.2.3 Jury
  • 3.1.2.3.1 To gather a jury for a poll, the system shall send join-the-jury requests only to appropriate moderators (check glossary for definition).
  • 3.1.2.3.2 The system shall send join-the-jury requests to appropriate moderators if the poll is reported by more than 250 unique members.
  • 3.1.2.3.3 The system shall send join-the-jury requests to appropriate moderators if the poll has ended and a finish request is sent to the system either by the system or the poll owner.
  • 3.1.2.3.4 The system shall set the initial prize for each join-the-jury request to %2 of total points placed in the poll.
  • 3.1.2.3.5 If nine moderators accept the join-the-jury request, the system shall set the join-the-jury requests for the same poll as passive. (Look to Moderator section for more details about accepting join-the-jury requests)
  • 3.1.2.3.6 If no nine moderators accept the join-the-jury request in six hours, the system shall send the join-the-jury request again to each appropriate moderator but this time with doubled prize. The system shall repeat this process until a jury of nine is gathered.
  • 3.1.2.3.7 If jury does not answer the poll in time, System shall punish each jury member that did not set the correct answer or vote for the action to be taken by burning %10 of the points of the members aforementioned.
  • 3.1.2.3.8 If jury does not answer the poll in time, the system shall send the join-the-jury request again to each appropriate moderator again but this time with doubled prize.
  • 3.1.2.3.9 The system shall open moderator applications whenever total number of polls whose answer is not yet determined divided by the number of moderators is greater than fifteen.
  • 3.1.2.3.10 The system shall promote members that applied for the moderatorship if they conform to two following criteria:
    • 3.1.2.3.10.1 The member used the application in the 3 days past the date the application is being considered.
    • 3.1.2.3.10.2 The member has participated in more than 10 polls either by posting them or voting for them.
  • 3.1.2.3.11 After each promotion of member to moderator, the system shall close the application for moderatorship and reject all the remaining applications if total number of polls whose answer is not yet determined divided by the number of moderators is less than fifteen.

3.2. Non-Functional Requirements

3.2.1 Portability and Compatibility Requirements
  • 3.2.1.1 The website shall be able to run on Google Chrome, Yandex, Safari, Internet Explorer and Firefox without any extra work, any failure regarding its specified performance and scalability requirements and any change in its behavior.
  • 3.2.1.2 The application shall be able to run on Android API 24 and later versions without any extra work and change in the behavior.
  • 3.2.1.3 The application shall be able to run on iOS 16.0 and later versions without any extra work and change in the behavior.
3.2.2 Performance and Scalability Requirements
  • 3.2.2.1 The website's page load time shall be maximum 6 seconds.
  • 3.2.2.2 The website's page load time should be under 3 seconds on average.
  • 3.2.2.3 The website should have an average response time between 0.1 - 1 second.
3.2.3 Reliability, Maintainability, Availability Requirements

The Reliability, Maintainability, Availability requirements will be decided at the further stages of the project.

3.2.4 Security Requirements
  • 3.2.4.1 An unauthorized access to admin panel shall be blocked by defining different login flows and different user roles as user actions.
  • 3.2.4.2 All nicknames shall be different from each other.
  • 3.2.4.3 KVKK provisions shall be applied.
3.2.5 Localization Requirements _These are localization requirements for Turkey. If our customer decides to enter other markets, suitable localization requirements will be applied._
  • 3.2.5.1 The language of the website shall be Turkish.
  • 3.2.5.2 The date format shall be date.month.year.
  • 3.2.5.3 The context of the website shall be proper to the regulations of Turkey.
  • 3.2.5.4 The website shall be able to show Turkish characters without any problem.
  • 3.2.5.5 The sorting algorithms(if any) used on the website shall be according to Turkish alphabet.
3.2.6 Usability Requirements _Adequately trained users are considered to be the appropriate users for testable usability requirements._
  • 3.2.6.1 Users should be adequately trained by aid of simple instructions when they are first sign-up to the website.
  • 3.2.6.2 The appropriate member should be able to login to the system.
  • 3.2.6.3 The appropriate member should be able to post a new poll.
  • 3.2.6.4 The appropriate member should be able to predict on a poll.
  • 3.2.6.5 The appropriate member should be able to personalize his/her profile.
  • 3.2.6.6 Components in the page should have overlay description for special members.
⚠️ **GitHub.com Fallback** ⚠️