Maemo quality consideration

Quality Considerations
The maemo developer needs to take care many details when developing a good quality
application for an embedded device. Compared to the desktop Linux, a developer needs
to be more careful with performance, resource usage, power consumption, security and
usability issues. The Quality Awareness project[64] provides a generic test plan for
developers to help them to create a good quality software.
10.1 Performance and Responsiveness
The user wants to be in control: the device must be responsive at all times and give
appropriate feedback. The UI responsiveness can be achieved e.g. in the three following
ways: First, using process events by showing a banner and blocking the UI while
operating. Second option would be to slice the operation into parts while updating e.g.
a progress bar. Thirdly, threading can be achieved with the help of GLib but this is increasingly
hard to implement and debug. For time consuming tasks the second option
is recommended. If the operation takes only a second or two, the first option can also
be used.
As other general guidelines, CPU over usage must naturally be avoided. This goes
also for completely redundant operations such as unnecessary screen updates. Also,
when an application is not visible, it should be inactive to prevent it from slowing
down the application user is currently interacting with.
10.2 Resource Usage
Resource usage has to be taken into account with maemo applications very carefully,
because if an application takes up too much resources, it cannot be used. The resources
that are scarce are RAM, flash, network bandwidth, file descriptors and IO bandwidth.
Also besides base memory usage also memory leaks must be naturally avoided. There
are tools such as Valgrind[76] to help detecting possible memory leaks.
10.3 Power consumption
The device is not usable if user needs to recharge it all the time or if it runs out of
battery while idle. Therefore, no polling or busy looping should be used anywhere.

Instead, an event based approach like GTK’s main loop is a better alternative. Also,
too frequent timers or timeouts are to be avoided.
10.4 Secure Software Design
Quality and robustness together produce secure software. A document[67] describing
secure software design on maemo platform will give details about creating secure
software and the specific issues on mobile platforms.

No comments: