Atunci când se proiectează un produs software, este esențial să se țină cont de utilizatorii finali ai produsului, de performanță, de securitate, dar și de ușurința de utilizare și de înțelegere. De asemenea, este important să se ia în considerare posibilele integrări și să se proiecteze produsul în așa fel încât să ofere flexibilitate pentru dezvoltări viitoare.