Существует две основные категории нефункциональных требований: внешние и внутренние. Внешние (или качественные) требования определяют свойства системы, заметные пользователям, например производительность, безопасность, удобство использования. Внутренние требования связаны с техническими аспектами реализации, такими как масштабируемость, поддерживаемость, расширяемость. Отличие заключается в том, что внешние требования фокусируются на пользовательском опыте, а внутренние — на архитектуре и техническом обслуживании системы.