oleh Atomic Energy of Canada Limited(AECL) pada tahun 1982 setelah unit Therac-6 dan
Therac-20 (unit sebelumnya telah diproduksi dalam kemitraan dengan CGRPerancis ).
Itu terlibat dalam setidaknya enam kecelakaan antara 1985 dan 1987, di mana pasien
diberi radiasi overdosis besar-besaran. [1]: 425 Karena kesalahan pemrograman bersamaan ,
kadang-kadang memberi pasiennya dosis radiasi yang ratusan kali lebih besar dari normal,
mengakibatkan kematian atau cedera serius. [2] Kecelakaan ini menyoroti
bahaya pengendalian perangkat lunakterhadap sistem yang kritis terhadap keselamatan, dan
mereka telah menjadi studi kasus standar dalam informatika kesehatandan rekayasa perangkat
lunak . Selain itu, terlalu percaya diri para insinyur [1] : 428 dan kurangnya uji tuntas
yang tepat untuk menyelesaikan bug perangkat lunak yang dilaporkan disoroti sebagai kasus
ekstrem di mana terlalu percaya diri para insinyur dalam pekerjaan awal mereka dan
kegagalan untuk mempercayai klaim pengguna akhir yang menyebabkan dampak drastis.
Ini juga termasuk mode "Field light", yang memungkinkan pasien diposisikan dengan benar
dengan menerangi area perawatan dengan cahaya tampak.
Keenam kecelakaan yang didokumentasikan terjadi ketika berkas elektron arus tinggi yang
dihasilkan dalam mode sinar-X dikirim langsung ke pasien. Dua kesalahan perangkat lunak
yang harus disalahkan. [3] Satu, ketika operator salah memilih mode sinar-X sebelum berubah
dengan cepat ke mode elektron, yang memungkinkan berkas elektron diatur ke mode sinar-X
tanpa ada target sinar-X yang terpasang. Kesalahan kedua memungkinkan berkas elektron
untuk mengaktifkan selama mode cahaya lapangan, di mana tidak ada pemindai sinar aktif
atau target berada di tempat.
Model sebelumnya memiliki kunci perangkat keras untuk mencegah kesalahan seperti itu,
tetapi Therac-25 telah menghapusnya, sebagai gantinya tergantung pada pemeriksaan
perangkat lunak untuk keamanan.
Sinar elektron arus tinggi menghantam pasien dengan sekitar 100 kali dosis radiasi yang
dimaksudkan, dan di daerah yang lebih sempit, memberikan dosis radiasi beta
yang berpotensi mematikan. Perasaan itu dijelaskan oleh pasien Ray Cox sebagai "sengatan
listrik yang intens", menyebabkan dia menjerit dan berlari keluar dari ruang
perawatan. [4] Beberapa hari kemudian, luka bakar radiasi muncul, dan pasien menunjukkan
gejala keracunan radiasi ; dalam tiga kasus, pasien yang terluka kemudian meninggal akibat
overdosis. [5]
Sebuah komisi mengaitkan penyebab utama praktik desain dan pengembangan perangkat
lunak yang buruk secara umum dan bukan kesalahan pengkodean spesifik tunggal. Secara
khusus, perangkat lunak dirancang sedemikian rupa sehingga secara realistis tidak mungkin
untuk mengujinya dengan cara otomatis yang bersih. [3]
Peneliti yang menyelidiki kecelakaan menemukan beberapa penyebab yang berkontribusi. Ini
termasuk penyebab kelembagaan berikut:
AECL tidak memiliki kode perangkat lunak yang ditinjau secara independen.
AECL tidak mempertimbangkan desain perangkat lunak selama penilaiannya tentang
bagaimana mesin dapat menghasilkan hasil yang diinginkan dan mode kegagalan apa yang
ada. Ini merupakan bagian dari teknik umum yang dikenal sebagaipemodelan
reliabilitas dan manajemen risiko .
Sistem memperhatikan bahwa ada sesuatu yang salah dan menghentikan sinar-X, tetapi hanya
menampilkan kata "MALFUNCTION" diikuti dengan angka dari 1 hingga 64. Manual
pengguna tidak menjelaskan atau bahkan menangani kode kesalahan, sehingga operator
menekan tombol Kunci P untuk mengabaikan peringatan dan tetap melanjutkan.
Personil AECL, serta operator mesin, pada awalnya tidak percaya keluhan. Ini mungkin
karena terlalu percaya diri. [1] : 428
AECL belum pernah menguji Therac-25 dengan kombinasi perangkat lunak dan perangkat
keras hingga dirakit di rumah sakit.
Perangkat lunak ini ditulis dalam bahasa assembly yang mungkin memerlukan lebih banyak
perhatian untuk pengujian dan desain yang baik. Namun pilihan bahasa dengan sendirinya
tidak terdaftar sebagai penyebab utama dalam laporan. Mesin juga menggunakan sistem
operasinya sendiri.
Leveson mencatat bahwa pelajaran yang bisa diambil dari kejadian itu adalah untuk tidak
berasumsi bahwa perangkat lunak yang digunakan kembali aman: "Asumsi naif sering dibuat
bahwa menggunakan kembali perangkat lunak atau menggunakan perangkat lunak komersial
akan meningkatkan keamanan karena perangkat lunak tersebut akan dilaksanakan
Menggunakan kembali modul perangkat lunak tidak menjamin keamanan dalam sistem baru
yang ditransfer ... " [3] Keyakinan buta terhadap paradigma kode perangkat lunak yang kurang
dipahami ini dikenal sebagai pemrograman pemujaan kargo. Menanggapi insiden seperti
yang terkait dengan Therac-25, standar IEC 62304 telah dibuat, yang memperkenalkan
standar siklus hidup pengembangan untuk perangkat lunak perangkat medis dan panduan
khusus tentang penggunaan perangkat lunak dari silsilah yang tidak diketahui . [6]