BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс для системных аналитиков » Модуль 1.3. Документация системного аналитика и артефакты

Модуль 1.3. Документация системного аналитика и артефакты

Видение (Vision), SRS, BPMN, диаграммы последовательности (Sequence/UML), ER-модель, API-контракт (OpenAPI), NFR. Практика: пакет артефактов к одной фиче.

 

Ваша цель как SA — превратить «хотелку» в набор согласованных, версионируемых и проверяемых артефактов, по которым команда разрабатывает, тестирует, выкатывает и мониторит фичу. В этом модуле делаем полный разбор каждого артефакта: что в него входит, как он связан с остальными, как версионируется и какие риски закрывает.

 

Принципы «живой» документации (как сотруднику — к исполнению)

  1. Единый источник правды: канон (OpenAPI/диаграммы/BDD/схемы данных) — в Git; Wiki — витрина и навигация.
  2. Версионирование SemVer: MAJOR.MINOR.PATCH у SRS/контрактов/событий/ER. Любой breaking change — bump MAJOR.
  3. Трассируемость: каждый артефакт помечен Artifact-ID и ссылается на REQ-ID, Jira-ID, тесты и метрики.
  4. Проверяемость: требования формулируются через AC/BDD и NFR со измеримыми SLO.
  5. Docs-as-code: PR/ревью, линтеры, changelog, релизные теги.

 

Vision (Видение): кратко, зачем делаем

Назначение: ответить «зачем фича», «какая ценность» и «как поймём, что получилось».

Структура (1–2 страницы):

  • Контекст/проблема: кто пользователь, где болит.
  • Цели/метрики: бизнес-KPI и технические SLO (например, «p95 оплаты < 3с»).
  • Область и границы: что входит/исключено, регуляторика, каналы.
  • Релизные срезы/MVP и риски.

 

Типичные ошибки: обещания без метрик; нет ограничений; смешение Vision и SRS.

Пример (фрагмент):

Цель: увеличить конверсию успешных оплат на 2 п.п. в чекауте.
SLO: p95 POST /payments < 3000 мс; error-rate < 0.5% по неделям.

 

SRS (System Requirements Specification): как именно это будет работать

Назначение: инженерная спецификация — сценарии, данные, интеграции, NFR, критерии приемки.

Рекомендуемая структура SRS:

  1. Область и термины (ссылка на глоссарий).
  2. Сценарии и варианты (Use Cases, BPMN, Sequence).
  3. Данные (ER, домены, справочники, миграции).
  4. Интеграции (REST/GraphQL/gRPC, события, очереди).
  5. Ошибки/валидаторы/идемпотентность/ограничения.
  6. Нефункциональные требования (производительность, надёжность, безопасность, наблюдаемость, совместимость, локализация).
  7. AC/BDD (критерии приемки).
  8. Трассируемость (ссылка на RTM).
  9. Версионирование/изменения (changelog, ADR).

 

Специфика:

  • Каждая функция — с AC/BDD.
  • Любой интеграционный вызов — с ошибками, лимитами, таймаутами, идемпотентностью и X-Correlation-Id.
  • NFR — измеримые и привязаны к сценариям.

 

BPMN: как зафиксировать процесс, исключения и роли

Когда нужен: есть несколько акторов/шлюзов/исключений, требуется согласовать «кто что делает и когда падаем».

Минимум на диаграмме:

  • Пулы/потоки, старт/конец, задачи (user/service), события ошибок, шлюзы XOR/AND, сообщения между пулами.
  • Версия/владелец/дата/ссылка на SRS.

 

Правила качества:

  • У каждого шлюза — семантический критерий («Сумма > лимита?»).
  • Ошибки всегда промоделированы событийными элементами.
  • Никаких «заглушек: здесь магия» — либо фиксим, либо явно помечаем Assumption.

 

Что часто ломают: «линейка без альтернатив» (нет ошибок/таймаутов/повторов), смешение процессов и UI-потоков.

 

Диаграммы последовательности (UML Sequence): кто и как общается

Когда нужен: согласовать взаимодействия сервисов/внешних систем, показать порядок, таймауты и ретраи.

Пример (Mermaid) — «Создание платежа с PSP-колбэком»:

