Разработка встроенного ПО для фотовспышек

Индустрии
Промышленность
Компетенции
Разработка
Технологии
C

Клиент


Наш клиент — лидер в производстве светового фотооборудования. Торговые представительства компании расположены в крупнейших городах Европы и Азии, таких как Токио, Лондон, Гамбург и Париж. Пользователями устройств являются самые известные фотографы мира.

Задачи


До того как мы начали работать с клиентом, разработкой встроенного программного обеспечения (embedded-разработка) занималась другая аутсорсинговая компания. Заказчик не был удовлетворён работой подрядчиков и обратился в Аркадию. Нам нужно было разобраться с кодом, который перешёл «по наследству» от другой команды, решить накопившиеся проблемы и помочь клиенту наладить выпуск новых продуктов.

Решение


Студийное светоформирование отличается от любительской фотосъёмки количеством вспышек и источников постоянного света, а также, при определённых условиях, чрезвычайно высокой скоростью фотозатвора. Если в комнате стоит, например, пять разных фотовспышек, которые должны сработать одновременно, причём каждая настроена по-своему (световая температура, задержка по синхронизации и т.д.), то управление таким «оркестром» становится довольно сложной задачей.

Необходимость беспроводного соединения этих устройств в синхронизированную систему, а также жёсткие ограничения временных допусков определяли требования к качеству и производительности программного кода, управляющего устройством. Кроме того, в некоторых устройствах используются источники света, требующие высокого напряжения. Это определило требования к надёжности и отказоустойчивости.

Со стороны Аркадии участвовало 3 embedded-разработчика и 1 тестировщик. Нам пришлось очень быстро включаться в работу, чтобы уложиться в сжатые сроки, поставленные заказчиком. Компании нужно было срочно доделывать новый продукт, выход которого на рынок был просрочен на 1 год.

После первичного анализа мы выделили следующие основные проблемы:

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

Далее мы приступили к уточнению технических требований, плотно работая с Product Owner’ом, департаментом микроэлектроники и отделом маркетинга со стороны заказчика. Мы выступали в качестве аналитиков бизнес-требований и по каждому пункту технических требований уточняли, «что именно нужно сделать», а также помогали в расстановке приоритетов добавления новых функций и планировании выпуска ПО в соответствии с изменениями планов.

После уточнения всех требований заказчика и постановки приоритетов мы приступили к глубокому рефакторингу существующего кода. При разработке кода мы учитывали, что компонентная база может измениться (поскольку на заказчика влияет нехватка компонентов по всему миру), и нам было важно, чтобы код модуля, который работал на одном микропроцессоре с одной периферией, запустился и с другой.

Мы также занимались поддержкой текущих исследований продукта (R&D) путём создания прошивок с экспериментальными функциями. Т.е. клиент в условиях лаборатории менял разные «тонкие» параметры, делал эксперименты и говорил, что хочет поменять ещё какие-то функции, а мы писали специальную прошивку для тестирования и отправляли клиенту.

Результат


Благодаря профессиональной работе нашей команды заказчик начал, наконец, выпускать новые продукты и остался очень доволен нашим сотрудничеством. Мы же со своей стороны не просто писали прошивки: мы документировали, что мы пишем, чтобы в будущем это было обслуживаемо. Работа над проектом продолжается, сейчас мы работаем над запуском двух новых устройств.

Помимо embedded-разработки, наша команда также участвовала в разработке приложений на Android и iOS, которые позволяют настраивать комнату, управлять всеми устройствами, настраивать режим работы фотовспышек, делать тестовый кадр с телефона и синхронизировать настройки по Bluetooth.