Современные программисты живут в интересное время, когда программное обеспечение проникает буквально во все сферы человеческой жизни и начинает существовать в бесчисленных устройствах, ставших частью нашей повседневной жизни.
Программами в холодильниках, часах и кофемашинах сейчас никого не удивишь.
Однако параллельно с торжеством удобства растет зависимость людей от умных технологий.
Неизбежное следствие: надежность программного обеспечения выходит на первый план.
Трудно кого-то напугать вышедшей из строя кофеваркой, хотя неприятностей она может доставить немало (литры кипящего кофе стекают по вашей белоснежной мраморной столешнице.
).
Но идея повышения требований к качеству программного обеспечения важна, поэтому поговорим об ошибках в коде, которые привели к значительной трате времени и денег.
Цель рассказа — борьба с представлением о том, что к дефектам программ можно относиться с таким же пренебрежением, как и раньше.
Теперь ошибки в программах – это не только неправильно нарисованный юнит в игре; теперь от кодекса зависит безопасность имущества и здоровье людей.
В этой статье я хочу привести несколько новых примеров необходимости трепетного отношения к коду.
Нельзя отрицать, что сложные программы все больше входят в нашу жизнь: бытовая техника, управляемая со смартфона, гаджеты, оснащенные функционалом, который был бы немыслим всего 10 лет назад, и, конечно же, более сложное программное обеспечение на заводах, в автомобилях и т. д. д. Любую программу создает человек и чем она умнее, тем опаснее ее сбой.
Давайте поговорим о деньгах, потерянных из-за ошибок в программном обеспечении, и о нашей растущей зависимости от кода.
Тема неоднократно обсуждалась (в том числе и моим коллегой Андреем Карповым -" Большой калькулятор выходит из-под контроля "), и каждый новый пример доказывает: качеством кода нельзя пренебрегать.
Космос
Дорогой дефис
Спутник «Маринер-1» должен был отправиться к Венере в 1962 году.Запустившись с мыса Канаверал, ракета почти сразу сильно отклонилась от своего курса, что создало серьезную угрозу падения на землю.
Чтобы предотвратить возможную катастрофу, НАСА решило запустить систему самоуничтожения ракеты.
Через 293 секунды с момента старта «Маринер-1» был ликвидирован.
Ревизионная комиссия провела расследование, в ходе которого выяснилось, что причиной аварии стала ошибка программного обеспечения, из-за которой были получены неправильные сигналы управления.
Программист неправильно перевел написанную формулу в компьютерный код, пропустив Макрон или подчеркивание (что означает «энное сглаживание значения производной радиуса R по времени»).
Программа воспринимала даже незначительные изменения скорости как очень существенные и проводила корректировку курса( источник ).
Цена «недостающего дефиса» составила 18 миллионов долларов (на тот момент).
Российский GPS, ушедший на дно
Ярким примером того, как могут быть потеряны миллионы из-за ошибки программного обеспечения, является сравнительно недавний случай.Казалось бы, в XXI веке есть все необходимое для написания надежных программ, особенно если речь идет о космической отрасли.
Опытные специалисты с отличным образованием, хорошим финансированием, умением использовать лучшие инструменты для тестирования ПО.
Ничего из этого не помогло.
5 декабря 2010 года ракета-носитель «Протон-М» с тремя спутниками «Глонасс-М» (российский аналог GPS) упала в Тихий океан.
Причину аварии после завершения расследования озвучил официальный представитель Генпрокуратуры РФ Александр Куренной: «Установлено, что причиной аварии стало использование неверной формулы, в результате чего масса жидкого кислородного разгонного блока, залитого в бак окислителя, превысила предельно допустимое значение на 1582 кг, что привело к выводу ракеты-носителя на открытую орбиту и ее падению в Тихий океан" ( источник ).
Интересный момент в этой истории: документ о необходимости корректировки формулы был, но его списали как выполненный.
Руководство не удосужилось проверить, выполняются ли их инструкции.
Все лица, причастные к аварии, подлежат уголовной ответственности и крупным штрафам.
Но это не компенсирует потери в размере $138 млн.
Легковые автомобили
Еще в 2009 году профессор информатики Мюнхенского технического университета и эксперт по автомобильному программному обеспечению Манфред Бра заявил: «Программное обеспечение автомобиля премиум-класса содержит около 100 миллионов строк кода» ( источник ).С тех пор прошло восемь лет, и не нужно быть фанатом Top Gear, чтобы заметить, что современные автомобили — это поистине умные машины.
По словам того же эксперта, стоимость программного обеспечения и электроники в автомобиле составляет около 40% от его рыночной цены.
И это касается бензиновых двигателей, что уж говорить о гибридах и электромобилях, где это значение составляет примерно 70%! Когда электронные компоненты становятся сложнее механических, ответственность разработчиков программного обеспечения возрастает. Ошибка в одной из ключевых систем, например тормозной, гораздо опаснее, чем обрыв тормозного шланга.
Сесть ли за руль современных, комфортных и «умных» автомобилей или ездить на олдскульных, но понятных машинах? Решать вам, но я предлагаю небольшую подборку ошибок в автомобильном программном обеспечении.
И снова Тойота
Японские автомобили Toyota имеют положительную репутацию, но время от времени в СМИ появляется информация об отзыве определенного количества автомобилей.В нашем блоге уже есть статья про программную ошибку в Тойоте - " Toyota: 81 514 нарушений правил ", но этот случай, к сожалению, не единичный.
В 2005 году было отозвано 160 тысяч гибридов Toyota Prius 2004-начала 2005 года выпуска.
Проблема заключалась в том, что машина могла остановиться и заглохнуть в любой момент. На устранение ошибки ушло около 90 минут на одно транспортное средство, или около 240 тысяч человеко-часов.
Крайслер и Фольксваген
В мае 2008 года Chrysler отозвал 24 535 Jeep Commanders 2006 года выпуска.Причина – программная ошибка в модуле управления АКПП.
Неисправность привела к неконтролируемой остановке двигателя.
В июне того же года Volkswagen отозвал около 4000 Пассатов и 2500 Тигуанов.
Здесь ошибка программного обеспечения привела к увеличению оборотов двигателя.
Показания тахометра начали ползти вверх при включении кондиционера.
Само собой, процесс отзыва автомобиля связан с огромными финансовыми затратами.
Но для таких крупных производственных компаний гораздо хуже не денежные потери, а падение доверия потребителей.
При огромной конкуренции на автомобильном рынке одна такая ошибка может обернуться весьма и весьма негативными последствиями.
Восстановить репутацию надежного производителя – задача непростая.
Тесла
Выше речь шла об обычных автомобилях, а не последних годов выпуска.Как видите, даже в них возможны программные ошибки, не говоря уже о активно популяризированных экологически чистых электромобилях.
Поговорим, конечно, о Тесла Модель С .
7 мая 2016 года Джошуа Браун, прославившийся своими видеороликами на YouTube, восхваляющими электромобиль, попал в автокатастрофу.
Он ездил на Tesla Model S. Будучи на 100% уверенным в интеллекте автомобиля, он доверял автопилоту.
Результат доверия оказался трагичным – Джошуа от полученных травм скончался на месте.
Катастрофа получила широкую огласку.
Начато расследование.
Удалось установить, что, судя по всему, Браун самостоятельно не следил за дорогой, и автопилот столкнулся с ситуацией, не отраженной в его программном коде.
Перед «Теслой» Джошуа двигался грузовик с прицепом.
Автомобиль планировал совершить маневр – поворот налево, и соответственно нужно было сбросить скорость.
Но Тесла, ехавший сзади, не стал тормозить, потому что.
Системы автопилота не распознали объект впереди.
Это произошло, скорее всего, из-за яркого солнца.
Лучи отражались от прицепа, и автопилот воспринимал грузовик как единое целое с небом.
В официальном отчете это объясняется следующим образом: «Системы автоматического торможения Tesla представляют собой технологию предотвращения столкновений, возникающую в редких случаях, и не предназначены для надежной работы во всех режимах столкновения, включая столкновения при пересечении трассы» ( источник ).
Полный отчет об аварии доступен по адресу бесплатный доступ .
Другими словами, автопилот призван помогать водителю (более продвинутый круиз-контроль, грубо говоря), а не подменять его функции.
Конечно, такое оправдание не сильно спасло репутацию Теслы.
Работа над улучшением программного обеспечения продолжалась, но Tesla Model S с дорог не сняли.
Компания привела следующую дорожную статистику: «На каждые 90 миллионов миль, пройденных, умирает один человек.
Для сравнения, люди проехали 130 миллионов миль на автопилоте Tesla до того, как была подтверждена первая смерть.
Теперь эта цифра выросла до 200 миллионов».
( источник ) С одной стороны, такая статистика говорит о том, что электромобиль безопаснее, но готовы ли вы доверить программе свою жизнь, жизни пассажиров и других участников дорожного движения? И это не риторический вопрос.
Судя по новости фондовой биржи Несмотря на нашумевшую аварию, акции Tesla с начала 2017 года выросли на 50%.
Этому способствуют два весомых фактора: популярность движений, выступающих за улучшение экологии в мире, и высокий личный рейтинг главы Tesla, Илон Маск.
Глобальный масштаб – беда 2038 года
Я не мог не привести этот пример в конце статьи.Подробнее о Смуте 2038 года вы можете прочитать в статье « 2038: остался всего 21 год ", остановлюсь на одном важном моменте.
Оборудование для заводов: все виды станков, конвейеров; бытовая техника и другие сложные агрегаты, оснащенные специализированным программным обеспечением, имеют достаточно длительный срок службы.
Вероятность того, что машина, выпущенная в 2017 году, будет функционировать и в 2038 году, очень и очень высока.
Отсюда логично сделать вывод: проблема, когда 32-битные значения типа time_t уже не могут корректно отображать даты, уже актуальна! Если разработчики программного обеспечения не учтут это сейчас, то что ждет программистов в 2038 году?! Есть большая вероятность, что программное обеспечение для встраиваемых систем преподнесет некоторые сюрпризы.
Но я думаю, что мы станем свидетелями этого.
Заключение
Возможно, примеры, приведенные в статье, покажутся слишком эпичными.Конечно, широкую огласку получают только трагические случаи.
Но я уверен, что у каждой компании-разработчика программного обеспечения есть история о том, как всего лишь одна ошибка привела к множеству проблем, пусть и локального масштаба.
Возможно ли найти виновника? Иногда да, иногда нет. Но дело не в том, чтобы найти крайнего и как-то его наказать.
Идея в другом — программы становятся сложнее, они все больше входят в нашу жизнь, а значит, требования к надежности кода растут. Цена типичных ошибок возрастает, а ответственность за качество кода ложится тяжелым бременем на плечи разработчиков.
Какой выход? Модернизируйте процесс разработки.
Дайте программистам помощников — специальные программы для выявления и устранения ошибок.
Комплексное использование современных методик существенно снижает вероятность того, что ошибка в коде не будет обнаружена на этапе разработки.
Желаю вам не совершать ошибок и желаю, чтобы ваши проекты никогда не попадали в подборку, подобную той, что приведена в этой статье.
Теги: #НАСА #программирование #Илон Маск #Тестирование ИТ-систем #Tesla #volkswagen #Протон-М #ГЛОНАСС #chrysler #Toyota #цена ошибки #2038 #Mariner 1
-
Создание Веб-Сайта За Простые Шаги
19 Oct, 24 -
Возможно, Тебе Стоит Меньше Работать
19 Oct, 24 -
Недостатки На Хабре
19 Oct, 24 -
Логика Перехвата Sharejs
19 Oct, 24