Требования к требованиям, или свойства качественных требований



Полнота. Требование содержит всю необходимую информацию, ничто не пропущено по соображениям «это и так всем понятно».



⛔️ Типичные проблемы:

«пароли должны храниться в зашифрованном виде» - каков алгоритм шифрования?

«экспорт осуществляется в форматы PDF, PNG и т.д.» — что мы должны понимать под «и т.д.»?

«см. выше» вместо «см. раздел 123.45.b»



Атомарность. Требование описывает одну ситуацию и не может быть разбито на части без потери смысла.



⛔️ Типичные проблемы:

«кнопка “Restart” не должна отображаться при остановленном сервисе, окно “Log” должно вмещать не менее 20-ти записей о последних действиях пользователя» — в одном предложении описаны разные элементы интерфейса в разных контекстах

«если пользователь подтверждает заказ и редактирует заказ или откладывает заказ, должен выдаваться запрос на оплату» — описаны три разных случая, и это требование стоит разбить на три отдельных во избежание путаницы

«когда пользователь входит в систему, ему должно отображаться приветствие; когда пользователь вошел в систему, должно отображаться имя пользователя; когда пользователь выходит из системы, должно отображаться прощание» — все три ситуации должны быть описаны отдельно и более детально



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



⛔️ Типичные проблемы:

«после успешного входа в систему пользователя, не имеющего права входить в систему…» — тогда как он успешно вошёл в систему, если не имел такого права?

Противоречия между двумя и более требованиями, между таблицей и текстом, рисунком и текстом, требованием и прототипом и т.д. (например: «712.a Кнопка “Close” всегда должна быть красной» и «36452.x Кнопка “Close” всегда должна быть синей»



Недвусмысленность. Требование формулируется ясно и однозначно, без использования жаргона, аббревиатур или расплывчатых выражений. Старайтесь избегать таких слов, как: много, мало, часто, редко, эффективно, большой, быстро, легко, несколько…



⛔️ Типичные проблемы:

Использование терминов или фраз, допускающих субъективное толкование: «приложение должно поддерживать передачу больших объемов данных» — насколько больших?

«В случае необходимости оптимизации передачи больших файлов система должна эффективно использовать минимум оперативной памяти, если это возможно»



Выполнимость. Требование должно быть реализуемым в рамках бюджета и сроков разработки проекта.



⛔️ Типичные проблемы:

«система поиска должна заранее предусматривать все возможные варианты поисковых запросов и кэшировать их результаты»

«анализ договоров должен выполняться с применением искусственного интеллекта, который будет выносить однозначное корректное заключение о степени выгоды от заключения договора»



Актуальность. Требование необходимо для успеха проекта и соответствует текущим условиям. Требование имеет приоритет, например, по MoSCoW.



⛔️ Типичные проблемы:

Требование было добавлено «на всякий случай», хотя реальной потребности в нём нет

Ошибки приоритета требования

Требование устарело



Прослеживаемость. Требования должны иметь атрибуты, позволяющие осуществлять трассировку требований и вносить изменения. Например: номер/ID, приоритет, владельца, ответственного



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



⛔️ Типичные проблемы:

плохое оформление и ошибки в тексте;

слишком глубокая детализация требования на уровне бизнес-требований или недостаточная детализация на уровне требований к продукту);

«пользователь должен быть в состоянии отправить сообщение» — увы, мы не можем влиять на пользователя

«в случае, если разрешение окна составляет менее 800x600…» — разрешение есть у экрана, у окна есть размер



📎 Статьи по теме

1. Требования (Requirements) — QA_Bible

2. Критерии качества требований — Наталья Чаусова

3. О критериях качества требований

— Art of Business Analysis



📄 Документы

Стандарт IEEE 830-1998 (SRS) на русском



#требования