به گزارش اکوتایمز، Therac-25 یکی از مشهورترین نمونه‌های شکست نرم‌افزار در سامانه‌های ایمنی‌حیاتی محسوب می‌شود؛ دستگاهی که در اوایل دهه ۱۹۸۰ برای پرتودرمانی بیماران سرطانی مورد استفاده قرار گرفت و امکان تولید پرتو الکترونی و اشعه ایکس را داشت.

اما میان سال‌های ۱۹۸۵ تا ۱۹۸۷، دست‌کم ۶ حادثه مرتبط با این دستگاه ثبت شد. در برخی از این موارد، بیماران به‌جای دریافت دوز تعیین‌شده، در معرض تابش بسیار شدید قرار گرفتند و سه نفر در پی این حوادث جان خود را از دست دادند.

وقتی نرم‌افزار جای ایمنی سخت‌افزاری را گرفت

یکی از مهم‌ترین عوامل این حوادث، تغییر معماری ایمنی دستگاه بود. در مدل‌های قبلی، بخشی از کنترل‌های ایمنی به‌صورت سخت‌افزاری انجام می‌شد؛ اما در Therac-25 برخی از این قفل‌های سخت‌افزاری حذف شدند و بخش قابل‌توجهی از مسئولیت جلوگیری از وضعیت‌های خطرناک به نرم‌افزار واگذار شد.

در چنین شرایطی، یک خطای نرم‌افزاری می‌توانست پیامدهایی بسیار فراتر از یک اختلال معمول کامپیوتری داشته باشد.

یکی از خطاهای کلیدی دستگاه، نوعی شرایط رقابتی (Race Condition) بود؛ وضعیتی که در آن ترتیب و سرعت اجرای چند رویداد می‌توانست سیستم را به حالتی غیرمنتظره ببرد. در این شرایط، دستگاه ممکن بود تصور کند در وضعیت ایمن قرار دارد، در حالی که برای تولید پرتو نامناسب آماده شده بود.

یک پیام خطا؛ یک هشدار که جدی گرفته نشد

مشکل تنها در کدنویسی خلاصه نمی‌شد. پیام‌های خطای مبهم نیز تشخیص وضعیت واقعی دستگاه را برای اپراتورها دشوار می‌کرد.

برای مثال، نمایش خطاهایی مانند Malfunction 54 ممکن بود این تصور را ایجاد کند که دستگاه صرفاً درمان را متوقف کرده است؛ درحالی‌که در برخی موارد، بیمار پیش از توقف دستگاه در معرض تابش خطرناک قرار گرفته بود.

بررسی‌های بعدی همچنین نشان داد که برخی خطاها در ابتدا به‌سادگی توسط سازنده قابل بازتولید نبودند و گزارش‌های کاربران نیز آن‌طور که باید جدی گرفته نشدند.

Therac-25؛ یک درس بزرگ برای مهندسی نرم‌افزار

اهمیت پرونده Therac-25 تنها به تعداد قربانیان آن محدود نمی‌شود. این حادثه بعدها به یکی از نمونه‌های کلاسیک در مهندسی نرم‌افزار، ایمنی سامانه‌های حساس و اخلاق حرفه‌ای تبدیل شد.

بررسی‌های انجام‌شده درباره این پرونده نشان دادند که فاجعه حاصل یک باگ منفرد نبود؛ بلکه مجموعه‌ای از ضعف‌ها در طراحی، آزمایش نرم‌افزار، مستندسازی، رابط کاربری و نحوه رسیدگی به گزارش‌های کاربران در شکل‌گیری حوادث نقش داشتند.

در سامانه‌های حیاتی، یک باگ می‌تواند جان انسان‌ها را تهدید کند

پرونده Therac-25 یک پیام روشن برای فناوری‌های حساس دارد: نرم‌افزار نباید تنها سد دفاعی در برابر یک خطای خطرناک باشد.

در حوزه‌هایی مانند پزشکی، هوانوردی و زیرساخت‌های حیاتی، ایمنی باید بر پایه چند لایه مستقل از کنترل، سخت‌افزارهای محافظ، آزمایش‌های دقیق و سازوکارهای نظارتی قابل اتکا طراحی شود.

Therac-25 نشان داد که در سامانه‌ای که مستقیماً با جان انسان‌ها سروکار دارد، یک خطای نرم‌افزاری کوچک می‌تواند زمانی به فاجعه تبدیل شود که لایه‌های دیگر ایمنی نیز برای جلوگیری از آن وجود نداشته باشند.