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