Незначительные ошибки в программном обеспечении и их серьезные последствия

Результатом ошибок в программном обеспечении может быть например синий экран монитора. Но это еще хорошая версия развязки событий. Потому что они также приводят к значительно более тяжелым последствиям, начинающимся с потерями человеческих жизней и миллиардами долларов. Впрочем, примеры не нужно искать слишком долго, ведь они находятся на поверхности. Ответственный за тесты безопасности в LogicalTrust Матфей Кочиелский утверждает, что „ошибки есть везде, потому что программное обеспечение используют везде” и перечислил несколько примеров, в которых к катастрофическим последствиям привели, казалось бы незначительные упущения разработчиков, по причине желания сэкономить время или просто из-за отсутствия фантазии.

Therac-25

Между 1985 и 1987 годом-6 человек пострадали получив ожоги в результате облучение аппаратом Therac-25. Три из них погибли в результате несчастного случая. В ходе первого инцидента, в результате которого пациентка потеряла грудь и пострадала часть руки, оказалось, что автомат применил около в 100 раз большую дозу радиации, чем следовало из задания. Производитель, корпорация AECL тогда официально заявил, что это невозможно, поэтому не было принято никаких мер. В том же году – в 1985 году, – другая машина стала неисправной, появилось сообщение об ошибке приведшее к облучению. Оператор был не привыкший к повадкам устройства, но проводил выполнение процедуры. Машина пять раз предприняла попытку экспозиции, после чего совсем отказалась подчиняться. 3 месяца спустя пациент, который принимал участие в операции, скончался в связи с осложнениями от облучения.

nenacitelinie-oshibki-prinescie-serioznie-posledstviya-2

AECL очень долго не признавала вины, утверждая что не существует такой возможности, чтобы Therac-25 производил неправильные дозы радиации в результате которых происходили бы облучения пациентов, и это несмотря на отрицательные сообщения. Несмотря на это, ожоги при его использовании получили еще несколько человек, пока дело не передали в суд. В ходе судебного разбирательства, представитель AECL признался, что отдельно взятые „небольшое число” тестовых устройств случайно попали на рынок. Как оказалось, устройство стоимостью более 1 млн. $ было оснащено ошибочно написанным программным обеспечением, созданное одним лицом. Несчастные случаи были результатом двух мелких упущений разработчика. В целом, хватило одной, как оказалось, очень важной строки кода. Всего несколько десятков символов. Но с другой стороны, ошибка с большой вероятностью была бы исправлена перед внедрением продукта на рынок, если бы правильно проводились тестовые процедуры.

Patriot

Во время Войны в персидском Заливе в 1991 году иракская ракета скад попала в американские казармы в Дахране, убив 28 человек и ранив более 100. Произошла трагедия несмотря на то, что безопасность базы берегли до 6 батарей системы ПРО Патриот. Объясняя данный случай следует подчеркнуть, что «Патриот» был создан в 70-е годы для уничтожения советских ракет движущихся с большой скоростью. Кроме того, по идее, система должна была быть мобильный. Время непрерывной работы ожидалась в течении не более чем 8 часов. По истечении этого срока она должна была быть отключена, перевозится и приводится снова в действие на новом месте.

Как оказалось, в связи с длительным процессом активации системы (60-90 секунд), американские военные в Ираке использовали без перерыва их даже в течение 100 часов. Это не было бы проблемой, если бы не тот факт, что система использовалась в процессе отслеживания вражеских ракет по измерению времени работы в секундах. К сожалению, по определенным причинам, точность вычислений с плавающей точкой, выполняемой с этой целью, была далека от идеала. В результате, 1 секунда рассчитываемая через ПО не была равна фактической секунде. После 100 часов работы, система воспринимала 0,34 секунды за одну полноценную.

nenacitelinie-oshibki-prinescie-serioznie-posledstviya-3

Данной ошибки оказалось достаточно чтобы позволить пролететь летящей иракской ракете скад, несмотря на то, что ее уловила система обнаружения, а затем и спутник в первой фазе прицеливания. Пользуясь неточным таймером, система ошибочно высчитала окно, в котором должна была появиться вражеская ракета на втором этапе обнаружения. Не найдя в нем ожидаемого объекта, Патриот не приняла никаких мер, посчитав что это ложная тревога. В результате допустив упомянутую трагедию. Официальная причина инцидента — неправильная эксплуатация системы Patriot. Батареи не были предусмотрены для работы по 100 часов без перерыва. Вина лежит также на стороне разработчиков, которые о производимом смещении времени узнали только незадолго до событий в Дахране.

Ariane-5

10 лет и 7 миллиардов долларов. Столько же длился и стоил проект строительства ракеты Ariane-5, которая из-за ошибки в программном обеспечении распалась на глазах удивленных зрителей, после нескольких десятков секунд от старта. Европейское Космическое Агентство решило построить ракету- больше, быстрее и лучше, чем ее предшественница. Именно это наследие повлияло на катастрофу.

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

nenacitelinie-oshibki-prinescie-serioznie-posledstviya-4

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

 

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *