ما هو التصميم حسب العقد®؟

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

أساس فلسفة البرمجة Design by Contract® هو فكرة عقود الأعمال في العالم الحقيقي. في هذا النموذج ، تحدد كل طريقة وفئة في برنامج كائني التوجه عقدًا يجب أن تلتزم به أي طريقة أو كائن آخر يتفاعل معها. يمكن أن يكون لكل فئة أيضًا عقد ، يُطلق عليه اسم فئة ثابتة ، يجب أن تتبعه داخليًا للتأكد من أن العقود الخارجية لا تضر بقدرتها على العمل.

الجزءان الأكثر أهمية في العقد أثناء التصميم والتشفير هما الشروط المسبقة والشروط اللاحقة. يحدد هذان الجزءان من نموذج Design by Contract® حالة البرنامج قبل استدعاء الطريقة وحالة البرنامج بعد اكتمال تنفيذ الطريقة. يمكن أن تختلف الأجزاء الأخرى من العقد حسب التنفيذ ولكنها قد تتضمن إشارات مرجعية إلى وحدات نمطية أخرى وشروط التزامن ومتطلبات ترتيب التنفيذ.

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

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