-
Notifications
You must be signed in to change notification settings - Fork 0
Requirements
Dylan Johnson edited this page Oct 12, 2024
·
96 revisions
| 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 |