← На главную

Агент в задачах
системного аналитика

Модуль 3 — Требования, API, моделирование, верификация   Практический модуль 70% практика

Программа обучения системных аналитиков работе с ИИ-агентами
Практика на DigitalWallet + Banking-App

Карта модуля

3.1
Анализ требований
Восстановление требований из кода, матрица с приоритетами, выявление пробелов
3.2
API и интеграции
OpenAPI/Swagger, тестовые сценарии для контрактов, таблицы соответствий между системами
3.3
Моделирование
Генерация Mermaid/PlantUML диаграмм, восстановление из кода
3.4
Когда агент ошибается
Типы ошибок, способы обнаружения, стратегии проверки результатов

3.1 Анализ требований из кода

Нет документации? Агент восстановит требования из исходного кода

C#
DigitalWallet: генерация требований из кода
У проекта нет формального документа требований — только README и код
Инструкция агенту: «Проанализируй проект DigitalWallet. На основе контроллеров, доменных моделей и README восстанови полный список функциональных требований. Для каждого: ID, описание, статус реализации, критичность. Отдельно выдели пробелы — что должно быть в wallet-сервисе, но отсутствует. Сохрани в requirements-matrix.md»
✓ Матрица из 15+ требований. Агент анализирует контроллеры, модели, миграции — формирует структурированную матрицу. Готовая основа для уточнения бэклога.

Результат: матрица требований

ID Требование Статус Критичность
FR-01 Создание кошелька с указанием валюты Реализовано Высокая
FR-02 Пополнение кошелька (WalletFunds) Реализовано Высокая
FR-03 Перевод между кошельками Частично Высокая
FR-04 Мультивалютная конвертация Частично Средняя
FR-05 Лимиты на транзакции Не реализовано Высокая
Пробелы, выявленные агентом:
  • Нет лимитов на транзакции (суммы, количество в день)
  • Отсутствует механизм отмены/возврата
  • Нет аудит-лога операций
  • Не описаны NFR (производительность, доступность)

3.2 API и интеграции

Анализ контрактов, тестовые сценарии, таблицы соответствий между системами

Агент умеет:

  • → Анализировать OpenAPI/Swagger-спецификации, находить проблемы
  • → Генерировать тестовые сценарии для API-контрактов (позитивные + негативные)
  • → Строить таблицы соответствий данных между системами
DigitalWallet
наш API
↔
Таблица
соответствий
↔
Banking-App
приложение партнёра

Сценарий: партнёр приходит со своим мобильным приложением и хочет интегрироваться с нашим API. Задача аналитика — понять, как соотносятся модели данных и где пробелы.

Результат: таблица соответствий данных

Наш API (DigitalWallet) Партнёр (Banking-App) Трансформация Комментарий
Wallet.Balance
decimal
Account.balance
MoneyAmount
decimal → MoneyAmount Прямое соответствие
Currency.Code
enum
currency
String
enum → String Конвертация типа
Transaction.Type
enum
TransactionType
sealed class
enum → sealed class Разные подходы
— QrPayment — Нет аналога в API!

Пробелы видны сразу → готовый материал для задачи на интеграцию

3.3 Моделирование из кода

Агент читает код → строит sequence/activity диаграммы в Mermaid

Ответ агента
sequenceDiagram participant C as Client participant Ctrl as Controller participant TH as TransferHandler participant WR as WalletRepo participant DB as Database C->>Ctrl: POST /api/transfer Ctrl->>TH: TransferCommand TH->>WR: GetWallet(fromId) WR-->>TH: Wallet entity alt balance < amount TH-->>Ctrl: 400 Insufficient funds else success TH->>DB: SaveChanges() Ctrl-->>C: 200 OK end
%%{init: {'theme': 'neutral', 'themeVariables': {'actorBkg': '#4361ee', 'actorTextColor': '#fff', 'actorBorder': '#4361ee', 'signalColor': '#1a1a2e', 'signalTextColor': '#1a1a2e', 'altSectionBkgColor': '#eef0ff', 'noteBkgColor': '#fff4e5'}}}%%
sequenceDiagram
    participant C as Client
    participant Ctrl as Controller
    participant TH as TransferHandler
    participant WR as WalletRepo
    participant DB as Database

    C->>Ctrl: POST /api/transfer
    Ctrl->>TH: TransferCommand
    TH->>WR: GetWallet(fromId)
    WR-->>TH: Wallet entity

    alt balance < amount
        TH-->>Ctrl: 400 Insufficient funds
    else success
        TH->>DB: SaveChanges()
        Ctrl-->>C: 200 OK
    end
          

