Printre cele mai importante aspecte care trebuie luate în considerare sunt: cerințele funcționale ale sistemului, cerințele non-funcționale (de exemplu, performanța, securitatea, scalabilitatea), procesele de dezvoltare și gestionare a proiectului, arhitectura sistemului și tehnologiele folosite.