Есть ли в машинах жучки?


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

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

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

Недавняя статья в журнале New Scientist, доступная на их веб-сайте Электронные автомобильные ошибки: что нужно знать водителям, резюмирует текущую ситуацию:

Еще одна область, отмеченная как фактор риска, – это абсолютная сложность программного обеспечения современных автомобилей. Ford и Toyota недавно выпустили обновления для устранения сбоев в программном обеспечении, используемом для управления тормозными системами в некоторых их гибридных моделях. Другие производители в разное время сообщали о проблемах с системами автоматической трансмиссии, модулями управления двигателем и программным обеспечением, контролирующим срабатывание подушек безопасности.

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

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

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


Добавить комментарий