Рекомендация: Написание хороших требований
Руководство описывает способы написания хороших требований.
Взаимосвязи
Связанные элементы
Основное описание

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

Так Вы можете анализировать требование с грамматической точки зрения. К примеру:

Служащий, принимающий заказы должен иметь возможность обрабатывать 10 заказов клиентов меньше чем за два часа.

У этого требования есть подлежащее (служащий, принимающий заказы, он же Пользователь), определенное и измеримое конечное состояние (10 завершенных заказов клиентов), и критерий производительности (меньше чем за два часа).

В требованиях касательно заинтересованных лиц, использование глагольной формы «должен иметь возможность» дает понять, что требование определяет что-то, что заинтересованное лицо должно иметь возможность сделать, но не (обязательно) обязано делать. В системных требованиях, глагольная форма «должен <действие>» дает понять, что система должна произвести это действие при определенных условиях.

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

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

Ниже приведены простые инструкции, которые помогут Вам писать требования более эффективно. В целях сохранения последовательности все примеры рассматриваются в контексте самолета [TEL06]

  • Определяйте одно требование за один раз. На пример:

    Пилот должен иметь возможность управлять углом набора высоты одной рукой.

Пилот должен иметь возможность чувствовать угол подъема по положению рукоятки подъема.

  • Избегайте союзов (и, или), которые множат требования. К примеру, используйте:

Штурман должен иметь возможность видеть положение самолета относительно маршрутных радиомаяков.

Штурман должен иметь возможность видеть положение самолета по системе инерциального наведения.

вместо:

Штурман должен иметь возможность видеть положение самолета относительно маршрутных радиомаяков или по системе инерциального наведения.

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

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

  • Система должна быть способна выдавать до 125% мощности первые 15 минут в случае экстренной необходимости.

  • Система должна выдавать минимум 90% мощности в течении не менее 15 минут следующих за первыми 15 минутами экстренного использования.
  • Система должна инициировать исключение понижения мощности если при экстренном использовании не обеспечивается минимум 95% мощности.
  • вместо:
  • Система должна производить максимальную мощность всегда, исключая экстренные случаи, когда она должна быть способна выдать до 125% мощности если экстренное использование не превышает 15 минут, в случае чего мощность может снизиться до 105%, но при достижении 95%, тогда система должна инициировать исключение понижения мощности и обеспечить мощность в пределах 10% от указанных значений минимум в течении 30 минут.
  • Используйте простые, прямые предложения.
  • Пилот должен иметь возможность видеть индикатор скорости.

  • Используйте как можно больше простых, обычных слов, особенно для международной аудитории, которая заботится о точности перевода.

    Авиакомпания должна иметь возможность изменить самолета из «для бизнес рейсов» в «для отдыха» за 12 часов.

  • Внимание: Не стоит использовать такие слова как переконфигурировать.

  • Определяйте для каждого требования тип пользователей, которым оно предназначено.
  • Штурман должен иметь возможность...

  • Концентрируйтесь на описании результата, который Вы предоставляете для этого типа пользователей.
  • ...видеть штормовые облака на радаре...

  • Определяйте критерии поддающиеся верификации

    ...как минимум на расстоянии в 100 миль.

  • Используйте подлежит согласованию (ПС) для обозначения требования, которое вероятнее всего будет изменено или еще не определено. Это поможет определить неучтенную работу. К примеру:

    Самолет должен иметь возможность безопасно приземляться на посадочные полосы длиной в 1000 метров (ПС).

  • Используйте подлежит уточнению (ПУ), когда известно, что определенное требование понадобится, но подробности еще неизвестны (так называемые «известные неизвестные»). Это также поможет определить  неучтенную работу.

    Самолет должен иметь возможность безопасно приземляться на посадочные полосы минимальной длины ПУ метров.