Как писать требования и документацию к проекту. Полный гайд с шаблоном документации и примерами заполнения

1. MAIN GOAL.

Здесь нам необходимо описать назначение продукта/разработки.

2. Предыстория и краткое изложение сути проекта.

3. Формулировка потребностей и ценность проекта/BACCM Canvas.

В этом разделе мы фиксируем потребности, что удовлетворяются с помощью разработки и ценности, которые принесет данная разработка. Эффективно использовать в сочетании с BACCM Canvas.

9f5e020040e144a721ebd8adce6fe810.png

4. Цель проекта по SMART.

Хорошо сформулированная цель позволит определить направление работы и установить конкретные критерии для оценки успеха.

5. Стейкхолдеры продукта.

Указываем внутренних и внешних участников проекта. Хорошей практикой является создание матрицы стейкхолдеров или сделать анализ стейкхолдеров с помощью mindmap.

eb9463a24b3e504ca97f85133ec1cb4b.png

6. Границы проекта и ограничения.

Определяем границы разработки, ответственность команды (за какие этапы разработки ПО отвечает команда) и ограничения, включая бизнес-правила и регуляторные требования. Будет гораздо легче проанализировать требования и ограничения от регуляторов, если в предыдущем пункте мы сделали mindmap стейкхолдеров.

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

В данном разделе описываем функционал разрабатываемого продукта. Я предпочитаю описывать их в формате user story с указанием роли пользователя в системе: «Как покупатель, я хочу иметь возможность заказать товар в пункт выдачи», «Как администратор пункта выдачи я хочу иметь возможность отсканировать QR пользователя для получения подробной информации о его товарах»

Данный подход хорошо сочетается с матрицей прав, в которой мы явно укажем, какие пользователи у нас есть и какие у них права для работы с системой. Но можно описать ФТ в формате USE CASE. Также можно зафиксировать диаграмму прецедентов, чтобы не забыть или не потерять часть функционала разработки.

8. Требования к интерфейсу.

Указываем требования к дизайну и пользовательскому интерфейсу. Указываем мастхев UI элементы и взаимодействие с ними.

ТЗ дизайнеру описывается следующим образом. Мы передаем ему список ФТ и отражаем способ взаимодействия пользователя с данными фичами. Например, мы передаем список ФТ для регистрации и элементы дизайна. Для процесса регистрации это будут input поля и формы ввода данных, а также кнопка подтверждения регистрации.

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

Это свойства, которыми должна обладать система. Приведу примеры основных видов требований.

  • Безопасность. Фиксируем использование защитных протоколов и подходов. Обычно у безопасников есть требования к ПО.

  • Способность архитектуры к масштабированию. Указываем, должна ли архитектура быть способна к масштабированию или это конечное решение. Указываем данное требование в случаях, если хотим выпустить потенциально классную фичу, которую будем дорабатывать и развивать.

  • Поддерживаемые устройства и ОС.

  • Поддерживаемые протоколы и технологии.

  • Производительность. Поддержка оптимального уровня производительности. Это может заполнить архитектор или разработчик.

    — RPS. Запросы в секунду: кол-во запросов в день/кол-во секунд в день.
    — Пропускная способность: узнаём размер JSON запросов и ответов (берём данные из контракта API) и умножаем на RPS. Пример: (запрос 200 байт + ответ 200 байт) * rps = кбайт/сек.
    — Отношение записи к чтению: считаем кол-во чтений и записей в базе данных для выполнения одного полного сценария использования и делим кол-во операций чтения на операции записи.
    — Размер хранилища: умножаем сложенные элементы записи на предполагаемое кол-во операций за год.

  • Языки и локализация. Указываем, какие языки должно поддерживать ПО.

  • Сохранение и продолжительность хранения данных. Например, требования хранить данные о пользователях 5 лет.

  • SLI. Уровень доступности. SLI — оценка работы сервиса в данный момент. SLO — договор о поддержании уровня доступности, цель которой необходимо придерживаться. SLA — уровень доступности, за нарушение которой наступают последствия, санкции.

  • Версионирование ПО. Ведение учёта версий и поддерживаемого этими версиями функционала. Например, данная фича должна работать на ПО версии не ниже 1.3.

НФТ можно также указывать в виде user story.

Как пользователь, я хочу, чтобы сервис был доступен 99,9% времени с 10 до 20 каждый день.

10. Матрица прав.

В матрице прав указываем, какие виды пользователей есть в системе, и какие права/возможности взаимодействия с системой им стоит выдать.

11. Вопросы и проблемные моменты

Указываем нюансы, которые необходимо учесть при разработке или раскатке ПО в прод.

© Habrahabr.ru