البرمجة الهجومية

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

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

تمييز الأخطاء

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

أمثلة متناقضة:

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

استراتيجيات الكشف عن الأخطاء

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

الاستراتيجيات

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

انظر أيضاً

مراجع

  1. "البرمجة الهجومية" . شركة كونينغهام وكونينغهام . تم الاطلاع عليه بتاريخ 4 سبتمبر 2016 .
  2. برودوال، يوهانس (25 سبتمبر 2013). "البرمجة الهجومية" . التفكير داخل صندوق أكبر . تم الاسترجاع في 4 سبتمبر 2016 .