Перейти к основному содержимому

Руководство оператора по ГОСТ 19.505-79

Руководителю Аналитику Техническому писателю
Теория данных (раздел 3)

ERD и словарь сущностей — Entity Relationship, нормализация, SQL. Карта — о разделе.


Руководство оператора

ГОСТ

Основано на ГОСТ 19.505-79.

Оператор - это человек, который сидит за компьютером и активно работает с программой каждый день (вводит данные, формирует отчёты, нажимает кнопки).

Сильное руководство оператора всегда отвечает на три вопроса — что сделать, как понять что получилось, и что делать при сбое.

Руководство оператора - это документ о том, как выполнять конкретные операции — пошагово, с картинками интерфейса. "Чтобы создать заявку — (1) нажмите кнопку "Новая заявка", (2) заполните поле "Клиент", (3) нажмите "Сохранить". Ожидаемый результат: заявка появится в списке". Здесь не пишут, как настраивать сервер (это к администратору) и не объясняют внутреннее устройство программы (это к программисту).


1. Введение в стандарт

ГОСТ 19.505–79 — советский государственный стандарт, входящий в Единую систему программной документации (ЕСПД), утверждённый постановлением Госстандарта СССР № 74 от 12 января 1979 г., с введением с 1 января 1980 г. Стандарт полностью соответствует международному/межгосударственному СТ СЭВ 2096–80.


1.1. Назначение документа "Руководство оператора"

"Руководство оператора" — нормативно-технический документ, предназначенный для лиц, непосредственно управляющих программой в процессе её эксплуатации (операторов, сисадминов, дежурных инженеров). Его цель — обеспечить корректный и безопасный запуск, управление, мониторинг и завершение работы программы в реальных условиях эксплуатации.

⚠️ Термин "оператор" в контексте стандарта — любой пользователь с правами управления жизненным циклом программы — запуск, пауза, останов, перезапуск, обработка ошибок.


1.2. Область применения

Стандарт применяется при разработке программного обеспечения:

  • для государственных и оборонных заказчиков (в т.ч. в рамках ГОСТ ЕСПД — 19.101–77, 19.105–78 и др.);
  • в проектах, регулируемых договорами, требующими соблюдения нормативной документации;
  • в образовательных и методических целях — как эталон структуры эксплуатационной документации.

Хотя ГОСТ имеет статус "не действующий" в РФ (аннулирован в 2002 г.), его требования остаются практически востребованными:

  • в legacy-проектах;
  • в интеграционных решениях с государственными информационными системами (ГИС, ЕГАИС, ЕИС, ЕСИА и др.);
  • в методиках разработки технической документации (в т.ч. в университетских курсах и корпоративных стандартах).

1.3. Нормативные ссылки и требования к оформлению

Согласно п. 1.1 стандарта:

"Структуру и оформление документа устанавливают в соответствии с ГОСТ 19.105–78".

ГОСТ 19.105–78 регламентирует:

  • общий состав программной документации;
  • структуру программного документа (титульный лист → лист регистрации изменений → аннотация → содержание → основное содержание → приложения → список использованных источников);
  • правила нумерации разделов и подразделов (десятичная система);
  • обязательное наличие информационной части (аннотация + содержание).

Таким образом, "Руководство оператора" — формализованный документ, подчинённый строгой структуре и метаданным.


2. Структура документа по ГОСТ 19.505–79

Стандарт устанавливает четыре обязательных раздела (п. 1.2):

РазделОбязательностьКраткое содержание
1Назначение программы✅ ОбязательныйФункциональное описание, контекст применения, границы ответственности ПО.
2Условия выполнения программы✅ ОбязательныйТребования к аппаратному и программному окружению, внешним зависимостям, конфигурации.
3Выполнение программы✅ ОбязательныйИнструкции по подготовке, запуску, управлению, завершению. Форматы команд, ответы системы.
4Сообщения оператору✅ ОбязательныйПеречень и расшифровка диагностических, информационных и аварийных сообщений.

2.1. Гибкость структуры

ГОСТ допускает (п. 1.2, 2.5, 2.6):

  • объединение разделов (напр., "Условия выполнения" + "Выполнение" в единый "Подготовка и запуск");
  • введение дополнительных разделов ("Аварийные процедуры", "Журналирование", "Мониторинг ресурсов");
  • иллюстрирование примерами, таблицами, схемами;
  • вынесение вспомогательных материалов в приложения (лог-файлы, примеры конфигов, коды возврата, скриншоты интерфейсов CLI/GUI).

