Проект OpenBMC, предназначенный для создания прошивок модулей управления серверами, использует микросервисную архитектуру. Сервис HwmonTempSensor собирает данные с датчиков и публикует их на системной шине D-Bus для дальнейшего использования другими компонентами.

Основная логика сервиса сосредоточена в функции createSensors. Анализ показал, что она выполняет 12 задач: от получения конфигурации датчиков до управления драйверами I2C и регистрации объектов на шине D-Bus. Высокая вложенность условий и циклов затрудняет поддержку кода.

В ходе рефакторинга монолитная функция объемом около 280 строк была разделена на методы новой структуры SensorScanner. Несмотря на устранение дублирования кода, общий объем исходного текста увеличился из-за появления новых сигнатур методов и структур данных, необходимых для передачи параметров.

Архитектура проекта предполагает использование сервиса entity-manager для публикации конфигураций. Из-за отсутствия транзакций в протоколе обмена данными сервисы вынуждены ожидать завершения передачи через тайм-аут в 1 секунду. Это решение создает риски обработки неполных данных или сбоев при задержках системы.