تحليل المتطلبات وتوثيقها

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

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

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

يجب على كل نظام برمجي أن ينجح في أمرين اثنين: أن يؤدي الوظائف الصحيحة، وأن يؤديها بالشكل الصحيح. يرتبط هذان الهدفان مباشرةً بأكثر تصنيفين أساسيين في هندسة المتطلبات — المتطلبات الوظيفية والمتطلبات غير الوظيفية. إتقان هذا التمييز هو الخطوة الأولى نحو كتابة متطلبات يستطيع المطورون البناء عليها، والمختبرون التحقق منها، وأصحاب المصلحة الوثوق بها.

ما هي المتطلبات الوظيفية؟

المتطلب الوظيفي يصف سلوكاً أو وظيفة محددة يجب أن يؤديها النظام. يجيب عن السؤال: "ماذا يجب أن يفعل النظام؟" تحدد المتطلبات الوظيفية المدخلات والمخرجات والتحويل الذي يحدث بينهما.

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

  • يجب أن يتمكن المريض من البحث عن المواعيد المتاحة حسب الطبيب والتخصص والتاريخ.
  • يجب أن يرسل النظام رسالة تأكيد نصية خلال 60 ثانية من إتمام الحجز بنجاح.
  • يجب أن يتمكن الموظف الإداري من إلغاء موعد حتى ساعتين قبل الوقت المحدد.
  • يجب أن يمنع النظام حجز طبيبين لنفس الفترة الزمنية.

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

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

المتطلب غير الوظيفي يصف سمة جودة في النظام — مدى جودة أدائه لوظائفه. تجيب المتطلبات غير الوظيفية عن: "كيف يجب أن يتصرف النظام؟" وتُسمى أحياناً سمات الجودة أو خصائص النظام.

باستخدام نفس نظام حجز العيادات، قد تكون المتطلبات غير الوظيفية:

  • الأداء: يجب أن تُحمَّل صفحة نتائج البحث عن المواعيد في أقل من ثانيتين لـ 95% من الطلبات تحت الحمل الطبيعي (حتى 500 مستخدم متزامن).
  • الأمان: يجب تشفير السجلات الطبية للمرضى أثناء التخزين باستخدام AES-256 وأثناء النقل باستخدام TLS 1.3 أو أعلى.
  • سهولة الاستخدام: يجب أن يتمكن موظف الاستقبال الجديد بدون تدريب مسبق من حجز موعد خلال أقل من 3 دقائق بعد جلسة تعريفية مدتها ساعة.
  • التوافر: يجب أن يحافظ بوابة الحجز على وقت تشغيل بنسبة 99.9%، باستثناء نوافذ الصيانة المجدولة.
  • قابلية التوسع: يجب أن يدعم النظام النمو من 10,000 إلى 100,000 مريض مسجل دون تغييرات معمارية.

لاحظ أن أياً من هذه العبارات لا يضيف ميزة جديدة. جميعها تفرض قيوداً على طريقة عمل الميزات الموجودة. البحث البطيء الذي يعيد نتائج صحيحة يخالف متطلب الأداء. النظام غير الآمن الذي يحجز المواعيد بشكل صحيح يخالف متطلب الأمان.

التمييز الجوهري: المتطلبات الوظيفية تحدد ما يفعله النظام. المتطلبات غير الوظيفية تحدد مدى جودة ما يفعله. كلاهما ضروري. النظام المكتمل وظيفياً لكنه بطيء بشكل غير محتمل، أو المليء بالميزات لكنه غير آمن، هو نظام فاشل.
Functional vs Non-Functional Requirements split with examples System Requirements Clinic Booking System Functional What the system does Non-Functional How well it does it Search appointments Send SMS confirmation Prevent double-booking Performance Security Usability Availability Scalability Reliability
تقسيم متطلبات نظام حجز العيادات إلى وظيفية وغير وظيفية.

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

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

  • الأداء — أهداف أوقات الاستجابة والإنتاجية والتأخير. مثال: "يجب أن تُكمل صفحة الدفع في المتجر الإلكتروني معالجة الدفع في أقل من 3 ثوانٍ لـ 99% من المعاملات."
  • الأمان — المصادقة والتفويض وحماية البيانات ومسارات التدقيق. مثال: "يجب أن يتمكن المستخدمون المصادق عليهم الذين لديهم دور MANAGER فقط من الوصول إلى وظيفة تصدير الرواتب."
  • سهولة الاستخدام — سهولة التعلم وكفاءة الاستخدام وإمكانية الوصول. مثال: "يجب أن يكون تطبيق سائق الخدمات اللوجستية قابلاً للاستخدام بيد واحدة وإصبع بقفاز على شاشة مقاس 5 بوصات."
  • الموثوقية والتوافر — أهداف وقت التشغيل والمتوسط الزمني بين الأعطال وأهداف الاسترداد. مثال: "يجب أن يتحمل المتجر الإلكتروني فشل أي خادم واحد دون توقف مرئي للمستخدم."
  • قابلية الصيانة — مدى سهولة تحديث النظام وتوسيعه أو تصحيح أخطائه. مثال: "يجب ألا يتطلب إضافة بوابة دفع جديدة أي تغييرات في منطق معالجة الدفع الحالي."
  • قابلية التوسع — مدى قدرة النظام على التعامل مع الحمل المتزايد. مثال: "يجب أن يتعامل محرك التوجيه اللوجستي مع 10,000 عملية تسليم نشطة في آن واحد."
  • قابلية النقل والتشغيل البيني — القدرة على العمل على منصات مختلفة والتكامل مع أنظمة أخرى. مثال: "يجب أن يصدر نظام العيادة بيانات المواعيد بتنسيق HL7 FHIR لتكامل المستشفى."
  • الامتثال — القيود التنظيمية والقانونية. مثال: "يجب أن يمتثل المتجر الإلكتروني لمعيار PCI-DSS المستوى 1 لجميع معاملات البطاقات."

