Επικινδυνο Software #1: Therac-25

Θυμάμαι πριν πολλά χρόνια, όταν δηλαδή ήμουν φοιτητής, κάναμε μια κουβέντα με μερικούς πληροφοριακούς και ηλεκτρονικούς. Οι περισσότεροι θεωρούσαν πως τα επαγγέλματα μας δεν είναι και τόσο σημαντικό και πως ένα λάθος που μπορεί να κάνεις κοστίσει δα και το θάνατο κάποιου. Εγώ τότε διαφωνούσα και μάλιστα έφερνα ως παράδειγμα την κατασκευή ιατρικών συσκευών. Δεν είχα στο μυαλό μου κάποιο απτό παράδειγμα όμως τελικά η θεωρεία μου ήταν αληθινή…και μάλιστα 15 χρόνια πριν κάνω αυτή τη συζήτηση με τους συμφοιτητές μου. 

Το Therac-25

Το Therac-25 αναπτύχθηκε τη δεκαετία του 1980 από την εταιρεία AECL (Atomic Energy of Canada Limited). Ήταν το τρίτο μοντέλο σε μια σειρά ιατρικών μηχανημάτων ακτινοθεραπείας και προσέφερε θεραπεία μέσω δύο τρόπων ακτινοβολίας: ηλεκτρονίων και ακτίνων Χ. Το σύστημα διέφερε από τα προηγούμενα μοντέλα, καθώς ήταν το πρώτο που εξαρτιόταν τόσο πολύ από το λογισμικό του για την ασφάλεια, ενώ τα προηγούμενα μοντέλα χρησιμοποιούσαν και μηχανικές ασφαλιστικές δικλείδες.

Πως το software κόστισε ζωές

Το Therac-25 είχε σοβαρά σφάλματα στο λογισμικό του, που επέτρεπαν τη χορήγηση υπερβολικά υψηλών δόσεων ακτινοβολίας σε ασθενείς. Αυτό συνέβη κυρίως λόγω των εξής προβλημάτων:

Αποτυχία σχεδιασμού λογισμικού: Η μηχανή χρησιμοποιούσε έναν συνδυασμό λογισμικού και υλικού για τη ρύθμιση των δόσεων ακτινοβολίας. Όμως, το λογισμικό είχε λάθη που μπορούσαν να οδηγήσουν σε υπερβολική δόση χωρίς την ενεργοποίηση των μηχανικών ασφαλιστικών συστημάτων.

Ανύπαρκτοι ή ελλιπείς έλεγχοι ασφαλείας: Η σχεδίαση του Therac-25 περιλάμβανε λογισμικό που δεν είχε δοκιμαστεί επαρκώς και δεν υπήρχαν αρκετοί έλεγχοι για να διασφαλιστεί ότι το μηχάνημα λειτουργούσε σωστά. Μια κρίσιμη παράλειψη ήταν η έλλειψη αντισταθμιστικών μηχανικών ασφαλειών, καθώς το σύστημα βασιζόταν υπερβολικά στη σωστή λειτουργία του λογισμικού.

Αλληλεπίδραση με τον χειριστή: Οι χρήστες του Therac-25, συνήθως τεχνικοί ιατρικής, μπορούσαν άθελά τους να προκαλέσουν το σφάλμα, κάνοντας ταχεία αλλαγή στις ρυθμίσεις του μηχανήματος. Λόγω ενός σφάλματος στη διαχείριση του πληκτρολογίου, το μηχάνημα μπορούσε να εκκινήσει χωρίς σωστές παραμέτρους για την ακτινοβολία.

Ασαφής και μη χρήσιμη ανατροφοδότηση σφαλμάτων: Όταν προέκυπταν σφάλματα, το μηχάνημα έδινε ασαφή μηνύματα στους χειριστές, τα οποία δεν εξηγούσαν τον κίνδυνο. Οι τεχνικοί δεν καταλάβαιναν τη σοβαρότητα των σφαλμάτων και συχνά αγνοούσαν τα μηνύματα.

Αυτά τα προβλήματα είχαν καταστροφικά αποτελέσματα. Μεταξύ 1985 και 1987, καταγράφηκαν τουλάχιστον έξι περιστατικά όπου ασθενείς έλαβαν υπερβολικές δόσεις ακτινοβολίας, με αποτέλεσμα σοβαρά εγκαύματα, μόνιμες βλάβες και, σε ορισμένες περιπτώσεις, τον θάνατο των ασθενών. Οι δόσεις που χορηγούνταν σε αυτούς τους ασθενείς ήταν έως και 100 φορές μεγαλύτερες από τη σωστή θεραπευτική δόση.

Πώς βελτιώσαμε το software από τότε;

Η αποτυχία του Therac-25 ανάγκασε τους κατασκευαστές να αυστηροποιήσουν τη διαδικασία δοκιμών του λογισμικού, ειδικά μάλιστα σε λογισμικό που έχει να κάνει με την ζωή των ανθρώπων.

Οι κωδικοί σφαλμάτων έδιναν μια κατανοητή πληροφόρηση στους χειριστές ώστε να ξέρουν με ακρίβεια τι πήγε λάθος και γιατί.

Το Therac-25 παραμένει παράδειγμα προς αποφυγή για τις επικίνδυνες συνέπειες του ανεπαρκούς σχεδιασμού και της ανεπαρκούς δοκιμής συστημάτων σε κρίσιμες εφαρμογές, και είναι συχνά μελετώμενο στις σχολές μηχανικής λογισμικού.