Здравствуйте! Меня зовут Щедрин Николай, и я являюсь ведущим аналитиком продукта GigaCode от Сбер. Хочу поделиться с вами сценариями применения ИИ-ассистента в работе системного аналитика, которые использую сам. Надеюсь, статья позволит вам посмотреть на привычные вещи под другим углом и побудит поделиться своими мыслями, идеями и предложениями о применении ИИ-ассистентов в вашей профессиональной деятельности.
Если вы системный аналитик, эта статья — ваш must read. Остальным коллегам (разработчикам, архитекторам, владельцам продукта) будет полезно узнать, как ИИ-инструменты выходят за рамки генерации кода и помогают проектировать системы.
А ещё здесь есть мемы от Kandinsky — куда же без них?


Немного о GigaCode (нескрытая реклама)
В конце 2023 года мы запустили первый разработанный в России ИИ-ассистент разработчика — GigaCode. За год он научился не только генерировать код, но и стал настоящим «швейцарским ножом» для команд: 30 миллионов принятых строк кода в режиме inline-подсказок, появился встроенный чат с ИИ-ассистентом (CodeChat — не путать с GigaChat) и поддержка новых сценариев (например, объяснение кода и создание документации).
После запуска GigaCodeChat, интегрированного в плагин, изначальное позиционирование GigaCode как ИИ-ассистента для разработчиков утрачивает свою актуальность. GigaCode охватывает гораздо более обширный круг задач, связанных с написанием кода. Одну из таких задач мы обсудим в этой статье.
Прежде всего, давайте определим основные роли, которые обычно присутствуют в стандартной команде по разработке ИТ-продукта. Совершенно очевидно, что в команде должен быть владелец продукта (ВП) или продукт-менеджер (ПM), нескольких разработчиков, архитектор, QA-инженер, системный аналитик (СА), специалист по DevOps и другие роли. Каждый член команды может выполнять одну роль или объединять в себе несколько функций. Хотя сценарии использования ассистента для разработчиков и специалистов по DevOps вполне очевидны, сценарии для системных аналитиков остаются не до конца ясными.
Системный аналитик и код: где пересекаются их пути?
В типичной команде разработки системный аналитик часто балансирует между бизнес-требованиями и технической реализацией. Но как ИИ может помочь в задачах, которые, на первый взгляд, не связаны с кодом?
Примеры задач СА, где пригодится GigaCode:
работа с БД: от проектирования таблиц до миграций между СУБД;
создание спецификаций для интеграций;
документирование через UML (Use Case, ER-диаграммы) с привязкой к коду через PlantUML.

Теперь давайте обратимся к примерам. Возьмём для рассмотрения гипотетическую задачу. Результаты нашего рассмотрения будут носить общий характер, поскольку для более глубокого анализа и качественной проработки потребуется многократное повторение каждого этапа, дополнительная информация и уточнения.
Задача: «Необходимо проработать процесс списания средств со счёта Клиента при подключении или автопродлении пакета услуг».
В начале бизнес-аналитик должен проработать список заинтересованных лиц (стейкхолдеров) и взаимодействующих систем, составить перечень требований и ограничений. Работу бизнес-аналитика здесь не рассматриваем, поэтому давайте попросим GigaChat сгенерировать примеры стейкхолдеров и их требования.
Перечень стейкхолдеров (GigaChat сгенерировал гораздо больший список, чем в примере ниже):
Клиент (основной пользователь услуги, чьи средства списываются) — хочет безопасность и удобство.
Финансовый отдел (отвечает за управление финансами компании, контроль денежных потоков) — требует соблюдение нормативов.
ИТ-отдел (разрабатывает и поддерживает систему автоматизации процесса списания средств) — заботится о стабильности работы систем, надёжности интеграций.
Служба поддержки клиентов (обеспечивает техническую поддержку пользователей, решает возникающие проблемы) — заботится о высоком качестве клиентского сервиса.
Банки (организации, через которые осуществляются денежные переводы) — минимум комиссий, максимум скорости.
Попросим GigaChat сгенерировать пользовательскую историю клиента:
Как клиент, я хочу подключать или автоматически продлевать услуги в пару кликов, чтобы деньги списывались автоматически и безопасно.
Контекст:
- Клиент использует мобильное приложение или сайт для подключения к услугам.
- Автоматическое списание средств должно происходить после успешного завершения процедуры подключения/автопродления
Основные этапы: Выбор услуги → проверка данных → оплата → уведомление.
Цель: минимум действий, максимум прозрачности.
Подготовленный на шаге бизнес-аналитики материал (артефакты) передаются в системную аналитику. Именно отсюда начинается самая важная часть статьи.
Рассмотрим несколько сервисов, которые могут поддержать процесс, описанный выше:
Веб-сайт/приложение — интерфейс для клиента.
Backend — обработка запросов и логика.
Сервис авторизации — управление учетными записями.
Платежный шлюз — проведение транзакций.
Сервис уведомлений — информирование пользователей.
Рассмотрим гипотетически возможные сценарии взаимодействия сервисов на примере бэкенда:
Backend получает POST-запрос от сайта.
Backend проверяет данные → авторизует пользователя → создает заказ.
Backend передает данные в платежный сервис → отправляет уведомление.

Попросим GigaCode через окно CodeChat сгенерировать скрипт в формате PlantUML-диаграммы последовательности для этого сценария. Ответ выглядит так:
@startuml
actor "Веб-сайт" as website
participant "Backend" as backend
participant "Сервис авторизации" as auth
participant "База данных" as db
participant "Сервис обработки платежей" as payment
website -> backend: POST-запрос с данными пользователя и услугами
backend -> backend: Проверка данных
alt Данные верны
backend -> auth: Запрос на аутентификацию пользователя
auth -> backend: Результат аутентификации
alt Пользователь аутентифицирован
backend -> db: Создание заказа
db -> backend: Подтверждение создания заказа
backend -> payment: Обработка платежа
payment -> backend: Результат обработки платежа
backend -> website: Результат операции
else Пользователь не аутентифицирован
backend -> website: Ошибка аутентификации
end
else Данные неверны
backend -> website: Ошибка проверки данных
end
@enduml
Этот скрипт можно перевести в изображение с помощью онлайн-сервисов или специального плагина для VSCode. В результате получим:

Следующий запрос к CodeChat направлен на генерацию скриптов для базы данных. Предложения:
CREATE TABLE Users (
id INT PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
phone_number VARCHAR(20),
-- Другие поля, связанные с пользователем
);
CREATE TABLE Services (
id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL,
-- Другие поля, связанные с услугой
);
CREATE TABLE Orders (
id INT PRIMARY KEY,
user_id INT,
service_id INT,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(50),
FOREIGN KEY (user_id) REFERENCES Users(id),
FOREIGN KEY (service_id) REFERENCES Services(id),
-- Другие поля, связанные с заказом
);
CREATE TABLE Payments (
id INT PRIMARY KEY,
order_id INT,
payment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
amount DECIMAL(10, 2) NOT NULL,
status VARCHAR(50),
FOREIGN KEY (order_id) REFERENCES Orders(id),
-- Другие поля, связанные с платежом
Для визуализации связей таблиц просим сгенерировать скрипт ER-диаграммы.
N.B. Некоторые парсеры PlantUML не поддерживают ключевое слово table
. Поэтому рекомендуется в запросе вместо table
использовать ключевое слово entity
.
Результат запроса:
@startuml
!define entity(x) class x << (E,#FF7700) >>
!define column(x) note right: x
entity Users {
id : INT
email : VARCHAR(255)
password_hash : VARCHAR(255)
phone_number : VARCHAR(20)
-- Другие поля, связанные с пользователем
}
entity Services {
id : INT
name : VARCHAR(255)
description : TEXT
price : DECIMAL(10, 2)
-- Другие поля, связанные с услугой
}
entity Orders {
id : INT
user_id : INT
service_id : INT
order_date : TIMESTAMP
status : VARCHAR(50)
-- Другие поля, связанные с заказом
}
entity Payments {
id : INT
order_id : INT
payment_date : TIMESTAMP
amount : DECIMAL(10, 2)
status : VARCHAR(50)
-- Другие поля, связанные с платежом
}
Users ||--o{ Orders : "has"
Services ||--o{ Orders : "has"
Orders ||--o{ Payments : "has"
@enduml

Да, есть вопросы к качеству проработки диаграммы. Но мы начали с того, что результаты будут поверхностными, так как мы не уточняем запросы и не корректируем ответы. Наша цель — показать возможности ИИ в качестве ассистента аналитика.

В конце попросим чат-бота сгенерировать спецификацию API в формате OpenAPI. При генерировании учитываются сущности сгенерированных ранее таблиц.
Код
openapi: 3.0.0
info:
title: Backend API
version: 1.0.0
paths:
/users:
post:
summary: Создание пользователя
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserRequest'
responses:
'200':
description: Пользователь успешно создан
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
'400':
description: Ошибка проверки данных
get:
summary: Получение списка пользователей
responses:
'200':
description: Список пользователей
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserResponse'
/services:
get:
summary: Получение списка услуг
responses:
'200':
description: Список услуг
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceResponse'
/orders:
post:
summary: Создание заказа
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrderRequest'
responses:
'200':
description: Заказ успешно создан
content:
application/json:
schema:
$ref: '#/components/schemas/OrderResponse'
'400':
description: Ошибка проверки данных
'401':
description: Ошибка аутентификации
get:
summary: Получение списка заказов
responses:
'200':
description: Список заказов
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/OrderResponse'
/payments:
post:
summary: Обработка платежа
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequest'
responses:
'200':
description: Платеж успешно обработан
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
'400':
description: Ошибка проверки данных
'401':
description: Ошибка аутентификации
components:
schemas:
UserRequest:
type: object
properties:
email:
type: string
password_hash:
type: string
phone_number:
type: string
required:
- email
- password_hash
example:
email: user@example.com
password_hash: 'hashed_password'
phone_number: '+1234567890'
UserResponse:
type: object
properties:
id:
type: integer
email:
type: string
phone_number:
type: string
example:
id: 1
email: user@example.com
phone_number: '+1234567890'
ServiceResponse:
type: object
properties:
id:
type: integer
name:
type: string
description:
type: string
price:
type: number
format: double
example:
id: 1
name: 'Service 1'
description: 'Service 1 description'
price: 100.0
OrderRequest:
type: object
properties:
user_id:
type: integer
service_id:
type: integer
required:
- user_id
- service_id
example:
user_id: 1
service_id: 2
OrderResponse:
type: object
properties:
id:
type: integer
user_id:
type: integer
service_id:
type: integer
order_date:
type: string
format: date-time
status:
type: string
example:
id: 1
user_id: 1
service_id: 2
order_date: '2022-01-01T00:00:00Z'
status: 'success'
PaymentRequest:
type: object
properties:
order_id:
type: integer
amount:
type: number
format: double
required:
- order_id
- amount
example:
order_id: 1
amount: 100.0
PaymentResponse:
type: object
properties:
id:
type: integer
order_id:
type: integer
payment_date:
type: string
format: date-time
amount:
type: number
format: double
status:
type: string
example:
id: 1
order_id: 1
payment_date: '2022-01-01T00:00:00Z'
amount: 100.0
status: 'success'
Скрипт можно загрузить в Swagger — и вуаля, документация готова!


Итоги: GigaCode — отличный инструмент для аналитиков
В этой статье мы рассмотрели на примере GigaCode возможности ИИ-ассистентов в помощи системным аналитикам. На наши запросы ассистент сгенерировал:
диаграммы в формате PlantUML-скриптов (диаграмму последовательности, ER-диаграмму);
таблицы для базы данных;
спецификацию в формате openAPI.
Мы видим, как GigaCode выходит за рамки традиционного ассистента разработчика и становится универсальным помощником для всех ролей, работающих с кодом. GigaCode может упростить работу системным аналитикам. Вам доступен не только текстовый ввод в CodeChat, но и возможность прикреплять файлы. Например, вы можете отправить HTML-файл страницы Confluence с таблицами, алгоритмами и другим содержимым, чтобы GigaCode сгенерировал таблицы. Или передать yml-файл с описанием API, чтобы получить тесты для него.
Не бойтесь экспериментировать и предлагайте свои сценарии использования нашего ИИ-ассистента. Важно лишь точно формулировать свои запросы. И не бойтесь начинать новые диалоги, если ИИ «зациклился».
Мы ценим ваше мнение и ждём обратной связи: ваши истории, задачи и предложения по новым функциям. Желаем вам успеха!
Попробуйте бесплатно — gigacode.ru. Если что-то пойдёт не так, пишите в комментариях, разберёмся вместе.