المعلوماتية > برمجيات

تصحيح تلقائي لأخطاء فيسبوك البرمجية!

يُعرَّف الخطأ البرمجي بأنَّه ارتكاب هفوات في مرحلة تصميم البرنامج الحاسوبي أو في أثناء كتابته بإحدى لغات البرمجة، وينتج عنه -غالبًا- أداءً سيِّئ أو غير متوقَّع.

هناك أخطاء ليس لها تأثير ظاهر في وظيفة البرنامج؛ لذا فقد تبقى مختفية وغير مرصودة مدَّةً طويلة، وهناك أخطاء أخرى أكثر ضررًا قد تسبِّب خلًلا في تنفيذ البرنامج فتعطِّله أو تجمِّده؛ وقد يؤدِّي ذلك إلى توقُّف الخدمة، أو وجود ثغرات أمنية قد تسمح للمتطفِّلين -مثلًا- بتجاوز الرقابة والحصول على امتيازات غير مسموح بها.

وبالمقابل؛ قد يكون للأخطاء نتائجٌ خطيرة للغاية، فمثلًا الأخطاء التي شابت برنامج مراقبة جهاز العلاج الإشعاعي (Therac-25) كانت المسؤولة المباشرة عن وفاة بعض المرضى في ثمانينيات القرن العشرين.

وفي عام 1996م، فقدت وكالة الفضاء الأوروبية صاروخ أريان 5 (يعادل مليار دولار أمريكي) بعد أقل من دقيقة من إطلاقه؛ بسبب خلل في برنامج التوجيه الحاسوبي.

لذلك، ولأهمية الموضوع؛ فإنَّ عملية تصحيح الأخطاء جزءٌ أساسي في دورة حياة أيِّ برنامج.

وتهدف شركة فيسبوك -بسبب تلك المخاطر المترتِّبة عن الأخطاء البرمجية- إلى جعل الموقع أكثر استقرارًا وأمنًا؛ لذا قرَّر المهندسون فيها تطوير أداة يمكنها  اكتشاف الأخطاء تلقائيًّا وعرضها على المهندسين والمطوِّرين لإصلاحها، وهذه الأداة تدعى (GetaFix).

وفي الوقت الحالي، تساهم هذه الأداة في استقرار حسابات المستخدمين، وتتعاون (GetaFix) مع أداتين مقدَّمتين من فيسبوك لتحقيق الهدف المبتغى؛ هما:

الأولى تُدعى (Infer): تتولَّى اكتشاف الأخطاء وإصلاحها؛ كالمشاكل الناجمة عن استثناءات المؤشِّرات الفارغة (Null Pointer Exceptions) مثلًا.. أو غيرها من الأخطاء التي تظهر في أثناء التشغيل.

الثانية تُدعى (Sapfix): تصلح الأخطاء المكتشفَة بواسطة الاختبارات الأوتوماتيكية.

مخطَّط توضيحي لمراحل معالجة الأخطاء تلقائيًّا  

الهدف من (Getafix):

السماح لأجهزة الحاسوب بممارسة عمل المبرمجين الروتيني تحت إشراف الإنسان، الذي يقرِّر بدوره متى يحتاج الخطأ إلى علاج معقَّد غير روتيني.

تعمل الأداة بواسطة تطبيق طريقة جديدة للتسلسل الهرمي لآلاف التعديلات البرمجية السابقة المفتعلة من قبل المهندسون البشريون، وكذلك السياق المحيط بالتعديل في الشيفرة البرمجية.

ويمكنها أيضًا تحديد الأماكن الحساسة (critical) في الشيفرة -والتي يمكن أن يحدث فيها خلل برمجي- ما يمكِّنها من تحديد التصحيح المناسب بسرعة أكبر، وبدون وقت حساب طويل.

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

ولأنَّ (Getafix) تتعلَّم من تغييرات التعليمات البرمجية السابقة؛ فإَّنها تنتج أيضًا إصلاحات يسْهُل على المهندسين البشريين فهمُها.

مراحل عمل (Getafix):

تتكوَّن من ثلاث مراحل أساسية:

شجرة الاختلافات (Tree Differencer).

نماذج التنقيب (Mine template).

تنفيذ التصحيح (Create Patch).

المرحلة الأولى: شجرة الاختلافات (Tree Differencer):

يكون إنشاء شجرة الاختلافات والتعديلات عن طريق خوارزميات تنقيب تراتُبية، والاستعانة أيضًا بالأداة التي ذكرناها سابقًا، وهي (Infer).

المرحلة الثانية: نماذج التنقيب (Mine template):

وهي نتاج تطبيق خوارزميات التنقيب والتصنيف السابقة؛ إذ يُعتمَد إيجاد نماذج تُستخدم في الكشف عن الأخطاء.

المرحلة الثالثة: تنفيذ التصحيح (Create Patch):

تُؤخَذ فيها الشيفرة البرمجية التي تحتوي على أخطاء، وتُطبَّق نماذج التصحيح التي حصلنا عليها في المرحلة السابقة من أجل تصحيح الخطأ واختيار أفضل نتيجة.

وأخيرًا، نجد أنَّ (Getafix) ساعدت على التقدُّم نحو تحقيق الهدف المتمثِّل في السماح لأجهزة الحاسوب بممارسة الأعمال الروتينية لتحديد الأخطاء، ثمَّ إنَّه لديها القدرة على تحسين جميع جوانب دورة حياة تطوير البرامج؛ بما في ذلك اكتشاف الشيفرات، وجودة الشيفرة، والكفاءة التشغيلية، ويُتوقَّع أيضًا أن تكون قادرة على منع جزء أكبر من حالات فشل إصدارات فيسبوك الجديدة.

المصادر:

هنا