Итеративно: «Добавь ветку мультивалютной конвертации с CurrencyService» → агент дополняет

3.4 Когда агент ошибается

Четыре типа ошибок, которые нужно уметь распознавать

👻 Галлюцинация фактов

Агент «видит» несуществующие эндпоинты, классы или поля в коде

«В контроллере есть метод RefundTransaction» — а его нет

😤 Ложная уверенность

Утверждает наличие валидации или обработки ошибок, которой нет

«Все суммы проверяются на > 0» — а проверки нет в коде

🕳️ Пропуск информации

Находит 5 из 8 контроллеров, не сообщая о неполноте результата

«Я нашёл все контроллеры: ...» — а три пропустил

🎭 «Додумывание» логики

Достраивает бизнес-логику, которая выглядит правдоподобно, но не соответствует коду

«При переводе автоматически конвертируется валюта» — а нет

Стратегии верификации

📌 На основе фактов

Всегда просить агента указать конкретный файл и строку кода

«Покажи, где именно реализована валидация суммы — файл и строка»

🔄 Перекрёстный анализ

Задать тот же вопрос с другой стороны — инвертировать

«Найди всё, чего НЕ хватает в обработке ошибок»

🔬 Декомпозиция проверки

Разбить крупный вывод на мелкие утверждения и проверить каждое

«Утверждение: кошелёк проверяется на существование. Покажи код»
Не спрашивай «есть ли X?» → спрашивай «покажи, где именно X реализован»

Два проекта для практики

C#
DigitalWallet
thisisnabi/DigitalWallet
E-Commerce Wallet Service — кошельки, мультивалютность, транзакции, пополнение/списание
Backend API → требования, API-анализ, диаграммы
ASP.NET Core EF Core Swagger ~3-8K LOC
Kt
Banking-App-Mock-Compose
alexandr7035/Banking-App-Mock-Compose
Android Banking App — карты, переводы, QR-платежи, профиль, Clean Architecture + Compose
Mobile → прослеживание цепочки вызовов, доменные модели, таблицы соответствий
Kotlin Jetpack Compose Room ~20K LOC

Кросс-проект: соответствие данных между серверным API и мобильными моделями

Практика

5 заданий на двух проектах

  • 1
    Восстановить требования из кода DigitalWallet — матрица с ID, статусом, пробелами DigitalWallet
  • 2
    Прослеживание цепочки «Отправить деньги» через Clean Architecture: UI → ViewModel → UseCase → Repository → Room DB Banking-App
  • 3
    Таблица соответствий данных между DigitalWallet API и Banking-App моделями Кросс-проект
  • 4
    Верификация: задать агенту вопрос, получить ответ, проверить по коду. Зафиксировать: что додумал, что пропустил Верификация
  • 5
    Парная работа: один формулирует задачу, второй оценивает качество ответа агента и ищет ошибки Парная

Итоги Модуля 3

  • 3.1 Требования: агент восстанавливает бизнес-требования из кода — матрица + пробелы
  • 3.2 API: анализ контрактов, тестовые сценарии, таблицы соответствий между системами
  • 3.3 Модели: sequence/activity диаграммы из кода, Mermaid/PlantUML, итеративная доработка
  • 3.4 Верификация: Не «есть ли X?» → «покажи, где X реализован»
Далее → Модуль 4: Работа с данными и кодом — SQL, миграции, code review, рефакторинг с агентом

Домашнее задание

Применить навыки модуля 3 на своём рабочем проекте

1
Восстановить требования из своего проекта ⏱ 30 мин
Выбрать модуль или сервис, где документация отсутствует или устарела. Попросить агента восстановить функциональные требования из кода. Матрица: ID, описание, статус, критичность, пробелы.
Например: модуль оплаты, сервис уведомлений, процесс создания заявки
2
Построить диаграмму процесса ⏱ 25 мин
Выбрать бизнес-сценарий и попросить агента построить sequence-диаграмму в Mermaid, прослеживая цепочку вызовов от входной точки до базы данных. Итеративно доработать: добавить обработку ошибок.
Например: оформление заказа, проведение платежа, регистрация клиента
3
Проверить 3 утверждения агента по коду ⏱ 20 мин
Взять результат задания 1 или 2. Выбрать 3 утверждения агента и применить правило «на основе фактов»: попросить показать конкретный файл и строку. Зафиксировать: что утверждал → что в коде → совпало или нет.
Главное правило: не «есть ли X?» → «покажи, где именно X реализован»

Если рабочий проект недоступен — используйте Banking-App из занятия