Therac-25 - Therac-25

Therac-25 był sterowany komputerowo radioterapia maszyna produkowana przez Atomic Energy of Canada (AECL) w 1982 roku po Therac-6 i Therac-20 jednostek (wcześniejsze jednostki zostały wyprodukowane we współpracy z CGR z Francji ).

Uczestniczył w co najmniej sześciu wypadkach w latach 1985-1987, w których pacjentom podawano duże dawki promieniowania . Z powodu współistniejących błędów programowania (znanych również jako warunki wyścigu), czasami podawał swoim pacjentom dawki promieniowania setki razy większe niż normalnie, co skutkowało śmiercią lub poważnymi obrażeniami. Wypadki te unaoczniły niebezpieczeństwa związane z kontrolą oprogramowania systemów krytycznych dla bezpieczeństwa i stały się standardowym studium przypadku w informatyce medycznej i inżynierii oprogramowania . Ponadto nadmierna pewność siebie inżynierów i brak należytej staranności w celu rozwiązania zgłoszonych błędów oprogramowania są wskazywane jako skrajny przypadek, w którym zbytnia pewność siebie inżynierów w ich początkowej pracy i brak wiary w roszczenia użytkowników końcowych spowodowały drastyczne reperkusje.

Projekt

Maszyna oferowała dwa tryby radioterapii :

Obejmował również tryb „światła pola”, który pozwalał na prawidłowe ułożenie pacjenta poprzez oświetlanie obszaru zabiegowego światłem widzialnym.

Opis problemu

Symulowany interfejs użytkownika Therac-25

Sześć udokumentowanych wypadków miało miejsce, gdy wysokoprądowa wiązka elektronów generowana w trybie rentgenowskim została dostarczona bezpośrednio do pacjentów. Winne były dwie usterki oprogramowania. Po pierwsze, gdy operator niewłaściwie wybrał tryb rentgenowski przed szybką zmianą na tryb elektronowy, co pozwoliło na ustawienie wiązki elektronów na tryb rentgenowski bez obecności tarczy rentgenowskiej. Druga usterka umożliwiła aktywację wiązki elektronów w trybie światła polowego, podczas którego żaden skaner wiązki nie był aktywny lub cel znajdował się na swoim miejscu.

Poprzednie modele miały blokady sprzętowe, aby zapobiec takim błędom, ale Therac-25 usunął je, w zależności od kontroli oprogramowania pod kątem bezpieczeństwa.

Wiązka elektronów o wysokim natężeniu uderzyła w pacjentów około 100-krotnie większą dawką promieniowania niż zamierzona i na węższym obszarze, dostarczając potencjalnie śmiertelną dawkę promieniowania beta . Pacjent Ray Cox opisał to uczucie jako „intensywny wstrząs elektryczny”, powodując, że krzyczał i wybiegł z sali zabiegowej. Kilka dni później pojawiły się oparzenia popromienne , a pacjenci wykazywali objawy zatrucia popromiennego ; w trzech przypadkach ranni pacjenci zmarli później w wyniku przedawkowania.

Przyczyny źródłowe

Komisja przypisała główną przyczynę ogólnie złym praktykom projektowania i rozwoju oprogramowania, a nie pojedynczym konkretnym błędom kodowania. W szczególności oprogramowanie zostało zaprojektowane tak, aby realistycznie niemożliwe było przetestowanie go w czysty zautomatyzowany sposób.

Badacze, którzy badali wypadki, znaleźli kilka przyczyn. Obejmowały one następujące przyczyny instytucjonalne:

  • Firma AECL nie przeprowadziła niezależnego przeglądu kodu oprogramowania i zdecydowała się polegać na kodzie wewnętrznym, w tym na systemie operacyjnym.
  • AECL nie brała pod uwagę projektu oprogramowania podczas oceny, w jaki sposób maszyna może generować pożądane wyniki i jakie istnieją tryby awarii, koncentrując się wyłącznie na sprzęcie i zapewniając, że oprogramowanie jest wolne od błędów.
  • Operatorzy maszyn zostali uspokojeni przez personel AECL, że przedawkowanie jest niemożliwe, co skłoniło ich do odrzucenia Therac-25 jako potencjalnej przyczyny wielu incydentów.
  • AECL nigdy nie testował Therac-25 z kombinacją oprogramowania i sprzętu, dopóki nie został zmontowany w szpitalu.

