Техническое задание в формате Perl 6 Pod

Ранее я уже рассказывал о полезных свойствах такого документа как техническое задание [1]. В этот раз я расскажу о том, как я пишу подобные документы.

Я пробовал когда-то создавать проектную документацию по ГОСТу [2], но данный подход оказался «несовместим» с реальной жизнью. В итоге я пришел к менее формальному решению и использую последние годы следующую структуру этого документа:

Заголовок: Техническое задание на разработку
 Изменения
 Основные положения
 Release Notes
 Терминология и Соглашения
 Что необходимо сделать
 Идеи и дополнения

где,

Изменения
Список значимых изменений в документе. Каждая запись начинается с даты и версии документа. Изменения отсортированы в порядке устаревания.
=CHANGES
    Jan 22th 2012(v0.3)[zag]   Изменения в алгоритме работы crawler (+ определение качества фильма). 
    Jan  6th 2012(v0.2)[zag]   Основные функциональные блоки.
    Dec 24th 2011(v0.1)[zag]   Начальная версия
Основные положения
Здесь описывается идея и общий результат. Данный раздел начинается с фразы: «Требуется разработать ...».
  =head1 Основные положения
   
   Требуется разработать систему размещения рекламных объявлений 
   на виджетах со следующими возможностями:
  
  =item Создание и редактирование рекламных компаний
  =item Отображение рекламы на виджетах
  =item Сбор статистической информации (показы, переходы)
Описание целей сопровождаются снимками прототипов (или набросками от руки).
Release Notes
Список задач, которые станут частью выпускаемых версий. Задачи формулируются в виде строк, которые будут затем перенесены в "Release Notes" к каждой версии.
Например:
 =head1 Release Notes
 
 * Отображение рекламы на виджетах 
 * Рабочее место менеджера рекламных компаний ( управление рекламными компаниями 
   и просмотр статистики)
 * Регистрация отображения рекламных сообщений и переходов по ссылкам
Терминология и соглашения
Здесь полезно дать определение базовым терминам.
Если в ТЗ вводится новая терминология, то в таких случаях желательно разместить более подробную информацию, например копии экранов, возможно указать часть бизнес логики, где та или иная сущность используется.
 =head1 Терминология и соглашения
 
 Термины, котороые появляются в контексте «Системы рекламных сообщений»:
 
 =defn Медиаплан
 реклмное объявление, которое ...
 =defn Карточка медиаплана
 форма отображения свойств медиаплана, содержащая ...
Что необходимо сделать ?
Этот раздел самый большой. В нем содержится общее описание проекта, а так же последующее уточнение составляющих его частей.
В качестве иллюстраций используются фотоснимки набросков от руки, полученные во время совместных обсуждений с разработчиками и менеджерами. Позже, данные эскизы могут быть перерисованы в графических программах, но в самом начале работы достаточно набросков.
 =head1 Что необходимо сделать ?
 =head2 Общая структура
 
 Рассмотрим общую структуру, на которой выделим составные части и связи между ними:
 
     РИСУНОК ОБЩЕЙ СТРУКТУРЫ

 , где (1) - web интерфейс (рабочее место менеджера рекламных компаний)
 
 =head3 Рабочее место менеджера рекламных компаний
Идеи и дополнения
Во время обсуждений в данном разделе собираются в основном идеи, высказанные вне совместных встреч участников проекта.
Обычное содержимое этого раздела следующее:
  =head1 Идеи и дополнения
  
  ___________________________________________________
  ___________________________________________________
  ___________________________________________________
  ___________________________________________________
  ___________________________________________________

За основу такой структуры ТЗ, я взял документ из какого-то зарубежного блога, посвященного тематике разработки Web проектов. Возможно подойдет определение «функциональная спецификация», но как бы то ни было, наличие этого документа облегчает жизнь всем.

[1]Как POD помог мне. http://zag.ru/a4C81

[2] Техническое задание согласно ГОСТу. http://it-gost.ru/content/view/101/51/