Эти различные определения указывают на необходимость более чёткого определения онтологических предпосылок, лежащих в основе инженерии требований. Для целей данной статьи я предполагаю, что в рамках проекта по разработке программного обеспечения создается артефакт, называемый объектом проектирования (design objects) и имеющий свойства, также называемые характеристиками (features). Участники проекта или заинтересованные стороны могут предъявить объекту проектирования одну или несколько целей — утверждений о желаемом, описывающих изменения в среде, которые должен произвести объект проектирования.
Требование — это характеристика объекта проектирования, необходимая для достижения цели. (Хотя это нетрадиционный способ определить требования, он значительно упрощает объяснение двух проблем, рассматриваемых ниже, которые не зависят от этого конкретного определения). Например, предположим, что команда разработчиков проектирует веб-сайт (объект проектирования) для продажи фотоаппаратов через интернет (цель). Сайт будет иметь много особенностей (например, выделение названия магазина жирным шрифтом), которые не вносят существенного вклада в достижение цели. Однако другие функции (например, корзина для покупок) могут быть необходимыми условиями для достижения цели — эти необходимые характеристики являются требованиями. Более точно, если задана цель g, то набор требований Rg можно определить как набор всех характеристик, необходимых объекту проектирования для достижения цели g. В рамках данной статьи я не делаю различий между требованиями ранней и поздней стадии [16], жёсткими/функциональными и мягкими/нефункциональными требованиями [15] или требованиями и ограничениями [17].