Дезінтеграція ракети "Аріана 5" через 37 секунд після запуску в дівоче плавання ( Flight 501 ) прийнято називати однією з найдорожчих програмних помилок в історії 1 :
Європейському космічному агентству знадобилося 10 років і 7 мільярдів доларів, щоб створити гігантську ракету Ariane 5, здатну виводити на орбіту пару тритонних супутників і покликана надати Європі переважне перевагу в комерційному космічному бізнесі.
Все, що знадобилося, щоб вибухнути цю ракету менше ніж за хвилину у дівоче плавання минулого червня, розкидаючи вогненний сміття по мангрових болотах Французької Гвіани, була невеликою комп'ютерною програмою, що намагалася ввести 64-бітну кількість у 16-бітну область.
Одна помилка, одна аварія. З усіх необережних рядків коду, записаних у літописі інформатики, цей може бути найбільш руйнівним. З інтерв'ю з експертами з ракетної зброї та аналізом, підготовленим для космічного агентства, з'являється чіткий шлях від арифметичної помилки до повного знищення.
Які основні зміни призвели до відмови Flight 501 та подальших розслідувань для дослідження критично важливих систем безпеки та тестування програмного забезпечення?
Я не шукаю пояснення самої помилки, а для пояснення історичного впливу помилки, з точки зору досліджень, які були натхнені або були безпосередньо пов’язані з дослідженнями провалу. Наприклад, у цьому документі робиться висновок:
Ми використовували статичний аналіз для:
- перевірити ініціалізацію змінних,
- надати вичерпний список потенційних конфліктів доступу до даних для загальних змінних,
- вичерпно перерахуйте потенційні помилки часу виконання з семантики Ада.
Наскільки нам відомо, це вперше методи статичного аналізу на основі булевих та не булевих методів, які використовуються для перевірки промислових програм.
Аналогічно цей документ (pdf) зазначає:
Статичний аналіз програм на основі абстрактних інтерпретацій був використаний для статичного аналізу вбудованого програмного забезпечення ADA пускової установки Ariane 5 та ARD. Статичний програмний аналізатор спрямований на автоматичне виявлення визначеності, потенційності, неможливості або недоступності помилок під час виконання, таких як скалярні та «точки відхилення» над fl ows, помилки індексу масиву, розділення на нуль та пов'язані з ними арифметичні винятки, неініціалізовані змінні, перегони даних на спільні структури даних тощо. Аналізатор зміг автоматично виявити помилку Ariane 501 fl. Статичний аналіз вбудованого критичного для безпеки програмного забезпечення (наприклад, авіонічного програмного забезпечення) є дуже перспективним .
Мені б хотілося детально пояснити вплив цієї події на підходи та інструменти тестування програмного забезпечення.
1 Ця цифра в 7 мільярдів доларів, можливо, стосується загальної вартості проекту Ariane 5, Вікіпедія повідомляє, що цей збій призвів до втрати понад 370 мільйонів доларів. Все ще досить дорогий збій, але ніде близько 7 мільярдів доларів.