Naukowcy odkryli również kilka problemów inżynieryjnych :

  • Kilka komunikatów o błędach wyświetlało jedynie słowo „USTERKA”, po którym następowała liczba od 1 do 64. Instrukcja obsługi nie wyjaśniała ani nawet nie odnosiła się do kodów błędów, ani nie wskazywała, że ​​te błędy mogą stanowić zagrożenie dla bezpieczeństwa pacjenta.
  • System rozróżniał błędy, które powodowały zatrzymanie maszyny, wymagające ponownego uruchomienia, oraz błędy, które jedynie wstrzymywały maszynę (co pozwalało operatorom kontynuować pracę z tymi samymi ustawieniami za pomocą naciśnięcia klawisza). Jednak niektóre błędy, które zagrażały pacjentowi, powodowały jedynie wstrzymanie pracy maszyny, a częste występowanie drobnych błędów powodowało, że operatorzy przyzwyczajali się do nawykowego wstrzymywania maszyny.
    • Jedna awaria wystąpiła po wprowadzeniu określonej sekwencji klawiszy na terminalu VT-100, który sterował komputerem PDP-11 : jeśli operator naciśnie „X”, aby (błędnie) wybrać tryb fotonowy 25 MeV, użyj „kursora w górę” aby zmienić wejście na "E", aby (poprawnie) wybrać tryb 25 MeV Electron, a następnie "Enter", wszystko w ciągu ośmiu sekund od pierwszego naciśnięcia klawisza, dobrze w zakresie możliwości doświadczonego użytkownika urządzenia.
  • Projekt nie miał żadnych blokad sprzętowych, które uniemożliwiałyby działanie wiązki elektronów w trybie wysokoenergetycznym bez celu.
  • Inżynier ponownie wykorzystał oprogramowanie z Therac-6 i Therac-20, które wykorzystywały blokady sprzętowe, które maskowały wady oprogramowania. Te zabezpieczenia sprzętowe nie miały możliwości zgłoszenia, że ​​zostały uruchomione, więc przeoczono istniejące wcześniej błędy.
  • Sprzęt nie umożliwiał oprogramowaniu sprawdzenia, czy czujniki działają poprawnie. System pozycji stołu był pierwszym zamieszanym w niepowodzenia Therac-25; producent zmodyfikował go za pomocą redundantnych przełączników, aby sprawdzić ich działanie.
  • Oprogramowanie ustawia zmienną flagową , zwiększając ją, a nie ustawiając na stałą wartość niezerową. Od czasu do czasu występowało przepełnienie arytmetyczne , co powodowało, że flaga wracała do zera, a oprogramowanie pomijało kontrole bezpieczeństwa.

Leveson zauważa, że ​​lekcją, jaką można wyciągnąć z tego incydentu, nie jest zakładanie, że ponownie wykorzystywane oprogramowanie jest bezpieczne: „Często przyjmuje się naiwne założenie, że ponowne użycie oprogramowania lub korzystanie z komercyjnego oprogramowania z półki zwiększy bezpieczeństwo, ponieważ oprogramowanie zostanie wykorzystane Ponowne wykorzystanie modułów oprogramowania nie gwarantuje bezpieczeństwa w nowym systemie, do którego są przenoszone...” Ta ślepa wiara w słabo rozumiane paradygmaty kodowania oprogramowania jest znana jako „ programowanie kultowe cargo” . W odpowiedzi na incydenty, takie jak te związane z Therac-25, powstał standard IEC 62304 , który wprowadza standardy cyklu życia oprogramowania urządzeń medycznych oraz szczegółowe wytyczne dotyczące korzystania z oprogramowania o nieznanym rodowodzie .

Zobacz też

Uwagi

Dalsza lektura