sequenceDiagram
  autonumber
  participant Client
  participant Checkout
  participant PSP as PSP
  Client->>Checkout: POST /payments (Idempotency-Key, X-Correlation-Id)
  activate Checkout
  Checkout->>PSP: Authorize(request) [timeout=10s]
  alt success
    PSP-->>Checkout: 200 Authorized
    Checkout-->>Client: 201 Created (paymentId)
    PSP-->>Checkout: Webhook /payments/callback (Captured)
    Checkout-->>Checkout: Update status=CAPTURED (idempotent)
  else timeout/error
    PSP-->>Checkout: 504/5xx or no response
    Checkout-->>Client: 202 Accepted (status=PENDING)
    Checkout-->>Checkout: Schedule retry (max=3, exp)
  end
  deactivate Checkout

 

Правила качества: всегда указываем таймауты/ретраи/идемпотентность, отмечаем ошибки и альтернативы.

 

ER-модель: сущности, ключи, домены

Цель: прояснить, какие данные и в каких связях нужны, где «истина», какие ограничения.

Требования к ER:

  • PK/FK, кардинальности (1:N, M:N через стыковочную), домены и обязательность (nullable/not null), инварианты (уникальность, диапазоны).
  • Версионирование справочников и адресов (например, valid_from/valid_to).

 

Пример (Mermaid ER):