أهمية هذا التمييز في الممارسة العملية

التمييز بين الوظيفي وغير الوظيفي ليس أكاديمياً فحسب — بل يحدد من تتحدث إليه، وكيف تستخلص المتطلبات، ومتى تكتشف الإخفاقات.

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

عادةً ما تُكتشف الأنظمة القاصرة وظيفياً خلال اختبار قبول المستخدم. أما انتهاكات المتطلبات غير الوظيفية فغالباً ما تكون صامتة — النظام الذي يتدهور تحت الحمل، أو يسرب البيانات، أو يصبح غير قابل للاستخدام على الهاتف المحمول، قد يجتاز جميع الاختبارات الوظيفية ومع ذلك يفشل في الإنتاج. لهذا يجب تحديد المتطلبات غير الوظيفية مبكراً وبدقة ومع معايير قبول قابلة للقياس.

Three axes of NFRs: Performance, Security, and Usability with clinic examples Performance Security Usability Clinic Booking System — example NFRs Search Results Load in < 2 s at 500 concurrent users Measurable ✓ Booking Confirmation SMS within 60 seconds Measurable ✓ Data Encryption AES-256 at rest, TLS 1.3 in transit Measurable ✓ Access Control Role-based; records only to treating doctor Task Completion New receptionist books appt. in under 3 min Measurable ✓ Accessibility WCAG 2.1 AA for all patient-facing screens
ثلاث فئات أساسية من المتطلبات غير الوظيفية — الأداء والأمان وسهولة الاستخدام — مع أمثلة قابلة للقياس من نظام حجز العيادات.

الأخطاء الشائعة عند تحديد المتطلبات

حتى المحللون ذوو الخبرة يقعون في هذه الأخطاء:

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

تطبيق متكامل: مثال المتجر الإلكتروني

فيما يلي عرض جنباً إلى جنب باستخدام متجر إلكتروني كنظام مرجعي، يوضح كيف يعمل النوعان معاً:

  • وظيفي: يجب أن يتمكن المستخدم المسجل من إضافة منتجات إلى سلة التسوق والمتابعة إلى الدفع.
    المتطلب غير الوظيفي المرافق: يجب أن تُكتمل عملية تحديث سلة التسوق في أقل من 500 مللي ثانية لـ 99% من الطلبات.
  • وظيفي: يجب أن يرسل النظام بريداً إلكترونياً لتأكيد الطلب بعد الدفع الناجح.
    المتطلب غير الوظيفي المرافق: يجب تسليم رسائل التأكيد خلال دقيقتين من الشراء في 99.5% من الحالات.
  • وظيفي: يجب أن يتمكن المسؤول من تطبيق رمز خصم على طلب.
    المتطلب غير الوظيفي المرافق: يجب أن يقتصر تطبيق رمز الخصم على المستخدمين الذين لديهم دور ADMIN أو SUPPORT (أمان)، ولا يزيد وقت إتمام الدفع بأكثر من 200 مللي ثانية (أداء).

لاحظ كيف تكتسب كل عبارة وظيفية عمقاً وقابلية للتحقق عند اقترانها بمتطلباتها غير الوظيفية المرافقة. هذا الانضباط في الاقتران هو سمة الممارسات الناضجة في المتطلبات وسيصبح طبيعياً بالنسبة لك مع تقدمك في هذا البرنامج التعليمي.