🔶 Пример допустимых дополнительных разделов:

  • Работа с резервными копиями
  • Диагностика производительности
  • Интеграция с внешними системами
  • Политики безопасности при эксплуатации

3. Пошаговое руководство по составлению "Руководства оператора"

Ниже — методически выстроенная последовательность действий для технического писателя или инженера-документалиста. Последовательность учитывает требования ГОСТ 19.505–79 и практику современной технической документации (включая DevOps- и SRE-подходы).

Принцип: "Руководство оператора" — инструкция по управлению состоянием системы в реальном времени.


Шаг 1. Подготовка метаданных и каркаса

  1. Определите идентификатор и наименование программы
    Используйте официальное название и версию (согласно ГОСТ 19.101–77):
Программа: "X-Engine" (версия 3.2.1, сборка 20251028.1)
Код проекта: XEN-OPS-321
Разработчик: ООО "IT Universe Labs"
  1. Создайте базовую структуру документа (в соответствии с ГОСТ 19.105–78):
    • Титульный лист
    • Лист регистрации изменений
    • Аннотация (не более 250 слов)
    • Содержание (с нумерацией разделов по ГОСТ)
    • Основные разделы (по 19.505–79)
    • Приложения (если есть)

📌 Аннотация должна отражать:

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

Шаг 2. Наполнение обязательных разделов

2.1. Раздел 1. "Назначение программы"

Что писать:

  • Функциональное назначение ("что решает для пользователя").
  • Контекст применения — автономный режим, серверный процесс, микросервис, batch-задача и т.п.
  • Внешние взаимодействия (API вход/выход, файловые интерфейсы, очереди, БД).
  • Границы ответственности: что входит в зону управления оператора, что — нет.

Что НЕ писать:

  • Архитектурные диаграммы (вынести в Описание программы по ГОСТ 19.104–78).
  • Исходный код или алгоритмы (это — Программа и методика испытаний, ГОСТ 19.301–79).
  • Маркетинговые формулировки ("революционный", "уникальный" и т.п.).

🔍 Проверка качества:
После прочтения раздела 1 оператор должен однозначно понять:
"Можно ли мою задачу решить этим ПО? Кто ещё участвует в процессе? Что я должен контролировать?"


2.2. Раздел 2. "Условия выполнения программы"

Обязательная информация:

  • Требования к аппаратному обеспечению (мин./макс.):
    • CPU (ядра, архитектура: x86_64/aarch64)
    • RAM (мин., рекоменд., при пиковой нагрузке)
    • HDD/SSD (объём, IOPS, тип файловой системы)
  • Требования к программному обеспечению:
    • ОС (в т.ч. дистрибутивы Linux, версии Windows Server)
    • Зависимости (runtime: .NET 8.0, OpenJDK 17, Python 3.11+; контейнер: Docker 24.0)
    • Сетевые требования (порт, протокол, TLS 1.3, DNS-резолвер)
    • Внешние сервисы (БД PostgreSQL 14, Kafka 3.5, внешний LDAP)

⚠️ Важно: указывать конкретные версии, а не "любая актуальная".
Пример недопустимой формулировки:
"Требуется современная СУБД"
✅ "Требуется PostgreSQL 14.7–16.3 с расширением pg_cron. Подключение по TCP/IP (порт 5432, sslmode=require)"

Дополнительно рекомендуется:

  • Таблицы совместимости (например, matrix OS × runtime);
  • Диаграмма зависимостей (в приложении);
  • Проверочные команды ("быстрая диагностика окружения").

Пример блока кода для проверки:

# Проверка минимального окружения для X-Engine
[ $(uname -s) = "Linux" ] || { echo "ОС: только Linux"; exit 1; }
[ $(getconf LONG_BIT) -eq 64 ] || { echo "Требуется 64-битная ОС"; exit 1; }
command -v java >/dev/null || { echo "Отсутствует Java"; exit 1; }
java -version 2>&1 | grep -q '17\|21' || { echo "Требуется OpenJDK 17 или 21"; exit 1; }

2.3. Раздел 3. "Выполнение программы"

Здесь — ядро документа. Структурируйте как цепочку состояний:

ЭтапПодэтапыЧто указать
Подготовка— Установка (если не отдельный документ) — Настройка (конфигурационные файлы, переменные окружения) — Предзапускная проверка (health-check)Примеры config.yaml, env.example, схемы валидации
ЗапускИнтерактивный/фоновый, CLI, systemd, контейнерсм. блок "Запуск" ниже
Управление— Команды runtime (pause/resume/shutdown) — Методы IPC (REST API /control, SIGUSR1, сокет) — Интерфейс CLI/REPL/веб-панельТаблица команд с: синтаксисом, уровнем доступа, side-effect-ами
Завершение— Штатное завершение (SIGTERM + graceful shutdown) — Аварийная остановка (SIGKILL) — Проверка корректного завершения (код возврата, логи)Коды возврата: 0 — OK, 1 — ошибка конфигурации, 2 — timeout, 128+ — сигнал

