Modern software development is very complex and there are many aspects to it which have to be taken into consideration. In order to be successful, products must be provided with an intuitive and clear user’s guide, they need to have stable applications without useless encumbrance, they have to deal exactly and safely with the low-level functionalities and they need sophisticated and resource-saving drivers to communicate with proprietary hardware.