Software Requirements. Три уровня требований.

Есть на свете очень хорошая книга, которая называется “Software Requirements”. К сожалению, этой книги в переводе на русском еще нет. А тот что есть – относится к изданию десятилетней давности. Поэтому я решил публиковать самые интересные моменты из книги в своем блоге. С одной стороны – это нужно мне, чтобы упорядочить и не растерять полезную информацию из книги. С другой стороны – эти статьи могут оказаться очень полезными для читателей блога.

Пару слов о книге. Она посвящена сбору требований для разработки программного обеспечения. Это издание книги было полностью переработано, добавлены новые примеры и советы. Так же авторы добавили описание сбора требований для agile проектов. Книга ориентирована на разработчиков, менеджеров проектов и в первую очередь на бизнес-аналитиков.

Основная проблема неудачных проектов – несоответствие ожиданий клиента тому, какой продукт выпустила команда разработчиков. В результате появляются доработки и исправления, которые съедают время и деньги. По результатам исследований, ошибки выявленные на стадии разработки, позволяют сократить количество доработок на 40-60% [1].

Давайте определимся, с понятием “требование”.

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

Все требования можно условно разделить на 3 уровня: бизнес-требования, пользовательские требования и функциональные требования. И т.к. само слово “требование” – достаточно обширное понятие, то на каждом уровне требований используют уточняющую терминологию.

Уровень бизнес-требований

  • Бизнес-требования – описываются цели, которые организация надеется достичь при реализации проекта.  Обычно они исходят от заказчика. Сформулированные бизнес-требования позволяют определить границы будущего проекта.
  • Бизнес-правила – политика кампании, описание аспектов бизнеса, стандарты и положения.

Уровень пользовательских требований

  • Пользовательские требования – описывают задачи, которые должен решать создаваемый продукт (программа), а так же сценарии использования. Эти требования могут выражаться в виде вариантов использования (use case), пользовательских историй (user story) или сценариев взаимодействия (scenario).
  • Требования к качеству – не функциональные требования, которые описывают производительность и характеристики продукта.

Уровень функциональных требований

  • Функциональные требования – описывают поведение системы и действия, которые она должна будет выполнять. Попросту говоря, здесь содержится описание того, что разработчики должны реализовать, чтобы конечные пользователи могли выполнять свои задачи. Обычно они формулируются с использованием слова “должен”: “Система должна отправлять пользователю подтверждение о заказе” и т.п.
  • Системные требования – набор характеристик и модулей, подразумевающих оптимальную работу продукта.
  • Требования к интерфейсу – описание процесса взаимодействия пользователя с программой или устройством.
  • Ограничения – описание ограничений, которые накладываются на разработку программного обеспечения (например: юридические).

Взаимоотношения между всеми требованиями проще понять по следующей схеме:

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

Здесь под “документами” понимается не файл на компьютере (хотя и он может быть), а любые форматы хранения информации: Wiki, базы данных, набор файлов в определенной папке и т.п.

Благодарности.
Спасибо Наталье Юматовой за помощь в подготовке и написании поста.

Ссылки.
[1] Davis, Alan M. 2005. Just Enough Requirements Management: Where Software Development Meets Marketing. New York: Dorset House Publishing.

Чернов Дмитрий© chernov.pro