- PVSM.RU - https://www.pvsm.ru -
Люди: — Эй, Тойота, мы тут посчитали, у вас из-за корявой электроники и софта 89 человек погибло с 2000 по 2010.
Тойота: — Да они сами виноваты, путают педали.
Люди: — Хьюстон, у нас проблемы.
NASA: — Ща разберемся, нам надо 10 месяцев и 3 миллиона долларов.
Люди: — На.
Тойота: — 3 миллиона мало, вот вам еще сверху кэшем.
(прошло 10 месяцев)
NASA: — Эй, Тойота, мы у вас пару ошибок в коде нашли, а точнее 7134 нарушения стандартов MISRA, рекурсию, функцию на 740 строк и 9000 глобальных переменных.
Тойота: — А у нас свои стандарты. А вы ваще на Луну летали?
NASA (публично): — Тойота ни в чем не виновата.
(Акции Тойота подскочили на 4,6%)
Люди: — Ну ё-моё.
(спустя 3 года)
Два американских тестировщика (у которых дедушки погибли в Перл-Харбор): — Нет багов? А если найдем?
Национальное управление безопасностью движения на трассах США (NHTSA) подсчитало, что с 2000 года по 2010 год в авариях погибло 89 человек и 57 получили увечья, в связи с неисправностями электроники.
Toyota отрицает вину электроники и считает, на основе собственного расследования [1], что виновата «залипающая» педаль газа и плохо подогнанные коврики, но отзывает 8,5 млн автомобилей по всему миру.
Жалобы продолжают поступать.
NHTSA начинают собственное расследование [2], привлекают на помощь NASA.
В ходе десятимесячного расследования спецы NASA выявили, что софт не соответствует стандартам MISRA [3] (Motor Industry Software Reliability Association) и содержит 7134 нарушения. Toyota ответили, что у них свои собственные стандарты.
20 декабря 2010 года Тойота отвергает все обвинения, но выплачивает 16 миллиардов долларов [2] в досудебном порядке по искам и выпускает апдейт софта для некоторых моделей машин и отзывает 5,5 миллиона автомобилей.
После объявления результатов исследования NASA акции Toyota на токийской бирже выросли на 4,6%.
В 2013 году в суд Оклахомы подается иск об аварии 2007 года, в которую попали две девушки на Toyota Camry 2005 года выпуска. Одна из них скончалась, другая провела пять месяцев в больнице с травмами спины и головы. Toyota не признала своей вины. Они заявили, что причиной аварии послужило то, что водитель перепутала педали газа и тормоза, а, когда поняла свою ошибку и начала тормозить, — было уже слишком поздно.
К делу подключаются два инженера: Майкл Барр [4] и Филипп Купман [5]. На 20 месяцев разбирать 280 000 строчек кода, писать отчет на 800 страниц. Каждый.
Адрес был засекречен. Номер отеля, в котором работали инженеры, круглосуточно охранялся — охрана следила, чтобы никто не вносил и не выносил никаких бумаг. Все телефоны и интернет были отключены.
Тойота отзывала более 10 миллионов автомобилей по всему миру [6]. Вину так и не признали.
По словам Майкла Барра, их отчет засекретили. Так же засекретили условия контракта, на условиях которого им предоставили исходный код Тойоты. Но Барр рекомендует погуглить транскрипт материалов слушания.
Вот в таких условиях работали аналитики:
И вот такой отчет написали:
Главный подопытный — система электронного управления дроссельной заслонкой (ETCS).
Специалисты NASA сканировали микросхемы рентгеном.
В качестве причин ошибок рассматриваются даже космические лучи.
И код на С чекала:
И тут очередь дошла до кода.
По прикидкам, на каждые 30 нарушений стандартов MISRA приводят к одному «серьезному багу».
Тойота в свои стандарты позаимствовало только 11 правил MISRA.
Инструменты анализа NASA могли проверить 35 правил MISRA и 14 из них были нарушены.
[Источник — Отчет NASA, приложение А: Software [10], стр 28]
Итого: 7134 нарушения (по подсчетам NASA) или 81 514 (по подсчетам Майкла Барра).
10 правил NASA
Статья на Хабре — «10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками» [11]
[Источник — spinroot.com/p10 [12]]
Длина функции ограничивается 60-75 строчками кода, после удаления пустых строк и комментов. Более 200 функций в коде Camry05 превосходили заданную длину. Одна из функций была на 740 строк.
31 имя было объявлено несколько раз в различных областях (in different scopes). Самое частое имя — sts_flags1, которая появлялось в 57 различных областях
А вот это стоит показать покрупнее.
Граф управления потоком простой программы.
Цикломатическая сложность программы [13] выше 50 — показатель, что программа не поддается тестированию.
У Тойоты в ETCS-коде:
В коде Тойоты использовалась рекурсия, и каждая проблема с ней приводила к перезагрузке процессора (CPU reset).
Красочная презентация Филиппа Купмана:
NASA Report on Toyota Unintended Acceleration Investigation
NASA Executive Summary [18]
NASA Full Report [19]
NHTSA Report on Toyota Unintended Acceleration Investigation
Куда ни приеду, моя работа заключается в применении одной простой формулы. Я храню тайны.
Это элементарная арифметика.
Задача из учебника.
Если автомобиль новой модели, изготовленный моей компанией, выехал из Чикаго на запад со скоростью 60 миль в час, — и заклинивает задний мост, машина разбивается и сгорает со всеми, кто попался в ловушку ее салона, — стоит ли моей компании возвращать модель на доработку?
Берем общее количество выпущенных машин данной модели (A), умножаем на вероятное количество машин с неисправностью (B), потом умножаем результат на среднюю стоимость решения вопроса без суда (С). A умножить на B умножить на C. Равняется X. Столько стоит не возвратить модель на доработку.
Если X больше стоимости возврата — мы возвращаем машины, и никто больше не пострадает.
Если X — меньше стоимости возврата — возврата не будет.
— Чак Паланик «Бойцовский клуб», 1996 год.
— И часто бывают такие аварии?
— Вы даже не представляете.
— А в какой компании вы работаете?
— В очень крупной.
— кф «Бойцовский клуб», 1999 год.
Автор: PVS-Studio
Источник [25]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/testirovanie/193675
Ссылки в тексте:
[1] собственного расследования: http://pressroom.toyota.com/article_download.cfm?article_id=3597
[2] собственное расследование: http://www.nhtsa.gov/PR/DOT-16-11
[3] MISRA: https://ru.wikipedia.org/wiki/MISRA_C
[4] Майкл Барр: https://en.wikipedia.org/wiki/Michael_Barr_(software_engineer)
[5] Филипп Купман: https://users.ece.cmu.edu/~koopman/
[6] отзывала более 10 миллионов автомобилей по всему миру: https://en.wikipedia.org/wiki/Sudden_unintended_acceleration#Sudden_Acceleration_in_Toyota_Vehicles
[7] TRANSCRIPT OF MORNING TRIAL PROCEEDINGS HAD ON THE 14TH DAY OF OCTOBER, 2013: http://www.safetyresearch.net/Library/Bookout_v_Toyota_Barr_REDACTED.pdf
[8] BOOKOUT V. TOYOTA 2005 Camry L4 Software Analysis: http://www.safetyresearch.net/Library/BarrSlides_FINAL_SCRUBBED.pdf
[9] KILLER APPS Embedded Software’s Greatest Hit Jobs: http://www.barrgroup.com/files/killer_apps_barr_keynote_eelive_2014.pdf
[10] Отчет NASA, приложение А: Software: http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA_FR_Appendix_A_Software.pdf
[11] «10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками»: https://habrahabr.ru/company/hexlet/blog/303160/
[12] spinroot.com/p10: http://spinroot.com/p10/
[13] Цикломатическая сложность программы: https://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C
[14] Власти США оправдали Toyota: http://kommersant.ru/Doc/1582030
[15] Toyota's runaway-car worries may not stop at floor mats: http://www.latimes.com/business/la-fi-toyota-recall18-2009oct18-story.html
[16] NHTSA-NASA Study of Unintended Acceleration in Toyota Vehicles : http://www.nhtsa.gov/UA
[17] Toyota Recall Timeline: http://www.toyota-lawsuit.com/toyota-recall-timeline/
[18] NASA Executive Summary: http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA_report_execsum.pdf
[19] NASA Full Report: http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA-UA_report.pdf
[20] Appendix_B_Fishbone_Diagrams: http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA_FR_Appendix_B_Fishbone_Diagrams.pdf
[21] Appendix C: Hardware: http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA_FR_Appendix_C_Hardware.pdf
[22] Appendix D: Test Scenarios: http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA_FR_Appendix_D_Test_Scenarios.pdf
[23] NHTSA Executive Summary: http://www.nhtsa.gov/staticfiles/nvs/pdf/NHTSA_report_execsum.pdf
[24] NHTSA Full Report: http://www.nhtsa.gov/staticfiles/nvs/pdf/NHTSA-UA_report.pdf
[25] Источник: https://habrahabr.ru/post/310862/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.