При формировании требований следует использовать следующие принципы и характеристики, которые отличают хорошие требования от неудачных. К этим характеристикам относятся следующие:
- недвусмысленность. Должен существовать только один способ интерпретации требований.
- тестируемость. Специалисты по тестированию должны иметь возможность проверить, насколько корректно было реализовано требование, т.е. требование должно быть пригодно для тестирования. Следующие слова могут сделать требование непригодным для тестирования:
- прилагательные (устойчивый, безопасный, точный, дружелюбный, адекватный, соответствующий и т.д.).
- наречия и фразы с ними (быстро, своевременно и т.д.).
- неспецифические слова и акронимы (и т.д., и.т.п., прочее, и/или и др.)
- ясность (точность и простота), т.е. требования не должны содержать выражений, которые не требуются для понимания их сути или вообще не относятся к данному контексту.
- корректность. Требование должно содержать факты, которые должны быть достоверны.
- понятность, лингвистическая корректность. Требования должны быть лексически и синтаксически верны, написаны в корректном стиле на основе определенных соглашений принятых в предметной области. Данная характеристика предполагает что слова «можно, возможно» будут переведены в слова «должен, обязан».
- правдоподобность (выполняемость), т.е. требование должно быть выполнено в рамках существующих ограничений, например как деньги, время, кадры.
- независимость, т.е. для того чтобы понять какое-либо требование не должно быть необходимости знать какое-либо еще требование.
- элементарность, т.е. требование должно содержать отдельный элемент, для которого возможно отслеживание связей в пирамиде требований (связь с проверяемостью).
- необходимость. Требование должно быть необходимо для рассмотрения системы. Проверить необходимость требования можно следующим способами:
- определить заинтересованное лицо, которому необходимо требование. Если таковое не нашлось, то требование не нужно.
- в случае, если удаление требования не влияет на систему.
- независимость от реализации (абстрактность). Требование не должно содержать избыточной информации о дизайне, аппаратной платформе, если от этого не зависит работа системы.
- постоянство, т.е. между требованиями не должно быть конфликтов, которые возникают когда ожидается различное поведение системы в одной и той же ситуации.
- немногословность. Каждое требование должно быть обозначено только 1 раз и не должно перекрываться другими требованиями.
- завершенность. Требование должно быть описано для всех возможных условий.
Процесс управления требованиями.
Подразумевает управление следующими итерациями, которые могут повторяться:
- Формирование плана управления требованиями.
- Сбор требования.
- Разработка концепции управлений требованиями.
- Создание сценариев использования (обычно с использованием UML).
- Создание дополнительных описаний.
- Создание тестовых сценариев на основе сценариев использования.
- Создание тестовых сценариев на основе дополнительных описаний.
- Проектирование системы с использованием UML (разработка диаграммы классов, диаграммы взаимодействий и др.).