Skip to content

Requirements

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

If you would like to see the Google Spreadsheet we created for this milestone, the link is here.

Login Screen Forgot Password Screen
Number Description Priority
1.1 The user shall login their account by inputting their username and password into their respective boxes and tapping submit. (See "Account Creation" requirement for more details on account creation.) Required
1.2 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.3 If the user provided correct login credentials, they shall be brought to the "Home" Screen with the correct account and class data. Required
1.4 The User shall login using their Google account. Desired
1.4.1 The User shall login using social media accounts like Twitter, FaceBook, LinkedIn, GitHub. Aspirational
1.4.2 The User shall login using their Blackboard Educator account. Aspirational
1.5 The User can check a "Remember Me" box when signing in. Desired
1.5.1 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.6 The User shall sign in with biometrics (depending on the specific device). Aspirational
1.7 The User shall not need to login again for 1 hour after logging in. Aspirational
1.8 The User shall be able to tap "Forgot Password?" reset their password. Desired
1.8.1 Upon tapping "Forgot Password?", the user shall enter their account email and receive a password recovery email in their inbox. Desired
1.8.2 The User shall open a link in the recovery email which allows them to enter in a new password. Desired
1.8.3 The User can only enter a sufficiently complex, secure password on the password recovery webpage. Desired
1.8.4 The User must enter their password twice to reset it. Desired
1.8.5 The User shall be able to return from the "Forgot Password?" screen to the login screen. Desired
Sign Up Screen
Number Description Priority
2.1 The User shall create an account using the "Sign Up" button. Required
2.2 When signing up, the User shall create an account by inputting their chosen username, password, and an email address. Required
2.2.1 The User can only enter plausible email addresses. (Has @ symbol, valid domain, ect.) Desired
2.2.2 The User can only enter unique usernames. Required
2.2.3 The User can only enter sufficiently complex, secure passwords, following CISA guidelines. Desired
2.2.4 The User must enter their password twice to sign up. Desired
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
2.3.1 The User will be unable to login until a link in the verification email has been opened. Aspirational
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
2.4 The User shall be able to return to the login screen from the sign up screen. Required
Home Screen Class Selection Screen
Number Description Priority
3.1 The currently selected class's name is prominently displayed at the top of the screen to inform the User of the class selected. Required
3.1.1 If the user has not created any classes, they shall be immediately prompted to add a class. (See "Add a Class Features" requirements for more details.) Desired
3.2 The User shall be able to tap on boxes (representing student seats) and see the student details screen of the student sitting at that location, if the selected class has a seating grid. Desired
3.3 The User shall be able to visually see the initials of the student sitting in each seat/box, if the selected class has a seating grid. Desired
3.4 The User shall press the "SPOT" button to select a random student from the currently active class roster. (See "Student Selection Algorithm and Spotted Features" requirements for more information on the "Spotting" mechanics.) Required
3.4.1 After pressing the "SPOT" button an animation will occur where the seat of the selected student is highlighted and the 'Spotted' window opens. (See Student Selection "Spotting" Features for more information on the 'Spotted' window.) (Note: 5.13 can disable this animation.) Aspirational
3.5 From the 'Home' Screen, the User shall tap the hamburger menu in the top left to access and select from their list of classes. Required
3.5.1 Upon tapping into a class, the class data shall be loaded into the 'Home' Screen, changing the roster from which students will be selected. Required
3.5.2 The User can return to home screen from "Class List" screen via a back arrow button. Required
3.5.3 The User shall add a class from the class list screen via the '+' button. (See "Add a Class Screen Features" requirements for more detail.) Required
3.6 User can view the currently active class's performance statistics by selecting a button from the home screen. (See "Class Statistics Screen Features" requirements for more detail.) Required
3.7 User can view the currently active class's roster by pressing a button from the home screen. (See "Class Roster Screen Features" requirements for more detail.) Required
3.8 User can go to the settings screen by pressing a button from the home screen. (See "Settings Screen Features" requirements for more details.) Required
3.9 The User shall edit the selected class by pressing the 'Edit' button from the home screen. (See "Class Edit" requirements for more details.) Required
3.10 User can share the current class with another user by username Aspirational
3.10.1 User can see classes they have been invited to and who invited them from the class list screen Aspirational
3.10.2 User can accept/decline an inviation to share a class Aspirational
3.10.3 User can block a user from inviting them to classes from the class list screen Aspirational
3.10.4 Only one user can have a shared class selected at one Aspirational
3.10.5 If a user selects a shared class that is currently selected by another user, both users will be informed with a popup Aspirational
3.10.6 The user that has selected the class can then choose to relenquish it or keep it selected Aspirational
3.10.7 If relenqiushed, the last used class will become selected Aspirational
3.10.8 The user that originally made a shared class can remove other users from it in the settings page Aspirational

