Therac-25 — апарат променевої терапії з комп'ютерним управління, виготовлений компанією Atomic Energy of Canada Limited (AECL) у 1982 році. Наступна модель після Therac-6 та Therac-20 (попередні апарати були виготовлені у партнерстві з Compagnie General Radiographique, Франція).
Апарати цієї моделі були причетні до щонайменше шести нещасних випадків між 1985 і 1987 роками, в яких пацієнти отримували масові передозування радіації. Через помилки паралельного програмування він іноді давав своїм пацієнтам дози опромінення, які були в сотні разів більше за необхідні, чим спричиняв загибель або серйозні ушкодження.
Ці інциденти підкреслюють небезпеку комп'ютерних систем керування критично важливих для безпеки систем, і вони стали стандартним прикладом досліджень в інформатизації охорони здоров'я та розробці програмного забезпечення. Крім того, самовпевненість інженерів та відсутність належної експертизи для вирішення повідомлених програмних помилок підкреслюють як крайній випадок надмірної впевненості інженерів у результатах їхньої роботи, та недовіра скаргам кінцевих користувачів, що призвело до драматичних наслідків.
Архітектура системи
Апарат пропонував два режими променевої терапії:
- пряма електронно-променева терапія, при якій вузький пучок з низьким струмом високоенергетичних (від 5 МеВ до 25 МеВ) електронів був скерований магнітами на зону обробки;
- мегавольт-рентгенівська (або фотонна) терапія, яка спрямовувала рентгенівський промінь фіксованої енергії 25 МеВ, що вироблявся шляхом зіткнення пучку у 100 разів більшого струму із ціллю, та пропускався через згладжуючий фільтр і коліматор.
Він також включав режим «підсвічування області», що дозволяв правильно розмістити пацієнта, освітлюючи зону лікування видимим світлом.
Опис проблеми
Шість задокументованих інцидентів сталися, коли пучок електронів, що генерується в режимі рентгенівських променів, направлявся безпосередньо на пацієнтів. Причиною виявилися дві помилки програми. Одна, коли оператор неправильно обирав рентгенівський режим перед швидким переходом у електронний режим, що дозволило встановити електронний промінь для рентгенівського режиму без того, щоб ціль рентгенівських променів знаходилася на місці. Друга несправність дозволила електронному пучку активізуватися під час режиму «підсвітки області», якщо під час цього не було активовано жодного режиму пучка або не було встановлено цілі.
Попередні моделі мали апаратні блокування для запобігання подібних несправностей, проте Therac-25 прибрав їх, покладаючись на перевірки програмного забезпечення.
Електронний промінь високого струму вражав пацієнтів приблизно в 100 разів більшою від запланованої дозою опромінення та на більш вузькій ділянці, направляючи потенційно смертельну дозу (бета-випромінювання). Супровідні відчуття були описані пацієнтом Реєм Коксом як «сильне ураження електричним струмом», яке змусило його кричати і вибігти з кабінету лікування. Через кілька днів з'являвся радіаційний опік, у пацієнтів виявляли симптоми променевої хвороби; у трьох випадках травмовані пацієнти пізніше померли внаслідок переопромінення.
Причини
Комісія приписувала основну причину загальній поганій архітектурі та поганим практикам розробки програмного забезпечення, а не окремим конкретним помилкам кодування. Зокрема, програмне забезпечення було розроблено таким чином, що було неможливо перевірити його простим автоматизованим способом.
Дослідники, які розслідували аварії, виявили кілька супровідних причин. Вони згадували наступні інституційні причини:
- AECL не мав незалежного перегляду програмного коду;
- AECL не враховував розробку програмного забезпечення під час своєї оцінки того, як машина може дати бажані результати та які існували режими відмов. Вони складають частини загальних методик, відомих як моделювання надійності та управління ризиками;
- коли система помічала, що щось не так, і зупиняла промінь рентгенівського випромінювання, але на екрані лише відображалось слово «MALFUNCTION» з номером від 1 до 64 (найчастіше згадується «Malfunction 54»). Посібник користувача не пояснював і навіть не перелічив коди помилок, тому оператор натискав клавішу P, щоб усунути попередження і все одно продовжити;
- персонал AECL, а також оператори апарату спочатку не вірили скаргам. Це, ймовірно, було пов'язано із самовпевненістю .
- AECL ніколи не випробовував Therac-25 із поєднанням програмного та апаратного забезпечення, поки його не зібрали в лікарні.
Дослідники також виявили кілька інженерних проблем:
- збій ставався лише тоді, коли на терміналі [en] було введено певну нестандартну послідовність натискань клавіш, яка керувала комп'ютером PDP-11: «X» щоб (помилково) вибрати режим фотонів 25 МеВ з подальшим «курсор вгору», «E» щоб (правильно) вибрати режим електронів 25 МеВ, потім «Enter»; усе протягом восьми секунд;
- конструкція не мала апаратного взаємоблокування, щоб запобігти роботі електронного променя у високоенергетичному режимі без встановлення цілі;
- інженер зробив повторне використання програмного коду зі старих моделей. Такі методи проявляються в так званому програмуванні карґо-культу, коли наявна сліпа залежність від раніше створеного коду, який недостатньо зрозумілий і може бути, а може і не бути доречним. Ці моделі мали апаратні блокування, що маскували дефекти їхнього програмного забезпечення. Ці апаратні засоби безпеки не повідомляли про те, що вони спрацьовували, тому не було жодних ознак наявності несправних програмних команд;
- обладнання не передбачало можливості програмно перевірити, чи спрацьовують датчики правильно (див. («Розімкнена система автоматичного керування»)). Система позиціонування столу була спершу пов'язана з відмовами Therac-25; виробник переглянув це за допомогою зайвих вимикачів, щоб перехресно перевірити їх роботу;
- Процес управління обладнанням не був належним чином синхронізований із процесом інтерфейсу оператора, так що відбувся стан гонитви, якщо оператор занадто швидко змінював налаштування. Це було упущено під час тестування, оскільки потрібна була певна практика, перш ніж оператори змогли б працювати досить швидко, щоб опинитися у цьому режимі відмови;
- Програмне забезпечення встановлювало змінну прапорця шляхом його збільшення, а не встановлюючи його на визначене ненульове значення. Інколи траплялося арифметичне переповнення, спричиняючи повернення прапорця до нуля, а програмне забезпечення — до обходу перевірок безпеки.
Програмне забезпечення було написане мовою асемблера, що вимагає більше уваги для тестування та доброї архітектури. Однак вибір мови сам по собі не вказаний як основна причина у звіті. Апарат також використовував власну операційну систему.
Левесон зазначає, що урок, який слід зробити з інциденту, — це не припускати, що повторно використане програмне забезпечення є безпечним: «Часто робиться наївне припущення, що повторне використання програмного забезпечення або використання комерційного нестандартного програмного забезпечення підвищить безпеку, оскільки це програмне забезпечення вже є широко випробуваним. Повторне використання програмних модулів не гарантує безпеку в новій системі, в яку вони встановлюються». Ця сліпа віра у погано зрозумілі парадигми, кодовані програмним забезпеченням, відома як програмування карґо-культу. У відповідь на такі випадки, як із Therac-25, було створено стандарт [en], який впроваджує стандарти життєвого циклу розробки програмного забезпечення для медичних виробів та конкретні вказівки щодо використання програмного забезпечення [en].
Див. також
Посилання
- Baase, Sara (2008). A Gift of Fire. Pearson Prentice Hall.
- Leveson, Nancy G.; Turner, Clark S. (July 1993). (PDF). IEEE Computer. 26 (7): 18—41. Архів оригіналу (PDF) за 28 листопада 2004. Процитовано 30 вересня 2019.
- Levenson, Nancy (1995). (PDF). Addison-Wesley. Архів оригіналу (PDF) за 16 лютого 2008. Процитовано 30 вересня 2019.
- Casey, Steven. Set Phasers On Stun - Design and Human Error. Aegean Publishing Company. с. 11—16.
- Rose, Barbara Wade. . www.ccnr.org. Архів оригіналу за 6 січня 2018. Процитовано 14 червня 2016.
- Hall, Ken (1 червня 2010). . MDDI - Medical Device and Diagnostic Industry. Архів оригіналу за 12 листопада 2016. Процитовано 12 грудня 2016.
Читати далі
- Gallagher, Troy. . Архів оригіналу за 12 грудня 2007. (short summary of the Therac-25 Accidents)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Therac 25 aparat promenevoyi terapiyi z komp yuternim upravlinnya vigotovlenij kompaniyeyu Atomic Energy of Canada Limited AECL u 1982 roci Nastupna model pislya Therac 6 ta Therac 20 poperedni aparati buli vigotovleni u partnerstvi z Compagnie General Radiographique Franciya Animaciya obertannya povorotnoyi platformi Therac 25 Aparati ciyeyi modeli buli prichetni do shonajmenshe shesti neshasnih vipadkiv mizh 1985 i 1987 rokami v yakih paciyenti otrimuvali masovi peredozuvannya radiaciyi 425 Cherez pomilki paralelnogo programuvannya vin inodi davav svoyim paciyentam dozi oprominennya yaki buli v sotni raziv bilshe za neobhidni chim sprichinyav zagibel abo serjozni ushkodzhennya Ci incidenti pidkreslyuyut nebezpeku komp yuternih sistem keruvannya kritichno vazhlivih dlya bezpeki sistem i voni stali standartnim prikladom doslidzhen v informatizaciyi ohoroni zdorov ya ta rozrobci programnogo zabezpechennya Krim togo samovpevnenist inzheneriv 428 ta vidsutnist nalezhnoyi ekspertizi dlya virishennya povidomlenih programnih pomilok pidkreslyuyut yak krajnij vipadok nadmirnoyi vpevnenosti inzheneriv u rezultatah yihnoyi roboti ta nedovira skargam kincevih koristuvachiv sho prizvelo do dramatichnih naslidkiv Arhitektura sistemiAparat proponuvav dva rezhimi promenevoyi terapiyi pryama elektronno promeneva terapiya pri yakij vuzkij puchok z nizkim strumom visokoenergetichnih vid 5 MeV do 25 MeV elektroniv buv skerovanij magnitami na zonu obrobki megavolt rentgenivska abo fotonna terapiya yaka spryamovuvala rentgenivskij promin fiksovanoyi energiyi 25 MeV sho viroblyavsya shlyahom zitknennya puchku u 100 raziv bilshogo strumu iz cillyu ta propuskavsya cherez zgladzhuyuchij filtr i kolimator Vin takozh vklyuchav rezhim pidsvichuvannya oblasti sho dozvolyav pravilno rozmistiti paciyenta osvitlyuyuchi zonu likuvannya vidimim svitlom Opis problemiInterfejs koristuvacha Therac 25 Shist zadokumentovanih incidentiv stalisya koli puchok elektroniv sho generuyetsya v rezhimi rentgenivskih promeniv napravlyavsya bezposeredno na paciyentiv Prichinoyu viyavilisya dvi pomilki programi Odna koli operator nepravilno obirav rentgenivskij rezhim pered shvidkim perehodom u elektronnij rezhim sho dozvolilo vstanoviti elektronnij promin dlya rentgenivskogo rezhimu bez togo shob cil rentgenivskih promeniv znahodilasya na misci Druga nespravnist dozvolila elektronnomu puchku aktivizuvatisya pid chas rezhimu pidsvitki oblasti yaksho pid chas cogo ne bulo aktivovano zhodnogo rezhimu puchka abo ne bulo vstanovleno cili Poperedni modeli mali aparatni blokuvannya dlya zapobigannya podibnih nespravnostej prote Therac 25 pribrav yih pokladayuchis na perevirki programnogo zabezpechennya Elektronnij promin visokogo strumu vrazhav paciyentiv priblizno v 100 raziv bilshoyu vid zaplanovanoyi dozoyu oprominennya ta na bilsh vuzkij dilyanci napravlyayuchi potencijno smertelnu dozu beta viprominyuvannya Suprovidni vidchuttya buli opisani paciyentom Reyem Koksom yak silne urazhennya elektrichnim strumom yake zmusilo jogo krichati i vibigti z kabinetu likuvannya Cherez kilka dniv z yavlyavsya radiacijnij opik u paciyentiv viyavlyali simptomi promenevoyi hvorobi u troh vipadkah travmovani paciyenti piznishe pomerli vnaslidok pereoprominennya PrichiniKomisiya pripisuvala osnovnu prichinu zagalnij poganij arhitekturi ta poganim praktikam rozrobki programnogo zabezpechennya a ne okremim konkretnim pomilkam koduvannya Zokrema programne zabezpechennya bulo rozrobleno takim chinom sho bulo nemozhlivo pereviriti jogo prostim avtomatizovanim sposobom Doslidniki yaki rozsliduvali avariyi viyavili kilka suprovidnih prichin Voni zgaduvali nastupni institucijni prichini AECL ne mav nezalezhnogo pereglyadu programnogo kodu AECL ne vrahovuvav rozrobku programnogo zabezpechennya pid chas svoyeyi ocinki togo yak mashina mozhe dati bazhani rezultati ta yaki isnuvali rezhimi vidmov Voni skladayut chastini zagalnih metodik vidomih yak modelyuvannya nadijnosti ta upravlinnya rizikami koli sistema pomichala sho shos ne tak i zupinyala promin rentgenivskogo viprominyuvannya ale na ekrani lishe vidobrazhalos slovo MALFUNCTION z nomerom vid 1 do 64 najchastishe zgaduyetsya Malfunction 54 Posibnik koristuvacha ne poyasnyuvav i navit ne perelichiv kodi pomilok tomu operator natiskav klavishu P shob usunuti poperedzhennya i vse odno prodovzhiti personal AECL a takozh operatori aparatu spochatku ne virili skargam Ce jmovirno bulo pov yazano iz samovpevnenistyu 428 AECL nikoli ne viprobovuvav Therac 25 iz poyednannyam programnogo ta aparatnogo zabezpechennya poki jogo ne zibrali v likarni Doslidniki takozh viyavili kilka inzhenernih problem zbij stavavsya lishe todi koli na terminali en bulo vvedeno pevnu nestandartnu poslidovnist natiskan klavish yaka keruvala komp yuterom PDP 11 X shob pomilkovo vibrati rezhim fotoniv 25 MeV z podalshim kursor vgoru E shob pravilno vibrati rezhim elektroniv 25 MeV potim Enter use protyagom vosmi sekund konstrukciya ne mala aparatnogo vzayemoblokuvannya shob zapobigti roboti elektronnogo promenya u visokoenergetichnomu rezhimi bez vstanovlennya cili inzhener zrobiv povtorne vikoristannya programnogo kodu zi starih modelej Taki metodi proyavlyayutsya v tak zvanomu programuvanni kargo kultu koli nayavna slipa zalezhnist vid ranishe stvorenogo kodu yakij nedostatno zrozumilij i mozhe buti a mozhe i ne buti dorechnim Ci modeli mali aparatni blokuvannya sho maskuvali defekti yihnogo programnogo zabezpechennya Ci aparatni zasobi bezpeki ne povidomlyali pro te sho voni spracovuvali tomu ne bulo zhodnih oznak nayavnosti nespravnih programnih komand obladnannya ne peredbachalo mozhlivosti programno pereviriti chi spracovuyut datchiki pravilno div Rozimknena sistema avtomatichnogo keruvannya Sistema pozicionuvannya stolu bula spershu pov yazana z vidmovami Therac 25 virobnik pereglyanuv ce za dopomogoyu zajvih vimikachiv shob perehresno pereviriti yih robotu Proces upravlinnya obladnannyam ne buv nalezhnim chinom sinhronizovanij iz procesom interfejsu operatora tak sho vidbuvsya stan gonitvi yaksho operator zanadto shvidko zminyuvav nalashtuvannya Ce bulo upusheno pid chas testuvannya oskilki potribna bula pevna praktika persh nizh operatori zmogli b pracyuvati dosit shvidko shob opinitisya u comu rezhimi vidmovi Programne zabezpechennya vstanovlyuvalo zminnu praporcya shlyahom jogo zbilshennya a ne vstanovlyuyuchi jogo na viznachene nenulove znachennya Inkoli traplyalosya arifmetichne perepovnennya sprichinyayuchi povernennya praporcya do nulya a programne zabezpechennya do obhodu perevirok bezpeki Programne zabezpechennya bulo napisane movoyu asemblera sho vimagaye bilshe uvagi dlya testuvannya ta dobroyi arhitekturi Odnak vibir movi sam po sobi ne vkazanij yak osnovna prichina u zviti Aparat takozh vikoristovuvav vlasnu operacijnu sistemu Leveson zaznachaye sho urok yakij slid zrobiti z incidentu ce ne pripuskati sho povtorno vikoristane programne zabezpechennya ye bezpechnim Chasto robitsya nayivne pripushennya sho povtorne vikoristannya programnogo zabezpechennya abo vikoristannya komercijnogo nestandartnogo programnogo zabezpechennya pidvishit bezpeku oskilki ce programne zabezpechennya vzhe ye shiroko viprobuvanim Povtorne vikoristannya programnih moduliv ne garantuye bezpeku v novij sistemi v yaku voni vstanovlyuyutsya Cya slipa vira u pogano zrozumili paradigmi kodovani programnim zabezpechennyam vidoma yak programuvannya kargo kultu U vidpovid na taki vipadki yak iz Therac 25 bulo stvoreno standart en yakij vprovadzhuye standarti zhittyevogo ciklu rozrobki programnogo zabezpechennya dlya medichnih virobiv ta konkretni vkazivki shodo vikoristannya programnogo zabezpechennya en Div takozhIonizuyuche viprominyuvannya Radiacijnij zahistPosilannyaBaase Sara 2008 A Gift of Fire Pearson Prentice Hall Leveson Nancy G Turner Clark S July 1993 PDF IEEE Computer 26 7 18 41 Arhiv originalu PDF za 28 listopada 2004 Procitovano 30 veresnya 2019 Levenson Nancy 1995 PDF Addison Wesley Arhiv originalu PDF za 16 lyutogo 2008 Procitovano 30 veresnya 2019 Casey Steven Set Phasers On Stun Design and Human Error Aegean Publishing Company s 11 16 Rose Barbara Wade www ccnr org Arhiv originalu za 6 sichnya 2018 Procitovano 14 chervnya 2016 Hall Ken 1 chervnya 2010 MDDI Medical Device and Diagnostic Industry Arhiv originalu za 12 listopada 2016 Procitovano 12 grudnya 2016 Chitati daliGallagher Troy Arhiv originalu za 12 grudnya 2007 short summary of the Therac 25 Accidents