📌 Включайте "как" и "почему":
"Параметр --grace-period=30s задаёт время, в течение которого система завершает обработку текущих задач перед закрытием соединений. Уменьшение значения ниже 10 с может привести к потере данных в режиме stream".

Примеры запуска:

xengine start --mode=batch --config=/etc/xengine.yaml
sudo systemctl start xengine
docker run -d --name xengine -v /etc/xengine:/config xengine:2.1 --config=/config/xengine.yaml
podman run -d --replace xengine xengine:2.1

2.4. Раздел 4. "Сообщения оператору"

Структурируйте как реестр событий, отсортированный по критичности:

УровеньКодТекст сообщенияПричинаДействия оператора
INFOXEN-1001Engine started in batch mode, job queue length: 0Штатный запускНаблюдать
WARNXEN-2017Config file /etc/xengine.yaml is world-readableНарушение Безопасность policyИсправить права: chmod 640 /etc/xengine.yaml
ERRORXEN-3022Connection to PostgreSQL failed: timeout after 5000msНедоступен БД-хостПроверить сеть, pg_isready -h db, повторить через 30 с
FATALXEN-4099Required module 'crypto' not loaded (JCE not found)Отсутствует Java Cryptography ExtensionУстановить JCE Unlimited Strength Policy или использовать OpenJDK 17

Типовые действия оператора из колонки "Действия":

chmod 640 /etc/xengine.yaml
pg_isready -h db -p 5432
xengine start --mode=batch --config=/etc/xengine.yaml

Обязательно укажите: формат лог-сообщения ([TIMESTAMP][LEVEL][PID] CODE: message), пути к логам и фильтрацию:

journalctl -u xengine -f
grep -E 'XEN-[34].*' /var/log/xengine/main.log

4. Типичные ошибки и как их избежать

ОшибкаПоследствияРекомендация
1Описание для разработчика, а не оператораОператор не может понять, что делать, только почему так.Пишите от лица оператора: "Выполните…", "Проверьте…", "Если видите X — сделайте Y".
2Отсутствие конкретики в параметрахНеопределённость → ошибки конфигурации.Всегда указывайте: тип, единицы измерения, диапазон, значение по умолчанию, пример. Пример: --batch-size=100 (int, 1–10000, default=100)
3Нет кодов возврата или сообщений об ошибкахЗатруднена диагностика, необходимость читать исходники.Выведите полный перечень exit-codes и сообщений в таблице. Ссылайте в логах на код (XEN-XXXX).
4Объединение с "Руководством пользователя"Путаница: пользователь оператор.Чётко разделяйте: РО — для управления процессом, РП — для работы с функционалом.
5Отсутствие примеров командТеория без практики → медленный onboarding.Для каждого режима — один полный пример: xengine start --mode=stream --config=/etc/xengine.yaml --log-level=debug
6Не указаны права доступаОшибки запуска от root vs xengine user.Добавьте раздел "Требования к учётной записи": UID/GID, группы, capabilities (CAP_NET_BIND_SERVICE).

💡 Правило "3-х вопросов" для проверки:
Любой пункт в РО должен отвечать на:

  1. Что я должен сделать?
  2. Как я пойму, что сделал правильно?
  3. Что делать, если пошло не так?

5. Пример — фрагмент "Руководства оператора" для вымышленной системы X-Engine

Система X-Engine — модуль обработки потоковых данных в режиме near real-time.
Приём: JSON по HTTP/2 или Kafka. Обработка — агрегация, фильтрация, обогащение. Выдача: в ClickHouse и S3.
Режимы — batch (пакетный), stream (потоковый), replay (повтор воспроизведения логов).


5.1. Назначение программы

