أخطاء برمجية تسببت في كوارث

بعض الأخطاء البرمجية قد تتسبب في مشاكل حرجة جداً وكوارث قد تتسبب في مقتل الكثيرين. أحياناً تكون تلك الأخطاء في سطر واحد فقط وخطأ بسيط جدا جدا لكنه يسبب خسائر جسيمة ماديا وبشرياً.. ولعل أقرب الأمثلة ما يحصل من أخطاء صغيرة في برمجيات الصواريخ الحربية أو أجهزة الإنذار وغيرها. سأتكلم عن أخطاء في برمجيات حساسة تسببت هذه الأخطاء في خسائر كبيرة:

باتريوت وحرب الخليج:

patriot

خلال حرب الخليج في مطلع التسعينات، حصلت خسائر في القاعدة الأمريكية في السعودية حيث فشل صاروخ باتريوت بالتصدي لصاروخ سكود القادم من العراق. سكود بالتالي قام بتدمير العديد من معدات الجيش الأمريكي المحالف للسعودية والكويت. هذا الفشل نتيجة خطأ صغير في السوفت وير المسئول عن حساب الوقت. فقام البرنامج بتقريب خاطئ للوقت قليلا مما أدى إلى تجاهل الباتريوت لصاروخ سكود القادم. نتج عن هذا الخطأ الذي قد لا نعده خطأ جسيم خسائر كبيرة، فتسبب في قتل 28 جندي وجرح 100 آخرون بسبب صاروخ سكود الذي تجاهله الباتريوت. للاستزادة (البقية بعد الفاصل)

علاج السرطان الإشعاعي:

tomo

خطأ الجهاز المبرمج لعلاج مرضى السرطان بالإشعاعات نتج عنه وفاة 8 أشخاص وتضرر 20 آخرين بإصابات خطيرة جداً. طبعا المشكلة كانت بسبب خطأ برمجي حيث لم يتم حساب الجرعات اللازمة للمرضى بشكل صحيح مما عرض الكثير من المرضى للوفاة والخطر. حيث أن الجرعات تعطى بناء على المعلومات المدخلة للجهاز ولكن الجهاز بسبب خطأ برمجي أصبح يعطي جرعات مضاعفة من العلاج مما أدى إلى قتل البعض بسبب الخطأ في قياس مقدار الجرعة المناسبة. يقال أن المسئولين قانونيا عن مراجعة وتدقيق الحسابات للبرنامج قد تمت مقاضاتهم وعُدّ مثل هذا الأمر جريمة. للاستزادة

أيضا هناك الكثير من الأمثلة والأخطاء التي حصلت في الحرب الباردة بين أمريكا والسوفييت في أنظمة الإنذارات بالهجوم وغيرها. أيضا مشكلة في نظام إصدار الجوازات في بريطانيا كلف خسائر مادية تقدر بالملايين بسبب التحويل لنظام جديد لم يتم اختباره مما أدى إلى دمار كبير في إصدار الجوازات وسقوط بعض المدن من النظام وانتظار الناس في طوابير تحت المطر للحصول على جوازاتهم (قامت الشركة بشراء مظلات لهم كجزء من الإحساس بالمسئولية) وقامت بصرف خارج دوام لموظفيها لكي تقوم الشركة بتدارك الخطأ الحاصل.

قد يحصل من حولنا أخطاء برمجية قد تتسبب في خسائر غير بشرية لكنها قد تكون خسائر في الوقت والمال. مثلا مشكلة نظام الاتصالات الجديد في الفواتير، وكما يبدو أن الكثير قد دفع أكثر من مبلغ مكالماته الحقيقة وهذا بالطبع سيسبب خسارات مالية لشركة الاتصالات حيث ستضطر لتعديل النظام وتعويض المشتركين عن الأخطاء الحاصلة (مع أني أشك في هذه البادرة) علاوة على هذا الحيرة التي وقع فيها المستخدم من لخبطة الفواتير.

أثناء دراستي الجامعية كانت هناك أخطاء برمجية تحدث في الموقع الخاص بالكلية والذي نرجع له كثيرا في مشاهدة الإعلانات المعلنة بواسطة القسم والأستاذات، فحين حصول الخطأ قد لا نعرف بعض التحديثات من القسم والأخبار الجديدة وقد يكون هناك اختبار وقد نحتاج إلى تنزيل بعض المحاضرات والمصادر المفيدة فلا نستطيع. أيضا موقع النتائج كثيرا ما يصاب بالعطل أثناء رصد الدرجات مما يسبب توتر شديد وانتظار أطول. بلا شك عُدت هذه خسارة علمية ونفسية بسبب أخطاء برمجية من صغرها قد لا ننتبه لها.

كل هذا يقودنا إلى ضرورة مراجعة الكود وتجريب حالات الخطأ قبل حالات الصح في مرحلة الـ testing. كما أنه من الضروري أيضا أن نتعلم بواسطة الخطأ وليس الصح فقط أي يجب أن نقرأ عن الأخطاء البرمجية بمقدار ما نقرأ ونتعلم الاكواد الصحيحة.

أيضا من الضروري جدا إحساس الشركات بالخطأ الحاصل والمؤثر سلباً على العملاء أيضا ومحاولة تعويضهم بأي الطرائق الممكنة، بالتأكيد هذه البادرة ستعطي انطباع إيجابي عن الشركة واهتمامها بالعميل مما يعطيها دعم تسويقي ممتاز.

أخيراً: الكمـــــــال لله 🙂

التدوينة الأصلية في مدونتي