The Mousetrap Requirements are based on a subset of the IEEE 830 IEEE Recommended Practice for Software Requirements Specifications
- 1. Introduction
- Overall Description
3 Specific Requirements
- 3.2.1 Start Up MouseTrap
- 3.2.2 Follow Tracking Feature
- 3.2.3 Camera Preferences
- 3.2.4 Cursor Movement
- 3.2.5 Usage Features
- 3.2.6 Close MouseTrap
- 3.4 Logical Database Requirements
- 3.5 Design Constraints
- 3.6 Standards Compliance
- 3.7 Software System Attributes
The purpose of the Software Requirements Specification Document is to provide the requirements of the MouseTrap system. This document describes the desired behaviors of the system and discusses how MouseTrap performs.
MouseTrap is a GNOME Accessibility tool that aids users with disabilities. MouseTrap tracks the user using a web camera, and moves the cursor accordingly. Additionally MouseTrap allows the user to blink either eye to simulate mouse clicks. MouseTrap is designed to allow users who can’t operate a hardware mouse to still be able to interface with the computer.
1.3 Definitions, Acronyms, and Abbreviations
GNOME – A free and open source graphical user interface that runs on top of a computer’s operating system. GNOME is used on various Linux operating systems. GNOME Accessibility - The suite of software services and support in GNOME that allows people with disabilities to utilize all of the functionality of the GNOME user environment.
"Gnome MouseTrap." Foss2Serve. N.p., n.d. Web. 12 Sept. 2013. <http://www.foss2serve.org/index.php/Gnome_MouseTrap>.
"User Interface Guidelines for Supporting Accessibility." GNOME Accessibility Developers Guide. N.p., n.d. Web. 12 Sept. 2013. <https://developer.gnome.org/accessibility-devel-guide/3.8/gad-ui-guidelines.html.en>.
This document contains two additional sections. Section 2, “Overall Description”, provides a high-level overview of MouseTrap's functions, users, and constraints. Section 3, “Specific Requirements”, provides detailed descriptions of MouseTrap's functionality and interfaces.
2.1 Product Perspective
2.2 Product Functions
- Track the user’s forehead with a web camera.
- Move the cursor based on the movement of the user’s head.
- Display an interface to allow the user to see what the camera is tracking.
- Allow the user to change preferences of how the cursor will move.
- Hold: Interprets head movements as joystick movements.
- Screen: Interprets head movements as real mouse movements.
- Drag-Drop: Allows the user to drag the mouse pointer and drop it in a different position either horizontally or vertically.
Allow user to change general MouseTrap preferences.
- Select Camera
- Select Tracking Feature
- Toggle Self View
- Toggle Point Mapper
- Flip Image
- Enable Checking of CPU Usage
- Enable Recalculation of Location on Tracking Feature
- Set Debugging Level
- Set Cursor Speed
2.3 User Characteristics
Mousetrap is being developed specifically for users who have little or no ability to move their arms. It is assumed that users with little arm mobility are still unable to operate a mouse and keyboard correctly. The users can only interact with the system through the use of head movement. This requires the user to have good control of their head movements.
Examples of Disabilities:
- Spinal Cord Injury/Paralysis
- Double Arm Amputee
- Cerebral Palsy
MouseTrap is being developed in compliance with the GNOME User Interface Guidelines for Supporting Accessibility. MouseTrap must be developed and operated on a Linux OS. Mousetrap can also use nothing but data gathered from the webcam to aid the user.
2.5 Assumptions and Dependencies
2.6 Apportioning of Requirements
The first requirement that needs to be addressed is ensuring that MouseTrap tracks the user’s forehead correctly. The following requirement will be enabling cursor functionality. Finally, after both tracking and cursor movement are operational, additional features and preferences will be implemented. Currently, the project is still being worked on and is not ready for end user distribution.
3 Specific Requirements
3.2.1 Start Up MouseTrap
Input Run mousetrap from the command line
Action The program will boot
Output The MouseTrap window appears on screen and is now ready for use
3.2.2 Follow Tracking Feature
Input User moves or turns their head in a specific direction
Action The camera will track the user's head movement
Output The cursor will follow user's head movement with regard to the selected cursor movement scheme
3.2.3 Camera Preferences
22.214.171.124 Select Camera
Input User selects their primary camera to use for tracking
Action The system will access the selected camera
Output The selected camera will display the image it sees
126.96.36.199 Select Tracking Method
Input User selects a method of head tracking
Action The system will follow the user's head according to the selected tracking method
Output The camera will follow either the user's head movement around the screen or the rotation of a stationary head
188.8.131.52 Toggle Self-View
Input The user clicks on the self-view box to turn the self-view window on or off
Action The system switches between having self-view on or off
Output If self-view is turned on, it will be visible. If self-view is turned off, it will be invisible
184.108.40.206 Flip Camera Image Orientation
Input The user clicks on the flip image box to flip the orientation of the camera image
Action The system changes the image by flipping it 180 degrees
Output If the box is unchecked, the image will be a mirror image. If the box is checked, the image will be flipped 180 degrees.
220.127.116.11 Tracking Recalculation of User's Head
Input The user clicks the box labeled "Recalc"
Action The system will allow for the recalculation of the tracking feature
Output A button labeled "Recalculate" will appear on the user's screen and when clicked, it will cause MouseTrap's tracking feature to re-identify the user's head
18.104.22.168 Set Debugging Level
Input The user clicks on the "+" or "-" icon to increase or decrease debugging level.(10-50 with 10 being the lowest level)
Action The system increases or decreases the debugging level
Output After clicking apply, the debugging level is changed to the value set
22.214.171.124 Set Cursor Sensitivity
Input The user clicks on the "+" or "-" icon to increase or decrease the cursor sensitivity(0-15 with 0 being the slowest sensitivity)
Action The system increases or decreases the sensitivity that the mouse moves across the screen in relation to the users head movement. The higher integer selected the faster the mouse will move, zero is the default.
Output After clicking apply, the cursor sensitivity is adjusted.
126.96.36.199 Access Help Manual
Input The user clicks on the "Help" button on the main user interface screen.
Action A new "Help" window is displayed
Output The help menu will be displayed with documentation detailing how to use MouseTrap and what particular buttons within the application do.
188.8.131.52 Toggle Face Outline
Input The user selects the Face Outline option on the main ui screen.
Action System draws face outline rectangle if not present. If present, system removes face outline rectangle.
Output If the face outline is visible, it becomes invisible. If the face outline is invisible, it becomes visible.
3.2.4 Cursor Movement
184.108.40.206 Select Cursor Movement Method
Input User checks a box, which is specified with Screen, Joystick, and Drag and Drop on the UI, to select a movement method
Action System checks which box is selected and allows mouse movement accordingly
Output The mouse will move via: Screen, Direction of Head Movement (Joystick), or Drag and Drop
220.127.116.11 Move Cursor -Screen
Input User moves their head
Action Cursor follows how and where their head moves
Output Cursor is in position relative to where the users head is
18.104.22.168 Move Cursor - Joystick
Input User moves their head
Action Cursor moves in the direction the user's head has moved
Output While head is not at origin, cursor continues moving in the direction the head has moved
22.214.171.124 Move Cursor – Drag and Drop
Input User moves their head
Action Cursor moves in the direction the user's head has moved. When movement stops, system selects whatever item there is at that point, then waits for more movement and another pause to drop item.
Output Either the item is grabbed, or dropped
126.96.36.199 Click Left Mouse
Input The user blinks their left eye
Action The system left clicks on whatever the mouse cursor is currently hovering over
Output The appropriate action occurs related to whatever was clicked on
188.8.131.52 Click Right Mouse
Input The user blinks their right eye
Action The system right clicks on whatever the mouse cursor is currently hovering over
Output A context menu is brought up related to whatever the mouse was hovered over
184.108.40.206 Scroll Cursor
Action The system goes into "Scroll" mode.
Output The window currently under the cursor is scrolled rather than allowing for cursor movement
220.127.116.11 Click Drag and Drop Cursor
Input The user blinks both eyes, moves their head, and blinks both eyes again
Action The system goes into "drag and drop mode"
Output Widget under cursor for first user blink is moved to location of second user blink where it remains
3.2.5 Usage Features
18.104.22.168 Check CPU Usage
Input The user has enabled the CPU usage display
Action The system continually calculates the CPU percentage that it takes to run MouseTrap
Output The CPU percentage that it takes to run MouseTrap is displayed on the left side of the main menu screen
22.214.171.124 Recalculate Face Location of the Tracking Feature
Input User selects the button labeled Recalculate
Action The system will recalculate the position of the users face using the Tracking Feature in MouseTrap
Output The Tracking Feature will set new coordinates of the users face to use while calculating their position
3.2.6 Close MouseTrap
Input The user selects the exit option
Action The program is closed
Output There will be a prompt asking the user when they would like MouseTrap to reopen before terminating
3.4 Logical Database Requirements
MouseTrap will not utilize a database
3.5 Design Constraints
No particular design constraint requirements have been identified
3.6 Standards Compliance
In following with the GNOME User Interface Guidelines for Supporting Accessibility, mouse controls will be limited to one button, all mouse actions will be reversible, and the drag-and-drop control option will be accompanied with visual cues for the user to discern whether their desired action is valid or invalid.
3.7 Software System Attributes
MouseTrap has many key attributes including: security, reliability, and maintainability.
Security – MouseTrap must insure that no other applications can utilize the web camera feed while MouseTrap is running. It is important to prevent another application from using the web camera image for any reason.
Reliability – MouseTrap must work properly every time. Since MouseTrap will be the main interface for the user with disabilities to access the computer, it is important that it functions every time the user runs it. MouseTrap should maintain a 95% or higher uptime.
Maintainability – As system changes occur, MouseTrap must stay maintainable. Since MouseTrap must interface with GNOME, it is essential that updates to MouseTrap can occur as needed, without causing any downtime for the user.