
Салют, Хабр!
Меня зовут Алексей, я руководитель SW TPM Team — отвечаю за программное обеспечение умных колонок Sber, а также устройств Умного дома Sber.
Разрабатывая девайсы, мы проходим полный цикл создания устройства: ES, EVT, DVT, PVT-этапы. Это международный инженерный фреймворк, его использует множество компаний. Но акцент во фреймворке на валидации и доработке хардверной части. О том, что в рамках каждого этапа требуется от софта, говорят мало и редко. Поэтому расскажу, как мы вписываем разработку программного обеспечения в основные этапы разработки «железа» и что требуют от software-команды на каждом этапе создания умных устройств Sber. Если вы хотите разрабатывать софт в хардверной компании или уже занимаетесь этим, но пока не работали в рамках фреймворка полного цикла — точно будет интересно.
Дисклеймер: статья написана с воспоминаниями, как давным-давно я сам, работая в хардвер-стартапе, мучительно искал подобный текст и не нашёл.
Рождение продукта, или С нуля до прода
Короткое напоминание, из чего состоит «полный цикл создания устройств». В сумме это бесконечный процесс поиска и пять основных этапов, которые проходит хардверная компания, превращая идею в продукт. Названия этапов в очередной раз доказывают, что инженеры любят аббревиатуры.
Внимание: ниже описан исключительно сам процесс разработки полного цикла в общих чертах. Продуктовые требования и брифы, UX-исследования с пользователями, стратегические решения бизнеса, оптимизация себестоимости устройства не рассматриваются. Как и тот факт, что разработка софта подчиняется инженерному фреймворку — но не ограничивается им.
PoC, Proof-of-Concept — проверка гипотез
Процесс постоянный, цикличный и не привязанный к конкретной категории устройств. Участники подают идеи, которые всесторонне рассматривают и, если видят в них потенциал, превращают в гипотезы, в прототип/прототипы, иногда даже в MVP — минимально жизнеспособное решение. Затем решается, стоит ли превращать эту идею в продукт или она не готова к реализации (в этом виде либо вообще). На выходе компания принимает решение о начале разработки конкретного продукта.
Pre-ES + ES, Engineering Samples — этап инженерного прототипирования
На pre-ES этапе разработана предварительная электрическая схема, появляется предварительный BOM (bill of materials) — список компонентов, которые потребуются для его создания. А на ES-этапе уже становится понятен технический и продуктовый облик будущего устройства.
EVT, Engineering Validation Test — инженерное тестирование
Стадия активной разработки прошивки будущего устройства. Вместе с тем команды начинают проверять работу устройства как единого целого и его основных компонент. Девайсы, которые в итоге на руках у разработчиков, уже схожи с финальными: они исправно выполняют свои основные функции. Значит ли это, что больше ничего не изменится? Разумеется, нет.
DVT, Design Validation Test — валидация механического дизайна
В ходе DVT-этапа устройство приобретает свой финальный вид. На этом же этапе проверяют, что конструкция оптимальна, девайс соответствует всем стандартам, физика безупречна, он нравится нам на вид и наощупь. Далее работа хардверной команды по сути завершена.
PVT, Product Validation Test — отладка производства
Когда само устройство готово, нужно обеспечить его массовое производство. На этом этапе настраиваются производственные линии и линия контроля качества (QC): организовывается система проверок уже собранных устройств. Производится первая тестовая партия товаров, чтобы проверить, насколько корректно работает конвейер.
MP, Mass Production — массовое производство
Включаю его в список, потому что софтверная команда продолжает работу. Хотя устройство уже в продаже, это не значит, что мы перестаём реализовывать дополнительные фичи, выпускать обновления прошивки и патчить прошивку.
А теперь — об этих этапах, какими их видит софтверная команда, и о том, что мы делаем на каждом этапе.
PoC, или Proof-of-Concept
Как уже упоминалось, PoC нельзя назвать этапом. Это постоянный процесс поиска новых идей и решений. Гипотезы рождаются всюду: у инженерной команды и в лаборатории, у бизнес-заказчиков и C-level. Команды аккумулируют перспективные гипотезы, затем начинают тестировать их. Условно, возникает гипотеза — будет ли пользователю интересно и комфортно взаимодействовать с виртуальным ассистентом, который установлен в игрушечном роботе? Для проверки нужно найти робота, доработать, интегрировать ассистента, показать всем прототип и сделать выводы, чтобы решить дальнейшую судьбу гипотезы.
Proof-of-Content — это постоянная проверка команды на креативность и понимание пользователя. Разработчики программного обеспечения, разумеется, активно участвуют в этом процессе.
В итоге отобранный набор гипотез попадает в продуктовый бриф нового устройства, и начинается непосредственно его разработка.
ES. Engineering Samples
Технически его можно разделить на два — pre-ES, который мы считаем стартом проекта разработки устройства, и собственно ES. С точки зрения программного обеспечения, а значит, и команды software, это крайне интересная часть: на pre-ES этапе у нас уже появляются первые платы! А также электрическая схема и перечень компонентов, которые соответствуют планируемым в массовом производстве. На этом этапе плата скорее напоминает макетную — её размер и компоновка составляющих не совпадают с итоговыми. Ниже фотография pre-ES-образца колонки SberBoom Home.

Когда готова первая версия платы, задача команды разработки программного обеспечения — провести первичный bring up: запустить её и отладить. Для этого необходимо:
углубленно изучить Software Development Kit и datasheet на отдельные компоненты;
внедрить уже существующие драйвера или написать свои собственные. При этом драйвер на этом этапе не обязательно должен быть полнофункциональным. Скорее нужно убедиться, что с девайсом можно будет работать именно так, как задумано — например, обмениваться с компонентом данными через SPI и в свою очередь получать по команде какие-то данные.
На pre-ES у нас есть только платы. На ES уже появляются первые прототипы корпуса. Поднимать прошивку мы можем начать в любой из этих моментов. Если «железо» — например, SoC, память DDR, Flash, беспроводные/проводные интерфейсы, датчики — не новое для технических команд, можем даже запустить уже дышащую прошивку. Кроме того, необходимо настроить бэкенды для работы с новым девайсом, чтобы убедиться, что прошивка в целом работает на устройстве плюс провести тесты на текущих образцах. В среднем на этом этапе создаётся 20-30 экземпляров прототипа. Они позволяют оценить внешний вид устройства и запустить далее производство туллинга.
В ходе pre-ES и ES команда разработки программного обеспечения должна убедиться, что сможет программно работать с этой схемотехникой и с этими компонентами. И можно переходить к следующему шагу.
EVT, или Engineering Validation Test
На руках у нас уже есть EVT-образцы. В корпусе размещены платы и другие компоненты будущего устройства — динамики, датчики… На этом этапе софтовая команда должна заняться (если ещё не занялась) созданием factory-прошивки — той, что будет зашиваться во время производства. В зависимости от устройства factory-прошивка может обладать самой разной функциональностью. Чаще всего её функции ограничиваются подключением к Интернету, активацией конкретного девайса и скачиванием «по воздуху» prod-прошивки.
В ходе разработки на factory-прошивке QA комплексно начинает тестировать устройство на предмет выполнения требований, описанных в PRD. Product Requirement Document — это бриф, который составили перед ES-этапом.
Тут нужно забежать вперёд: на производстве для проверки умных устройств Sber применяют специальные тестовые стенды. Мы называем их чемберами (chamber), так как иногда они представляют собой радио- и звуконепроницаемые камеры. В чемберах тестируют железо — хорошо ли работает Wi-Fi-чип, правильная ли амплитудно-частотная характеристика у динамика умной колонке — а также готовят устройство к работе у конечного пользователя. На EVT-этапе мы работаем не только с программным обеспечением самого девайса, но и с ПО чемберов. Его нужно адаптировать под конкретный продукт: определить, где требуются доработки, а что можно переиспользовать. Для экономии времени при переделке софта чемберов под каждое новое устройство используется специальный компонент. Это высокоуровневая абстракция для работы чембера с хардвером девайса, благодаря которой тесты одного продукта можно с минимальными доработками использовать для другого.
Кроме того, мы разрабатываем защищённую версию прошивки с проверкой целостности исполняемого кода и закрытыми отладочными интерфейсами. Она необходима для первого бета-тестирования, которое тоже проходит на EVT-этапе: сотрудники испытывают устройства дома и дают свой фидбэк. Мы понимаем, как продукт работает в реальных условиях, а не на столах разработчиков и стендах. На этом этапе существует уже порядка 50 прото-устройств.
Испытывая прототипы девайса, выявляя их проблемы, исправляя их в конструкторской документации, мы плавно переходим к окончательному варианту продукта и окончанию разработки железной части.
DVT — Design Validation Test
В ходе DVT- этапа происходит финальное утверждение внешнего и внутреннего дизайнов устройств — у нас примерно 100 образцов. И это довольно хлопотный для команды разработки программного обеспечения этап.
Во-первых, устройства с factory-прошивкой проходят внутреннее пользовательское тестирование — более масштабное, чем на EVT-этапе. Нужно довести factory-прошивку до идеала. Напомню, что она зашивается на этапе производства — её нельзя будет изменить на уже готовых девайсах. Кроме того, на этом этапе factory-прошивка проходит аудит безопасности.
Во-вторых, этот вариант софта уже начинает обмениваться данными с различными компонентами: бэкендами, мобильным приложением Салют. Следовательно, к началу тестирования новый продукт должен быть готов взаимодействовать со всеми необходимыми компонентами, хотя бы на тестовых средах. Factory-прошивка проходит тесты, в том числе внутренние в тестовой камере — такие же, какие на этапе PVT будут проводить на фабрике. Проходит финальные испытания с участием заинтересованных сторон, они же ПСИ — приёмо-сдаточные испытания. Только после этого она готова к передаче на фабрику для отладки производства девайса.
В-третьих, доводя factory-прошивку до идеала, мы одновременно смещаем фокус работ на prod-прошивку. Именно её получит девайс, когда пользователь обновит его. Прошивка, которая попадает на устройства первых пользователей — это так называемая 0-day-prod. Туда включены все фичи, которые поддерживаются устройством: от привычных до новых, которые намечены к старту продаж.
К началу пользовательского тестирования prod-прошивки все компоненты системы, взаимодействующей с устройством, должны быть протестированы QA и готовы к работе. При этом некоторые функции устройства могут подъехать чуть позже, чем начинается тестирование. Например, пользователи начинают проверять управление состоянием умных встраиваемых выключателей Sber, а изменение цвета LED-индикатора мы добавляем чуть позже, обновив прошивку по воздуху.
Параллельно дорабатываются все компоненты, которые будут работать с новым девайсом. Даже если сам функционал не нуждается в доработке, нужна поддержка нового устройства, нужно провести e2e-тесты.
DVT-этап закончен, когда:
финально утверждены внутренний и внешний дизайны устройства;
мы передали на фабрику factory-прошивку, а также тестовую и настроечную оснастку;
(опционально) ещё и начали пользовательское тестирование prod-прошивки.
PVT — Production Validation Test
У нас на руках 100-200 PVT-устройств, которые идентичны MP-девайсам. На этом этапе изменения вносятся только в производство — донастраивается и оптимизируется оборудование, а мы тем временем завершаем проверку программного обеспечения, то есть prod-прошивки.
Когда мы прошли все необходимые тесты и проверили пользовательские сценарии, устройство готово к продажам. 0-day-prod прошивка загружается на бэкенд для обновления программного обеспечения у первых покупателей устройства. Комплексно проверяются все компоненты, исправляются последние баги. Готово! Впереди дальнейшие улучшения прошивки, выпуски новых фичей… но они работают по другим процессам.
Ниже небольшая шпаргалка: что софтверная команда делает на каждом этапе.

