Разработка программного обеспечения для контроллера чистых помещений фармацевтического производства столкнулась с критическими проблемами: код имел низкое качество, напоминал «спагетти», отсутствовали тесты и процесс работы с системой контроля версий Git. Исходная экосистема устройств поддерживала ламинарный поток воздуха, регулировала давление и управляла заслонками, но бизнес-логика не была покрыта автоматическими проверками, а сборка зависела от устаревшей IDE для Windows. Для решения этих задач был запущен процесс постепенного улучшения качества кода и внедрения новых практик разработки.
В ходе первой итерации проект был перенесен с платформы Coocox на Segger, организован репозиторий Git и внедрена работа с архитектурными решениями (ADR). На этом этапе искусственный интеллект использовался не для написания кода, а для генерации тестов, что позволило создать покрытие юнит- и интеграционными тестами. Был разработан веб-интерфейс для полуавтоматического тестирования на стенде, что стало первым шагом к автоматизации предрелизного контроля. Во второй итерации две кодовые базы были объединены в одну, при этом агент помог сохранить логику, а для проверки функционала запустили стенд на базе Wiren Board.
Третья итерация включала добавление нового функционала и использование агента для его реализации. Процесс разработки был формализован в SDLC: постановка задачи, написание ADR, создание ветки, разработка с покрытием тестами, отладка производительности, код-ревью и релиз. Для минимизации риска регрессии при рефакторинге низкого качества кода, где бизнес-логика была смешана с обработчиками прерываний и регистрами STM32, применялись ABI-контракты, characterization-тесты и статические архитектурные проверки. Это позволило зафиксировать поведение системы перед внесением изменений, которые уже работают на большом количестве устройств по всей стране.
Для диагностики проблем производительности после объединения функционала, когда нагрузка на главный цикл выросла, были внедрены метрики на аппаратном счетчике тактов Cortex-M3. Были измерены время прохождения главного цикла, обработка датчиков, обмен данными и синхронизация памяти. Результаты публиковались в Modbus-регистрах, а часть данных сохранялась в backup-регистрах для анализа состояния перед перезагрузкой. Нагрузочное тестирование выявило скрытые дефекты в реализации шины I²C, приводящие к блокировке цикла и перезагрузке контроллера watchdog. Двухсуточный прогон обнаружил редкую комбинацию событий длительностью около 1,08 секунды, что привело к переводу чтения датчиков на неблокирующую машину состояний.
В качестве направляющих ограничений для работы AI-агента в разработке прошивки использовались ADR и специфические ограничения для каждой задачи. После перехода на стандартные библиотеки pytest и Criterion объем кода для генерации отчетов сократился более чем на 80%, что позволило снизить расход токенов на 38%. Итогом работы стало повышение производительности, улучшение наблюдаемости системы и создание автоматизированного цикла разработки, способного быстро реагировать на изменения условий эксплуатации и добавлять новый функционал с минимальным риском регрессии.