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

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

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

patriot

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

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

tomo

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

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

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

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

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

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

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

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

  • البعض يعتبر انه فقط أخطاء المهندسين المدنين تؤدي إلى كوارث
    لكن مهندسي الحاسوب تؤدي أخطاؤهم إلى كوارث تمس حياة الكثير من البشر أحيانًا

    • اعتقد كله في مجاله أخطائه تتسبب في كوارث.

  • اولا تحياتى لكاتب هذا المقال
    اهتممت جدا بالجزء الخاص بالعلاج الاشعاعى
    لاننى طبيبة
    المقال مميز جدا

  • يعطيك العافيه اختي نوال

    فعلا بعض الاخطاء تسوي كوارث واذكر واحد منها حصل لي شخصيا عندما طلب منا دمج حقلين لقرابه 2000 سجل , وعند كتابه الاستعلام نسينا ان علامة + تختلف بين الاوراكل و قاعدة الاكسس , فبدل ان نقوم بعملية الدمج , قمنا بعملية الجمع بين الحقلين وكانت كارثه ولم يم تحل المشكلة الا باستعادة النسخه الاحتياطية

  • مشكلة هذه الأخطاء أنها لا تظهر في المرحلة الأولى من برمجة البرنامج !
    مهما حاولنا أن نتفادى الأخطاء سنجد ولو القليل منها في مرحلة تنفيذ البرنامج ..
    باختلاف حجم الخطأ و حجم البرنامج .

    شكراً نوال .

  • موضوع شيق وجميل. وكما تمت الإشارة لأهمية اختبار الأنظمة.
    بالمناسبة، في الفترة الحالية أعمل على كتابة بحث عن الـ Automated Testing في تطبيقات الويب للمؤسسات الكبيرة.

  • خالد

    لهذا لم تدخل شركة ميكروسفت في برمجة الاجهزة الطبيعة و الحربية هههههههههه

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

  • المعتصم البحري

    أحد أشهر هذه الأخطاء البرمجية هو الخطأ الذي تسبب بفشل إحدى الرحلات إلى مدار المريخ
    حيث أن المهندسين أرسلوا قياسات وزن المعدات بالباوند
    بينما قام المبرمجون بالطرف الأخر بإحتسابها حسب الجرام

    وتسسبوا بخسائر تقدر بـ 125 مليون دولار

    للمزيد
    http://www.welchco.com/sd/08/00101/02/99/10/01/165724.HTM#L261407

  • أخطاء البرمجه السابقه لا يمكن التهاون بها لان نتائجهما أسوء من أن تقدر والمراجعه العديد من المرات قبل البدء والتأكد في حساب الجرعات التي تعطى للمرضي وعند إدخال البيانات وأن تعطى للمريض في نفس المكان تحديدا حتى لا تؤدي الي تلف أنسجه طبيعيه

  • المقدمات الصحيحة تؤدي إلى نتائج صحيحة والعكس صحيح.

  • مقال مميز وهادف ..أعجبني جداً ..
    🙂 شكرا استاذة

  • AFNAN

    يعطيك العافية نوال ،،
    مقال مميز حقاً ،،
    ( :

  • شكراً عالمقال الرائع …
    وكما وصانا رسولنا الكريم أنه لابد من الاتقان في العمل حتى نتفدى ان نؤذي احد لمجرد خطأ
    واعتقد اخطاء المبرمج من الممكن ان تكون في حرف بسيط او عملية حسابية بسيطة تؤدي لكارثة

  • منقذ

    الاخطاءوارده بأي مجال بس بتكتر كتير بالبرمجة ولتفادي هذه المشاكل يجب ان يكون اكثر من مبرمج في وقت واحد فإذا اخطأ أحدهم ربما يصحح الاخر

  • مقال مُمتميز كالعادة ..
    أعجبتني سالفة الصاروخ, فعلاً, خطأ بسيط وربما سطر! يسبب كوارث
    الله يكفينا الشر .. شكراً مرة أخرى 🙂

  • ماجد سلمان

    يعطيك العافيه

  • asma

    عادي كل الناس بتغلط بس غلط عن غلط بفرق……………..

  • السلام عليكم ..

    مقال مميز ..
    بصراحة العنوان جذنبي فكيف الموضوع ..

    أشكر صاحبة القلم الرائع ..

    و ننتظر سطورك الجديدة ..

    العاب

  • يا سبحان الله

  • ابوعبيدة

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

  • Mr.Eid

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

    syntax error
    logical error

    وشكرا جزيلا لصاحب الموضوع على هذا الإثراء ..
    تحياتي للجميع ..

  • Hi to all, the YouTube video that is posted at at this juncture has really pleasant quality along with pleasant audio quality

تعليقات عبر الفيسبوك