Как не облажаться в большом проекте + готовый шаблон спецификации

Представим, что вы планируете разработать большой проект: сайт, блог или приложение. Чего вы боитесь как заказчик? Что подрядчик пообещает золотые горы, возьмёт деньги, но не сделает, что вы хотели.

А как подрядчик? Что в начале работы вас попросят сделать одно, а в процессе — всё переделать (причём раз десять), в итоге вы потратите кучу времени и уйдёте в минус.

Как не облажаться в большом проекте + готовый шаблон спецификации

Проект большой, поэтому надо принять меры. И поможет в этом спецификация (в простонародье — спека). В этой статье я расскажу, как готовить спецификацию к масштабному проекту, на примере нашей недавней работы с крупным клиентом.

Что такое спецификация?

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

Спека похожа на список продуктов перед походом в магазин. Запишите и структурируйте всё, чтобы не забыть «купить». Это по сути договор между вами и заказчиком, который регулирует объём будущих выполненных работ.

Подготовку спецификации можно разделить на пять шагов.

1. Закрытая или открытая?

Открытая спецификация описывает требования к исполнению, но не указывает, как эти требования должны быть достигнуты. Такой формат удобен исполнителю: он свободен в выборе инструментов и в процессе может менять подходы.

Закрытая спецификация описывает не только способы достижения требований, но и инструменты/технологии, которые нужны при создании продукта. У закрытой спецификации больше плюсов для заказчика: весь процесс разработки становится прозрачным и более контролируемым.

Есть и средний вариант: полузакрытая спека (обычно заказчики и исполнители договариваются именно на такой компромисс). Вы описываете инструменты разработки только там, где их можно определить до начала работ.

2. Содержание

По структуре спецификация похожа на дипломную работу: элементы вроде содержания, введения или списка источников точно напомнят о студенческих временах.

С содержанием всё просто — укажите примерный план задач от заказчика, который надо сделать. А чтобы понять как это сделать, созвонитесь со специалистами и добавьте их комментарии к плану.

Как не облажаться в большом проекте + готовый шаблон спецификации

Ну и какая спецификация без титульного листа! Добавьте на него заголовок и дату публикации — и всё, титульник готов.

3. Разделы

Спецификация должна быть понятной, чтобы любой открывший её сразу понял, что и как нужно делать. Ниже приведу обязательные разделы, которые понадобятся при описании любого проекта. Если нужно, их можно пополнить подразделами.

  1. Введение
    1.1 Обзор: цель спецификации.
    1.2 Объём проекта: краткое описание проекта.
    1.3 Глоссарий: расшифровка терминов.
    1.4 Ссылки: список источников.
    1.5 Обзор продукта: краткое описание каждого раздела

  2. Общее описание
    2.1 Системная среда: общее описание, при помощи каких инструментов будет реализован функционал продукта.
    2.2 Спецификация функциональных требований: подробное описание, из чего состоит продукт. Если вы создаёте сайт, здесь будет подробное описание всех его страниц, хедера, футера и так далее.

  3. Технические требования
    3.1 Требования к интерфейсу: общее описание требований к возможностям интерфейса проекта. Если продолжать пример с сайтом, то в этом разделе можно указать домен, на котором он будет размещаться, место хранения базы данных и используемые API.
    3.2 Функциональные требования: описание того, как должна работать система со стороны пользователя. Здесь, например, можно описать карту сайта, работу пагинации, RSS и счётчики аналитики.
    3.3 Нефункциональные требования: описание того, что нужно сделать, чтобы реализовать функциональные требования. Так сказать, начинка продукта. К примеру, описание страниц ошибок, навигации по сайту, требования к производительности и безопасности данных.

О последних двух подпунктах расскажу подробнее.

4. Функциональные и нефункциональные требования

Это основная и самая подробная часть спецификации. Ей нужно уделить особое внимание, но сначала разберёмся, в чём разница между этими требованиями.

Функциональные требования — то, как должна вести себя система, чтобы удовлетворить ожидания пользователя. В нашем проекте одной из функций была строка поиска. В её поведение закладывалось ранжирование результатов в хронологическом порядке. А если ничего не найдено, то пользователь получает рекомендацию изменить запрос.

Ещё один пример: описание работы комментариев на сайте
Ещё один пример: описание работы комментариев на сайте

Если функциональные требования определяют, что делает система, нефункциональные требования описывают, как она это делает. Это либо свойства, которые система должна демонстрировать, либо ограничения, которые она должна соблюдать. Например, веб-сайт не должен загружаться более 3 секунд.

Другой пример нефункционального требования — безопасности
Другой пример нефункционального требования — безопасности

Если продукт не соответствует нефункциональным требованиям, то он продолжает выполнять основные функции, но без удобства для пользователя.

5. Согласование

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

Далее отдайте спеку заказчику на первую оценку. Возможно, согласование займёт несколько итераций, но это неотъемлемая часть работы.

Как только спека согласована, остаётся подписать её вместе с заказчиком и приступать к работе.

Кратко

Можно использовать как шпаргалку, чтобы ничего не забыть:

  • Открытая или закрытая спека? Первая даёт больше свободы подрядчику, вторая понятнее заказчику, но возможен и компромиссный полузакрытый вариант.
  • Титульный лист и содержание. Готовим драфт, чтобы было куда накидать «мясо».
  • Описание всех разделов. Заполняем каждый раздел из содержания.
  • Требования клиента. Делятся на функциональные (что система должна делать) и нефункциональные (как она должна это делать).
  • Согласование. Перед отправкой заказчику прочитайте спецификацию его глазами: всё ли понятно?

Спецификация может показаться сложным документом, но без неё будет намного сложнее в самой разработке. А чтобы вам было полегче, можно скачать готовый шаблон 🙂

Начать дискуссию