exam

Документирование программного обеспечения.

Документирование ПО — это фиксация сведений о программе: как она устроена, как ей пользоваться и как её развивать. Хорошая документация делает продукт предсказуемым и снижает риски при передаче проекта между людьми.

Основные виды документации

  • Пользовательская. Для конечных пользователей и администраторов. Сюда входят:
    • руководство пользователя (как выполнять типовые задачи),
    • справочник команд и параметров,
    • инструкции по установке и настройке,
    • FAQ и раздел «Устранение типовых проблем».
  • Техническая (для разработчиков). Нужна, чтобы менять и поддерживать код:
    • описание архитектуры (HLD — High‑Level Design, LLD — Low‑Level Design),
    • схемы взаимодействия компонентов и потоков данных,
    • спецификации API и форматов данных,
    • комментарии в коде и описание структуры репозитория.
  • Проектная. Объясняет «почему сделано именно так»:
    • техническое задание (ТЗ) и функциональные требования,
    • обоснования архитектурных решений,
    • протоколы согласований и изменения требований,
    • матрица трассируемости требований (связь требований с тестами и реализацией).
  • Тестовая. Подтверждает, что система проверена:
    • тест‑кейсы и чек‑листы,
    • отчёты о тестировании и покрытии,
    • сценарии нагрузочных и пенетрационных тестов.

Что включать в документы (практические блоки)

Для каждого вида есть типовые разделы:

  • Руководство пользователя: цель документа, целевая аудитория, системные требования, пошаговые сценарии, скриншоты/гифки, частые ошибки и их решения.
  • API‑документация: базовый URL, методы и эндпоинты, параметры запроса/ответа, примеры запросов и ответов, коды ошибок, требования к авторизации.
  • Архитектурное описание: контекст и границы системы, компоненты и их роли, диаграммы (C4, UML, sequence), нефункциональные требования (производительность, отказоустойчивость, безопасность), принятые компромиссы и риски.
  • Инструкция по установке/развёртыванию: шаги установки, переменные окружения, миграции БД, зависимости, команды для CI/CD, роли и доступы.

Стандарты и подходы

  • ГОСТ 19 (ЕСПД) и ГОСТ 34. Применяют в госзаказе и крупных корпоративных проектах: задают состав и оформление документов.
  • IEEE и ISO. Международные стандарты (например, IEEE 1016 — описание проектных решений, ISO/IEC/IEEE 29148 — требования).
  • Agile‑подход (документация «ровно столько, сколько нужно»). В гибких методологиях делают упор на живые артефакты: диаграммы в Miro, спецификации в Confluence, API в Swagger/OpenAPI, а не на толстые бумажные тома.

Инструменты для документирования

  • Confluence, Notion. Для хранения и совместной работы над текстами, диаграммами, чек‑листами. Подходят для пользовательских и проектных документов.
  • Swagger (OpenAPI), Postman Collections. Автоматически генерируют документацию API из спецификаций и коллекций запросов.
  • Doxygen, Sphinx, Javadoc. Извлекают документацию из комментариев в коде (для C++, Python, Java и др.) и собирают в HTML/PDF.
  • PlantUML, Mermaid. Позволяют описывать диаграммы текстом и рендерить их прямо в документации (sequence, class, activity).
  • GitBook, ReadTheDocs. Платформы для публикации документации как сайта, с версиями и поиском.
  • C4 Model (моделирование). Помогает структурировать архитектурные описания: Context, Container, Component, Code — от общего к частному.

Практические принципы

  • Документируйте во время разработки. Если писать постфактум, легко упустить важные детали или описать уже неактуальное.
  • Держите документы актуальными. Назначьте владельца документа, ведите историю изменений и версии, регулярно проверяйте соответствие коду и конфигурации.
  • Ориентируйтесь на аудиторию. Для пользователя — простые шаги без технических терминов; для разработчика — точные формулировки, схемы, примеры кода.
  • Автоматизируйте, где возможно. API‑документацию генерируйте из кода, диаграммы стройте из текста, релизные заметки собирайте из коммитов и задач.
  • Используйте визуал. Схемы, скриншоты и примеры ускоряют понимание и уменьшают количество вопросов в поддержке.

Пример рабочего процесса

  1. На старте: фиксируют требования в Confluence/Jira, рисуют контекстную диаграмму (C4 Level 1), описывают API в OpenAPI.
  2. В разработке: добавляют LLD и комментарии в код, обновляют OpenAPI при изменениях, ведут инструкцию по развёртыванию в markdown.
  3. Перед релизом: готовят руководство пользователя, чек‑лист проверки, сценарий миграции данных.
  4. После релиза: фиксируют изменения в changelog, обновляют FAQ, собирают обратную связь и правят неточности.