الأجزاء المركبة: alt وopt وloop
الأجزاء المركبة: alt وopt وloop
يصوّر مخطط التسلسل الأساسي المسار السعيد — تبادل الرسائل بصورة خطية حين يسير كل شيء دون عوائق. غير أن الأنظمة الحقيقية نادرًا ما تكون بهذه البساطة؛ فقد يكون المريض مسجلًا في النظام أو غير مسجل، وقد تنجح عملية الدفع أو تفشل، وقد تحتاج إلى تكرار الطلب حتى يستجيب الخادم. الأجزاء المركبة هي الآلية التي يوفرها UML لنمذجة جميع هذه السلوكيات المتشعبة والمتكررة داخل مخطط تسلسل واحد، دون الحاجة إلى رسم مخططات منفصلة لكل سيناريو.
ما هو الجزء المركّب؟
الجزء المركّب إطار مستطيل يُرسم مباشرةً على لوحة مخطط التسلسل ويحيط بمجموعة من الرسائل. يحمل هذا الإطار في زاويته العلوية اليسرى علامةً خماسية تُعرف بـمعامل التفاعل، وهو الذي يخبرك ما إذا كان الإطار يمثل شرطًا أو كتلةً اختياريةً أو حلقةً تكرارية أو غيرها. المعاملات الثلاثة الأكثر استخدامًا هي alt وopt وloop.
يمكن تقسيم داخل الإطار إلى معاملات بخط أفقي متقطع، ويحمل كل معامل شرط حراسة بين قوسين معقوفين مثل [payment successful] أو [member discount > 0]. هذه الشروط عبارات منطقية تُقيَّم في وقت التشغيل لتحديد أي المعاملات ينفَّذ.
معامل alt — الفروع الشرطية
يُنمذج معامل alt (اختصار لـalternatives) بنية if / else if / else؛ إذ ينفَّذ معاملٌ واحد فقط في كل مرة تبعًا لأي الشروط محقق. هذا يقابل تمامًا نقاط القرار التي يكتشفها المحلل عند استخلاص المتطلبات: "إذا كان المستخدم مسجلًا دخوله تجاوز خطوة التسجيل؛ وإلا اعرض نموذج إنشاء الحساب."
alt، ينفَّذ معاملٌ واحد بالضبط. إن أردت حالةً افتراضية غير مشروطة، اكتب شرط الحراسة الأخير [else] تمامًا كما في الكود البرمجي.
يُنمذج المخطط أدناه نظام حجز عيادة. حين يطلب المريض موعدًا يتحقق النظام من التوافر. ثمة فرعان: إن كانت هناك فترة متاحة يُؤكَّد الحجز، وإن لم تكن يُعرض على المريض الانضمام إلى قائمة الانتظار.
alt: يؤكد النظام الحجز أو يعرض قائمة انتظار بحسب توافر المواعيد.معامل opt — السلوك الاختياري
يُنمذج معامل opt (اختصار لـoptional) كتلةً من الرسائل تُنفَّذ فقط إذا كان شرط الحراسة محققًا. إن لم يتحقق الشرط تُتخطى الكتلة بأكملها. يمكن اعتباره بنية if بلا else.
يُعدّ opt اختصارًا لـalt ذي المعامل الواحد، لكن استخدامه يوضح للقارئ أن تخطي الكتلة نتيجةٌ طبيعية وليست مسار خطأ. مثال نموذجي: "طبّق خصم الولاء فقط إذا كان لدى العميل نقاط كافية."
opt حين يوجد فرع واحد ذو معنى وعدم تنفيذ أي شيء هو البديل الطبيعي. استخدم alt حين تتنافس حالتان أو أكثر من الحالات المحددة.
معامل loop — التكرار
يحيط معامل loop بكتلة تتكرر. تحدد الحدود بين قوسين بعد الكلمة المفتاحية: loop(min, max). يمكنك أيضًا إضافة شرط حراسة يُعاد تقييمه قبل كل تكرار — تنتهي الحلقة حين يصبح الشرط خاطئًا أو يُبلَغ الحد الأقصى للعدد. يشير الحد الأدنى (غالبًا 0 أو 1) إلى عدد التنفيذات المضمونة قبل التحقق من الشرط.
الصياغات الشائعة التي ستصادفها:
loop(1, *)— كرر مرةً على الأقل وإلى أجل غير مسمى ما دام الشرط محققًا.loop(0, 3)— كرر من صفر إلى ثلاث مرات.loop(1, 1)— نفَّذ مرةً واحدة بالضبط (نادرًا ما يُكتب بشكل صريح لكنه صالح).
يُظهر المخطط أدناه تدفق معالجة الطلبات في متجر إلكتروني، يجمع loop لإعادة محاولة بوابة الدفع وopt لخطوة تغليف الهدايا الاختيارية.
loop وopt: تُعاد محاولة الدفع حتى ثلاث مرات؛ ويُطبَّق تغليف الهدايا فقط حين طلبه العميل.تداخل الأجزاء المركبة
يمكن تداخل الأجزاء المركبة بعضها داخل بعض. قد يحتوي loop على alt، وقد يحتوي معامل من alt بدوره على opt. عند التداخل احرص على تمييز الإطار الخارجي بصريًا (حد أسمك قليلًا أو لون مختلف في أداة الرسم). القاعدة بسيطة: الإطار الأعمق هو المرجع للرسائل التي يحتويها، تمامًا كما تعمل الكتل الشرطية الداخلية في الكود.
ref — معامل آخر يُفوّض إلى مخطط مسمّى.
كيف يستخدم المحللون الأجزاء المركبة عمليًا
حين تُنمذج سيناريو حالة استخدام، اسأل نفسك عن كل خطوة ثلاثة أسئلة:
- هل ثمة قرار هنا؟ إن كان الجواب نعم وكانت هناك نتيجتان محددتان أو أكثر فاستخدم
alt. إن كان البديل الوحيد هو "لا تفعل شيئًا" فاستخدمopt. - هل تتكرر مجموعة من الرسائل؟ إن كان الجواب نعم فاستخدم
loopواكتب شرط الإنهاء في حراسته. - هل يحدث شيئان في آن واحد؟ استخدم جزء
par(المتوازي — يُغطى في درس مخططات الأنشطة).
في نظام المكتبة، تخيّل سير عملية استعارة كتاب: يجب على النظام التحقق من صلاحية العضوية (opt: تطبيق إعفاء رسوم التأخير للأعضاء المميزين)، ومحاولة مسح RFID مع إعادة المحاولات (loop: حتى 3 مسحات)، ثم التوجيه إلى مسار النجاح أو مسار التحقق من التأخير (alt). نمذجة هذا بالأجزاء المركبة على مخطط واحد تمنح أصحاب المصلحة صورةً أكثر ثراءً وصدقًا عن العملية مقارنةً بمخطط خطي بسيط.
[customer is premium member] وليس [memberType == 2]. الشروط يجب أن تنقل المقصد لأصحاب المصلحة لا تفاصيل التنفيذ للمطورين.
ملخص
- الجزء المركّب إطار مستطيل مُصنَّف يضيف منطقًا شرطيًا أو تكراريًا إلى مخطط التسلسل.
alt— فروع متحولة بالتبادل تفصل بينها خطوط متقطعة؛ تحدد الشروط أيها ينفَّذ؛ استخدم[else]احتياطيًا غير مشروط.opt— كتلة اختيارية واحدة تُنفَّذ فقط حين يتحقق شرطها؛ مكافئ لـ if بلا else.loop(min, max) [guard]— يكرر الرسائل المحاطة؛ ينتهي حين يصبح الشرط خاطئًا أو يُبلَغ الحد الأقصى.- الأجزاء قابلة للتداخل؛ أبقِ التداخل ضحلًا واكتب الشروط بلغة الأعمال لتحقيق قابلية القراءة من قِبل أصحاب المصلحة.