الجهات الفاعلة وحالات الاستخدام
الجهات الفاعلة وحالات الاستخدام
كل نظام موجود لخدمة شخص ما أو شيء ما خارجه. قبل أن ترسم أي مخطط، عليك الإجابة على سؤالين: من يتفاعل مع النظام؟ وماذا يقدم النظام لهم؟ تُجاب هذه الأسئلة بتحديد الجهات الفاعلة وحالات الاستخدام — وهما اللبنتان الأساسيتان في كل مخطط حالات استخدام UML.
ما هي الجهة الفاعلة؟
الجهة الفاعلة (Actor) هي أي كيان يتفاعل مع النظام من خارج حدوده. لاحظ ثلاثة أمور في هذا التعريف. أولاً، الجهة الفاعلة تقع خارج النظام — فهي ليست جزءاً مما تبنيه. ثانياً، الجهة الفاعلة تتفاعل — إذ ترسل معلومات إلى النظام أو تستقبلها منه. ثالثاً، الجهة الفاعلة كيان — يمكن أن تكون دوراً بشرياً، أو نظاماً خارجياً، أو جهازاً، أو حتى مؤقتاً زمنياً.
يمثّل UML الجهة الفاعلة كـرسم عصيّ (stick figure) مع تسمية أسفله. تُسمّي التسمية الدور لا الشخص. قد يؤدي مستخدم واحد اسمه أحمد دوريّ المريض والمدير في سياقات مختلفة — وهذان جهتان فاعلتان منفصلتان.
الجهات الفاعلة الأولية والثانوية
تنقسم الجهات الفاعلة إلى فئتين تحددان طريقة قراءة المخطط ورسمه:
- الجهات الفاعلة الأولية (Primary Actors) هي التي تبادر بتفعيل حالات الاستخدام لتحقيق أهدافها الخاصة. وهي السبب في وجود النظام أصلاً. في نظام حجز مواعيد العيادة، يُعدّ المريض جهة فاعلة أولية — فالمريض يحجز موعداً للحصول على رعاية طبية، وهذا الهدف يحرك سير عمل الحجز بأكمله.
- الجهات الفاعلة الثانوية (Secondary Actors) تُسمى أيضاً الجهات الداعمة، وهي تساعد النظام في تقديم الخدمة لكنها لا تبادر بالتفاعل. بوابة الدفع جهة فاعلة ثانوية — فهي لا تقرر معالجة الدفع بنفسها؛ بل تستجيب فقط حين يستدعيها النظام. وبالمثل، تُرسل خدمة الإشعارات رسائل تأكيد عبر البريد الإلكتروني فقط حين تُثار داخلياً.
تحديد الجهات الفاعلة من المتطلبات
عند قراءة وثيقة المتطلبات أو إجراء مقابلات مع أصحاب المصلحة، اطرح هذه الأسئلة المحفزة لاستخراج الجهات الفاعلة:
- من يُزود النظام بالبيانات أو يستقبل النتائج منه؟
- من يدير النظام أو يُشرف عليه؟
- ما الأنظمة الخارجية التي يتواصل معها هذا النظام؟
- هل ثمة شيء يُشغَّل بناءً على جدول زمني (مجدول يُنفّذ تقارير ليلية)؟
- من يستفيد من كل وظيفة يؤديها النظام؟
لنظام مكتبة عامة قد تُفرز هذه الأسئلة: العضو (يستعير الكتب)، أمين المكتبة (يدير الفهرس والإعارات)، خدمة الفهرسة الخارجية (تُزود النظام بالبيانات الببليوغرافية)، وخدمة البريد الإلكتروني (ترسل تذكيرات التأخير). هذه أربع جهات فاعلة متمايزة، لكل منها علاقة مختلفة بالنظام.
ما هي حالة الاستخدام؟
حالة الاستخدام (Use Case) تصف هدفاً محدداً تحققه جهة فاعلة من خلال تفاعلها مع النظام. وهي تلتقط وحدة متكاملة من السلوك القيّم — لا نقرة زر واحدة، ولا بيان مهمة مبهم، بل تفاعل هادف يُفضي إلى نتيجة تهم الجهة الفاعلة.
يمثّل UML حالة الاستخدام كـشكل بيضاوي (ellipse) يحمل تسمية قصيرة بصيغة فعل-اسم. التسميات الجيدة تعكس نشاطاً: Book Appointment، Search Catalog، Process Payment، Generate Monthly Report. أما التسميات الضعيفة فهي إما تفصيلية أكثر من اللازم (Click Submit Button) أو مبهمة جداً (Manage System).
Register Member، Cancel Booking، View Order History. يجب أن تنطق كل تسمية منطقياً حين تقرأها هكذا: "يستطيع [الجهة الفاعلة] أن [اسم حالة الاستخدام]."
تحديد حالات الاستخدام من المتطلبات
بمجرد أن يكون لديك قائمة بالجهات الفاعلة، استنتج حالات الاستخدام بسؤال: ما الهدف الذي تسعى هذه الجهة الفاعلة لتحقيقه عند تفاعلها مع النظام؟ كل هدف متمايز هو مرشح لأن يكون حالة استخدام. لنظام حجز مواعيد العيادة:
- المريض يستطيع: Book Appointment، Cancel Appointment، View Appointment History، Receive Reminder
- الطبيب يستطيع: View Daily Schedule، Update Availability
- الموظف الاستقبالي يستطيع: Register Patient، Book Appointment on Behalf، Confirm Walk-in
- خدمة البريد الإلكتروني (ثانوية): Send Confirmation، Send Reminder
لاحظ أن Book Appointment يظهر لكل من المريض والموظف الاستقبالي — يمكن ربط حالة استخدام واحدة بأكثر من جهة فاعلة.
حدود النظام
حد النظام (System Boundary) هو مستطيل يُرسم حول جميع حالات الاستخدام. يظهر اسم النظام في أعلاه. وتقف الجهات الفاعلة خارج هذا المستطيل. يُصرّح الحد بما هو داخل نطاق ما تبنيه وما يُعدّ بنية تحتية خارجية. وهذا بالغ الأهمية في تحديد نطاق المشروع: بوابة الدفع خارج الحد تعني أن فريقك يتكامل مع خدمة خارجية، وليس يبني معالج دفع.
نظام حجز مواعيد العيادة — مخطط حالات الاستخدام الكامل
يجمع المخطط أدناه جميع العناصر التي ناقشناها: الجهات الفاعلة الأولية على اليسار، والثانوية على اليمين، وحالات الاستخدام داخل حدود النظام، وخطوط الارتباط التي تربط كل جهة فاعلة بحالات الاستخدام التي تشارك فيها.
قراءة المخطط
حين تفحص مخطط حالات الاستخدام، اقرأه بمنهجية:
- حدّد حد النظام — المستطيل يخبرك بما هو في النطاق.
- تعرّف على كل جهة فاعلة — لاحظ ما إذا كانت دوراً بشرياً أم نظاماً خارجياً.
- اقرأ كل حالة استخدام — الأشكال البيضاوية هي الأهداف التي يدعمها النظام.
- تتبع الارتباطات — كل خط يعني "تشارك هذه الجهة الفاعلة في هذه حالة الاستخدام."
Click Login Button، وDisplay Error Message، وSubmit Form ليست حالات استخدام — بل هي تفاعلات واجهة مستخدم. حالة الاستخدام الصحيحة هي Authenticate User، التي تمثل الهدف الذي تسعى إليه الجهة الفاعلة. الحفاظ على مستوى التجريد الصحيح من أصعب المهارات التي يجب تطويرها.
المتجر الإلكتروني — مثال ثانٍ
لترسيخ الأسلوب، فكر في متجر إلكتروني مبسط. الجهات الفاعلة الأولية: العميل ومدير المتجر. الثانوية: بوابة الدفع وواجهة الشحن. تشمل حالات الاستخدام: تصفح المنتجات، الإضافة إلى السلة، إتمام الطلب، تتبع الشحنة، إدارة المخزون، توليد تقارير المبيعات، معالجة الدفع، وتنفيذ الشحنة. يوضح المخطط أدناه كيفية تنظيم هذه العناصر.
أخطاء شائعة يجب تجنبها
- معاملة الأقسام كجهات فاعلة. "قسم المالية" ليس جهة فاعلة. دور "مدير الحسابات" هو الجهة الفاعلة. يجب أن تكون الجهة الفاعلة دوراً يؤديه شخص أو نظام خارجي، لا وحدة تنظيمية.
- إنشاء جهة فاعلة لكل فرد. إذا كان خمسون عميلاً يؤدون الأعمال ذاتها، فثمة جهة فاعلة واحدة تُسمى Customer، لا خمسون جهة.
- إغفال الجهات الفاعلة من الأنظمة. كثيراً ما يغفل المبتدئون الأنظمة الخارجية (بوابات الدفع، خدمات البريد، تكاملات ERP). فهذه جهات فاعلة حقيقية مع خطوط ارتباط، تماماً مثل البشر.
- وضع الجهات الفاعلة داخل الحد. إذا كان الكيان داخل المستطيل، فهو ليس جهة فاعلة — بل هو جزء من النظام الذي تبنيه.
خلاصة
- الجهة الفاعلة هي أي كيان خارج حدود النظام يتفاعل معه. يمكن أن تكون دوراً بشرياً، أو نظاماً خارجياً، أو جهازاً.
- الجهات الفاعلة الأولية تبادر بحالات الاستخدام لتحقيق أهدافها؛ الثانوية تدعم النظام في الاستجابة لتلك الأهداف.
- حالة الاستخدام وصف على مستوى الهدف لتفاعل متكامل بين جهة فاعلة والنظام، يُمثَّل كشكل بيضاوي بتسمية فعل-اسم.
- مستطيل حدود النظام يُعرّف النطاق: كل ما بداخله يبنيه فريقك؛ كل ما خارجه بنية تحتية خارجية.
- حدّد الجهات الفاعلة بسؤال من يُزود النظام بالبيانات، ومن يستقبلها، ومن يدير النظام، وما الأنظمة الخارجية التي يتواصل معها.