- BrainTools - https://www.braintools.ru -
Продолжение моей статьи Мечтают ли архитекторы об электроовцах? [1], в которой я обещал привести практический пример.
Обычно начинают с начала, но я решил сразу представить итоги, от бизнес-идеи до запуска в продакшн, для тех, кто не любит вдаваться в подробности.
Сервис для генерации XML-файлов, содержащих информацию о заказах для бухгалтерии, работающий по расписанию.
Основной рабочий процесс — запрашивает данные о заказе в БД, генерирует XML-файл и отправляет на FTP-сервер бухгалтерии.
Шесть основных бизнес-сценариев генерации XML-файлов.
Старт: 15 января 2026 года, задача взята в работу аналитиками.
Начало реализации: 26 января 2026 года, задача взята в работу архитектором.
Финал: 18 февраля 2026 года, успешные тесты и запуск в продакшн.
Итог: 5 рабочих недель или 26 рабочих дней от старта до финала.
Бизнес-аналитик: 13 ч. или примерно 1,625 полных рабочих дней.
Системный аналитик: 17 ч. или примерно 2,125 полных рабочих дней.
Архитектор (ваш покорный слуга): 18 ч. или примерно 2,25 полных рабочих дней.
LLM DeepSeek Reasoner: 2600 API calls, 117M tokens, $4.62 cost.
Итог: 48 ч или 6 раб. дней + $4.62 расходов на LLM.
.NET 8 -> .NET 10
Docker + GitLab CI
Dapper + Microsoft.Data [2].SqlClient
FluentFTP
Quartz.NET [3]
Polly
Самый важный этап на мой взгляд — это тщательный анализ требований и подготовка к реализации. Это включает в себя:
Изучение бизнес-процессов: Понимание текущих бизнес-процессов и их сложности.
Анализ данных: Анализ данных, необходимых для решения задачи.
Определение требований: Определение конкретных требований и ограничений.
На этом этапе большую часть работы проделали аналитики.
Они подготовили примеры XML-файлов, SQL-запросы и данные в CSV-файлах для каждого бизнес-сценария.
Далее с помощью LLM был проведен анализ подготовленных аналитиками материалов.
LLM сформировала технический план реализации, по которому велась разработка.
Проводя анализ технического плана, выяснилось, что LLM расположила этап докеризации седьмым пунктом.
Поэтому я указал LLM начать реализовывать п.1 «Каркас» и п.7 «Докеризация».
Так как мне было важно, чтобы сервис изначально собирался и запускался в Docker.
Важно! Всегда проводите анализ того, что собирается сделать LLM!
Получив работающий каркас приложения в Docker, я начал последовательно реализовывать пункты из технического плана.
После реализации каждого пункта проводилась проверка и тестирование сервиса.
Было реализовано:
Simple HTTP API: health-check, status, version endpoints
DB Layer
XML Generation
FTP Integration
Job Scheduling
Плюс к этому был реализован базовый набор юнит-тестов.
На этой фазе сервис уже полноценно работал, успешно генерировал XML-файлы и отправлял их на FTP-сервер.
Поэтому я передал сервис аналитикам для тестирования и валидации XML-файлов.
Примечание: Если у вас вдруг возник вопрос, почему тестировали аналитики, а не QA-специалисты, то ответ очень простой: вся суть сервиса — сгенерировать правильный XML-файл, провести валидацию содержимого бухгалтерских данных проще всего было именно аналитикам.
Во время тестирования аналитики выявили ошибки [4] в XML-файлах.
Мы начали изучать причины и выяснили:
Изначальные SQL-запросы были некорректными: при изменениях в основной системе продаж SQL-запрос не возвращал часть данных. То есть SQL-запросу нельзя было доверять. Задача вернулась аналитикам на доработку SQL-запросов.
Расхождение между данными в CSV-файлах и эталонными XML-файлами.
Лишние данные в XML-файлах.
Все эти проблемы были выявлены LLM, я лишь транслировал их аналитикам и обсуждал, как так получилось.
Если коротко, то это человеческий фактор.
Возникла потребность [5] в реализации интеграционных тестов. Этот пункт и так стоял в плане, но как обычно откладывался, чтобы быстрее выпустить продукт.
Идея очень простая: у нас есть эталонные XML-файлы и данные из CSV-файлов. Мы можем использовать данные из CSV-файлов для генерации XML-файлов и сравнивать их с эталонными XML-файлами.
После коррекций со стороны аналитиков я реализовал интеграционные тесты. В процессе реализации был исправлен ряд ошибок в коде с прошлых итераций.
И вновь сервис был передан на тестирование и валидацию аналитикам.
Естественно, были выявлены еще ошибки в XML-файлах. И вновь основной причиной были помарки в эталонных XML-файлах.
После их коррекции LLM легко исправляла проблемы.
Всего было найдено три бага:
1-й и 2-й баг были исправлены в течение 10 минут каждый.
3-й баг был более серьезным, ошибка была в бизнес-логике, на исправление было потрачено около 1 ч. Каюсь, это уже мой косяк, я сам не уловил, как должно быть, и так транслировал это LLM.
Опять человеческий фактор, а не LLM.
Давайте теперь пофантазируем на тему того, как было бы реализовано это без LLM.
Ну для начала, анализ и подготовка были бы такими же, как и в нашем случае, поэтому этот пункт мы опустим.
До начала разработки своими силами я отдал задачу на анализ программисту.
Поэтому у нас есть стартовые прогнозы от него.
Предлагалось два схожих варианта, которые займут одинаковое время:
Веб-приложение.
Консольное приложение, которое запускается планировщиком задач Windows (Task Scheduler).
Технические работы:
Описать контракты, приходящие из БД по каждому бизнес-сценарию.
Описать контракты для сохранения в файл.
Написать маппинг БД в файл.
Проверить скрипты, добавить хранимые процедуры в базу.
Добавить DAL (на Dapper будет быстрее всего).
Добавить выгрузку на FTP.
Мониторинг.
Логирование.
Метрики (по желанию).
Развертывание и проверки.
Итоговая оценка: 40 ч. + накладные расходы/погрешность.
Моя оценка этого плана: 50 ч.
Уверен, что стартовый сервис он бы реализовал за прогнозируемое время, т.е. за 40+ часов.
Дальше бы он столкнулся с ошибками в XML-файлах, которые генерировал бы ему сервис.
Как долго бы он разбирался в проблеме? Как быстро бы он выявил те проблемы, которые были обнаружены в реальном кейсе?
Ну пусть он бы тратил по 8 ч на каждую из ошибок, рабочий день.
Мое личное мнение, что в разы больше, но давайте смотреть оптимистично!
Итак, предполагаем следующие:
Он бы понял, что проблема в SQL, за 8 ч. Пофиксили ее.
Дальше понял бы, что есть расхождение между данными и эталонными XML-файлами за 8 ч.
Обнаружил лишние данные в XML-файлах за 8 ч.
Пофиксил бы 1-й и 2-й баг за 8 ч. Это те, которые LLM исправила за 10 минут.
Пофиксил бы 3-й баг, проблема с бизнес-логикой за 8 ч. Не верю в такое, но пусть будет так.
Итог: 80+ часов!
Обращаю внимание [6], что интеграционных тестов в его плане нет.
Все мои допущения я трактовал в пользу программиста, в вероятное итоговое время включил время аналитиков, опустил массовые code review и другие мелочи. Про сроки реализации вообще молчу.
Дальше делайте выводы сами!
Статья про фактическое использование LLM в реальной разработке ПО со статистикой, описанием проблем и т.д.
Программист с «лопатой» не сможет «копать» так же, как программист на «экскаваторе»!
Автор: hurdos
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/25984
URLs in this post:
[1] Мечтают ли архитекторы об электроовцах?: https://habr.com/ru/articles/979892/
[2] Microsoft.Data: http://Microsoft.Data
[3] Quartz.NET: http://Quartz.NET
[4] ошибки: http://www.braintools.ru/article/4192
[5] потребность: http://www.braintools.ru/article/9534
[6] внимание: http://www.braintools.ru/article/7595
[7] Источник: https://habr.com/ru/articles/1002000/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1002000
Нажмите здесь для печати.