В табл. 27.1 приведены свойства, которым должны удовлетворять спецификации требований. При этом описывается только внешнее поведение. Каждое требование выражается в виде ответа на вопрос "Что?". Таким образом определяются ограничения. И определяются они в количественном виде. На сколько посещений в день рассчитана страница? Каков максимальный размер страницы? Какова максимальная глубина страницы? Спецификация требований должна разрабатываться с таким расчетом, чтобы впоследствии ее можно было легко изменить. Несмотря на то что для ее описания необходимо использовать естественный язык, не следует увлекаться слишком длинными описаниями. Обязательно пронумеруйте разделы документа и по необходимости пользуйтесь диаграммами. Это должен быть документ, который бы помог будущему программисту узнать о создаваемой им системе как можно больше. И не удивляйтесь, если месяцев через шесть таким программистом станете вы сами.
Требования должны уделять внимание всему циклу жизни системы. Если одним из требований к системе является условие восстановления системы после катастрофического краха за один час - обязательно зафиксируйте это в спецификации. Естественным выводом из этого является то, что необходимо четкое определение, каким образом система должна обрабатывать такие нештатные ситуации, как неправильный ввод пользователя. Некоторые системы просто игнорируют пользовательский ввод, который они не понимают. Скажите, пожалуйста, сколько раз вы видели сообщение об ошибке "404 Document Not Found"? Совсем неплохо, если страница включает ссылку на начальную страницу Web-узла.
| Таблица 27.1. Спецификация требований к системе_|
Определяет только внешнее поведение системы Определяет ограничения Допускает небольшую модификацию
Служит справочным руководством для разработчиков системы Дает проектные оценки жизненного цикла системы Характеризует приемлемые ответы на нежелательные события
Следуя этим указаниям, можно обратиться к табл. 27.2, в которой определена структура спецификации требований. Обзорная часть должна занимать не больше одной страницы описания целей, которые ставятся перед Web-узлом. Если цели детализируются в других документах, сделайте эти документы доступными. Необходимо придерживаться основной буквы проекта, а требования должны основываться на целях. Но возможность ссылки на первоначальные цели системы могут помочь проектировщику и конструктору.
Рабочая среда и среда разработки иногда рассматриваются в спецификациях требований. Они включают браузер и Web-сервер. При разработке intranet-приложения задача упрощается: можно производить оптимизацию под конкретную версию браузера. Опыт показывает, что в различных компаниях могут применяться различные стандартные браузеры. Наиболее популярные браузеры постепенно приближаются к единому стандарту, поэтому это уже не является такой насущной проблемой. 
I Таблица 27.2. Структура документа со спецификациями требований_|
Обзор целей системы Рабочая среда и среда разработки Внешние интерфейсы и потоки данных Функциональные требования Требования к производительности Обработка исключительных ситуаций Приоритеты реализации Предполагаемые модификации Советы по проектированию
Возможно, что Web-сервер находится под большим контролем и, конечно, менее чувствителен к различиям в исходном коде. При использовании PHP вы, скорее всего, воспользуетесь возможностями Web-сервера Apache. В качестве среды разработки и функционирования лучше всего использовать одни и те же версии Web-сервера Apache и PHP.
В большинстве случаев перечень внешних интерфейсов включает соединение через Internet между браузером и Web-сервером, локальную файловую систему и, вероятно, соединение с базой данных. Мне представляется наглядным использование диаграмм для отображения связей между элементами базы данных, простейшим случаем которой является квадрат, обозначенный как "Браузер", соединенный с квадратом, обозначенным как "Сервер". Эта линия должна снабжаться стрелками в обоих направлениях, отражая тот факт, что информация перемещается в обоих направлениях. Эта диаграмма является описанием содержимого, а не проектом структуры данных. Тот факт, что в проекте используется база данных, является очевидным, но какая это должна быть база данных, может быть еще не определено. Если система будет хранить данные каким-то образом, на этом этапе можно отобразить поток данных в квадрат, который может быть как базой данных, так и текстовым файлом. Цель заключается в описании движения данных в системе.