Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 25

‫نمذجة التفاعل‬

Interaction Modeling
‫نمذجة التفاعل‬
‫‪Interaction Modeling‬‬
‫• ُتصوِّ ر نمذجة التفاعل‪ ،‬التفاعالت الالزمة بين مجموعة أغراض‬
‫لتنفي ذ حال ة اس تخدام‪ ،‬و ُتس تخدَم ف ي مرحل ة متقدم ة م ن تحلي ل‬
‫المتطلبات بعد أن يكون نموذج الصفوف األساسي قد اكتمل‪.‬‬
‫• الفارق بين نمذجة النشاط ونمذجة التفاعل‪ :‬يصور كال النموذجين‬
‫سلوك النظام في حالة استخدام واحدة‪ ،‬لكن تصور نمذجة النشاط‬
‫هذا السلوك على مستوى تجريد أعلى‪ ،‬فهي ُتبيّن تسلسل األحداث‬
‫لكن دون ربط هذه األحداث باألغراض‪ ،‬أما نمذجة التفاعل فتبين‬
‫تسلسل األحداث (الرسائل) بين أغراض متعاونة‪.‬‬
‫• يوج د نوعان م ن مخططات التفاع ل‪ :‬مخط ط التس لسل‬
‫(‪ )Sequence Diagram‬ومخطط التعاون (‪Collaboration‬‬
‫‪.)Diagram‬‬
‫‪ITA330 – S9‬‬
‫‪2‬‬
‫مخططات التفاعل‬

‫• تق ّدم لغة ‪ UML‬نمطين من مخططات التفاعل‪:‬‬


‫– مخطط التسلسل (‪)Sequence Diagram‬‬
‫• مخطط التسلسل هو مخطط تفاعل ير ّكز على الترتيب الزمني للرسائل‬
‫المتبادلة بين األغراض‪.‬‬

‫– مخطط التعاون (‪)Collaboration Diagram‬‬


‫• مخطط التعاون هومخطط تفاعل يركز على العالقات بين األغراض‬
‫المشاركة في التفاعل‪.‬‬

‫‪ITA330 – S9‬‬
‫‪3‬‬
‫مخطط التسلسل‬
‫ُرسم مخطط التسلسل كبيان ثنائي األبعاد‪ ،‬فتظهر األغراض على‬ ‫ي َ‬ ‫•‬
‫بعده األفق ي بينم ا يظه ر تس لسل الرس ائل عل ى بعده الشاقول ي م ن‬
‫األعلى باتجاه األسفل‪.‬‬
‫يُدعى ك ل خط شاقول ي مرس وم عل ى محاذاة أحد األغراض بخط‬ ‫•‬
‫حياة الغرض‪.‬‬
‫تدع (أ و‬
‫ف ي هذا المخط ط يُم ِث ل الس هم رس الة م ن غرض مس ٍ‬ ‫•‬
‫مرس ل) إل ى عملي ة (أ و طريق ة) ف ي الغرض المس تدعى (أ و‬
‫المس تهدَ ف)‪ .‬ويظه ر لك ل رس الة اس مها عل ى األق ل‪ ،‬ويمك ن أ ن‬
‫تظهر وسطاء الرسالة وبعض معلومات التحكم األخرى‪.‬‬
‫يرسم عادة مخطط تسلسل مستقل لكل حالة من حاالت االستخدام‪.‬‬ ‫•‬

‫‪ITA330 – S9‬‬
‫‪4‬‬
‫مخطط التسلسل‬
‫يمثل التفاعل من خالل التركيز على تسلسل استدعاء الطرق زمنياً‪.‬‬ ‫•‬
‫يمكن أن يكون في واحدة من صيغتين‪:‬‬ ‫•‬
‫– صيغة المثل (‪)Instance form‬‬
‫– الصيغة العامة (‪) Generic form‬‬
‫تصف صيغة المثل سيناريو محدد (السيناريو هو مثل من حالة‬ ‫•‬
‫االستخدام)‪.‬‬
‫تصف الصيغة العامة تفاعالت حالة االستخدام كاملة (قد تستخدم‬ ‫•‬
‫شروط وحاالت تفريع وتكرار تنفيذ)‪.‬‬

