ما هي المتطلبات غير الوظيفية في هندسة البرمجيات؟

⚡ ملخص ذكي

تحدد المتطلبات غير الوظيفية سمات الجودة مثل الأداء والأمان وسهولة الاستخدام والموثوقية وقابلية التوسع وقابلية النقل، وتحدد مدى جودة أداء نظام البرمجيات وتحول التوقعات الغامضة إلى أهداف هندسية قابلة للقياس والاختبار والتنفيذ عبر دورة حياة التسليم.

  • 📘 فريف: يصف المتطلب غير الوظيفي، أو NFR، مدى جودة أداء النظام من حيث الأداء والأمان وسهولة الاستخدام والموثوقية وقابلية النقل.
  • 🗂️ الأنواع الشائعة: سهولة الاستخدام، والأمان، والموثوقية، وقابلية التوسع، والسعة، والتوافر، وسهولة الصيانة، والامتثال التنظيمي هي الفئات التي تصنفها الفرق track في أغلب الأحيان.
  • 📊 نموذج FURPS+: يقوم نظام FURPS+ بتصنيف المتطلبات غير الوظيفية إلى وظائف، وسهولة الاستخدام، والموثوقية، والأداء، وقابلية الدعم، وقيود التصميم أو الواجهة.
  • 🎯 عبارات قابلة للاختبار: استبدل كلمتي "سريع" أو "آمن" بعتبات رقمية وطرق تحقق حتى يمكن اختبار NFR وقبوله.
  • ؟؟؟؟ التباين الوظيفي: تحدد المتطلبات الوظيفية ما يفعله النظام؛ أما المتطلبات غير الوظيفية فتحدد مدى جودة أدائه في ظل الظروف الحقيقية.
  • تأثير الأعمال: إن فقدان المتطلبات غير الوظيفية هو السبب الرئيسي لحوادث الإنتاج، والنتائج التنظيمية، وإعادة العمل المكلفة في المراحل المتأخرة من تصميم البنية.

المتطلبات غير الوظيفية في هندسة البرمجيات

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

A المتطلبات غير الوظيفية تحدد المتطلبات غير الوظيفية (NFR) سمة جودة لنظام برمجي. وتقيّم هذه المتطلبات النظام بناءً على الاستجابة، وسهولة الاستخدام، والأمان، وقابلية النقل، وغيرها من سمات الجودة التي تُعدّ أساسية للنجاح. ومن الأمثلة الشائعة على المتطلبات غير الوظيفية: "ما مدى سرعة تحميل الموقع؟" يؤدي عدم تلبية المتطلبات غير الوظيفية إلى أنظمة تُسبب إحباط المستخدمين.

تفرض المتطلبات غير الوظيفية في هندسة البرمجيات قيودًا على تصميم النظام عبر قائمة مهام التطوير الرشيقة. على سبيل المثال، يجب تحميل الموقع في غضون ثلاث ثوانٍ عندما يتجاوز عدد المستخدمين المتزامنين 10,000 مستخدم. يُعدّ وصف المتطلبات غير الوظيفية بنفس أهمية تحديد المتطلبات الوظيفية.

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

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

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

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

  • قابليتها للاستخدام
  • للخدمة
  • الإدارة
  • الاسترداد
  • الأمن والحماية
  • البيانات Integrity
  • السعة
  • التوفر
  • التوسعة
  • التوافقية
  • الموثوقية
  • قابلية الصيانة
  • التدقيق المطلوب
  • القيود البيئية

أمثلة على المتطلبات غير الوظيفية

فيما يلي أمثلة عملية على المتطلبات غير الوظيفية:

  1. يجب على المستخدمين تغيير كلمة المرور الأولية بعد تسجيل الدخول الناجح الأول، ويجب عدم إعادة استخدام كلمة المرور الأولية مطلقًا.
  2. لا يُسمح للموظفين بتحديث معلومات رواتبهم الخاصة، ويجب الإبلاغ عن أي محاولة من هذا القبيل إلى مسؤول الأمن.
  3. يتم تسجيل كل محاولة فاشلة يقوم بها المستخدم للوصول إلى عنصر بيانات في سجل التدقيق.
  4. يجب أن يدعم الموقع الإلكتروني 20 مليون مستخدم متزامن دون التأثير سلبًا على أوقات الاستجابة.
  5. يجب أن يكون البرنامج قابلاً للنقل بحيث لا يسبب الانتقال من نظام تشغيل إلى آخر أي مشاكل.
  6. يجب أن تكون خصوصية المعلومات، وتصدير التقنيات المقيدة، وحقوق الملكية الفكرية قابلة للتدقيق.

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

تتمثل الاختلافات الرئيسية بين المتطلبات الوظيفية وغير الوظيفية فيما يلي:

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

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

الفوائد الرئيسية لل اختبار غير وظيفي هي:

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

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

من عيوب المتطلبات غير الوظيفية الشائعة ما يلي:

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

نموذج FURPS+ لتصنيف المتطلبات غير الوظيفية

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

  • وظائف: قدرات وأمان وإمكانية إعادة استخدام تتجاوز قائمة الميزات الأساسية.
  • سهولة الاستخدام: العوامل البشرية، والجماليات، والاتساق، والتوثيق، واستجابة تجربة المستخدم.
  • الموثوقية: التوافر، ومتوسط ​​الوقت بين الأعطال، وإمكانية الاسترداد، وإمكانية التنبؤ، والدقة.
  • الأداء: السرعة، والإنتاجية، والسعة، وقابلية التوسع، واستهلاك الموارد تحت الضغط.
  • الدعم: قابلية الاختبار، والمرونة، وسهولة التركيب، وقابلية التوطين، وسهولة صيانة النظام المُسلّم.
  • زائد (+): التصميم والتنفيذ والواجهة والقيود المادية مثل المنصات أو المعايير أو الأجهزة المطلوبة.

الفرق التي تقوم بربط كل متطلب غير وظيفي بفئة FURPS+ تكون أقل عرضة لإطلاق نظام يلبي الميزات ولكنه يفشل في الأداء أو الأمان أو قابلية الصيانة.

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

المتطلبات غير الوظيفية المكتوبة جيدًا قابلة للقياس والتحقق ومحددة زمنيًا. أما العبارات المبهمة مثل "يجب أن يكون النظام سريعًا" أو "يجب أن يكون التطبيق آمنًا" فهي مجرد تطلعات وليست متطلبات. اتبع الخطوات التالية لتحويل النية إلى متطلبات غير وظيفية قابلة للاختبار.

  1. حدد سمة الجودة. قم بتصنيف المشكلة ضمن فئة FURPS+ حتى يعرف الفريق ما إذا كانت متطلباً يتعلق بالأداء أو سهولة الاستخدام أو الأمان أو الموثوقية.
  2. اختر مقياسًا. يحتاج كل NFR إلى وحدة قياس - ميلي ثانية، أو طلبات في الثانية، أو مستخدمين متزامنين، أو نسبة وقت التشغيل، أو معيار امتثال مثل ISO 27001.
  3. حدد عتبة رقمية. استبدل كلمة "سريع" بـ "أقل من 400 مللي ثانية عند النسبة المئوية 95". واستبدل عبارة "متوفر بدرجة عالية" بـ "وقت تشغيل شهري بنسبة 99.9%".
  4. صف الحالة. حدد الحمل أو البيئة أو شريحة المستخدمين التي ينطبق عليها الحد، مثل "أثناء ذروة المبيعات مع 10,000 مستخدم متزامن".
  5. حدد طريقة التحقق. لاحظ نوع الاختبار - اختبار التحميل، اختبار الاختراق، تجربة الفوضى، تدقيق إمكانية الوصول - والأداة التي ستؤكد العتبة.
  6. قم بتطبيق فحص SMART. تأكد من أن المتطلبات محددة وقابلة للقياس وقابلة للتحقيق وذات صلة ومحددة زمنياً قبل إدخالها في قائمة المهام المتراكمة.

مثال لإعادة الصياغة: تصبح عبارة "يجب أن يكون النظام سريعًا" كالتالي: "يجب أن تستجيب صفحة الدفع في أقل من 500 مللي ثانية عند النسبة المئوية 95 مع 5,000 مستخدم متزامن، تم التحقق من ذلك بواسطة JMeter "اختبر كل إصدار على حدة." يسمح البيان المعدل للمطورين بتصميمه، وللمختبرين بالتحقق منه، ولمالكي المنتج بقبوله دون جدال.

الأسئلة الشائعة

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

يقوم كل من Copilot وGPT بتحويل عبارات الجودة المبهمة إلى متطلبات غير وظيفية قابلة للقياس، مع تحديد المقياس والعتبة والشرط وطريقة التحقق. ويراجع محللو الأعمال كل مسودة وفقًا لفئات FURPS+ وإطار عمل SMART قبل إضافتها إلى قائمة المهام المتراكمة.

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

تُهيمن قابلية التوسع، والتوافر، وزمن الاستجابة، والمرونة، وكفاءة التكلفة على متطلبات الأداء غير الوظيفية في الحوسبة السحابية. كما تُهيمن الفرق أيضًا tracمراقبة k، وأهداف التعافي من الكوارث مثل RPO وRTO، والامتثال متعدد المناطق لأنها تقود معظم قرارات بنية السحابة.

اختر مقياسًا بوحدة قياس، وحدد عتبة رقمية، واشرح الشرط الذي ينطبق عليه، وحدد طريقة التحقق. على سبيل المثال، زمن استجابة أقل من 400 مللي ثانية عند النسبة المئوية 95 مع 5,000 مستخدم، تم التحقق منه بواسطة JMeter.

تعد تشفير البيانات المخزنة والمنقولة، وقوة المصادقة، والتفويض القائم على الأدوار، وتسجيل التدقيق، ومهلة الجلسة، والامتثال لمعايير مثل ISO 27001 و PCI DSS و GDPR من متطلبات الأمان غير الوظيفية التي توثقها معظم الفرق.

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

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

تلخيص هذه التدوينة بـ: