anlazz (anlazz) wrote,
anlazz
anlazz

Восстание машин.

Попалась мне тут недавно интересная статья – не на самую, как можно подумать интересную тему – «о качестве встраиваемого ПО». Кратко – то в ней речь идет о том, как автомобиль «Тойота Камри» неожиданно обрел страсть к самопроизвольному набору скорости. Подобное, пожалуй, мало кому понравиться, тем более, что «Тойота Камри» - это не машина для молодых гонщиков (динамика не является сильной чертой данной модели), а солидная «посудина» среднего класса, которая используется для степенных людей, которым не надо куда-то спешить, и которые покупают ее именно из-за высокой безопасности (5 звезд).

Ожидать от подобной модели каких-либо выкрутасов было бы весьма странно. Тем не менее, автомобиль неожиданно начал показывать свой «норов» и это все-таки привело к аварии. Неприятность для фирмы была очевидной, тем более, в той модели, для которой безопасность ставилась во главу угла. Проведенное фирмой расследование привело вначале к «обвинению» коврика, за который якобы задевала педаль. "Тойота" честно отозвала все машины, в которых должны были проявляться проблемы с ковриком – и на этом все могло бы и кончится, но вмешались сторонние эксперты из NASA. 
 
Они изучили систему управления акселерацией данной модели и получили сенсационный результат: приведенные выше проблемы могли быть связаны с контроллером управления дроссельной заслонкой автомобиля. Дело в том, что в современных машинах (даже на ВАЗах) управление «акселератором» осуществляется сугубо электронным образом – положение педали «газа» считывается особым образом и передается соответствующему контроллеру, который, в свою очередь, уже формирует команды для управления механическими приводами. Помимо прочего это позволяет легко реализовать «круиз-контроль» - функцию автоматического поддержания заданной скорости автомобиля.

Подробнее о тех проблемах, что были выявлены экспертами в «тойотовском» контроллере можно почитать в исходной статье. На самом деле, особого ужаса в том, что  там было найдено, нет. Сложность и запутанность программы, что скорее всего говорит о том, что она была сгенерирована автоматически, а равно как и малое соответствие неким отраслевым стандартам  не является отличием «Тойоты» в целом и «Камри» в частности от остальных современных автомобилей. В конце-концов, стандарты эти носят не обязательный, а рекомендательный характер.

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

Но, тем не менее,  сам факт их появления весьма симптоматичен и может отражать некие, весьма неприятные тенденции. Впрочем, подобная ситуация не редкость, например, в сфере программного обеспечения для ПК или для иного «компьютерного» устройства, вроде планшета. Более того, большинство современных мобильных телефонов поставляются на рынок с неявной установкой: все ошибки будут устранены только через несколько патчей (сказал бы кто-нибудь подобное лет десять-пятнадцать назад, ему бы не поверили). Но это все казалось иная область, нежели та, где существуют автомобили и прочее «сложное железо». Компьютеры, телефоны, телевизоры – вся эта электроника очень сильно помогает в жизни, но критического значения не имеет. Разумеется, сломавшийся телефон – плохо, равно как и «висящий» компьютер, но, в крайнем случае, это означает потерю денег.

А автомобиль, сам желающий «покататься с ветерком» способен привести к более печальным последствиям. Поэтому неявно полагается, что тут-то уж нет и не может быть никаких «зависаний» и «синих экранов». К тому же сложность всевозможной автоаппаратуры  проще современного телефона, и это тоже должно способствовать гораздо более высокому уровню надежности.

Но тем не менее, с «Камри» произошло то же, что и с большинством мобильных телефонов - ее программное обеспечение оказалось недостаточно надежным. Причем «виновником» оказался довольно простой, но ответственный узел – контролер акселератора. Но ведь в современном автомобиле множество программируемой электроники. Например, блок управления двигателем, система ABS, ESP и т.п. Все они построены на базе микроконтроллеров, то есть имеют свое программное обеспечение. И вот в свете ситуации с контроллером акселератора возникают вполне обоснованные сомнения в том, что все эти блоки будут работать так, как считали нужным их конструкторы.