Заключение
Конечно, это верхнеуровневый рассказ о разработке программного обеспечения для умных устройств Sber (если вдаваться в детали, придется писать книгу). При разработке прошивки существует высокая доля вариативности. Например, можно на DVT-этапе передать на фабрику промежуточную factory-прошивку, функций которой достаточно для отладки производства, а целевую сдать уже на этапе PVT.
Общие принципы всегда остаются одинаковыми. Однако у каждой компании, как у самурая, свой путь: они неизбежно проходят все эти этапы самостоятельно, чтобы на практике настроить процессы, которые подойдут конкретно им.
В подготовке статьи участвовали: @kpvf2d, @rockosov, @olegartys, @HallEffect, @kuro3kin
Комментарии (4)
DenSigma
31.07.2025 12:41А попробуйте написать такую-же статью, но без импортных аббревиатур и прочих "Proof-of-Concept". Все эти этапы имеют обычных русские термины, прозрачные и абсолютно понятные, которые даже в ГОСТе прописаны.
zatim
31.07.2025 12:41Пришла разнарядка писать про отечественные "разработки"? То яндекс хвастался, теперь сбер. Только что та статья что эта создает ощущение того, что люди, пишущие про разработку никогда сами ничего не разрабатывали. Ну, или как вариант, у них такое строгое NDA, что кроме воды и пары фоток и запостить нечего.
Indemsys
Что-то совершенно непонятное.
Почему так много этапов? Кто их придумал?
Сколько реально человек делало и что?
Есть ли смысл в таких статьях без метрик?
Если все это чтобы добиться максимального качества, то "у семи нянек дитя без глазу" - так это выглядит на интуитивном уровне.