مقالات

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

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

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

patriot

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

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

tomo

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

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

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

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

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

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

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

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

‫23 تعليقات

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

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

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

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

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

    شكراً نوال .

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

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

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

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

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

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

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

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

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

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

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

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

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

    العاب

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

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

    syntax error
    logical error

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى