طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 241 · تحليل وتصميم برمجيات الويب
الدرس 5 · الوحدة 3: التحويل من متطلبات العميل إلى مواصفات دقيقة

المتطلبات الوظيفية وغير الوظيفية

كيف تفصل ما يفعله النظام عن الجودة المطلوبة منه، وتكتب كليهما بدقة يمكن اختبارها؟ ⏱ نحو 40 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تميّز المتطلب الوظيفي من غير الوظيفي.
  • تصنّف المتطلبات غير الوظيفية: الأداء والتوفر والأمان وقابلية الاستخدام والتوافق والخصوصية والصيانة.
  • تترجم عبارات العميل إلى متطلبات دقيقة قابلة للقياس.
  • تقرأ مخطط المتطلبات requirementDiagram.

١ماذا يفعل النظام؟ وكيف يجب أن يكون؟

كل متطلب يجيب عن واحد من سؤالين. المتطلب الوظيفي Functional Requirement يصف ماذا يفعل النظام: وظيفة يراها المستخدم ويمكن أن يضغط زرًّا لتنفيذها. المتطلب غير الوظيفي Non-Functional Requirement يصف كيف يجب أن يكون النظام وهو يؤدي وظائفه: سريعًا؟ آمنًا؟ متاحًا؟

وظيفي FRغير وظيفي NFR
يجيب عنماذا يفعل النظام؟بأي جودة وتحت أي قيود؟
مثال من «دورات»يسجّل المتدرب في دورة ويدفع رسومهاتفتح صفحة الدورة خلال ثانيتين لـ 95% من الطلبات
إن غابتنقص ميزة واضحةالنظام «يعمل» لكن الناس يتركونه: بطيء، أو غير آمن، أو يتعطل
يُختبر بـسيناريو: افعل كذا، فيحدث كذاقياس: زمن، أو نسبة، أو عدد، أو معيار

٢فئات المتطلبات غير الوظيفية

الفئةالسؤالصياغة قابلة للقياس لـ «دورات»
الأداءما سرعته تحت الضغط؟تظهر نتائج البحث خلال ثانيتين لـ 95% من الطلبات مع 200 مستخدم متزامن.
التوفركم يبقى متاحًا؟يعمل النظام 99.5% من الوقت شهريًّا، والصيانة المجدولة بعد 11 مساءً فقط.
الأمانمن يصل إلى ماذا؟ وكيف تُحمى البيانات؟تُخزَّن كلمات المرور مُجزّأة bcrypt، ويُقفل الحساب 15 دقيقة بعد 5 محاولات فاشلة.
قابلية الاستخدامهل يستخدمه الناس بسهولة؟يُكمل متدرب جديد التسجيل في 3 خطوات وأقل من دقيقتين دون مساعدة.
التوافقعلى أي أجهزة يعمل؟يعمل على آخر نسختين من Chrome و Safari و Edge، وعلى شاشات من عرض 360px.
الخصوصية والأنظمةما القوانين الواجب الالتزام بها؟يلتزم بنظام حماية البيانات الشخصية في المملكة، ولا يُعرض رقم الهوية كاملًا لغير الموظفين.
قابلية الصيانةهل يسهل تعديله؟إضافة نوع دورة جديد لا تتطلب تغيير الكود، بل إعدادًا من لوحة الإدارة.

٣من لغة العميل إلى لغة الفريق التقني

العميل يتكلم بلغة عمله، والمطور يحتاج جملة لا تحتمل إلا معنى واحدًا. الترجمة بينهما أهم مهارة في هذا الدرس:

قال العميلالمتطلب بعد الترجمةالنوع
«أبي المتدرب يعرف إذا فيه مكان»FR-03: يعرض النظام عدد المقاعد المتاحة لكل دورة.وظيفي
«ما نبي زحمة اتصالات يوم التسجيل»NFR-01: يتحمل النظام 300 مستخدم متزامن دون أن يتجاوز زمن الاستجابة 3 ثوانٍ.غير وظيفي (أداء)
«الموظفة تعتمد الطلبات»FR-07: يجب أن تتمكن موظفة التسجيل من اعتماد طلب التسجيل أو رفضه مع ذكر السبب.وظيفي
«البيانات سرية»NFR-04: لا يطّلع المدرب إلا على أسماء المسجلين في دوراته، دون أرقام الجوال.غير وظيفي (أمان)
✗ ضعيف
✗ غامض
  • النظام يكون سريعًا وسهل الاستخدام.
  • يتم إرسال إشعارات للمستخدمين.
  • يجب دعم الدفع والتقارير والشهادات.
✓ أفضل
✓ دقيق
  • تفتح صفحة الدورة خلال ثانيتين لـ 95% من الطلبات.
  • يرسل النظام رسالة نصية للمتدرب خلال دقيقة من اعتماد تسجيله.
  • ثلاثة متطلبات منفصلة: FR-10 الدفع، FR-11 التقارير، FR-12 الشهادات.

المتطلب الدقيق: يحدد من وماذا ومتى، ويقيس بالأرقام، ويحوي متطلبًا واحدًا فقط في الجملة.

٤صفات المتطلب الجيد

الصفةاسأل نفسك
واضحهل يفهمه شخصان بالمعنى نفسه؟ (تجنّب: سريع، سهل، مناسب، حديث، إلخ)
قابل للاختبارهل يمكن أن يقول المختبِر «نجح» أو «فشل»؟
مفردهل يحوي متطلبًا واحدًا؟ (كلمة «و» بين وظيفتين علامة خطر)
ممكنهل يمكن تنفيذه بالوقت والميزانية والتقنية المتاحة؟
قابل للتتبعهل له معرّف ومصدر نعود إليه؟
متسقهل يتعارض مع متطلب آخر؟

ويمكن رسم المتطلبات وعلاقاتها بـ مخطط المتطلبات requirementDiagram: كل متطلب بنوعه ومعرّفه ودرجة خطورته وطريقة التحقق منه، وأي جزء من النظام يحققه satisfies:

diagram.mmd
requirementDiagram  functionalRequirement FR1 {    id: FR1    text: "يعرض النظام المقاعد المتاحة لكل دورة"    risk: high    verifymethod: test  }  performanceRequirement NFR1 {    id: NFR1    text: "تفتح صفحة الدورة خلال ثانيتين"    risk: medium    verifymethod: test  }  element course_page {    type: "صفحة الدورة"  }  course_page - satisfies -> FR1  course_page - satisfies -> NFR1

<<satisfies>>

<<satisfies>>

<<Functional Requirement>>

FR1

ID: FR1

Text: يعرض النظام المقاعد المتاحة لكل دورة

Risk: High

Verification: Test

<<Performance Requirement>>

NFR1

ID: NFR1

Text: تفتح صفحة الدورة خلال ثانيتين

Risk: Medium

Verification: Test

<<Element>>

course_page

Type: صفحة الدورة

لاحظ النوعين: functionalRequirement و performanceRequirement (وهناك أيضًا interfaceRequirement و designConstraint). سنستخدم هذا المخطط لاحقًا في تتبع المتطلبات حتى التنفيذ.

توقّع وتحقّق

«يرسل النظام إيصال الدفع إلى بريد المتدرب» متطلب:

وظيفة يؤديها النظام.

«يعمل النظام 99.5% من الوقت شهريًّا» من فئة:

أي متطلب قابل للاختبار؟

ما المشكلة في «يجب دعم الدفع والتقارير والشهادات»؟

افصلها لتتابع كلًّا منها.

الخلاصة

تحدٍّ تصميمي: أعد صياغة متطلبات «دورات»

متوسط

وصلتك هذه الملاحظات من الاجتماعات: «النظام يكون سريع وسهل»، «المتدرب يسجل ويدفع ويشوف شهادته»، «البيانات لازم تكون محمية»، «يشتغل على الجوال»، «الموظفة تعتمد وترفض». حوّلها إلى متطلبات دقيقة.

المطلوب:
  • أربعة متطلبات وظيفية على الأقل، كل منها في سطر يبدأ بمعرّف FR-رقم ويحوي «يجب» أو فعلًا مضارعًا للنظام.
  • ثلاثة متطلبات غير وظيفية على الأقل، كل منها في سطر يبدأ بـ NFR-رقم ويذكر فئته ورقمًا يُقاس.
  • ثلاث فئات مختلفة على الأقل للمتطلبات غير الوظيفية.
  • بلا كلمات غامضة: سريع، سهل، مناسب، حديث، آمن (وحدها).
✓ التحقق الآلي: يفحص المختبر بنية مستندك وصياغته (لا يحكم على جودة الفكرة؛ هذا دور معلمك)
  • أربعة متطلبات وظيفية على الأقل
  • كل متطلب وظيفي يبدأ بمعرّف FR-رقم
  • كل متطلب وظيفي يصف ما يفعله النظام أو المستخدم (يجب/يتمكن/يعرض…)
  • كل سطر متطلب واحد: لا «و» تربط بين فعلين مثل «يسجل ويدفع»
  • ثلاثة متطلبات غير وظيفية على الأقل
  • كل متطلب غير وظيفي يبدأ بمعرّف NFR-رقم
  • كل متطلب غير وظيفي فيه رقم يُقاس
  • ثلاث فئات مختلفة على الأقل
  • لا كلمات غامضة في المتطلبات غير الوظيفية
  • لا كلمات غامضة في المتطلبات الوظيفية

💡 تلميح 1
افصل «يسجل ويدفع ويشوف شهادته» إلى ثلاثة متطلبات FR مستقلة.
💡 تلميح 2
اكتب الفئة بين قوسين بعد المعرّف: NFR-01 (الأداء): …
💡 تلميح 3
بدّل «سريع» برقم: «خلال ثانيتين»، و«محمية» بإجراء محدد: «يُقفل الحساب بعد 5 محاولات».

نموذج واحد من إجابات كثيرة صحيحة.

المتطلبات الوظيفية
FR-01: يجب أن يتمكن المتدرب من التسجيل في دورة متاحة.
FR-02: يجب أن يتمكن المتدرب من دفع رسوم الدورة إلكترونيًّا.
FR-03: يجب أن يتمكن المتدرب من تنزيل شهادة الدورة بعد إكمالها.
FR-04: يجب أن تتمكن موظفة التسجيل من اعتماد طلب التسجيل.
FR-05: يجب أن تتمكن موظفة التسجيل من رفض الطلب مع ذكر السبب.
المتطلبات غير الوظيفية
NFR-01 (الأداء): تفتح صفحة الدورة خلال ثانيتين لـ 95% من الطلبات.
NFR-02 (قابلية الاستخدام): يكمل المتدرب التسجيل في 3 خطوات على الأكثر.
NFR-03 (الأمان): يُقفل الحساب 15 دقيقة بعد 5 محاولات دخول فاشلة.
NFR-04 (التوافق): يعمل النظام على شاشات الجوال من عرض 360px.
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

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