Поэтому локальная проблема с маленьким контроллером оказывается не столь проста, как кажется. Ведь главное тут опять же, не технические проблемы – они то решаемы – а то, что скрывается под ними. Ведь, на самом деле, почему все контроллер акселератора  запрограммировали столь странным образом? Сделать это много проще, чем, скажем, написать операционную систему или какой-нибудь графический редактор. Правда, в идеале, специалист, создающий программы к микроконтроллерам, в отличие от программиста, пишущего программы для ПК, должен знать язык программирования ассемблер и разбираться в тонкостях процессорной архитектуры. Но в отличие от более сложных программ, содержащих миллионы строк кода, тут вполне возможно увидеть всю программу целиком, проследить за отдельными функциями и переменными. И уж конечно, свести возможность разного рода «глюков» к минимуму. Разумеется, программист, способный на подобное, будет «стоить» подороже обычных «кодеров», возможно даже в разы, но т подобное не критично. Дело в том, что затраты на написание качественной программы будут гарантированно перенесены на миллионы выпущенных машин, где это вызовет повышение цены на ничтожную  величину.

Затраты на написание данной программы просто включается в огромный бюджет разработки новой модели. Ведь «Тойота» - не АВТОВАЗ, она тратит огромные средства на обеспечения надежности и безопасности своих машин. Но почему же при этом вдруг получилось так, как указано в исходной статье?

А очень просто. Дело в том, что написание программ, как и любое деяние человека, должно иметь вполне очевидную цель. Разумно было бы предположить, что написание программы имеет цель создание написанной программы. Действительно, часто она ставится именно так. Тогда возможны удивительные результаты- есть знаменитый пример Линуса Товальдса, который смог в одиночку создать многозадачную операционную систему Linux. Бесплатно. Впоследствии он и его сторонники смогли развить данный проект до такой степени, что бесплатный Linux стал прямым конкурентам коммерческих операционных систем.

Но подобное случается не всегда. В большинстве случаев работа идет не ради создаваемого продукта, а ради иных целей. Например, многие работники трудятся ради удовлетворения интересов руководства. То есть их цель - сделать так, чтобы начальник остался доволен. Будет ли при этом работа выполнена хорошо, и будет ли она выполнена вообще, никого не волнует. Данная схема применяется в большинстве случаев работы в крупных фирмах.

Данная схема основана на том, что начальник должен удостовериться в том, что подчиненные выполнили именно свою работу. Но это не всегда работает. Во первых, начальник просто может не разбираться в довольно специфической теме (программировании микроконтроллеров или чем то ином). А во вторых, начальник тоже подчиняется тем же правилам, что и подчиненный: его основная роль – это выполнение распоряжений вышестоящего начальства.

В результате работы данной системы целью ее становится создание и отправка «наверх» и «вниз» всевозможных бумаг, которые должны отражать ход выполняемой работы. Но это в идеале. В реальности это «бумажное отражение» вполне может начать жить своей жизнью, мало связанной с тем, ради чего создавалось. В конце-концов, никакой работы, кроме создания отчетов, может вообще не выполняться, что бывает в очень развитых бюрократических системах. И хотя  в большинстве случаев разрыв не столь значителен: что-то реальное еще делается – но тем не менее, качества выполняемой работы это не прибавляет.

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

Разумеется, и этот вариант не является последней инстанцией. Ведь реальные участники рынка все же заинтересованы, чтобы из продукция имела хоть какие-то, отличные от «бумажных», плюсы. Поэтому они все же стараются вылезти из рамок бюрократических процедур. Для этого предназначены всевозможные тесты и испытания готовых изделий. Дело в том, что только в этом случае удается гарантированно «вывести» продукт из бюрократической пирамиды, передав его в «руки» сторонних экспертов, не связанных с производителем. По идее, в данном случае все возможные «косяки» должны вылезти наружу. Но подобное помогает не всегда.

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

Крайний пример этого – ситуация с программным обеспечением ПК. Стандартной является ситуация, когда сколько бы альфа- и бетатестеров не работало бы с программой, в ней все равно останутся некие ошибки («баги»). Это уже стало настолько общепринятым, что  программа, которая после своего официального выпуска у того или иного пользователя не «глючила» бы, может рассматриваться, как уникальный случай. И это при том, что, как правило, производители «софта» немало времени уделяют тестированию. Поэтому выпуск «заплат», патчей к уже давно разработанным программам стал давно общепринятой практикой.

