التصميم القائم على المسؤولية
التصميم القائم على المسؤولية هو أسلوب تصميم في البرمجة كائنية التوجه ، يُحسّن التغليف باستخدام نموذج العميل والخادم . ويركز على العقد من خلال النظر في الإجراءات التي يكون الكائن مسؤولاً عنها والمعلومات التي يتبادلها. وقد اقترحه كل من ريبيكا ويرفس-بروك وبريان ويلكرسون.
يتناقض التصميم القائم على المسؤولية تناقضًا مباشرًا مع التصميم القائم على البيانات، الذي يشجع على تحديد سلوك الفئة جنبًا إلى جنب مع البيانات التي تحتويها. ولا يُعد التصميم القائم على البيانات مرادفًا للبرمجة القائمة على البيانات ، التي تهتم باستخدام البيانات لتحديد مسار التحكم ، وليس تصميم الفئات.
في نموذج العميل والخادم المشار إليه، يُمثل كل من العميل والخادم فئات أو نسخًا من فئات. في أي لحظة، يُمثل أحدهما كائنًا. يلتزم الطرفان بعقد ويتبادلان المعلومات من خلال الالتزام به. لا يُمكن للعميل سوى إرسال الطلبات المُحددة في العقد، ويجب على الخادم الاستجابة لهذه الطلبات. [ 1 ] وبالتالي، يسعى التصميم القائم على المسؤولية إلى تجنب الخوض في التفاصيل، مثل كيفية تنفيذ الطلبات، وذلك بتحديد الغرض من كل طلب فقط. وتكمن الفائدة في زيادة التغليف ، حيث أن تحديد الطريقة الدقيقة لتنفيذ الطلب يبقى خاصًا بالخادم.
لتعزيز تغليف الخادم، يدعو ويرفس-بروك وويلكرسون إلى استخدام خصائص لغوية تحدّ من تأثير العوامل الخارجية على سلوك الفئة. ويطالبان بأن تكون رؤية الأعضاء والوظائف دقيقة للغاية، كما هو الحال في لغة برمجة إيفل . بل إن لغة برمجة نيوسبيك توفر تحكمًا أدق في رؤية حتى الفئات .
ملخص
يركز التصميم القائم على المسؤولية على الكائنات باعتبارها تجريدات سلوكية تتميز بمسؤولياتها. تُستخدم تقنية نمذجة بطاقات CRC لإنشاء هذه التجريدات السلوكية. أما باقي بنية الكائن، بما في ذلك سمات البيانات، فتُحدد لاحقًا حسب الحاجة. [ 2 ] هذا يجعل التصميم يتبع التسلسل الهرمي للأنواع في الوراثة، مما يُحسّن التغليف ويُسهّل تحديد الفئات المجردة . كما يُمكنه تجميع الفئات معًا بناءً على عملائها، وهو ما يُعتبر ميزة فريدة.
يتضمن التصميم الجيد الموجه للكائنات التركيز المبكر على السلوكيات لتحقيق القدرات التي تلبي المتطلبات المحددة، وربط تفاصيل التنفيذ بالمتطلبات في وقت لاحق . يساعد هذا النهج بشكل خاص على لامركزية التحكم وتوزيع سلوك النظام، مما يُسهم في إدارة تعقيدات الأنظمة الكبيرة أو الموزعة عالية الوظائف . وبالمثل، يُمكن أن يُساعد في تصميم وصيانة أدوات التفسير للنماذج المعرفية ، والوكلاء الأذكياء ، وغيرها من الأنظمة القائمة على المعرفة . [ 3 ]
لبنات البناء
في كتابهم تصميم الكائنات: الأدوار والمسؤوليات والتعاون ، [ 4 ] يصف المؤلفون اللبنات الأساسية التالية التي تشكل التصميم القائم على المسؤولية.
- التطبيق: يُشار إلى تطبيق البرمجيات على أنه مجموعة من الكائنات المتفاعلة. [ 5 ]
- المرشحون: المرشحون أو الأشياء المرشحة هي مفاهيم أساسية في شكل أشياء موصوفة على بطاقات CRC. وهي بمثابة ابتكارات أولية في عملية تصميم الأشياء. [ 6 ]
- التعاون: يُعرَّف التعاون بأنه تفاعل بين الأشياء أو الأدوار (أو كليهما). [ 5 ]
- بطاقات CRC: يرمز CRC إلى المرشحين والمسؤوليات والمتعاونين. وهي بطاقات فهرسة استُخدمت في المراحل الأولى من التصميم لتسجيل بيانات المرشحين. [ 7 ] تنقسم هذه البطاقات إلى جانب غير مسطر وجانب مسطر.
- النقاط الساخنة: النقاط الساخنة هي نقاط في التطبيق تحدث فيها اختلافات. يتم تسجيلها باستخدام بطاقات النقاط الساخنة. [ 8 ]
- بطاقات النقاط الساخنة: تُستخدم بطاقات النقاط الساخنة لتسجيل الاختلافات بتفاصيل كافية لتمييز الفروق المهمة. وهي تُصنع من بطاقات فهرسة، على غرار بطاقات CRC . [ 8 ] تتكون هذه البطاقات من:
- اسم المنطقة الساخنة
- وصف عام للاختلاف
- مثالان محددان على الأقل حيث يحدث التباين
أشياء
تُعرَّف الكائنات بأنها أشياء ذات سلوكيات شبيهة بالآلات، ويمكن توصيلها معًا للعمل بتناغم. وتؤدي هذه الكائنات أدوارًا محددة جيدًا، وتجسد استجابات ومعلومات مُبرمجة مسبقًا. [ 5 ]
- مجموعات الكائنات المجاورة: مصطلح آخر للنظام الفرعي. [ 9 ] وهي عبارة عن تجميع منطقي للمتعاونين. [ 9 ]
- المسؤوليات: المسؤولية هي التزام بأداء مهمة أو معرفة معلومات. [ 5 ] ويتم تصنيفها بشكل إضافي وفقًا لسياق استخدامها.
- المسؤوليات العامة: المسؤوليات العامة هي المسؤوليات التي يقدمها الشيء كخدمات للآخرين والمعلومات التي يوفرها لهم. [ 10 ]
- المسؤوليات الخاصة: المسؤوليات الخاصة هي الإجراءات التي يتخذها كيان ما لدعم المسؤوليات العامة. [ 10 ]
- المسؤوليات الفرعية: في بعض الأحيان، تُقسّم المسؤولية الكبيرة أو المعقدة إلى مسؤوليات أصغر تُسمى المسؤوليات الفرعية. [ 11 ] ويتم تصنيفها بشكل إضافي بناءً على طبيعة عملها.
الأدوار
يشير دور الكائن إلى نظرة خارجية للخدمة العامة التي يقدمها الكائن. وهو عبارة عن مجموعة من المسؤوليات المترابطة. [ 5 ] يمكن تنفيذه كفئة أو واجهة. ومع ذلك، تُعدّ الواجهة هي التنفيذ المُفضّل لأنها تزيد من المرونة عن طريق إخفاء الفئة الملموسة التي تقوم بالعمل في نهاية المطاف. [ 12 ]
الأنماط النمطية للأدوار: هي أدوار مبسطة تأتي مع مسؤوليات محددة مسبقًا. [ 13 ] وهناك عدة فئات.
- المتحكم: الكائن الذي يقوم بهذا الدور يتخذ القرارات ويوجه عمل الكائنات الأخرى بشكل دقيق. [ 13 ]
- المنسق: يتفاعل هذا الدور مع الأحداث عن طريق تفويض المهام للآخرين. [ 13 ]
- حامل المعلومات: حامل المعلومات يعرف المعلومات ويقدمها. [ 13 ]
- مُزوّد المعلومات: يُعدّ مُزوّد المعلومات شكلاً مختلفاً قليلاً عن حامل المعلومات، حيث يضطلع بدور أكثر فاعلية في إدارة المعلومات وصيانتها. ويمكن استخدام هذا التمييز إذا احتاج المصمم إلى مزيد من التحديد. [ 14 ]
- المنسق: يقوم هذا الدور بتحويل المعلومات والطلبات بين أجزاء مختلفة من التطبيق. [ 13 ] وينقسم بدوره إلى أدوار أكثر تحديدًا.
- الواجهة الخارجية: تتواصل الواجهة الخارجية مع تطبيقات أخرى بدلاً من تطبيقاتها الخاصة. [ 14 ] وتُستخدم بشكل أساسي لتغليف واجهات برمجة التطبيقات غير الموجهة للكائنات، ولا تتعاون بشكل كبير. [ 15 ]
- الواجهة الداخلية: تُسمى أيضًا واجهة الأنظمة المتداخلة. [ 14 ] وهي تعمل كجسر بين مجموعات الكائنات. [ 15 ]
- مُوَصِّل واجهة المستخدم: يتواصل مُوَصِّل واجهة المستخدم مع المستخدمين من خلال الاستجابة للأحداث التي يتم إنشاؤها في واجهة المستخدم، ثم تمريرها إلى الكائنات الأكثر ملاءمة. [ 14 ] [ 15 ] [ 16 ]
- مقدم الخدمة: يقوم هذا الدور بأداء العمل وتقديم خدمات الحوسبة. [ 14 ]
- المُهيكل: يحافظ هذا الدور على العلاقات بين الكائنات والمعلومات المتعلقة بتلك العلاقات. [ 14 ]
أسلوب التحكم
يُعدّ توزيع مسؤوليات التحكم جزءًا هامًا في عملية التصميم القائمة على المسؤولية، مما يؤدي إلى تطوير أسلوب تحكم. يهتم أسلوب التحكم بتدفق التحكم بين الأنظمة الفرعية .
- مفهوم السيطرة : المسؤوليات والتعاون بين الطبقات. [ 17 ]
- مراكز التحكم : من الجوانب المهمة لتطوير أسلوب التحكم ابتكار ما يسمى بمراكز التحكم. وهي أماكن تتواجد فيها الجهات المسؤولة عن التحكم والتنسيق. [ 18 ]
- أنماط التحكم المختلفة : يتنوع أسلوب التحكم إلى ثلاثة أنماط متميزة. مع ذلك، لا تُعد هذه تعريفات دقيقة، إذ يمكن القول إن أحد أنماط التحكم أكثر مركزية أو تفويضًا من غيره.
أسلوب التحكم المركزي
يفرض أسلوب التحكم هذا نموذجًا إجرائيًا على بنية التطبيق ويضع مسؤوليات اتخاذ القرارات الرئيسية في عدد قليل من الكائنات أو كائن واحد فقط.
- الأنواع
- نموذج الاستدعاء والعودة : يتم التحكم في الكائنات في التطبيق بطريقة هرمية. يبدأ التحكم من الجذر وينتقل نزولاً. يُستخدم هذا النموذج في نموذج تسلسلي.
- نموذج المدير : يتم التحكم في الكائنات داخل التطبيق بواسطة كائن واحد فقط. يُنفذ هذا النموذج عادةً في النماذج المتزامنة، ويمكن تنفيذه أيضًا في النموذج التسلسلي باستخدام عبارة الحالة .
- المزايا
- منطق التطبيق موجود في مكان واحد.
- العيوب
- قد تصبح منطق التحكم معقدة للغاية
- قد يصبح المتحكمون معتمدين على محتويات حاملي المعلومات.
- يمكن أن ترتبط الكائنات ببعضها البعض بشكل غير مباشر من خلال إجراءات وحدة التحكم الخاصة بها.
- العمل الوحيد المثير للاهتمام يتم في وحدة التحكم
- متى يُستخدم
عندما تكون القرارات المطلوب اتخاذها قليلة وبسيطة ومرتبطة بمهمة واحدة.
أسلوب التحكم المفوض
يقع أسلوب التحكم المفوض بين أسلوب التحكم المركزي وأسلوب التحكم اللامركزي. فهو يُفوّض بعض صلاحيات اتخاذ القرار ومعظم الإجراءات إلى الكائنات المحيطة بمركز التحكم، حيث يؤدي كل كائن مجاور دورًا هامًا. ويُمكن تسميته أيضًا بنموذج التحكم القائم على الأحداث، حيث يُفوّض التحكم إلى الكائن الذي يطلب منه معالجة الحدث.
- الأنواع[مرجع]
- نموذج البث : يتم بث حدث ما إلى جميع الكائنات في التطبيق. الكائن القادر على معالجة الحدث يمكنه الحصول على التحكم.
- نموذج يعتمد على المقاطعات : سيكون هناك معالج للمقاطعات لمعالجة المقاطعة وتمريرها إلى كائن ما لمعالجتها.
- المزايا
- من السهل فهم ذلك.
- على الرغم من وجود منسق خارجي، إلا أنه يمكن جعل الكائنات أكثر ذكاءً لمعرفة ما يفترض أن تفعله ويمكن إعادة استخدامها في تطبيقات أخرى.
- يميل المنسقون المفوضون إلى معرفة عدد أقل من الأشياء مقارنة بالمتحكمين المهيمنين.
- الحوارات ذات مستوى أعلى.
- يسهل تغييرها لأن التغييرات عادة ما تؤثر على عدد أقل من الأشياء.
- يسهل تقسيم أعمال التصميم بين أعضاء الفريق.
- العيوب
- قد يؤدي الإفراط في توزيع المسؤولية إلى ضعف الأهداف وضعف التعاون.
- متى يُستخدم
عندما يرغب المرء في تفويض العمل إلى كائنات أكثر تخصصًا.
نمط التحكم المجمع
يُعدّ هذا النمط من أنماط التحكم شكلاً من أشكال التحكم المركزي، حيث يُوزّع التحكم بين مجموعة من الكيانات التي تُنسّق أعمالها. [ 19 ] ويكمن الفرق الرئيسي بين نمط التحكم العنقودي ونمط التحكم المفوض في أن الكيانات المسؤولة عن اتخاذ القرار في نمط التحكم العنقودي تقع داخل مركز تحكم، بينما في نمط التحكم المفوض تكون في الغالب خارجه. [ 20 ]
أسلوب التحكم الموزع
لا يحتوي أسلوب التحكم الموزع على أي مراكز تحكم. يتم توزيع المنطق على جميع الكائنات، مما يحافظ على صغر حجم كل كائن ويقلل من التبعيات بينها قدر الإمكان. [ 21 ]
- المزايا
- لا أحد
- العيوب
- عندما تريد معرفة كيفية عمل شيء ما، يجب عليك تتبع تسلسل طلبات الخدمات عبر العديد من الكائنات
- لا يمكن إعادة استخدامها بشكل كبير لأنه لا يوجد عنصر واحد يساهم بشكل كبير
- متى يُستخدم
أبداً.
أسلوب التحكم المفضل
بعد إجراء تجارب موسعة، تبيّن أن الإدارة العليا وحدها تمتلك المهارات اللازمة للاستفادة من أسلوب التحكم التفويضي، بينما يُفيد أسلوب التحكم المركزي المبرمجين. ولم يُذكر أي شيء عن موظفي المستوى المتوسط. [ 17 ]
مراجع
- ↑ ويرفس-بروك، ريبيكا؛ ويلكرسون، برايان (1989). "التصميم الموجه للكائنات: منهج قائم على المسؤولية" . إشعارات ACM SIGPLAN . 24 (10): 74. doi : 10.1145/74878.74885 .
- ↑ أنتوني جيه إتش سيمونز؛ مونيك سنويك؛ كيتي هونغ (1998). "أنماط التصميم كأداة لاختبار قوة أساليب البرمجة الكائنية" . Oois'98 . ص 129-147 . CiteSeerX 10.1.1.130.8713 . doi : 10.1007/978-1-4471-0895-5_10 . ISBN 978-1-85233-046-0.
- ↑ ستيفن ر. هاينز؛ إسحاق ج. كونسيل؛ فرانك إي. ريتر (2004). "هندسة التفسير القائمة على المسؤولية للنماذج المعرفية" .
- ↑ ويرفس-بروك، ريبيكا؛ ماكين، آلان (2003). تصميم الأشياء: الأدوار والمسؤوليات والتعاون . إنديانابوليس، إنديانا: أديسون-ويسلي. ISBN 978-0201379433.
- 1 2 3 4 5 ويرفس-بروك وماكين 2002 ، ص 3
- ↑ ويرفس-بروك وماكين 2002 ، ص 58
- 1 2 3 ويرفس-بروك وماكين 2002 ، ص 61
- 1 2 ويرفس-بروك وماكين 2002 ، ص 72
- 1 2 ويرفس-بروك وماكين 2002 ، ص 17
- 1 2 ويرفس-بروك وماكين 2002 ، ص 126
- 1 2 3 ويرفس-بروك وماكين 2002 ، ص 168
- ↑ ويرفس-بروك وماكين 2002 ، ص 340
- 1 2 3 4 5 ويرفس-بروك وماكين 2002 ، ص 4
- 1 2 3 4 5 6 ويرفس-بروك وماكين 2002 ، ص 93
- 1 2 3 ويرفس-بروك وماكين 2002 ، ص 165
- ↑ ويرفس-بروك وماكين 2002 ، ص 164
- 1 2 إريك، أريشولم؛ داغ آي كيه، سيوبرغ (2004). "تقييم أثر أسلوب التحكم المفوض مقابل أسلوب التحكم المركزي على قابلية صيانة البرمجيات الموجهة للكائنات". معاملات IEEE في هندسة البرمجيات . 30 (8): 521-534 . doi : 10.1109/TSE.2004.43 . S2CID 6396127 .
- ↑ ويرفس-بروك وماكين 2002 ، ص 196
- ↑ ويرفس-بروك وماكين 2002 ، ص 197
- ↑ ويرفس-بروك وماكين 2002 ، ص 213
- ↑ ويرفس-بروك وماكين 2002 ، ص 30
فهرس
- التصميم الموجه للكائنات: منهج قائم على المسؤولية . في وقائع مؤتمر أنظمة ولغات وتطبيقات البرمجة الموجهة للكائنات (نيو أورليانز، لويزيانا، الولايات المتحدة، 2-6 أكتوبر 1989). OOPSLA '89. مطبعة ACM، نيويورك، نيويورك، 71-75.
- ويرفس-بروك، ريبيكا؛ ماكين، آلان (نوفمبر 2002). تصميم الأشياء: الأدوار والمسؤوليات والتعاون . أديسون ويسلي . ISBN 978-0-201-37943-3.
- البرمجة الكائنية التوجه
- تصميم البرمجيات
