Требование - это "условие или возможность, которым должна соответствовать система".
Существуют много разновидностей требований. Одна из классификаций требований называется моделью FURPS+ [GRA92], где FURPS - первые буквы названий категорий требований на английском языке.
Знак плюса "+" в аббревиатуре FURPS+ охватывает дополнительные категории требований:
(См. также [IEEE Std 610.12.1990].)
Эти категории и примеры нефункциональных требований можно рассматривать в качестве контрольного списка, проверяя по
этому списку, все ли виды требований к системе включены в описание. Но как создать полный список
нефункциональных требований? Вот некоторые возможные источники:
-
Описание системного подхода к формулировке набора требований с помощью FURPS+ приведено в статье
по Rational Edge "Capturing Architectural Requirements" Питера
Ильса (Peter Eeles) (http://www.ibm.com/developerworks/rational/library/4706.html).
В этой статье приведен список вопросов, относящихся к разнообразным нефункциональным требованиям, а также вопросы
по применимости этих требований.
-
В институте Software Engineering Institute был разработан каталог "общих сценариев" - формальных требований к
качеству программного обеспечения, применимых ко многим видам систем. Дополнительные сведения приведены в
публикации http://www.sei.cmu.edu/publications/documents/01.reports/01tr014.html и книге Software
Architecture in Practice, второе издание, написанной
Леном Бэссом (Len Bass), Полом Клементсом (Paul Clements) и Риком Кезменом (Rick Kazman) (Addison-Wesley,
2003).
Функциональные требования - это действия, которые система должна быть в состоянии выполнять без учета физических
ограничений. Эти действия чаще всего описывают с помощью модели
вариантов использования и вариантов
использования. Таким образом, функциональные требования описывают поведение системы на входе и на выходе.
Требования, перечисленные ниже и не относящиеся к набору функций системы, называют нефункциональными
требованиями. Существует множество нефункциональных требований, и все они относятся к характеристикам системы и
системной среды. Нефункциональные требования охватывают вопросы, подобные перечисленным ниже.
Функциональные требования относятся к следующим областям:
-
набор функций
-
возможности
-
защита
Требования к удобству работы охватывают следующие вопросы:
-
человеческий фактор
-
эстетика
-
последовательность пользовательского интерфейса
-
электронная и контекстная справочные системы
-
мастеры и агенты
-
пользовательская документация
-
учебные материалы
Требования к надежности охватывают следующие вопросы:
-
частота и серьезность сбоев
-
возможность восстановления
-
предсказуемость
-
точность
-
средняя продолжительность бесперебойной работы (MTBF)
Требования к производительности накладывают определенные условия на функциональные требования. Например, для
определенной операции можно задать следующие требования к производительности:
-
скорость выполнения
-
эффективность
-
коэффициент готовности
-
точность
-
пропускная способность
-
время отклика
-
время восстановления
-
используемые ресурсы
Требования к удобству поддержки охватывают следующие вопросы:
-
простота тестирования
-
простота расширения
-
простота адаптируемости
-
простота обслуживания
-
совместимость
-
простота настройки
-
простота обслуживания
-
простота установки
-
простота локализации
Требования к структуре проекта охватывают вопросы, относящиеся к структуре системы, и их часто называют
ограничениями на структуру модели.
Требования к реализации относятся к особенностям программирования и конструирования системы. Например:
-
соответствие стандартам
-
языки реализации
-
правила в отношении целостности баз данных
-
ограничения на ресурсы
-
рабочие среды
Требования к интерфейсу охватывают следующие вопросы:
-
внешние объекты, с которыми должна взаимодействовать система
-
ограничения на форматы, время ожидания и другие обстоятельства взаимодействия
Физические требования охватывают физические характеристики системы:
-
материалы
-
форма
-
габариты
-
вес
Эти требования могут применяться для описания особенностей аппаратного обеспечения, например необходимых сетевых
интерфейсов.
|