От программного обеспечения подобное распространилось и на всю область электроники, бытовой и не только. По сути, речь идет о том, что огромное число продуктов поставляется на рынок изначально «сырыми», недоделанными. Тем более, что основным фактором, определяющим политику производителей, становится стремление к максимальному уменьшению срока разработки продукта, к стремлению застолбить факт «первого выхода».  
То есть, продукт, получающий хоть какое-то отличие от остальной массы, имеет значительную «фору» в  продвижении на современном насыщенном рынке. Это, в  свою очередь четко настраивает бюрократическую машину корпораций на одну цель: выпустить новую продукцию как можно быстрее. Если еще недавно можно было надеяться, что «крепко сделанный» товар всегда найдет своего покупателя, то теперь этого уже нет – все «экологические ниши» забиты настолько плотно, что никакой, даже самой маленькой «щели», для этого уже не остается.

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

Поэтому, если данная продукция неожиданно начинает проявлять не совсем те качества, которые планировались заранее, то ничего удивительного в этом нет. Как обычно говорят в службе поддержки: обновите программное обеспечение. Для иных изделий, например, автомобилей это тоже справедливо. Обновление программ, управляющих двигателем, правда еще не стало уделом пользователя, не говоря уж об автоматическом режиме. Для этого есть сертифицированные дилеры и особое программное обеспечение, но время, когда для корректного пользования автомобилем надо будет иметь подключение к Интернету, не за горами. В конце-концов, это не столь уж невыполнимое требование.

Но автомобиль, подключенный к интернет-сервисам и обновляющий свое программное обеспечение – это очередное усложнение системы, которое опять таки не способствует повышению надежности. Приведет это к той самой ситуации, которая характерна для ПО и систем телекоммуникаций – когда устранение всех «багов» происходит только когда продукт уже покидает рынок. Но другого пути в современной ситуации нет: подобное прошли многие отрасли, от программ для ПК до телекоммуникационного оборудования.

Впрочем, автомобили – не самая вершина сложности. Данный путь предстоит пройти и другим технически сложным устройствам: от самолетов до космических кораблей. Впрочем, разница тут только в том, что в подобной технике в  наиболее критичных местах стараются применять резервирование и прочие конструктивные способы увеличения надежности, которые значительно снижают опасность возникновения критических ситуаций, пусть и за счет снижения коммерческой эффективности. Предположить, что от этого откажутся в пользу большей выгоды, пока нельзя, но подобный вариант не выглядит абсурдным. В конце-концов, сколько сил было потрачено для того, чтобы сократить экипажи самолетов с трех до двух человек.

Впрочем, помимо «софта» есть еще и «хард». И сказанное про программы вполне применимо к железу. Другое дело, что обновить через сеть его не получится, и это приводит к весьма консервативной политике в данном плане. Но тем не менее, основные закономерности для железа остаются те же, и это приводит к тому, что в комплексе проблемы все равно накапливаются. И чем дальше, тем меньше возможностей разобраться, как и ради чего функционирует та или иная конструкция. В конечном итоге все более-менее сложные системы давно уже вышли за рамки понимания не только корпоративного менеджмента, но и инженерного сообщества. 

Мы получаем весьма странный «мир», в котором эволюция техники в условиях рыночной конкуренции и роста отчуждения привела к тому, что человек «потерял» возможность воздействия на создаваемые им системы. Смешно, но возможность неповиновения техники, пугающая человечество, наверное, с самого начала истории, все же стала реальностью. Правда, не по тому «сценарию», который казался самым вероятным. Не машины обрели разум и самосознание, что привело из к выходу из власти людей. А, напротив, люди потеряли возможность контролировать создаваемую ими техносферу. Не рациональное выстраивание все более сложных конструкций, исходя из своих возможностей и потребностей, а хаотическое, в ответ на требования рыночной конкуренции, конструирование и создание самых абсурдных систем.

Та же, по сути, эволюционная борьба, только перенесенная на новый уровень, где в роли слепого случая выступает сам человек. Вместо ожидаемой войны с искусственным разумом человек неожиданно оказался полной противоположностью этому: необходимостью мирного существования со все нарастающем искусственным хаосом. Мир, гда все чаще вполне обыденные вещи, вроде автомобилей, телефонов или компьютеров неожиданно начинают проявлять свой нрав.
Tags: техника, футурология
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 13 comments