Skip to content

Requirements

Dylan Johnson edited this page Oct 12, 2024 · 96 revisions

Note from Dylan: I went through every screen and added a ton of requirements to make it really comprehensive and detailed. the round numbers still need to be bolded. I kinda got a bit tired in the statistics section though, so that's not quite as complete. If you need to make changes to requirements, edit the sheets, temporarily delete the POC column, download as tab separated, upload to this website: https://tableconvert.com/csv-to-markdown, and then export as markdown or HTML.

Number Description Priority
1 Login Procedure and Account Creation
1.1 The user shall login by inputting their username and password into their respective boxes and tapping submit. [See Page] Required
1.1.1 The application shall use Google FireBaseUI Auth to authenticate user sign-in attempts. This authentication will check to see if the account credentials are available in the backend database. Required
1.1.2 If the user provided correct login credentials, they shall be brought to the "Home" Screen with the correct account data. Required
1.1.3 The User shall login using their Google account. Desired
1.1.4 The User shall login using social media accounts like Twitter, FaceBook, LinkedIn, GitHub. Aspirational
1.1.5 The User shall have login using their Blackboard Educator account. Aspirational
1.1.6 The User can check a "Remember Me" box when signing in. Desired
1.1.7 If the User signs in with "Remember Me" checked, on subsequent startups the application shall immediately open with their username already filled in. Desired
1.2 The User shall "Sign Up" to create an account. Required
1.2.1 When signing up, the User shall create an account by inputting their chosen username, password, and an email address. Required
1.2.1.1 The User can only enter plausible email addresses. Desired
1.2.2.2 The User can only enter unique usernames. Required
1.2.2.3 The User can only enter sufficiently complex, secure passwords, following CISA guidelines. Desired
1.2.2.4 The User must enter their password twice to sign up. Desired
1.2.3 Upon creating an account, an email shall be sent to the User's provided email address to verify it is valid and belongs to them. Aspirational
1.2.3.1 The User will be unable to login until a link in the verification email has been opened. Aspirational
1.2.3.2 If the User attempts to login without opening the verification link first, the User shall be able to resend the verification email. Aspirational
1.2.4 The User shall be able to return to the login screen from the sign up screen. Required
1.3 The User shall be able to tap "Forgot Password?" reset their password. Aspirational
1.3.1 Upon tapping "Forgot Password?", the user shall enter their account email and receive a password recovery email in their inbox. Aspirational
1.3.2 The User shall open a link in the recovery email which allows them to enter in a new password. Aspirational
1.3.2.1 The User can only enter a sufficiently complex, secure password on the password recovery webpage. Aspirational
1.3.2.2 The User must enter their password twice to reset it. Aspirational
1.3.4 The User shall be able to return from the "Forgot Password?" screen to the login screen. Required
1.4 The User shall not need to login again for 20 minutes after logging in. Aspirational
2 Home Screen Functionalities
2.2 The User shall press the "SPOT" button to select a random student from the currently active class roster. (See Student Selection "Spotting" Features requirements for more information on the "Spotting" mechanics.) Required
2.2.1 After pressing the "SPOT" button an animation will occur where the seat of the selected student is highlighted and the spotted window opens. Aspirational
2.2.2 If the current class has seating information, the seat of the selected student will be highlighted in the background seating grid during the animation. Aspirational
2.3 The User shall be able tap on boxes (representing student seats) and see the student details screen of the student sitting at that location if the class has a seating grid Aspirational
2.4 The User shall be able to visually see the initials of the student sitting in each seat/box if the class has a seating grid. Aspirational
2.4.1 The User shall be able to see each student's profile picture in the grid in their appropriate place instead of initials if they have one and the class has a seating grid Aspirational
2.5 User can view their different classes in a list by pressing a button from the home screen. Required
2.5.1 User can select a different class from the class list screen Required
2.5.2 User can return to home screen from class list screen Required
2.5.3 User can go to the add a class screen from the class list screen Required
2.5.4 User can go to the edit screen for a class from the class list screen Aspirational
2.5.5 User can go to the stats screen for a class from the class list screen Aspirational
2.5.6 User can go to the roster screen for a class from the class list screen Aspirational
2.6 User can view the currently active class's performance statistics by selecting a button from the home screen. Aspirational
2.7 User can view the currently active class's roster by pressing a button from the home screen. Required
2.9 User can go to the settings screen by pressing a button from the home screen. Required
2.10 Currently selected class name is prominently displayed Required
2.10.1 If the user has not added any classes, they will be prompted to add a class Desired
2.10.2 If the user has not added any classes, the only other screen they can go to (excepting the add a class screen) is the settings screen Desired
2.11 User can share the current class with another user by username Aspirational
2.11.1 User can see classes they have been invited to and who invited them from the class list screen Aspirational
2.11.2 User can accept/decline an invitation to share a class Aspirational
2.11.3 User can block a user from inviting them to classes from the class list screen Aspirational
2.11.4 Users can unblock a user from inviting them to classes from the settings screen Aspirational
2.11.5 Only one user can have a shared class selected at one Aspirational
2.11.6 If a user selects a shared class that is currently selected by another user, both users will be informed with a popup Aspirational
2.11.6.1 The user that has selected the class can then choose to relinquish it or keep it selected Aspirational
2.11.6.1.1 If relinquished, the last used class will become selected Aspirational
2.11.6.2 The user that originally made a shared class can remove other users from it in the settings page Aspirational
3 Student Selection Features ("Spotting")
3.1 Selection algorithm randomly selects the name of a student from the current class's roster and displays their name on the screen Required
3.2 Displays the number of times the student has been called on and the student's average rating Desired
3.3 Selection algorithm does not repeat the previous 5 selected students Desired
3.4 User can mark the currently selected student as absent Desired
3.4.1 Selection algorithm does not select students previously selected absent in the same day Desired
3.5 User can skip the currently selected student to select a different student Desired
3.6 User can rate the currently selected student's performance from 0 to 5 stars Desired
3.6.1 User can drag left/right on ratings bar to increase/decrease rating Aspirational
3.7 User can mark the currently selected student as unprepared Desired
3.7.1 Students marked as unprepared receive a 0 star rating, and the user is returned to the home screen Desired
3.8 User can continue selecting random students or return to the Home Screen Desired
3.9 Ratings, unprepared, absences, and selections, are stored for each selection with the student, class, and date in the database Required
3.10 The selection algorithm should avoid selecting anyone for an Nth time until everyone has been selected at least N-2 times Desired
4 Settings Screen Features
4.1 The user can disable/enable the selection algorithms avoiding selecting anyone for an Nth time until everyone has been selected at least N-2 times Aspirational
4.1.1 The user can change the N-2 to be N- Aspirational
4.2 The user can enable/disable not selecting students after being skipped once in a day Desired
4.3 The user can enable/disable selecting students that were skipped with higher probability until they are called on and not skipped or absent Aspirational
4.4 The user can enable/disable selecting students that were absent with higher probability until they are called on and not skipped or absent Aspirational
4.5 The user can choose how long students cannot be selected for after being selected and not skipped or absent Desired
4.6 The user can choose to use a letter grading rating system instead of 5 stars (A+, A, B+, B, C+, C, D+, D, F) Aspirational
4.6.1 All existing data is unchanged by this selection Aspirational
4.6.2 For rating and statistics purposes, existing data is interpolated into the new rating system Aspirational
4.6.3 Student selection screen is updated to show the letter grade, which can be dragged left/right (in place) to increase/decrease it Aspirational
4.6.4 New data is saved using the new scale Aspirational
4.7 The user can choose to use a 0 through 10 rating system instead of 5 stars Aspirational
4.7.1 All existing data is unchanged by this selection Aspirational
4.7.2 For rating and statistics purposes, existing data is interpolated into the new rating system Aspirational
4.7.3 Student selection screen is updated to show a range of numbers 0 through 10, which can be dragged left/right (in place) to increase/decrease it Aspirational
4.7.4 New data is saved using the new scale Aspirational
4.8 User can enable/disable the ability to mark a student as unprepared Desired
4.9 User can toggle the selection animation Desired
4.10 Setting changes are saved in the database Required
4.11 User can logout Required
4.12 User can change the max session length (how long the user will stayed logged in after leaving the app while logged in) Aspirational
4.13 User can return to the home screen from the settings screen Required
5 Add a class screen features
5.1 User can return to the previous screen (either class list screen or home screen for a class-less user) from the add a class screen Required
5.2 User can create a no-layout / gridless class which simply maintains a roster with no seat assignments Required
5.3 User can select a predefined classroom layout to use: grid or bowl Desired
5.3.1 Home screen and edit class screen UIs are updated use the appropriate layout Required
5.4 User can adjust the number of seats in each row and column Desired
5.5 User can create their own classroom layout with a simple drag-and-drop interface for desks (this is a simpler subset of 5.13) Aspirational
5.6 User can add students to a class roster one at a time Required
5.7 User can import an entire class roster through a CSV file Desired
5.7.1 The CSV's column names and contained data will be checked exhaustively for data the app uses, such as name, average performance, calls, seat, ect. Desired
5.7.2 User will be informed of all columns that were unrecognized Aspirational
5.7.3 User will be informed of all rows with invalid data Aspirational
5.7.4 User will be informed if the CSV could not be parsed or no data was recognized Desired
5.8 User can assign students in the roster to seats in the layout through drag-and-drop Desired
5.9 User can give their class a custom name which will be displayed in the class list Desired
5.1 User can save their new class once done with its creation by selecting a button Required
5.11 User can discard their new class at any time during the creation process by selecting a button Desired
5.12 Student/class data will be saved to the Cloud Firestore database backend Required
5.13 User can select a custom seating arrangement using the "seating editor" Aspirational
5.13.1 User can add individual seats and drag them anywhere on the screen Aspirational
5.13.2 User can rotate individual seats using two fingers Aspirational
5.13.3 User can tap on one or multiple seats to select them Aspirational
5.13.4 Selected seats darken and a context menu appears Aspirational
5.13.5 User can copy selected seats in the context menu Aspirational
5.13.6 User can group together or ungroup selected seats in the context menu Aspirational
5.13.7 Grouped seats are selected collectively whenever one component seat is selected Aspirational
5.13.8 Grouped seat rotate/move as one seat does Aspirational
5.13.9 User can unselect seats or groups of seats by tapping on empty space Aspirational
5.13.10 User can paste selected seats by tapping on empty space and pressing "paste" in a context menu Aspirational
5.13.11 User can save the custom arrangement which will display on the homescreen and class edit screen UIs Aspirational
5.13.12 User can specify the seat identifier in the selected seat context menu Aspirational
5.14 User can choose between multiple seat number/identification systems: , , :, ect. Desired
6 Edit-A-Class Screen Features
6.1 User can add new students to the existing class roster Required
6.1.1 User can add the student's name, seat assignment, and year/grade Required
6.1.2 User can import a student from another class Aspirational
6.2 User can return to the home screen from the edit-a-class screen Required
6.3 Displays the seating arrangement if class is not just a roster Desired
6.3.1 User can open a tray with a list of students in the class by clicking on a seat in the seating arrangement / grid to assign a student to that spot Desired
6.3.2 User can go to a student's view student details screen from the tray/list of students available to assign Desired
6.3.3 User can filter the list of students available to assign using a search box Aspirational
6.3.4 User can close the tray to return to the edit-a-class screen Required
6.3.3.1 User is only shown the students whose names contain the the text in the search bar as a substring. Aspirational
6.4 User can clear the seat assignments Aspirational
6.4.1 User can randomly shuffle all seat assignments Required
6.5 User can change the classroom layout style Aspirational
6.5.1 User is warned that changing the style loses all seat assignments Required
6.6 User can edit the number of rows/columns in class if using a grid-like layout Aspirational
6.6.1 User can press a button to shift all seating assignments by one row/column in the direction of the newly created row/column Aspirational
6.6.2 User is warned when decreasing the number of rows/columns that seat assignments will be lost and user must confirm/cancel Required
6.7 User can delete the entire class Desired
6.7.1 User is warned when deleting the class and must confirm or cancel in a dialog Required
6.8 App will save any class or roster changes to the Firestore database Required
6.9 User can change the name of the class Desired
7 Class Statistics Screen Features
7.1 App provides statistics about the best and worst performers in the class Desired
7.2 App provides statistics about the average performance in the class Desired
7.3 Displays a line graph of average performance over the past month Desired
7.3.1 User can change the length of time the bar graph is over to: previous week, previous fortnight, previous month, or all time Aspirational
7.3.2 User can select another class to graph at the same time Aspirational
7.3.3 User can save graph as a png Aspirational
7.4 Displays a greeting with a randomly selected notable statistic for the day/week/month Desired
7.5 User can export tables and graphs displaying class statistics Aspirational
7.6 User can return to the home screen Aspirational
7.7 Displays a bar graph of the distribution of ratings today with a bucket for absent Desired
7.7.1 User can change the length of time the bar graph is over to: previous week, previous fortnight, previous month, or all time Aspirational
7.7.2 User can save graph as png Aspirational
8 Class Roster Screen Features
8.1 User can return to the home screen from the class roster screen if they arrived there from the home screen. Required
8.2 User can return to the class list screen from the class roster screen if they arrived there from the class roster screen. Required
8.3 User can browse all student first and last names in a list Desired
8.4 User can see all student profile pictures next to first and last name in a list Aspirational
8.5 User can filter the students shown in the list by entering text in the search bar. Desired
8.5.1 User is only shown the students whose names contain the the text in the search bar as a substring. Desired
8.6 User can go to a student's view student details screen from the class roster screen Desired
8.7 User can sort students in alphabetical or reverse alphabetical order Aspirational
8.8 User can sort students in order of average rating Aspirational
9 View Student Details Screen Features
9.1 User can see most data on the student, including: full name, seat assignment, year/grade, number of times called on, average rating, number of absences, number of unprepareds, number of times skipped, and class ranking based on performance. Desired
9.2 User can see profile picture of the student Aspirational
9.3 User can see a graph of their rating over time Aspirational
9.4 User can return to the previous screen (will be either class roster screen or home screen) Required
9.5 User can open the student's edit screen from the student's details screen Desired
9.5.1 User can edit the student's name, seat assignment, and year/grade Desired
9.5.2 User can replace the student's profile picture Aspirational
9.5.3 User can remove the student from the class, deleting all their associated data Desired
9.5.3.1 User shall press delete again in a popup warning box after pressing delete once to actually delete the student Required
9.5.3.2 User can press cancel in a popup warning box after pressing delete once to cancel the delete operation Required
9.5.4 User can return to the student's details screen from the student's edit screen Required
9.6 User changes are reflected in Google Cloud Firestore database Required

Clone this wiki locally