Student Selection Screen

Number Description Priority
4.1 The selection algorithm shall randomly select the name of a student from the current class's roster. Required
4.1.1 By default, the selection algorithm should avoid selecting anyone until everyone has been selected at least one time. (See the "Settings Screen Features" requirements for more details on how to specify it.) Desired
4.2 After 'spotting' a student, the application shall display a 'Spotted' pop-up with the student's name at the top of the screen. Required
4.3 The 'Spotted' pop-up shall display the number of times the student has been called on for that day. (Note: 5.15 can disable this feature.) Desired
4.4 The 'Spotted' pop-up shall display the student's average performance rating for the semester so far. (Note: 5.14 can disable this feature.) Desired
4.5 In the 'Spotted' pop-up, the User can rate the currently 'spotted' student's performance on a scale from 0 to 5 stars. Required
4.5.1 The User can drag left/right on ratings bar to increase/decrease rating Aspirational
4.6 In the 'Spotted' pop-up, the User can mark the currently 'spotted' student as absent. Desired
4.6.1 The selection algorithm shall not 'spot' students previously selected absent within the same day. Aspirational
4.7 In the 'Spotted' pop-up, the User can skip the currently 'spotted' student. Required
4.7.1 After the User 'skips' on a student, the selection algorithm will automatically 'spot' another student. Desired
4.8 In the 'Spotted' pop-up, the User can mark the currently selected student as unprepared. Desired
4.8.1 Students marked as unprepared shall receive a 0 star rating. Desired
4.9 The User can continue selecting random students by selecting the next arrow. Desired
4.9.1 After selecting the next arrow, the performance data (rating, student, class, date) inputted into the pop-up menu shall be submitted into the backend database. Desired
4.9.2 After selecting the next arrow, the application shall 'spot' for another student. Desired
4.10 The User can finish 'spotting' students by tapping the 'Done' button to return to the home screen. Required
4.10.1 By tapping the 'Done' button, the performance data (rating, student, class, date) inputted shall be submitted into the back end database. Required
4.11 User can close the spot pop-up without rating the currently selected student by pressing an X button Required
Settings Screen
Number Description Priority
5.1 The user can specify the selection algorithm i parameter: avoid selecting anyone for an n-th time until everyone has been selected at least n-i times for all natural numbers n > i (example given in 5.1.1). Aspirational
5.1.1 The selection algorithm by default shall set i to be 1. (Avoid selecting anyone for the 2nd time until everyone has been selected at least once, avoid selecting anyone for the 3rd time until everyone has been selected at least twice, etc.) Aspirational
5.1.2 The selection algorithm restricts i to be between the values of 1 and n-1. Aspirational
5.2 The user shall log out in the "Settings" Screen by tapping the 'Log Out' button. Required
5.3 The user can enable and disable the following feature: students labeled as skipped for a given day, will not be selected again within that same day. Aspirational
5.4 The user can enable and disable the following feature: for students labeled as absent on a given day, their probability to be selected will be raised by 10% the next day of class. Aspirational
5.5 The user can enable and disable the following feature: for students labeled as skipped on a given day, their probability will be raised by 10% the next day of class. Aspirational
5.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
5.6.1 For rating and statistics purposes, existing data is interpolated into the new rating system. Aspirational
5.7 The user can change to use a 0 through 10 rating system instead of 5 stars. Aspirational
5.7.1 For rating and statistics purposes, existing data is interpolated into the new rating system Aspirational
5.8 User can enable and disable the following feature: allow the ability to mark students as unprepared. Desired
5.9 The User can enable and disable the following feature: Selection animation will play for each student selection. Desired
5.10 Setting changes shall be saved in the Firestore database. Required
5.10.1 Each class shall have their own specific settings attributed to them. Required
5.11 The User can return to the home screen from the settings screen via the back button. Required
5.12 The User can enable and disable the following feature: see the 'spotted' student's average performance history for the semester in the 'spotted' pop-up. Aspirational
5.13 The User can enable and disable the following feature: see the 'spotted' student's number of times called in the 'spotted' pop-up. Aspirational
5.14 Each setting shall have an information icon that The User can press to learn more about the corresponding setting Desired
5.15 The User can export all data associated with their account as a ZIP file, excepting password Desired
5.16 The user can delete their account and all data associated with it. Desired
5.17 Users can unblock a user from inviting them to classes from the settings screen Aspirational
Class Creation Screen Grid Class Creation Screen Unstructured Class Creation Screen Assign Seating Screen
Number Description Priority
6.1 The User can return to the "Class List" screen from the "Class Creation" screen via pressing the back arrow, provided the User has at least one class created. Required
6.2 The User can create a no-layout class that maintains a roster with no seat assignments. Required
6.3 The User can select a structured classroom layout to use. Required
6.3.1 After selecting a structured classroom layout, the User may choose between either "Grid" or "Bowl" structure. Desired
6.3.2 Selecting a Grid layout creates a small classroom with 3x5 seats. Desired
6.3.3 Selecting a Bowl layout creates a small classroom with 4 seats at the front row, 5 above it, 6 above that one, and 7 above that row. Desired
6.4 If a structured classroom is chosen, the User can adjust the number of seats in each row. Desired
6.5 If a structured classroom is chosen, the User can adjust the number of seats in each column. Desired
6.6 The User shall add students to a class roster of a class one at a time by tapping the "Add Student" button. Required
6.6.1 After tapping the "Add Student" button, the User shall be prompted to input the name, year, seat, and optional profile picture. Required
6.7 The User can import an entire class roster through uploading a CSV file via tapping the "Import Roster" button. Desired
6.7.1 After uploading the CSV, the User shall be prompted to select which column corresponds to the name. (assuming that each row in the CSV represents one student). Desired
6.7.2 After uploading the CSV, the User shall be prompted to select which column corresponds to the seat. (assuming that each row in the CSV represents one student). Desired
6.7.3 After uploading the CSV, the User shall be prompted to select which column corresponds to the year. (assuming that each row in the CSV represents one student). Desired
6.7.4 The User can check a box that indicates whether a chosen CSV column has a header or not. (If the column has a header, do not count the first row as a student.) Desired
6.7.5 The User will be informed of all rows with invalid data. (UTF-8 language only.) Aspirational
6.7.6 The User will be informed if the CSV could not be parsed or no data was recognized. Desired
6.8 The User shall specify the name of the class via a text box at the top; this name will be displayed in the class list. Desired
6.9 The User can assign students in the roster to seats by tapping a seat, and then selecting a student from the roster. Desired
6.10 The User can save their new class by selecting the "Done" button. Required
6.11 The User can discard their new class by selecting the "Delete" button. Required
6.12 Student/class data will be saved to the Cloud Firestore database backend Required
6.13 The User can select a custom seating arrangement using the "Custom Seating Arrangement" button. Aspirational
6.13.1 The User can add individual seats and drag them from a menu to anywhere on the screen. Aspirational
6.13.2 The User can rotate individual seats using two fingers. Aspirational
6.13.3 The User can tap on one or multiple seats to select them. Aspirational
6.13.4 After being selected, selected seats darken and a context menu shall appear. Aspirational
6.13.5 The User can copy selected seats in the context menu. Aspirational
6.13.6 The User can group together or ungroup selected seats in the context menu. Aspirational
6.13.7 The grouped seats are selected collectively whenever one component seat is selected. Aspirational
6.13.8 The grouped seat rotate/move as one seat does. Aspirational
6.13.9 The User can unselect seats or groups of seats by tapping on empty space. Aspirational
6.13.10 The User can paste selected seats by tapping on empty space and pressing "paste" in a context menu. Aspirational
6.13.11 The User can save the custom arrangement which will display on the homescreen and class edit screen UIs. Aspirational
6.13.12 User can specify the seat identifier in the selected seat context menu Aspirational
6.14 User can choose between multiple seat number/identification systems: <column letter><row number>, <reading order number>, <column number>:<row number>, etc. Desired
Class Edit Screen Assign Seating Screen
Number Description Priority
7.1 User can add new students to the existing class roster via pressing the "Add Student" button. Required
7.2 After tapping the "Add Student" button, the User can input the student's name, seat assignment, and year. Required
7.3 User can import a student from another class. Aspirational
7.4 User can return to the "Home" screen from the "Class Edit" screen via pressing the back arrow. Required
7.5 If it is a structured class, the "Class Edit" screen shall display the seating arrangement of the class. Desired
7.6 The User may reassign seats by tapping on the seat and then selecting from a list of available (unseated) students. Desired
7.6.1 If the User wants to unassign a seat, the User can tap on a already assigned seat, then tap on the "Unassign Seat" button in the pop up. Desired
7.7 The User can use the Student Search text search at the top of the screen to find a student and view/edit their information (see "View Student Details Screen Features" requirements for more detail.) Desired
7.8 User can randomly shuffle all seat assignments. Aspirational
7.9 User can change the classroom layout style by tapping the "Change Classroom layout" button. Aspirational
7.9.1 User is warned that changing the style loses all seat assignments. Aspirational
7.10 User can edit the number of rows/columns in class if using a grid-like layout. Aspirational
7.11 User is warned when decreasing the number of rows/columns that seat assignments will be lost and user must confirm/cancel. Aspirational
7.12 User can delete the entire class. Desired
7.12.1 User is warned when deleting the class and must confirm or cancel in a dialog. Desired
7.13 App will save any class or roster changes to the Firestore database. Required
7.14 User can change the name of the class in the top textbox. Desired
Stats Screen
Number Description Priority
8.1 App provides statistics about the best and worst performers in the class. Desired
8.2 App provides statistics about the average performance in the class. Desired
8.3 App displays a line graph of average performance of each class over the past month. Aspirational
8.3.1 User can change the length of time the line graph covers: previous week, previous fortnight, previous month, or all time. Aspirational
8.3.2 User can select another class to graph at the same time in order to compare classes. Aspirational
8.3.3 User can save the graph as a png. Aspirational
8.4 User can export tables and graphs displaying class statistics as CSV. Aspirational
8.5 User can return to the home screen via the back arrow. Aspirational
8.6 The "Statistics" screen displays the distribution of ratings for the last day where student's were spotted, with a bucket for absent. Required
8.6.1 Frequency of each rating is displayed as a bar graph, instead of a table Aspirational
8.6.2 User can change the length of time the bar graph covers: most recent day where students were spotted, previous week, previous fortnight, previous month, or all time. Desired
8.6.3 User can save graph as png. Aspirational
Student List Screen
Number Description Priority
9.1 User can return to the home screen from the class roster screen if they arrived there from the home screen via a back arrow. Required
9.2 User can browse all student first and last names in the class roster list. Desired
9.3 User can see all student profile pictures next to first and last name in a list. Aspirational
9.4 User can filter the students shown in the list by entering a name or partial name into the search bar. Desired
9.5 User can go to a student's "View Student Details" screen from the "Class Roster" screen by tapping their name. Desired
9.6 User can sort students in alphabetical or reverse alphabetical order Aspirational
9.7 User can sort students in order of average rating Aspirational
Student Info Screen Edit Student Screen
Number Description Priority
10.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
10.2 User can see profile picture of the student. Aspirational
10.3 User can see a graph of their performance history rating over time. Aspirational
10.4 User can return to the previous screen they were on via the back arrow. Desired
10.5 User can edit a student's information by pressing the "Edit" button in the top right. Desired
10.5.1 User can edit the student's name, seat assignment, and year/grade Desired
10.5.3 The User can remove and edit certain performances within the student's performance history. Aspirational
10.5.4 User can remove the student from the class, deleting all their associated data. Desired
10.5.5 User shall confirm or cancel their choice to delete a student from the class. Desired
10.5.6 User can return to the student's details screen from the student's edit screen via a back arrow. Required
10.6 User changes are reflected in Google Cloud Firestore database. Required
10.7 User can open a screen to see a list of all "spots" for that student, the date of the spot, and the rating or absence Required

Clone this wiki locally