طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 302 · من الفكرة إلى المنتج (٢): نظام حجز مواعيد
الدرس 1 · الوحدة 1: الفكرة والتخطيط والتصميم

المحطّة ١: المتطلّبات ورحلة المستخدم

نظامٌ بدورين: حدّد الفاعلين ورحلاتهم قبل أن تكتب سطرًا. ⏱ نحو 22 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تحدّد الفاعلين وصلاحياتهم في نظامٍ متعدّد الأدوار.
  • ترسم رحلة المستخدم لاكتشاف الحالات الخفيّة.
  • تكتب قصص المستخدم والمتطلّبات للدورين.
  • تُبرز المتطلّبات الحرجة مثل منع التعارض وعزل الأدوار.

١نظامٌ لأكثر من مستخدم

مشروعنا أعقد قليلًا من تطبيقٍ لمستخدمٍ واحد: له دوران مختلفان بصلاحياتٍ مختلفة. هذا النوع من الأنظمة هو الأشيع في العمل الحقيقيّ، ولذلك نبدأ — كما تعلّمت في 241 — بتحديد مَن يستخدم النظام قبل ماذا يفعل.

المشروع: نظام حجز مواعيد عيادة. الفاعلون:

الفاعل (Actor)هدفهلا يجوز له
المريضيرى المواعيد المتاحة ويحجز موعدًا، ويلغي حجزه.لا يرى بيانات مرضى آخرين، ولا يلغي حجز غيره.
الموظّفيرى الجدول كاملًا، ويلغي أو يفتح مواعيد.—

٢رحلة المستخدم: القصّة قبل الشاشة

رحلة المستخدم (User Journey) تسرد الخطوات التي يمرّ بها الفاعل لتحقيق هدفه. رحلة المريض للحجز:

  1. يفتح النظام ويسجّل دخوله كمريض.
  2. يرى قائمة المواعيد المتاحة (طبيب + وقت).
  3. يختار موعدًا ويضغط «احجز».
  4. يؤكّد النظام الحجز، ويختفي الموعد من المتاحة.
  5. يستطيع لاحقًا رؤية حجزه وإلغاؤه.

رسم الرحلة قبل البناء يكشف الحالات الخفيّة: ماذا لو حاول اثنان حجز الموعد نفسه في اللحظة ذاتها؟ ماذا لو ألغى المريض؟ هذه أسئلةٌ تولّد متطلّباتٍ لا تظهر إلّا حين تتخيّل الرحلة.

٣قصص المستخدم والمتطلّبات

نحوّل الرحلتين إلى قصصٍ بصيغة (بصفتي… أريد… حتى…):

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

توقّع وتحقّق

لماذا نحدّد الفاعلين (المريض/الموظّف) أوّلًا؟

«لا يُحجَز الموعد مرّتين» متطلّبٌ:

ما الذي تكشفه رحلة المستخدم؟

أيّها قصّة مستخدمٍ صحيحة؟

الخلاصة

تحدٍّ تصميمي: متطلّبات نظام حجز العيادة

تصميمي

اكتب وثيقة متطلّباتٍ للمشروع: حدّد الفاعلين، وارسم رحلة كلٍّ منهما، واكتب القصص والمتطلّبات. ستقود هذه الوثيقة تصميم الـ API في المحطّة القادمة.

المطلوب:
  • جدول الفاعلين (المريض، الموظّف) وصلاحيات كلٍّ.
  • رحلة مستخدمٍ واحدةٍ على الأقلّ مرسومةً خطوةً خطوة.
  • قصص المستخدم للدورين.
  • المتطلّبات الوظيفيّة وغير الوظيفيّة، ومنها منع التعارض.
☑ راجع عملك قبل التسليم:
💡 تلميح 1
لكلّ فاعلٍ اسأل: ماذا يرى؟ ماذا يفعل؟ وما الممنوع عليه؟
💡 تلميح 2
تخيّل مريضين يضغطان «احجز» على الموعد نفسه — هذا يولّد متطلّب منع التعارض.

🐞 لاحظت خطأً في هذا الدرس؟ أبلغني بالبريد

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس