Lo sviluppo di software è complesso e ricco di sfaccettature. Prodotti di successo esigono una guida per l'utente che sia intuitiva e chiara, applicazioni stabili e prive di inutili appesantimenti, un trattamento sicuro e preciso delle diverse funzionalità connesse al sistema. Esigono inoltre driver studiati ad hoc, in grado di garantire una comunicazione su misura con il proprio hardware ottimizzando le risorse del sistema.