Documentation: Non‐functional requirements - 0mp/io-touchpad GitHub Wiki
Definitions
command
Every symbol has its command. When a symbol is detected a related command is executed by the app. Commands are just shell commands like touch
, mkdir
or firefox
.
symbol
A symbol is what the user can draw on a touchpad. When a symbol is drawn the app learns, recognizes or ignores it - the app's behaviour depends whether the symbol is known to the app or not.
Non‐functional requirements
Efficiency
- The app should have a reasonable CPU usage. Reasonable means that the app should occupy not more than 50% of the CPU time on Hasee Q540S running BunsenLabs Hydrogen (i386) GNU/Linux.
At the moment it occupies around 100% of the CPU; it does not freeze the system however.
Portability
- The app should work on most GNU/Linux distributions because it uses the
linux/input.h
header.
At the moment every release is tested on:- Ubuntu 15.10 (64-bit) GNU/Linux;
- BunsenLabs Hydrogen (i386) GNU/Linux.
- The app requires a touchpad to be present on the machine. The behaviour is undefined if there is no touchpad available on the work station.
Reliability
- The app should be able to have the response time under 3 seconds when running along a modern web browser like Firefox and a few terminal emulators.
Usability
- The app should correctly recognise the drawn symbol in 90% of time.
Programming guidelines
Extensibility
- The code should be structured in such a way that it is possible to add new features. The possible modifications which could be quite easily added to the project at the moment are:
- GUI;
- The possibility to modify the commands assigned to symbols.
Testability
- The Python modules can be tested with the
pytest
unit tests. - The code coverage should be above 90%.
Understandability
- The code should be splitted into modules.
- The code should be well documented. We follow the Google Style Python Docstrings guidelines as our preferred style of documenting the code.