Как Я Документирую Процесс Разработки

Вы пишете ненужную документацию для своего проекта? Нет? Тогда вам, скорее всего, этого недостаточно.

Крайне сложно и важно угадать необходимый объем технической документации для каждого конкретного проекта.

Важный - ведь от этого зависит скорость процесса, качество и стоимость.

Трудный - поскольку со временем может меняться сам процесс, могут меняться исполнители, и для данного состояния процесса не так-то просто подобрать необходимый набор и объем документации.

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

Небольшой проект — это: менеджер-аналитик, 1-3 разработчика, тестировщик.

Или какой-нибудь аналогичный состав.

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

Другие процессы я не документирую.



Инструменты

Я использую Enterprise Architect, AxureRP, Github, Skype. Это все.





Обсуждения

Я фиксирую результаты всех переговоров.

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

Вторая группа вопросов позволяет с большей уверенностью принимать решения в переломные моменты.

На github я создал вики-страницу «Протокол встречи», на которой записываю результаты обсуждения в хронологическом порядке.

В заголовке указываю дату и предмет обсуждения.

Я пишу это прямо на github. Таким образом, у меня есть одна страница с результатами всех обсуждений.

.

Если обсуждение было текстовым в Скайпе, то я пишу одно сообщение в Скайпе, которое редактирую и прошу подтверждения.

Я копирую его на github вместе с подтверждением.

Средняя длина поста для одного обсуждения — 5-10 строк.





Требования

Здесь немного сложнее.

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

Пользовательский интерфейс — Я использую AxureRP. Подробно документирую — вплоть до кнопки, добавляю динамику переходов страниц, обновляю части страниц.

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

Я публикую интерфейсы для публичного доступа и использую ссылки на соответствующие страницы в требованиях и обсуждениях.

Очень удобно.

Я обновляю интерфейсы сразу после каждого изменения.

Вот как выглядит мой самый распространенный прототип интерфейса:

Как Я Документирую Процесс Разработки

Предметная область — Я использую Enterprise Architect только в качестве средства создания ER-диаграмм.

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

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

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

Требования — Я пишу напрямую на github. Я сделал на github в вики отдельную страницу, содержащую в хронологическом порядке.

Все изменения (соответственно все итерации).

Я использую ссылки на прототипы и диаграммы предметной области.

Я лишь описываю логику.

Если писать больше и подробнее, затраты на ведение документации резко возрастают. Средний объем — 4-5 абзацев по 1-10 строк.

Наши итерации обычно занимают 3-10 дней.

Этот подход позволяет одна страница, чтобы увидеть всю хронологию итераций и аналитику для разработчика .

Кроме того, что очень важно, я использую эту же страницу для записи планов на следующие итерации.

Текущую итерацию я выделяю либо цветом, либо просто жирным шрифтом.

Иногда я указываю фактические/плановые даты начала и окончания итерации.

Чем дальше запланированная итерация от текущей, тем абстрактнее представление; чем ближе, тем подробнее.

Описания будущих итераций я использую для обсуждения с разработчиками и другими участниками процесса.

Типичный пример требований к итерации:

Как Я Документирую Процесс Разработки

Я подсчитал, что на документирование требований на итерацию в среднем уходит 2-3 часа (в среднем раз в неделю): 1 час на предметную область, 1 час на дизайн интерфейса и до 1 часа на текстовое описание требований.

.





Изменения

Изменения бывают двух типов: ошибки и улучшения.

В качестве трекера использую тот же github. Со временем я пришел к следующему набору меток задач:

Как Я Документирую Процесс Разработки

И к следующим правилам присвоения статусов: Создание.

Аналитик ставит задачу (баг или улучшение), опционально указывает, есть ли ошибка в продакшене и в тесте — как (prod), а также опционально указывает, нужно ли ее срочно исправить (А).

Работа Разработчик проверяет, есть ли задачи с меткой (А).

Если один есть, он берет его, если нет, он берет другой.

Читает и либо исправляет (нужна загрузка), либо говорит, что не может воспроизвести (не может воспроизвести), либо нужно больше информации (нужна информация).

Информация Если нужна реакция, аналитик отвечает в комментариях и удаляет (не может воспроизвести/нужна информация) или закрывает задачу.

Работа Разработчик исправляет, если задача не удаляется и не ставится (нужна загрузка).

Заполнение для теста Разработчик загружает, удаляет необходимость загрузки, устанавливает исправления к тому, что загружено на тестовый сервер.

Если указана ошибка из боевой, то Разработчик не устанавливает исправление до тех пор, пока не появятся изменения в боевой.

Проверка на тесте Тестировщик смотрит и либо закрывает задачу, либо оставляет ее открытой и удаляет исправленное.

Наполнение боя Разработчик загружает в боевую: - все закрытые, что исправлены (заодно удалить исправленные) - все открытые, что есть (прод) и (нужно загрузить).

Испытание в бою Тестер тестирует те ошибки, которые есть (прод) и (исправлены), если все ок то закрываем задачу.

* В моей вики есть настоящие имена разработчиков и других участников процесса.

Помогает.



Версии кода

Здесь все совершенно обычно.

Я использую github.



Заключение

К такому формату работы я пришел за несколько лет работы аналитиком/руководителем проектов, работая как над проектами автоматизации малых предприятий, так и над обычными интернет-сервисами.

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

Спасибо.

Теги: #спецификации #документация #разработка сайтов #Анализ и проектирование систем #проектирование и рефакторинг

Вместе с данным постом часто просматривают: