Skip to Content
Обо мнеДокументирование программных продуктов

Документирование программных продуктов

Основная задача технического писателя – создавать понятную и структурированную документацию к программным продуктам. Это трудоемкий процесс, поэтому, чтобы облегчить себе жизнь, действую по алгоритму (см. Схему 1).


Процесс разработки

Схема 1. Процесс документирования ПО Блок-схема процесса документирования ПО

Применяю общепринятый подход к документированию. Действую поэтапно:

  1. Анализирую задачу. Уточняю детали, декомпозирую задачу, оцениваю примерные сроки. Важно понимать:
    • Что документирую. Какой программный продукт.
    • Кто целевая аудитория продукта.
    • Какие доступны источники информации: тестовый стенд, легаси документов, база знаний, комментарии в коде, специалисты.
    • С какой целью создается документация. Кто, где и в каких обстоятельствах будет ей пользоваться.
    • Какие документы требуется разработать (исчерпывающий перечень). В какой срок.
    • Каким требованиям должны соответствовать документы (стайлгайдам, редакционной политике, нормативам).
    • По каким критериям будет оцениваться результат.
  2. Собираю сведения о продукте. Создаю файловую структуру. Заполняю мастер-документ.
  3. Составляю документы. Подготавливаю схемы и иллюстрации. Пишу текст. Оформляю внешний вид и нужный формат. Проверяю результат.
  4. Отправляю документы на проверку (docs review). Устраняю замечания. Вношу исправления и дополнения.
  5. Закрываю задачу. Удаляю все лишнее. Заполняю Readme-файл. Архивирую.

Этап 1. Анализ задачи

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

Схема 2. Процесс анализа задачи Блок-схема процесса анализа задачи

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

На данном этапе технические характеристики и особенности продукта не особо важны. Самое главное – это сформировать общее понимание о нем, целевой аудитории и ожидаемом результате. Остальное смогу выяснить в процессе сбора сведений и составления документов.

Вот мой список вопросов для самопроверки (ответы под катом):

Что документирую? (Какой программный продукт)

  • Сервис искусственного интеллекта (ИИ-сервис)
  • ИИ-сервис интерпретирует изображения магнитно-резонансной томографии (МРТ) органов малого таза с внутривенным контрастированием для выявления признаков рака предстательной железы.
  • Область медицины: лучевая диагностика.
  • Код по МКБ-10: С61 Злокачественное новообразование предстательной железы.
  • Принцип работы:
    • ИИ-сервис встраивается в медицинскую (рентгенологическую) информационную систему.
    • Врач-ренгенолог проводит инструментальное обследование пациента. В результате в медицинском архиве изображений (PACS) сохранются снимки (формат DICOM).
    • ИИ-сервис автоматически анализирует эти снимки на предмет наличия патологии. Если патология обнаружена, ИИ выделяет “зону внимания” контурной обводкой и внутриконтурной заливкой. Формирует предварительный протокол медицинского исследования.
    • Врач-рентгенолог на своем автоматизированном рабочем месте (АРМ) отсматривает снимки и дозаполняет протокол исследования.

Кто и в каких обсоятельствах пользуется продуктом? (Целевая аудитория продукта)

  • Врач-рентгенолог при проведении инструментального обследования пациента.

Где взять информацию о продукте и его целевой аудитории? (Источники)

  • Тестовый стенд программы – [ссылка]
  • Легаси документов – [ссылка на облачное хранилище]
  • Корпоративная база знаний - [ссылка]
  • Комментарии в коде – [ссылка на репозиторий]
  • Сотрудники:
    • Фамилия Имя, тимлид разработчиков, telegram: [ссылка], +7(xxx)xxx-xx-xx
    • Фамилия Имя, middle-разработчик, telegram: [ссылка], +7(xxx)xxx-xx-xx
    • Фамилия Имя, специалист техподдержки, telegram: [ссылка], +7(xxx)xxx-xx-xx

С какой целью создаю документацию? Где и как она будет использоваться?

Кто будет пользоваться документацией? (Целевая аудитория документов)

  • Эксперты Минцифры при оценке программы на ее пригодность для регистрации
  • Их заключение влияет на результат: регистировать или нет

Какие документы я должен разработать? (Исчерпывающий перечень)

  1. Заявление
  2. Образец лицензионного договора
  3. Описание процессов жизненного цикла
  4. Описание функциональных характеристик ПО
  5. Руководство по эксплуатации ПО
  6. Технические условия

Какие требования предъявляются к документам? (Корпоративные, нормативные и пр.)

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

Этап 2. Сбор сведений

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

Схема 3. Процесс сбора сведений Блок-схема процесса подготовки к документированию

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

Шаг 1. Файловая структура

Эту структуру я применяю, когда работаю в Google Workspace. Если же необходимо действовать по концепции Docs-As-Code, то структура меняется в зависимости от требований заказчика. Например, некоторые папки размещаются в Github-репозитории и объектном хранилище S3.

        • Заявление_в_Минцифры.docx
        • Образец_лицензионного_договора.docx
        • Описание_процессов_жизненного_цикла.docx
        • Описание_функциональных_характеристик.docx
        • Руководство_по_эксплуатации.docx
        • Технические_условия.docx
          • img-001.jpg
          • img-002.jpg
          • img-003.png
          • img-124.png
          • diagram-life-cycle-model-001.jpg
          • diagram-data-depersonalization-process-001.jpg
          • pic-gui-001.png
          • pic-gui-002.png
        • Глоссарий.docx
        • Мастер-документ.docx
        • Статья_о_моделях_жизненного_цикла.pdf
        • ПНСТ_Системы_ИИ_в_клинической_медицине_Часть_10.pdf
      • Readme.docx

Для верхнеуровневой файловой структуры применяю концепцию P.A.R.A. Кликните на папку “Проекты” и сами увидите. Папки и файлы именую по-русски (мне так привычнее), за исключением тех файлов, на которые будут ссылки.

В папку “Документация” я копирую шаблоны документов из папки “Ресурсы”. Если какого-то шаблона у меня нет, то создаю пустой файл.

В папку “Иллюстрации” складываю файлы с рисунками, схемами, чертежами и прочими изображениями, которые планирую вставлять в документы. Файлы именую на латинице.

В папке “Мастер-документ” создаю одноименный файл “Мастер-документ.docx”, в котором я буду описывать продукт на данном этапе. “Глоссарий” предназначен для терминов и определений, чтобы соблюдать единую терминологию.

В папке “Trash” собираю вспомогательные материалы и всякий мусор.

Файл “Readme.docx” содержит описание проекта, а также ответы на мои вопросы, которые я выяснил на предыдущем этапе. По сути, он дублирует описание задачи из таск-трекера. Отличается тем, что содержит мои рабочие заметки.

Шаг 2. Мастер-документ

Мастер-документ служит для меня единым источником (по аналогии с концепцией Single Source Publishing), из которого я буду переиспользовать куски текста при составлении отдельных документов. В идеале этот файл должен содержать все разделы будущих документов.

По мере сбора сведений мастер-документ становится большой “портянкой”. Когда он переваливает за 100 страниц, я его разбиваю на несколько файлов. Именую по разделам. В основном файле оставляю только оглавление с активными ссылками на дочерние файлы.

Шаг 3. Сведения о продукте

Перехожу к непосредственному изучению продукта:

  1. Пробую продукт на тестовом стенде.
  2. Вычитываю легаси документов и материалы внутренней базы знаний.
  3. Заглядываю в программный код и комментарии к нему.
  4. Общаюсь со специалистами.

Я обратил внимание, что разработчики сильно раздражаются, когда их отвлекают глупыми или неожиданными вопросами. Они живые люди. Им тоже требуется время, чтобы переключиться из режима кодинга в режим общения. Поэтому, когда мне открывают “доступ к телу”, я стараюсь действовать на упреждение.

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

Пример сообщения
Николай, привет! Сергей поставил мне задачу написать руководство пользователя к ИИ-сервису. Этот документ нужен для регистрации программы в реестре Минцифры. Есть вопросы. Нужно 30 мин твоего времени. Голосом в Discord. Сегодня сможем? Во сколько? Вопросы: 1. ... 2. ... 3. ...

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

Этап 4. Составление документов

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

Этап 5. Проверка документов (Docs review)

Созданные документы отправляю на проверку. Если в ответ получаю замечания, то оперативно их устраняю и вновь отправляю документ на проверку. Цикл прерывается за отсутствием замечаний.

Этап 6. Завершение задачи

На этом этапе я прикрепляю созданные документы в таск-трекер, удаляю из файловой структуры все лишнее (обычно это папки “Trash” и “Мастер-документ”), переношу в архив папку “Иллюстрации” и дописываю Readme. В идеале у меня должно остаться только самое необходимое:

      • diagram-life-cycle-model-001.jpg
      • diagram-data-depersonalization-process-001.jpg
      • pic-gui-001.png
      • pic-gui-002.png
        • Заявление_в_Минцифры.docx
        • Образец_лицензионного_договора.docx
        • Описание_процессов_жизненного_цикла.docx
        • Описание_функциональных_характеристик.docx
        • Руководство_по_эксплуатации.docx
        • Технические_условия.docx
      • Readme.docx

Заключение

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

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

Примеры документов

Обновлено