Программа xengine предназначена для выполнения потоковой обработки структурированных событий в распределённой среде. Основные функции:

  • Приём событий через HTTP-эндпоинт /ingest (POST, JSON array) или потребление из Kafka (топик events.raw);
  • Применение правил обработки из rules.d/*.yaml;
  • Формирование агрегатов (минутные/часовые окна);
  • Запись результатов в ClickHouse (events.enriched) и резервную копию — в S3 (s3://x-bucket/archive/).

Границы ответственности оператора:

  • Обеспечение доступности xengine, Kafka, ClickHouse, S3;
  • Мониторинг задержек обработки (lag);
  • Реакция на аварийные остановки и ошибки записи;
  • Не входят в зону ответственности — написание правил обработки, изменение схемы БД, развитие API.

5.2. Условия выполнения программы

Аппаратные требования

РежимCPU (ядра)RAMДискСеть
batch (до 10 тыс. эв/с)48 ГБ50 ГБ SSD (для temp)100 Мбит/с
stream (до 100 тыс. эв/с)1632 ГБ200 ГБ NVMe + 1 ТБ HDD1 Гбит/с, <1 мс latency

Программные требования

  • ОС: Ubuntu 22.04 LTS / RHEL 9 / AlmaLinux 9 (x86_64)
  • Java: OpenJDK 17 или 21 (Temurin, Azul Zulu)
  • Доступ к:
    • Kafka 3.5+ (bootstrap.servers, SASL/SCRAM)
    • ClickHouse 23.8+ (HTTP interface, user xengine, роль ingest)
    • S3-совместимое хранилище (AWS S3, MinIO — endpoint, access/secret key)
  • Права: пользователь xengine, группа xengine; CAP_NET_BIND_SERVICE (для порта 8080)

Проверка окружения (скрипт /opt/xengine/bin/env-check.sh)

Код ITЗагрузка примера кода…


5.3. Выполнение программы

Запуск в режиме systemd

Код ITЗагрузка примера кода…

Команды управления:

sudo systemctl start xengine # Запуск
sudo systemctl status xengine # Состояние + последние логи
sudo systemctl reload xengine # Перезагрузка конфига (без остановки)
sudo systemctl stop xengine # Штатная остановка (ожидание завершения задач)
kill -SIGUSR2 $(pgrep xengine) # Принудительный rotation логов

CLI-команды runtime (в REPL-режиме xengine shell)

КомандаОписаниеПример
statusТекущее состояние движка> status → {mode: stream, uptime: 2h13m, lag: 1.2s}
pause processingПриостановить обработку (буферизация продолжается)> pause processing
resumeВозобновить> resume
stop --forceАварийное завершение (без сохранения состояния)> stop --force
config reloadПеречитать config.yaml без перезапуска> config reload

5.4. Сообщения оператору

Формат лога:
[2025-11-11T14:23:08.712Z][WARN][12345][main] XEN-2005: Rule 'fraud-detect-v3' took 1250ms (>1000ms threshold)

КодУровеньТекстПричинаДействия
XEN-2005WARNRule '{name}' took {ms}ms (>1000ms threshold)Медленное правилоПроверить сложность условия, профилировать через xengine profile --rule={name}
XEN-3011ERRORFailed to write batch to ClickHouse: Code: 241. DB::Exception: Memory limit exceededПереполнение памяти в CHУвеличить max_memory_usage в users.xml, уменьшить batch.size
XEN-4000FATALRequired Kafka topic '{topic}' does not exist and auto.create.topics.enable=falseОтсутствует топикСоздать топик вручную: kafka-topics --create --topic events.raw --partitions 12 --replication-factor 3

📌 Все сообщения логируются в journald и (при log.file.enabled=true) в /var/log/xengine/engine.log с ротацией через logrotate.


6. Чек-лист — "Готово ли Руководство оператора?"

Проверьте соответствие минимуму ГОСТ и практике:

ПунктВыполнено? ✅/❌
1Есть информационная часть (аннотация + содержание)
2Все 4 обязательных раздела присутствуют
3В разделе 1 указаны границы ответственности оператора
4В разделе 2 — конкретные версии ПО/ОС, а не "рекомендованные"
5В разделе 3 — точные команды запуска/останова + примеры
6В разделе 3 — указаны коды возврата и их значения
7В разделе 4 — все сообщения снабжены кодами (XEN-XXXX)
8Для каждого сообщения ERROR/FATAL — алгоритм действий
9Есть проверочные скрипты/команды диагностики
10Есть приложения: примеры конфигов, схемы логов, таблица совместимости
11Нет маркетинга, субъективных оценок, "воды"
12Документ прошёл ревью с участием SRE/администратора

📥 Рекомендация: автоматизируйте валидацию через CI:

  • проверка наличия XEN-\d{4} в руководство.md;
  • проверка синтаксиса примеров bash через shellcheck;
  • валидация config.yaml по OpenAPI-схеме.

Дополнение — операторские сценарии, которые стоит раскрыть

Базовый набор рабочих сценариев

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

Улучшение обучаемости

Добавьте блок "5-минутный маршрут новичка" — что читать первым, какую операцию выполнить для тренировки и по каким признакам понять, что результат корректный.


Смежные материалы