erDiagram
  CUSTOMER ||--o{ ORDER : places
  ORDER ||--|{ ORDER_ITEM : contains
  ORDER ||--o| PAYMENT : has
  PAYMENT ||--o{ REFUND : creates
  CUSTOMER {
    uuid customer_id PK
    string email
    string phone
  }
  ORDER {
    uuid order_id PK
    uuid customer_id FK
    string status
    timestamp created_at
  }
  ORDER_ITEM {
    uuid order_item_id PK
    uuid order_id FK
    int qty
    decimal price
  }
  PAYMENT {
    uuid payment_id PK
    uuid order_id FK
    string status
    string idempotency_key
    decimal amount
  }
  REFUND {
    uuid refund_id PK
    uuid payment_id FK
    decimal amount
    string status
    timestamp created_at
  }

 

Антипаттерны: ER без типов/ключей; отсутствие доменов/справочников; «скрытые» поля, всплывающие в проде.

 

API-контракт (OpenAPI): договор с разработкой/QA/внешним миром

Цель: согласованный и проверяемый контракт интерфейса.

Минимум в контракте:

  • Имена и пути, схемы запрос/ответ, ошибки (коды/типы/детали), пагинация/фильтры, лимиты/таймауты и заголовки (X-Correlation-Id, Idempotency-Key), безопасность (OAuth2/JWT/MTLS).
  • Версионирование SemVer; политика совместимости и депрекейта.

 

Пример (фрагмент OpenAPI 3.0.3):

openapi: 3.0.3
info:
  title: Payments API
  version: 2.4.0
paths:
  /payments:
    post:
      summary: Create payment (idempotent)
      parameters:
        - in: header
          name: Idempotency-Key
          required: true
          schema: { type: string }
        - in: header
          name: X-Correlation-Id
          required: true
          schema: { type: string, format: uuid }
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/CreatePaymentRequest' }
      responses:
        "201":
          description: Created
          headers:
            X-Correlation-Id: { schema: { type: string, format: uuid } }
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Payment' }
        "409":
          description: Conflict (duplicate / invalid state)
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Error' }
components:
  schemas:
    CreatePaymentRequest:
      type: object
      required: [orderId, amount, currency]
      properties:
        orderId: { type: string, format: uuid }
        amount: { type: number, format: decimal }
        currency: { type: string, minLength: 3, maxLength: 3 }
    Payment:
      type: object
      required: [paymentId, status, amount]
      properties:
        paymentId: { type: string, format: uuid }
        status: { type: string, enum: [PENDING, AUTHORIZED, CAPTURED, FAILED] }
        amount: { type: number, format: decimal }
    Error:
      type: object
      required: [code, message]
      properties:
        code: { type: string, example: PAYMENT_CONFLICT }
        message: { type: string }
        details: { type: object, additionalProperties: true }

 

Антипаттерны: «сгенерим из кода и ладно», отсутствие ошибок/лимитов/идемпотентности, breaking-change без MAJOR.

 

NFR (нефункциональные требования): измеримые и привязанные к сценариям

Зачем: без них «быстро/надёжно» превращается в «медленно/падает».

Категории и примеры SLO/AC:

  • Производительность: p95 latency POST /payments < 3s, RPS ≥ 50.
  • Надёжность/Доступность: 99.9% monthly, RTO ≤ 30m, RPO ≤ 5m.
  • Безопасность: маскирование PII в логах, ролевой доступ к логам, OAuth2/JWT.
  • Наблюдаемость: логи (уровни/маски), метрики (latency, error-rate, throughput), трассировки (trace/correlation-id), алерты (порог/время реакции).
  • Совместимость: поддержка N и N-1 версии контрактов X месяцев.

 

Формат записи (шаблон):

NFR-PERF-001: p95 POST /payments < 3 000 ms (на 95% запросов в неделе), измерение: Prometheus metric payments_latency_ms_p95.

NFR-REL-002: Availability 99.9%/month; RTO 30 min; RPO 5 min; кейсы деградации: отключение 3DS, снижение таймаутов.

NFR-SEC-003: Маскирование PAN/PII в логах (xxx…xxxx), доступ roles: ops.read/sec.read; аудит всех чтений логов.

NFR-OBS-004: Метрики payments_latency_p95, payments_error_rate; алерты: error_rate >0.5% 5 мин — page on-call.

 

Связность артефактов: как это склеивается

  • Vision → SRS §1 «Цели» (копия метрик) → RTM.
  • BPMN/Sequence → ссылки в SRS §2; из диаграмм — якорь на SRS.
  • ER → SRS §3; поля и домены отражены в OpenAPI/событиях.
  • OpenAPI → SRS §4/5; версии прописаны в заголовке SRS, changelog синхронен.
  • NFR → SRS §6 + Observability-раздел; SLI/алерты прописаны и привязаны к RTM.

 

Definition of Spec Done (DoD для документации):

  • Есть Vision + SRS с заполненными разделами.
  • BPMN/Sequence/ER — минимальный набор с версиями и владельцами.
  • OpenAPI — полные схемы + ошибки/лимиты/идемпотентность/безопасность; версия совпадает с SRS.
  • NFR — измеримые, привязаны к сценариям; есть SLI/алерты.
  • RTM покрывает ≥ 90% требований; changelog заполнен; все артефакты лежат в Git, на Wiki — витрина.

 

Практические примеры: «Пакет артефактов к фиче — Возврат платежа»

Состав пакета (минимум):

  • vision/vision-refund.md — цель, KPI, SLO.
  • srs/srs-refund.md — разделы 1–9.
  • diagrams/bpmn/refund.bpmn.drawio — основной процесс + ошибки.
  • diagrams/sequence/refund-seq.mmd — взаимодействия PSP/сервисов.
  • data/er.mmd — сущности Payment/Refund/Order.
  • api/openapi.yml — POST /refunds, GET /refunds/{id}, ошибки/идемпотентность.
  • nfr/nfr-refund.md — p95<2с, error-rate<0.5%, RTO/RPO, алерты.
  • tests/refund.feature — BDD на позитив/негатив/таймаут/повтор.
  • rtm/rtm.csv — 10–15 связей Goal→FR/NFR→Model/Contract→Jira→Test→Metric.

 

Фрагмент BDD:

Feature: Refund payment
  Scenario: Idempotent refund
    Given payment CAPTURED with amount 1000
    And Idempotency-Key "abc-123"
    When POST /refunds { paymentId, amount: 1000 }
    Then response code is 201
    And refund.status is "PENDING"
    When POST /refunds { paymentId, amount: 1000 } with same Idempotency-Key
    Then response code is 200
    And refundId is the same

 

Риски и анти-паттерны (и как их гасить)

  1. Док-долг: «спеки отстают от кода». → Docs-as-code, PR-чеклист: без bump версий/CHANGELOG — нельзя мёржить.
  2. PNG-архитектура: нет исходников диаграмм. → Храним Mermaid/PlantUML/drawio рядом.
  3. SRS без NFR: «медленно/падает» в проде. → Шаблон NFR обязателен, DoR без NFR — не проходит.
  4. OpenAPI без ошибок/идемпотентности: дубли и «залипшие» транзакции. → Применяйте единый error-модель, Idempotency-Key, X-Correlation-Id.
  5. ER без доменов/справочников: рассинхрон данных. → Домены/валидаторы/версионирование справочников.
  6. Нет RTM: никто не понимает, что реализовано/протестировано. → RTM как «вход в релиз».

 

Вопрос–Ответ (частые)

Q1: Нужна ли всегда BPMN, если есть Sequence?
A: Да, если есть человеческий процесс с ролями/исключениями. Sequence — про «кто с кем говорит», BPMN — про «кто и что делает и где ломается».

 

Q2: Можно ли генерить OpenAPI из кода?
A: Можно, но владелец контракта — SA: вы задаёте структуру/ошибки/лимиты/идемпотентность/безопасность и следите за совместимостью.

 

Q3: Как понять, что NFR «правильные»?
A: Они измеримы, привязаны к сценариям, есть SLI/алерты, и команда согласна, как мерить и что делать при нарушении (деградации/откаты).

 

Q4: Где держать диаграммы — в Wiki или Git?
A: Исходники — в Git; в Wiki — рендер и ссылка на канон.

 

Q5: Что важнее — текст или диаграммы?
A: Согласованность. Текст фиксирует исключения/ограничения, диаграммы снижают риск недопонимания. Версионируйте и то, и другое.

 

Практика: «Пакет артефактов к фиче» (4–8 часов)

Задача: собрать минимально жизнеспособный набор артефактов для одной фичи (на выбор: «Возврат платежа», «Смена адреса доставки», «Сброс пароля»).

Шаги:

  1. Vision (1 стр.) — цель/метрики/SLO/границы.
  2. SRS (до 8 стр.) — сценарии, правила, данные, интеграции, NFR, AC/BDD, трассируемость/версии.
  3. BPMN — основной поток + 2 альтернативы + 1 ошибка.
  4. Sequence — критичное взаимодействие (таймаут/ретраи/идемпотентность).
  5. ER — ≥ 5 сущностей, PK/FK, домены.
  6. OpenAPI — 2–3 endpoint (создание/получение/список), ошибки/пагинация/лимиты/безопасность/Idempotency-Key.
  7. NFR — 4–6 требований (perf, rel, sec, obs, compat).
  8. RTM — 10+ связей Goal→FR/NFR→Model/Contract→Jira→Test→Metric.
  9. Версии/Changelog — semver и список изменений.

 

Критерии зачёта:

  • Полнота пакета; AC/BDD покрывают ключевые ветви; NFR измеримы; OpenAPI и ER согласованы; RTM ≥ 90%; все артефакты связаны и версионированы.

 

Структура репозитория (рекомендация):

/docs
  /vision/vision-<feature>.md
  /srs/srs-<feature>.md
  /diagrams/bpmn/<feature>.drawio
  /diagrams/sequence/<feature>.mmd
  /data/er-<domain>.mmd
  /api/openapi.yml
  /nfr/nfr-<feature>.md
  /tests/<feature>.feature
  /rtm/rtm.csv
  CHANGELOG.md

 

Шпаргалка на каждый день

  • Канон в Git, витрина в Wiki, план в Jira.
  • У любого артефакта есть владелец/версия/ссылка на требования/задачи/тесты.
  • OpenAPI всегда с ошибками/лимитами/идемпотентностью/безопасностью.
  • NFR измеримы и привязаны к сценариям + SLI/алерты.
  • Диаграммы с исходниками, версии синхронны с SRS.
  • RTM закрывает путь от цели до метрики — иначе фича «не готова».

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Модуль 1.2. Сбор требований системного аналитика
Следующая статья →
Модуль 1.4. Elicitation: сбор требований без потерь

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

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

  • «Лента» – первая по величине сеть гипермаркетов и четвертая среди крупнейших розничных сетей страны. Компания была основана в 1993 г. в Санкт-Петербурге.

    «Лента» управляет 249 гипермаркетами в 88 городах России и 131 супермаркетом в Москве, Санкт-Петербурге, Сибири, Уральском и Центральном регионах с общей торговой площадью около 1 494 тыс. кв. м. Средняя торговая площадь одного гипермаркета «Лента» составляет около 5 500 кв.м, средняя площадь супермаркета – 800 кв.м. Компания оперирует двенадцатью распределительными центрами. Штат компании – около 50, 5 тыс. человек.

  • С объединением компании Savencia Fromage & Dairy и молочного комбината в г.Белебей, одного из лидеров по производству твердых сычужных сыров в России, Savencia выходит на российский рынок не только как импортер, но и как производитель молочной продукции.

  • Нашей компанией был реализован проект автоматизации конвейера данных на базе СПО ETL-инструмента Apache NiFi для клиента ООО «Императорский Монетный Двор» в части актуализации данных, передаваемых из Системы Oracle в Anaplan.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.