UML: مخططات حالات الاستخدام والسيناريوهات

التدفقات البديلة وتدفقات الاستثناء

18 دقيقة الدرس 7 من 10

التدفقات البديلة وتدفقات الاستثناء

سيناريو حالة الاستخدام الذي يصف المسار المثالي فقط — الخطوات التي تُنفَّذ حين يسير كل شيء على ما يرام — سيناريو منقوص. يجب على الأنظمة الحقيقية التعامل مع الاختيارات والانعطافات والأعطال. توفر كتابة حالات الاستخدام آليتين منظمتين لهذا الغرض: التدفقات البديلة (المسارات الصحيحة غير الافتراضية) وتدفقات الاستثناء (مسارات الخطأ أو الفشل). إتقان هاتين الآليتين يُحوّل السيناريو السطحي إلى مواصفة قابلة للتصميم والاختبار.

المسارات الثلاثة عبر حالة الاستخدام

يضم كل سيناريو حالة استخدام ثلاث فئات من التدفقات:

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

اصطلاحات التدوين

تُكتب التدفقات البديلة وتدفقات الاستثناء داخل وثيقة حالة الاستخدام ذاتها التي تحتوي على التدفق الرئيسي. ترقَّم بمعرّف فرع وإزاحة خطوة:

  • A1 — أول تدفق بديل؛ خطواته A1.1، A1.2، …
  • E1 — أول تدفق استثناء؛ خطواته E1.1، E1.2، …
  • يُحدد رأس كل تدفق: نقطة التفرع (مثلاً "عند الخطوة 4 من التدفق الرئيسي") وشرط الإطلاق.
  • ينتهي كل تدفق بأحد الخيارات: الاستئناف من الخطوة N في التدفق الرئيسي، أو تنتهي حالة الاستخدام بنجاح، أو تنتهي حالة الاستخدام بفشل.

مثال تطبيقي: حجز موعد في عيادة إلكترونية

حالة الاستخدام: حجز موعد. الفاعل: المريض. النظام: بوابة العيادة.

التدفق الرئيسي

  1. يختار المريض الطبيب والتاريخ المفضل.
  2. يعرض النظام المواعيد المتاحة.
  3. يختار المريض موعداً ويؤكده.
  4. يعالج النظام رسوم الحجز عبر وسيلة الدفع المحفوظة.
  5. يرسل النظام رسالة تأكيد بالبريد الإلكتروني. تنتهي حالة الاستخدام بنجاح.

التدفق البديل A1 — لا توجد وسيلة دفع محفوظة (يُطلق عند الخطوة 4)

  1. يكتشف النظام عدم وجود وسيلة دفع محفوظة في حساب المريض.
  2. يطلب النظام من المريض إدخال بيانات البطاقة.
  3. يُدخل المريض البيانات ويرسلها.
  4. الاستئناف من الخطوة 4 في التدفق الرئيسي.

التدفق البديل A2 — يطلب المريض موعداً مختلفاً (يُطلق عند الخطوة 3)

  1. يختار المريض "عرض مزيد من المواعيد" بدلاً من التأكيد.
  2. يعرض النظام الأسبوع التالي المتاح.
  3. الاستئناف من الخطوة 3 في التدفق الرئيسي.

تدفق الاستثناء E1 — انتهاء مهلة بوابة الدفع (يُطلق عند الخطوة 4)

  1. لا يتلقى النظام أي استجابة من بوابة الدفع خلال 10 ثوانٍ.
  2. يلغي النظام حجز الموعد المؤقت.
  3. يعرض النظام: "تعذّر معالجة الدفع. يُرجى المحاولة مجدداً أو التواصل مع الدعم."
  4. تنتهي حالة الاستخدام بفشل.

تدفق الاستثناء E2 — حجز الموعد من قِبَل مريض آخر (يُطلق عند الخطوة 3)

  1. يكتشف النظام أن الموعد حُجز بالتزامن من قِبَل مريض آخر.
  2. يعرض النظام رسالة "الموعد لم يعد متاحاً" ويُحدّث القائمة.
  3. الاستئناف من الخطوة 3 في التدفق الرئيسي.
نصيحة — التعارض الزمني استثناء لا تدفق بديل. حين يتنافس مستخدمان على مورد مشترك (موعد، مقعد، مخزون)، فإن المحاولة الخاسرة تُعدّ تدفق استثناء، لأنها تمثّل فشلاً غير متوقع من منظور المستخدم — وليست اختياراً متعمداً.

تمثيل التدفقات بمخطط نشاط

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

Alternate and Exception Flows — Book Appointment 1. Select doctor & date 2. Display available slots Confirm slot? A2: view more Show next week resume 2 Yes Payment stored? A1: No Prompt & collect card details resume 4 Yes 4. Process payment Gateway OK? E1: Timeout Cancel slot & show error Failure Yes 5. Send confirmation email Success Legend Main flow step Alternate flow step Exception flow step Resume branch
مخطط نشاط يوضح المسار الرئيسي والتدفقات البديلة (A1 وA2) وتدفق الاستثناء (E1) لحالة استخدام "حجز موعد".

كتابة التدفقات في وثيقة حالة الاستخدام

يوضح القالب المنظم أدناه كيفية ظهور هذه التدفقات في وثيقة حالة استخدام رسمية. لاحظ أن كل تدفق بديل أو استثنائي يستشهد برقم الخطوة المحددة في التدفق الرئيسي — هذه الدقة هي ما يجعل الوثيقة لا لبس فيها لدى المطورين والمختبرين.

USE CASE: Book Appointment Actor: Patient Preconditions: Patient is logged in; at least one doctor has availability. MAIN FLOW 1. Patient selects doctor and preferred date. 2. System displays available time slots. 3. Patient selects a slot and confirms. 4. System processes booking fee via stored payment method. 5. System sends confirmation email. [Use case ends in success] ALTERNATE FLOWS A1 - No Stored Payment Method Trigger: At step 4, system finds no stored payment method. A1.1 System prompts patient to enter card details. A1.2 Patient submits card details. A1.3 Resume at step 4 of Main Flow. A2 - Patient Requests Different Slot Trigger: At step 3, patient selects "view more times". A2.1 System displays the next available week. A2.2 Resume at step 3 of Main Flow. EXCEPTION FLOWS E1 - Payment Gateway Timeout Trigger: At step 4, no gateway response within 10 seconds. E1.1 System cancels the tentative slot reservation. E1.2 System displays error: "Payment could not be processed." [Use case ends in failure] E2 - Slot Taken Concurrently Trigger: At step 3, selected slot is no longer available. E2.1 System displays "slot no longer available" and refreshes list. E2.2 Resume at step 3 of Main Flow.

تقنيات عملية للكشف عن جميع التدفقات

يجد المحللون أحياناً صعوبة في استقصاء جميع التدفقات البديلة وتدفقات الاستثناء. استخدم هذه المحفزات المنهجية للكشف عنها:

  • "ماذا لو غيّر الفاعل رأيه؟" — يقود إلى تدفقات بديلة (إلغاء، عودة للخلف، اختيار خيار مختلف).
  • "ماذا لو كانت البيانات غير صحيحة؟" — يقود إلى تدفقات استثناء (بريد إلكتروني غير صالح، تاريخ في الماضي، حقل مفقود).
  • "ماذا لو فشل نظام خارجي؟" — يقود إلى تدفقات استثناء (بوابة دفع، خدمة بريد، API طرف ثالث).
  • "ماذا لو تصرف مستخدمان في آنٍ واحد؟" — يقود إلى تدفقات استثناء تزامنية (تعارض على موارد مشتركة).
  • "ماذا لو كانت الصلاحيات غير كافية؟" — يقود إلى تدفقات استثناء (وصول غير مصرح، جلسة منتهية الصلاحية).
لا تُحدد التفاصيل التقنية داخل تدفق الاستثناء. يصف تدفق الاستثناء ما يفعله النظام (تسجيل الخطأ، عرض رسالة، إلغاء الحجز)، وليس كيف يفعله (أي جدول قاعدة بيانات يُحدَّث). حافظ على تدفقات الاستثناء عند مستوى التجريد ذاته للتدفق الرئيسي.

الأخطاء الشائعة

  • تصنيف كل شيء على أنه استثناء: اختيار الفاعل لمسار بديل صحيح (الدفع بالفاتورة بدلاً من البطاقة) هو تدفق بديل، وليس استثناءً.
  • إغفال النتيجة: يجب أن ينتهي كل تدفق بـ"الاستئناف من الخطوة N"، أو "ينتهي بنجاح"، أو "ينتهي بفشل".
  • شرط إطلاق غامض: الكتابة "عند فشل الدفع" دون الإشارة إلى رقم الخطوة تجعل الوثيقة أصعب تتبعاً واختباراً.
  • غياب نقطة العودة: يجب أن يحدد التدفق البديل الذي يعود إلى المسار الرئيسي الخطوةَ التي يعود إليها بدقة.

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