Просто о сложном: как написать спецификацию за 5 шагов
Представим, что вы планируете разработать большой проект: сайт, блог или приложение. Чего вы боитесь как заказчик? Что подрядчик пообещает золотые горы, возьмёт деньги, но не сделает, что вы хотели. А как подрядчик? Что в начале работы вас попросят сделать одно, а в процессе — всё переделать (причём раз десять), в итоге вы потратите кучу времени и уйдёте в минус.
Проект большой, поэтому надо принять меры. И поможет в этом спецификация (в простонародье — спека). В этой статье я расскажу, как готовить спецификацию к масштабному проекту, на примере нашей недавней работы с крупным клиентом.
Что такое спецификация?
Спецификация — это документ с набором требований, которым должен соответствовать разрабатываемый продукт. Весомый плюс этого документа в том, что он сэкономит вам время разработки и гарантирует спокойствие при согласовании.
Спека похожа на список продуктов перед походом в магазин. Запишите и структурируйте всё, чтобы не забыть «купить». Это по сути договор между вами и заказчиком, который регулирует объём будущих выполненных работ.
Подготовку спецификации можно разделить на пять шагов.
1. Закрытая или открытая?
Открытая спецификация описывает требования к исполнению, но не указывает, как эти требования должны быть достигнуты. Такой формат удобен исполнителю: он получает свободу выбора рабочих инструментов в течение всего процесса и не скован непреложными истинами, от которых не сделать потом шаг в сторону.
Закрытая спецификация описывает не только способы достижения требований, но и инструменты или технологии, которые нужно использовать при создании продукта. У закрытой спецификации больше плюсов для заказчика: он заранее согласовывает путь разработки, поэтому для него такой подход более прозрачный.
Есть и средний вариант: полузакрытая спека (обычно заказчики и исполнители договариваются именно на такой компромисс). Вы описываете инструменты разработки только там, где их можно определить заранее, до начала работ.
2. Содержание
По структуре спецификация похожа на дипломную работу: элементы вроде содержания, введения или списка источников точно напомнят о студенческих временах.
С содержанием всё довольно просто: в него можно перенести примерный план задач от заказчика — то, что вам надо сделать. А чтобы понять, как это сделать, созвонитесь со специалистами и добавьте их комментарии к плану.
Ну и какая дипломная работа спецификация без титульного листа! Добавьте на него заголовок и дату публикации.
3. Разделы
Спецификация должна быть такой, чтобы любой открывший её сразу понял, что и как нужно делать. Вот обязательные разделы: они понадобятся при описании любого проекта. Их можно пополнить подразделами, если нужно.
- Введение
- Обзор: цель спецификации.
- Объём проекта: краткое описание проекта.
- Глоссарий: расшифровка терминов.
- Ссылки: список источников.
- Обзор продукта: краткое описание каждого раздела
- Общее описание
- Системная среда: общее описание, при помощи каких инструментов будет реализован функционал продукта.
- Спецификация функциональных требований: подробное описание, из чего состоит продукт. Если вы создаёте сайт, здесь будет подробное описание всех его страниц, хедера, футера и так далее.
- Технические требования
- Требования к интерфейсу: общее описание требований к возможностям интерфейса проекта. Если продолжать пример с сайтом, то в этом разделе можно указать домен, на котором он будет размещаться, место хранения базы данных и используемые API.
- Функциональные требования: описание того, как должна работать система со стороны пользователя. Здесь, например, можно описать карту сайта, работу пагинации, RSS и счётчики аналитики.
- Нефункциональные требования: описание того, что нужно сделать, чтобы реализовать функциональные требования. Так сказать, начинка продукта. К примеру, описание страниц ошибок, навигации по сайту, требования к производительности и безопасности данных.
О последних двух подпунктах расскажу подробнее.
4. Функциональные и нефункциональные требования
Это основная и самая подробная часть спецификации. Ей нужно уделить особое внимание, но сначала давайте разберёмся, в чём разница между этими требованиями.
Функциональные требования — то, как должна вести себя система, чтобы удовлетворить ожидания пользователя. В нашем проекте одной из функций была строка поиска. В её поведение закладывалось ранжирование результатов в хронологическом порядке. А если ничего не найдено, то пользователь получает рекомендацию изменить запрос.
В то время как функциональные требования определяют, что делает система, нефункциональные требования описывают, как она это делает. Это свойства, которые система должна демонстрировать, или ограничения, которые она должна соблюдать. Например, веб-сайт не должен загружаться более 3 секунд.
Если продукт не соответствует нефункциональным требованиям, он продолжает выполнять основные функции, но не обеспечивает пользователю удобство.
5. Согласование
Для начала представьте себя заказчиком и прочитайте спецификацию его глазами. Скорректируйте текст, если в нём чего-то не хватает или есть слабые места.
Далее отдайте спеку заказчику на первую оценку. Возможно, согласование займёт несколько итераций, но это неотъемлемая часть работы.
Как только спека согласована, остаётся подписать её вместе с заказчиком и приступать к работе.
В сухом остатке
Информации было много, давайте закрепим:
- Открытая или закрытая спека? Первая даёт больше свободы подрядчику, вторая понятнее заказчику, но возможен и компромиссный полузакрытый вариант.
- Титульный лист и содержание. Готовим драфт, чтобы было куда накидать «мясо».
- Описание всех разделов. Заполняем каждый раздел из содержания.
- Требования клиента. Делятся на функциональные (что система должна делать) и нефункциональные (как она должна это делать).
- Согласование. Перед отправкой заказчику прочитайте спецификацию его глазами: всё ли понятно?
Спецификация может показаться сложным документом, но без неё будет намного сложнее в самой разработке. А чтобы вам было полегче, скачайте через форму ниже готовый шаблон 🙂