‫‪ITA330 – S9‬‬
‫‪5‬‬
‫أهمية مخططات التسلسل‬
‫• تصور تفاعل األغراض في سيناريو محدد من حالة استخدام محددة‪.‬‬
‫• تو ّ‬
‫ص ف الرسائل المتبادلة بين األغراض (إضافة للرسائل المتبادلة مع‬
‫الفاعلين الخارجيين)‪.‬‬

‫‪ITA330 – S9‬‬
‫‪6‬‬
‫عناصر مخطط التسلسل‬
‫‪obj1‬‬

‫)(‪new‬‬
‫‪obj2‬‬

‫)(‪message‬‬

‫إنشاء وتدمير الغرض‬


‫)(‪response‬‬

‫حالة النشاط‬ ‫)(‪delete‬‬


‫(استالم التحكم)‬
‫خط حياة‬
‫الغرض‬
‫‪ITA330 – S9‬‬
‫‪7‬‬
‫مثال‬
«global»

c: Client p : ODBCProxy

<<transient>>
«create»
: Transaction

setActions(a,d,o)

setValues(d, 3.4)

setValues(a, “CO”)

committed

«destroy»

ITA330 – S9
8
‫تمثيل الرسائل على مخطط التسلسل‬
‫• تمثل األسهم الرسائل المتبادلة بين غرضين في المخطط‪ ،‬ويُرسم السهم منطلقا ً من‬
‫خط حياة غرض ما إلى خط حياة غرض آخر وباعتماد التدوين التالي‪:‬‬
‫رسالة بسيطة‬
‫يُرسل الغرض الرسالة إلى غرض آخر ويفقد التحكم‬ ‫‪Simple message‬‬

‫رسالة متزامنة‬
‫يعلق الغرض المرسل العمل وينتظر وصول جواب الرسالة‬ ‫‪Synchronous message‬‬

‫رسالة غير متزامنة‬


‫يتابع الغرض المرسل عمله دون انتظار أي رد‬ ‫‪Asynchronous message‬‬

‫رسالة عودة التحكم‬


‫تشير إلى وصول الرد (بالنسبة للرسائل المتزامنة)‬ ‫‪Return of Control‬‬

‫‪ITA330 – S9‬‬
‫‪9‬‬
‫ – مخطط التسلسل‬13 ‫ الخطوة‬:‫التحليل‬
Order Configured ‫ة االستخدام‬$‫) لحال‬Activity Diagram( ‫ط النشاط‬$‫ي مخط‬$‫ل التال‬$‫بين الشك‬$‫ي‬
‫ى‬$‫راً عل‬$‫لسل مقتص‬$‫ط التس‬$‫ئ مخط‬$‫ أنش‬.)6 ‫م‬$‫ة رق‬$‫س‬$‫ع الجل‬$‫ج‬$‫ي (را‬$‫ ّوق اآلن‬$‫بيق التس‬$‫ي تط‬$‫ ف‬Computer
.)Display Current Configuration( ‫الخطوةاألولى للنشاط‬

Display Current Get Order


Configuration Request

Display
Purchase Form
[ timeout ]

[ incomplete ]

Get Purchase Store Order


Details [ OK ]

Email Order
Details
ITA330 – S9
10
‫التحليل‪ :‬الخطوة ‪ – 13‬مخطط التسلسل‬

‫•يختار الفاع‪$‬ل الخارج‪$‬ي (‪ )Customer‬عرض بني‪$‬ة حاس‪$‬وب‪ ،‬فيرس‪$‬ل لهذه الغاي‪$‬ة‬


‫الرس‪$$$$$$‬الة ‪ openNew‬إل‪$$$$$$‬ى الغرض ‪( ConfWin‬م‪$$$$$$‬ن الص‪$$$$$$‬ف‬
‫‪ )ConfigurationWindow‬الت‪$$$$‬ي تؤدي إل‪$$$$‬ى إنشاء الغرض ‪aConfWin‬‬
‫)‪.(Boundary Class‬‬
‫•يحتاج الغرض ‪ aConfWin‬أ‪$‬ن ”يعرض نفس‪$‬ه“ م‪$‬ع ال‪$‬بيانات المتعلق‪$‬ة بالحاس‪$‬وب‬
‫فيرس‪$$‬ل رس‪$$‬الة إل‪$$‬ى الغرض ‪ aComp‬م‪$$‬ن الص‪$$‬ف ‪( .Computer‬الغرض‬
‫‪ aComp‬ه‪$$‬و ف‪$$‬ي الواق‪$$‬ع غرض م‪$$‬ن الص‪$$‬ف ‪ StandardComputer‬أ‪$$‬و م‪$$‬ن‬
‫الصف ‪.)ConfiguredComputer‬‬
‫•يس‪$‬تخدم الغرض ‪ aComp‬معام‪$‬ل الخرج ‪” item_rec‬لبناء ذات‪$‬ه“ م‪$‬ن أغراض‬
‫‪ .ConfigurationItem‬ويرس‪$$‬ل بعدئ‪$$‬ذ مكونات الحاس‪$$‬وب (أ‪$$‬ي مكونات‪$$‬ه) ككتل‪$$‬ة‬
‫واحدة إل‪$$$‬ى الغرض ‪ aConfWin‬ضم‪$$$‬ن الوس‪$$$‬يط ‪ I_recset‬م‪$$$‬ع الرس‪$$$‬الة‬
‫‪ .displayComputer‬وبذلك يمكن للغرض ‪ aConfWin‬أن ”يعرض ذاته“‪.‬‬
‫‪ITA330 – S9‬‬
‫‪11‬‬
‫ – مخطط التسلسل‬13 ‫ الخطوة‬:‫التحليل‬

aConfWin : aComp : : Configuration


: Customer ConfigurationWindow Computer Item

openNew
getConf
* getConfItem (out item_rec)
displayComputer(item_recset)

ITA330 – S9
12
‫التحليل‪ :‬الخطوة ‪ – 13‬مخطط التسلسل‬

‫‪ITA330 – S9‬‬
‫‪13‬‬
‫التحليل‪ :‬الخطوة ‪ – 14‬اكتشاف الطرق‬
‫• يساعد تفحص مخطط التفاعل (التسلسل) على اكتشاف الطرق‪:‬‬
‫• فكل رسالة تستدعي طريقة ضمن الغرض المرسل إليه‬
‫• تحمل الطريقة اسم الرسالة نفسه‪.‬‬
‫• بالمث‪$‬ل‪ ،‬يقتض‪$‬ي وجود رس‪$‬الة ف‪$‬ي مخط‪$‬ط التس‪$‬لسل وجود عالق‪$‬ة اقتران بي‪$‬ن ص‪$‬في‬
‫الغرضين في مخطط الصفوف‪.‬‬

‫ُع‪$‬د إل‪$‬ى مخط‪$‬ط الص‪$‬فوف الذي أوجدت‪$‬ه س‪$‬ابقا ً وأض‪$‬ف الطرق المناس‪$‬بة‬
‫للص‪$$‬فوف‪( .‬ال داع‪$$‬ي إلعادة رس‪$$‬م المخط‪$$‬ط بأكمل‪$$‬ه ويُكتف‪$$‬ى بإظهار‬
‫الصفوف التي تتأثر بهذه العملية)‪.‬‬

‫‪ITA330 – S9‬‬
‫‪14‬‬
‫ – اكتشاف الطرق‬14 ‫ الخطوة‬:‫التحليل‬

<<boundary>>
ConfigurationWindow

<<constructor>> openNew()
displayComputer(item_recset)

ConfigurationItem
Computer
item_type : String
computer_name : String
item_descr : String
<<abstract>> getConf()
getConfItem(out item_rec)

ITA330 – S9
15
‫التحليل‪ :‬الخطوة ‪ – 14‬اكتشاف الطرق‬
‫• يبين الشكل الصفوف الثالثة المتأثرة بهذه العملية‪ConfigurationWindow :‬‬
‫(وهو صف محيطي)‪ ،‬أما الصفان اآلخران فهما صفا كيانات (‪)Entity Classes‬‬
‫يمثالن أغراضا ً دائمة في قاعدة المعطيات‪.‬‬
‫• الصف ‪ Computer‬هو صف مجرد‪ ،‬والطريقة ‪ getConf‬هي طريقة مجردة‬
‫يرثها الصفان ‪ ConfiguredComputer‬و ‪ StandardComputer‬فيحقق كل‬
‫منهما هذه الطريقة بما يناسبه‪.‬‬

‫‪ITA330 – S9‬‬
‫‪16‬‬
‫ما هي الصفوف المحيطية؟‬
‫‪Boundary Classes‬‬

‫• تطرقن‪$$‬ا س‪$$‬ابقا ً الس‪$$‬تخدام الص‪$$‬فوف الت‪$$‬ي تعرّف ”أغراض العمل“ (‪Business‬‬


‫‪:)objects‬‬
‫– نسمي هذه الصفوف صفوف الكيانات (صفوف النموذج)‬
‫– وهي تمثل أغراضا ً دائمة في قاعدة معطيات التطبيق‪.‬‬
‫• يحتاج التط‪$$‬بيق إل‪$$‬ى ص‪$$‬فوف أخرى لتعري‪$$‬ف أغراض واجه‪$$‬ة االس‪$$‬تخدام البياني‪$$‬ة‬
‫(‪ )GUI objects‬وهي التي ندعوها الصفوف المحيطية‪.‬‬
‫• ق‪$$‬د ال نتعرض لهذه الص‪$$‬فوف خالل مرحل‪$$‬ة تحلي‪$$‬ل المتطلبات وغالبا ً م‪$$‬ا نؤج‪$$‬ل‬
‫دراستها إلى مرحلة التصميم‪.‬‬

‫‪ITA330 – S9‬‬
‫‪17‬‬
‫التحليل‪ :‬الخطوة ‪ – 15‬مخطط التسلسل‬

‫ُع د إل ى مخط ط التفاع ل الم بين ف ي الشريح ة رق م (‪ )10‬وارس م مخط ط التس لسل‬
‫المقابل له (ولحالة االستخدام التي يمثلها)‪.‬‬
‫لتبسيط رسم المخطط‪ ،‬ال ُتظهر الرسائل المتبادلة بين الغرضين ‪ Computer‬و‬
‫‪ ،ConfigurationItem‬وافترض أ ن الغرض ‪ Computer‬ه و إم ا‬
‫‪ StandardComputer‬أو ‪( ConfiguredComputer‬ال داعي للتمييز بينهما‬
‫اآلن) وتجاهل توصيف معامالت العمليات‪.‬‬

‫‪ITA330 – S9‬‬
‫‪18‬‬
‫التحليل‪ :‬الخطوة ‪ – 15‬مخطط التسلسل‬

‫‪ITA330 – S9‬‬
‫‪19‬‬
‫التحليل‪ :‬الخطوة ‪ – 15‬مخطط التسلسل‬

‫• ينتج عن الرسالة ‪ acceptConf‬إرسال الرسالة ‪ prepareForOrder‬إلى‬


‫الغرض ‪ .Order‬يؤدي هذا إل ى إنشاء غرض مؤق ت م ن ‪ Order‬يُعرض‬
‫في ‪.OrderWindow‬‬
‫• م ع قبول الزبون لتفاص يل العرض (أ ي عن د إرس ال ‪)submitOrder‬‬
‫يُرس ل ‪ OrderWindow‬الرس الة ‪ storeOrder‬إلنشاء غرض دائ م م ن‬
‫الص ف ‪ Order‬الذي يرب ط نفس ه عندئ ذ م ع األغراض المالئم ة م ن‬
‫‪ Computer‬و ‪ Customer‬و ‪ .Payment‬بع د حف ظ هذه األغراض‬
‫بشك ل دائ م ف ي قاعدة المعطيات يرس ل الغرض ‪ Order‬الرس الة‬
‫‪ emailOrder‬للفاعل الخارجي ‪.Customer‬‬
‫• الح ظ االس تخدام المزدوج للغرض ‪ Customer‬كفاع ل خارج ي وكغرض‬
‫داخلي‪.‬‬
‫‪ITA330 – S9‬‬
‫‪20‬‬
‫مخطط التعاون‬
‫ُيعت بر مخط ط التعاون أح د شكل ي نموذج التفاع ل ف ي ‪UML‬‬ ‫•‬
‫ويُفضل استخدامه في مرحلة التصميم‪.‬‬
‫هناك تكاف ؤ بي ن مخط ط التعاون ومخط ط التس لسل م ن حي ث أن ه‬ ‫•‬
‫يمكن تحويل أحدهما إلى اآلخر تلقائياً‪ ،‬لكن مع االنتباه إلى أن كالً‬
‫منهما يُر ِّكز على مالمح مختلفة لعملية تفاعل األغراض‪.‬‬
‫ُيركِّ ز مخطط التس لسل عل ى التس لسل الزمن ي لتبادل الرس ائل بين‬ ‫•‬
‫األغراض‪ ،‬لكن ه يفتق ر إل ى الدق ة ف ي تمثي ل المس ارات البديل ة‬
‫للرسائل‪.‬‬
‫يعرض مخط ط التعاون بص يغة ص ريحة العالقات الس كونية بي ن‬ ‫•‬
‫األغراض الت ي يمك ن أ ن يجري تبادل الرس ائل عبره ا‪ ،‬فتتمي ز‬
‫بدقة أكبر عند الحاجة لمعاينتها من الناحية الشكلية‪.‬‬
‫‪ITA330 – S9‬‬
‫‪21‬‬
‫تحويل نموذج التسلسل إلى نموذج تعاون‬

‫• ليكن لدينا المثال التالي‪ :‬حالة استخدام "عملية استعارة نسخة كتاب من مكتبة"‪:‬‬
‫– يقوم الشخص الذي يرغب باالستعارة باحضار الكتاب المطلوب‪.‬‬
‫– يقوم النظام بالتحقق من أن هذا الشخص عضو في المكتبة‪ ،‬وأنه لم يقم باستعارة الحد‬
‫األقصى من الكتب‪.‬‬
‫– إذا تمت عملية التحقق بنجاح‪ ،‬يقوم النظام بتسجيل عملية إعارة نسخة الكتاب لهذا‬
‫الشخص‪.‬‬
‫• الصفوف الموجودة في المثال‪ :‬الشخص المسؤول عن المكتبة‬
‫(‪ ،)LibraryMember‬صف نسخة الكتاب (‪ ،)Copy‬صف الكتاب (‪.)Book‬‬
‫• فاعلو النظام‪ :‬الشخص الذي يقوم بعملية االستعارة (‪.)BookBorrower‬‬
‫• أغراض النظام‪ :‬غرض من الصف (‪ ،)LibraryMember‬غرض من الصف‬
‫(‪ ،)Copy‬غرض من الصف (‪ ،)Book‬نسخة من الفاعل‬
‫(‪.)BookBorrower‬‬

‫‪ITA330 – S9‬‬
‫‪22‬‬
‫تحويل نموذج التسلسل إلى نموذج تعاون‬

theLibraryMember : theCopy : Copy theBook : Book


aMember :
LibraryMember
BookBorrower

borrow(theCopy)

1: okToBorrow

2: borrow

2.1: borrow

ITA330 – S9
23
‫تحويل نموذج التسلسل إلى نموذج تعاون‬

theBook : Book

aMember : BookBorrower

2.1: borrowed
borrow(theCopy)

theLibraryMember :
LibraryMember theCopy : Copy

2: borrow

1: okToBorrow

ITA330 – S9
24
‫تمرين‬

‫• حول نموذج التس لسل الم بين ف ي الشريح ة رق م (‪ )19‬إل ى نموذج‬


‫تعاون‪.‬‬

‫‪ITA330 – S9‬‬
‫‪25‬‬

You might also like