Помилка у програмному забезпеченні ракети-носія Аріан 5 — помилка у програмному забезпеченні бортового комп'ютера, яка призвела до аварії ракети-носія Аріан-5 під час першого запуску 4 червня 1996 року. Ця помилка відома як одна з найдорожчих помилок в історії програмування.
Результати
Ракету розробляли десять років, витративши 7 мільярдів доларів.
Ракета виводила на орбіту чотири супутники для дослідження магнітосфери Землі, загальною вартістю 370 мільйонів доларів. Місію цих супутників завершили лише в двохтисячному за допомогою ракетоносія «Союз».
Це спричинило сплеск у дослідженнях формальних методів проектування комп'ютерних систем, оскільки зацікавленість у них і, відповідно, фінансування збільшились.
Причина невдачі
У програмі керування польотом ракети Аріан 5 використовувались фрагменти програмного забезпечення Аріан 4. Тестування роботи цього модуля було вирішено не проводити, оскільки він був запозичений з перевіреної, робочої програми. Проте під час переносу програмного забезпечення на нову ракету розробники врахували не всі особливості. Ракета мала дещо іншу траєкторію виходу на орбіту (більше прискорення), тому горизонтальна швидкість ракети вийшла за межі, які могла обробляти програма.
А саме, у програмі сталася помилка під час перетворення 64-розрядного числа з рухомою комою у 16-розрядне ціле. Надто велике значення дійсного числа не вмістилося в 16 розрядах, що спричинило переповнення.
Основний і резервний комп'ютери інерційної навігації мали однакову програму, таке резервування розраховане на захист від випадкових збоїв програм та несправностей апаратного забезпечення. Позаяк обидві програми працювали однаково, переповнення було отримане в обох комп'ютерах, після чого сопла повернулися під неправильним кутом. Сильні аеродинамічні тиски зруйнували корпус ракети, після чого спрацювала автоматична система самознищення.
Код
Код написаний на мові Ада:
... declare vertical_veloc_sensor: float; horizontal_veloc_sensor: float; vertical_veloc_bias: integer; horizontal_veloc_bias: integer; ... begin declare pragma suppress(numeric_error, horizontal_veloc_bias); -- UBW aus begin sensor_get(vertical_veloc_sensor); sensor_get(horizontal_veloc_sensor); vertical_veloc_bias := integer(vertical_veloc_sensor); horizontal_veloc_bias := integer(horizontal_veloc_sensor); -- Оператор, що спричинив помилку ... exception when numeric_error => calculate_vertical_veloc(); -- код обробки помилки when others => use_irs1(); -- у цьому випадку виконується... end; end irs2;
Корисне навантаження
Космічний апарат Cluster складався з чотирьох циліндричних, [en] супутників вагою 1200 кг, що мали живитись від сонячних батарей потужністю 224 Вт. Космічний апарат мав літати у формі тетраедра і мав на меті проводити дослідження магнітосфери Землі. Супутники були б розміщені на високоеліптичних орбітах на висоті від 17200 до 120600 км, нахилених під кутом 90 градусів до екватора.
Примітки
- . Архів оригіналу за 5 червня 2010. Процитовано 11 червня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 17 серпня 2008. Процитовано 16 травня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Krebs, Gunter. Cluster 1, 2, 3, 4, 5, 6, 7, 8. Gunter's Space Page. Процитовано 29 November 2011.
Посилання
- Design by Contract: The Lessons of Ariane [ 21 грудня 2011 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Pomilka u programnomu zabezpechenni raketi nosiya Arian 5 pomilka u programnomu zabezpechenni bortovogo komp yutera yaka prizvela do avariyi raketi nosiya Arian 5 pid chas pershogo zapusku 4 chervnya 1996 roku Cya pomilka vidoma yak odna z najdorozhchih pomilok v istoriyi programuvannya Pershij zapuskZovnishnij viglyad raketonosiyaRezultatiRaketu rozroblyali desyat rokiv vitrativshi 7 milyardiv dolariv Raketa vivodila na orbitu chotiri suputniki dlya doslidzhennya magnitosferi Zemli zagalnoyu vartistyu 370 miljoniv dolariv Misiyu cih suputnikiv zavershili lishe v dvohtisyachnomu za dopomogoyu raketonosiya Soyuz Ce sprichinilo splesk u doslidzhennyah formalnih metodiv proektuvannya komp yuternih sistem oskilki zacikavlenist u nih i vidpovidno finansuvannya zbilshilis Prichina nevdachiU programi keruvannya polotom raketi Arian 5 vikoristovuvalis fragmenti programnogo zabezpechennya Arian 4 Testuvannya roboti cogo modulya bulo virisheno ne provoditi oskilki vin buv zapozichenij z perevirenoyi robochoyi programi Prote pid chas perenosu programnogo zabezpechennya na novu raketu rozrobniki vrahuvali ne vsi osoblivosti Raketa mala desho inshu trayektoriyu vihodu na orbitu bilshe priskorennya tomu gorizontalna shvidkist raketi vijshla za mezhi yaki mogla obroblyati programa A same u programi stalasya pomilka pid chas peretvorennya 64 rozryadnogo chisla z ruhomoyu komoyu u 16 rozryadne cile Nadto velike znachennya dijsnogo chisla ne vmistilosya v 16 rozryadah sho sprichinilo perepovnennya Osnovnij i rezervnij komp yuteri inercijnoyi navigaciyi mali odnakovu programu take rezervuvannya rozrahovane na zahist vid vipadkovih zboyiv program ta nespravnostej aparatnogo zabezpechennya Pozayak obidvi programi pracyuvali odnakovo perepovnennya bulo otrimane v oboh komp yuterah pislya chogo sopla povernulisya pid nepravilnim kutom Silni aerodinamichni tiski zrujnuvali korpus raketi pislya chogo spracyuvala avtomatichna sistema samoznishennya KodKod napisanij na movi Ada declare vertical veloc sensor float horizontal veloc sensor float vertical veloc bias integer horizontal veloc bias integer begin declare pragma suppress numeric error horizontal veloc bias UBW aus begin sensor get vertical veloc sensor sensor get horizontal veloc sensor vertical veloc bias integer vertical veloc sensor horizontal veloc bias integer horizontal veloc sensor Operator sho sprichiniv pomilku exception when numeric error gt calculate vertical veloc kod obrobki pomilki when others gt use irs1 u comu vipadku vikonuyetsya end end irs2 Korisne navantazhennyaKosmichnij aparat Cluster skladavsya z chotiroh cilindrichnih en suputnikiv vagoyu 1200 kg sho mali zhivitis vid sonyachnih batarej potuzhnistyu 224 Vt Kosmichnij aparat mav litati u formi tetraedra i mav na meti provoditi doslidzhennya magnitosferi Zemli Suputniki buli b rozmisheni na visokoeliptichnih orbitah na visoti vid 17200 do 120600 km nahilenih pid kutom 90 gradusiv do ekvatora Primitki Arhiv originalu za 5 chervnya 2010 Procitovano 11 chervnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 17 serpnya 2008 Procitovano 16 travnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Krebs Gunter Cluster 1 2 3 4 5 6 7 8 Gunter s Space Page Procitovano 29 November 2011 PosilannyaDesign by Contract The Lessons of Ariane 21 grudnya 2011 u Wayback Machine