Existuje mnoho aspektů, které je třeba zvážit při návrhu softwaru. Důležitost každého z nich by se měla odrážet v dosaženém výsledku softwaru. Některé z těchto aspektů jsou: