Почему апдейты могут лишить вас не только смартфона, но и автомобиля
Сегодняшняя жизнь не представима без сложных электронных устройств, помогающих людям буквально во всех сферах жизни. Программы в этих устройствах время от времени нуждаются в обновлении, но почему-то результатом апдейта прошивки или приложения порой становятся не новые функции и повышение производительности, а разочарование и даже обида на разработчиков: гаджет еще вчера работавший вполне сносно, сегодня работает хуже или не работает вообще. Разбираемся с тем, почему так происходит и можно ли с этим что-то сделать.
Обновления софта стали ежедневной реальностью нашей жизни и происходят в 95 (если не 99) процентах случаев без нашего участия и даже ведома. Обнаружив на экране уведомление о том, что «120 приложений успешно обновлены», мы просто закрываем его и почти никогда не смотрим на список обновлений и тем более на их содержание и патчноуты.
Но далеко не всегда эти обновления идут на пользу нашим смартфонам. Некоторые приводят к тому, что устройства просто перестают работать при определенных условиях. Или работают, но неправильно.
И если раньше при приобретении любого гаджета в целом было понятно, каков примерный срок его работы (например, до первого сильного удара о стену), то теперь прекрасно работающий аппарат может стать высокотехнологичным кирпичом всего лишь после очередного системного обновления.
В первую очередь от неудачных обновлений страдают пользователи смартфонов и мультимедийных устройств.
В отдельных случаях телефоны Apple попросту перестают заряжаться после обновления, так как новая версия софта больше не видит беспроводное зарядное устройство. Иногда справиться с этим багом помогает перезагрузка телефона, но не всегда. Причем речь идет о штатных зарядных устройствах, поддержка и работа которых должна быть обеспечена производителем.
За последние годы целая серия неприятностей постигла обладателей наушников с шумоподавлением: после обновления эта функция нарушалась или переставала работать вообще. Относительно недавно это произошло с устройствами компании Apple.
Обновление прошивки AirPods 2 и AirPods Pro было призвано улучшить работу по воспроизведению низкочастотных звуков, но попутно оно сломало режим шумоподавления на этих же частотах. Этот сбой до сих пор не устранен, и по опыту известно, что на его устранение могут уйти месяцы.
Годом ранее подобный глюк обнаружился у наушников wh-1000XM производства Sony. После обновления прошивки до версии 4.1.1 шумоподавление переставало работать так же эффективно, как раньше.
При этом обычно у пользователей нет возможности самостоятельно откатить версию прошивки, чтобы восстановить поломанные при обновлении функции устройства. А компания-разработчик, вместо введения возможности отката обновления или выпуска соответствующего патча обычно отсылает всех недовольных в сервисные центры.
Те немногие владельцы наушников Sony, кто самостоятельно осилили откат прошивки до старой версии 2.0, делали это с помощью весьма хитрых и сложных манипуляций при помощи стороннего софта, сопровождающихся утратой гарантии на устройство.
В опасной зависимости от безупречной работы софта оказываются и беспилотные автомобили. В прошлом году специалисты по кибербезопасности Tesla вскрыли уязвимость системы, позволяющую взломать систему управления или обмануть ее и заставить автомобиль выехать на встречную полосу.
Но иногда для поломки автопилота вовсе не обязательно идти на ухищрения и обманы, достаточно просто обновить его свежей прошивкой.
Другой случай, скорее, можно назвать курьезом — после начала обновления прошивки NIO ES8 электромобиль попросту остановился посреди дороги, заблокировав двери и окна и не давая пассажирам выйти или что-то предпринять.
Конечно, нельзя назвать разумным решение владельца машины запустить обновление ПО на полном ходу прямо посреди дороги, но сам факт того, что это оказалось возможно, является ошибкой. Тем более что установка обновления требует перезагрузки системы.
Случаются и менее безобидные курьезы — например, у одного из владельцев Tesla автопилот был выключен удаленно. Этот человек купил подержанный автомобиль с автопилотом, но после системного обновления тот перестал работать. В компании решили, что обновленная функция автопилота положена только тем, кто покупал ее на свое имя и числится в базе.
Автопилот Tesla постоянно совершенствуется, поскольку эксплуатация электромобиля выявляет все новые ситуации, с которыми его система не справляется. Так, выяснилось, что ее довольно легко обмануть с помощью неверной дорожной разметки и даже портативного проектора, проецирующего такую разметку или изображение человека на дороге.
Обновления прошивки Tesla происходят регулярно, но подчас из-за них возникают новые потенциально аварийные ситуации. Так, в ноябре 2019 года вышло обновление, позволяющее машине распознавать дорожные конусы и мелкие препятствия на дороге. Практически сразу это привело к казусу — зафиксирован случай, когда система приняла за дорожный конус ребенка в оранжевой футболке.
Компания Илона Маска не устает повторять, что автопилот лишь помогает водителю, а не делает за него всю работу, поэтому водитель должен постоянно держать руки на руле и быть готовым в любой момент вмешаться в ситуацию на дороге. Поэтому, формально говоря, автомобили Tesla не ездят под управлением полноценного автопилота — скорее, это такой открытый бета-тест системы с участием водителей-добровольцев.
Тем не менее, все больше людей доверяют автопилоту свою жизнь, утрачивая бдительность и концентрацию внимания на дороге. При таком подходе, когда возникнет критическая ситуация и водителю надо будет взять управление на себя, у человека за рулем останется меньше возможностей отреагировать.
Рост числа сбоев, связанных с отказами софта, имеет логичное объяснение. По мере усложнения ПО и расширения его функций возникает все больше комбинаций входных параметров и состояний системы, влияющих на результаты ее работы. Это число в современных программах заведомо превышает разумные значения.
С технической точки зрения, для написания абсолютно корректной программы или прошивки необходимо предусмотреть и протестировать все возможные ситуации, с которыми они могут столкнуться в своей работе. Понятно, что на это ушло бы экономически неоправданное количество усилий и времени. Ни один производитель ПО не может позволить себе этого.
В реальности компании вынуждены постоянно лавировать между темпами разработки и надежностью новой системы. Поэтому на стадии написания кода исправляются только те ошибки, которые были выявлены отделом тестирования. Готовый продукт выпускается на рынок, и в дальнейшем багрепорты оформляются уже по жалобам пользователей и исправляются по мере поступления.
Кроме того, производители пытаются бороться с ошибками с помощью проектирования. В принципе, если архитектуру и функции программы проработать заранее и действовать строго по намеченному плану, число уязвимостей должно значительно снизится.
Но на практике такой подход реализуется редко — по мере написания и эксплуатации софта список требований и ожиданий от него тоже меняется, заставляя разработчиков добавлять новые функции «на лету». А компании, действующие строго в соответствии с утвержденным три года назад планом, рискуют выпустить пусть и надежный, но заведомо устаревший софт, проиграв тем, кто пишет его не столь основательно и прилежно, но зато с учетом потребностей рынка.
Иногда исправление уязвимостей, возникающих после очередного обновления, занимает непростительно много времени. Пользователи страдают, пишут жалобы и осаждают поддержку, а патча на прошивку все нет и нет. Казалось бы, в такой ситуации проще всего взять и откатить недоработанное обновление — подчас даже бывает странно, что компании не прибегают к такому простому решению.
Дело, однако, в том, что баги в обновлениях дают о себе знать, как правило, далеко не у всех пользователей. Но учитывая десятки или даже сотни тысяч выпущенных устройств, неполадки, возникающие даже у 0,1 процента клиентов, способны привести к созданию сильного негативного фона.
Но откатить обновление уже нельзя. Ведь среди остальных 99,9 процента клиентов есть те, кто уже начал пользоваться новыми функциями, и если вдруг лишить их этого, репутация компании окажется подорвана еще больше.
Наконец, многие несовершенства патчей, в том числе весьма серьезные, дают о себе знать при крайне специфичных обстоятельствах, и учесть или даже повторить их в лаборатории порой бывает непросто. Поэтому, ругая криворуких программистов, не забывайте: мы все участвуем в большом бета-тесте нашего высокотехнологичного мира, и другого способа сделать его надежнее не существует.
Сергей Иванов