-
Notifications
You must be signed in to change notification settings - Fork 0
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 |