Требования на разработку ПО

Основные группы требований на разработку ПО

Существует классическое разделение на три уровня требований:

  • Бизнес требования
  • Пользовательские требования
  • Проектные требования

Эти требования обрабатывает бизнес-аналитик, для этого он должен напрямую общаться с пользователями и заказчиками софта.

Бизнес требования

Это требования которые, бизнес хочет удовлетворить в результате разработки программного обеспечения. Обычно эти требования выражаются в виде задач и целей (вспоминаем про тактическое и стратегическое планирование). Не видел программистов, которые бы вникали в бизнес требования, с ними в основном работают аналитики и архитекторы. И это та еще головная боль, потому что сильно оторвана от технической стороны вопроса.

Пользовательские требования

Это то что от системы хотят получить пользователи. Они выражаются в вариантах использования и пользовательских историях. Тут надо не путать с "вариантами использования", которые есть в чистой архитектуре Роберта Мартина, там это чисто технические решения, здесь это описание взаимодействия действующего лица и системы. Пользовательские истории в обязательном порядке доводятся до программистов, так как это способствует погружению в задачу и обеспечивает лучшее понимание проблемы.

Проектные требования

Это те самые функциональные и нефункциональные требования, которые предъявляются непосредственно к разрабатываемому софту. Чтобы не запутаться нужно помнить, что функциональные требования - это требования, которые описывают поведение системы и обычно начинаются со слова "должен" или "должна". Нефункциональные требования описывают свойства системы, и обычно их называют "-илити свойства" (contrability, scalability и т.д.).

Так же функциональные и нефункциональные требования могут быть сделаны на уровне "частных решений", которые разрабатывают архитекторы, работающие на уровне кода или сами программисты. Там немного другие особенности, так к нефункциональным требованиям удобно относить инфраструктурные зависимости, которые неудобно содержать в функциональной части, так как это нарушает уровни абстракции, использующиеся в проектировании.

мысли #теория