ما هي المتطلبات غير الوظيفية في هندسة البرمجيات؟
⚡ ملخص ذكي
تحدد المتطلبات غير الوظيفية سمات الجودة مثل الأداء والأمان وسهولة الاستخدام والموثوقية وقابلية التوسع وقابلية النقل، وتحدد مدى جودة أداء نظام البرمجيات وتحول التوقعات الغامضة إلى أهداف هندسية قابلة للقياس والاختبار والتنفيذ عبر دورة حياة التسليم.
ما هو المتطلب غير الوظيفي؟
A المتطلبات غير الوظيفية تحدد المتطلبات غير الوظيفية (NFR) سمة جودة لنظام برمجي. وتقيّم هذه المتطلبات النظام بناءً على الاستجابة، وسهولة الاستخدام، والأمان، وقابلية النقل، وغيرها من سمات الجودة التي تُعدّ أساسية للنجاح. ومن الأمثلة الشائعة على المتطلبات غير الوظيفية: "ما مدى سرعة تحميل الموقع؟" يؤدي عدم تلبية المتطلبات غير الوظيفية إلى أنظمة تُسبب إحباط المستخدمين.
تفرض المتطلبات غير الوظيفية في هندسة البرمجيات قيودًا على تصميم النظام عبر قائمة مهام التطوير الرشيقة. على سبيل المثال، يجب تحميل الموقع في غضون ثلاث ثوانٍ عندما يتجاوز عدد المستخدمين المتزامنين 10,000 مستخدم. يُعدّ وصف المتطلبات غير الوظيفية بنفس أهمية تحديد المتطلبات الوظيفية.
أنواع المتطلبات غير الوظيفية
الفئات الرئيسية للمتطلبات غير الوظيفية هي:
أنواع المتطلبات غير الوظيفية
- قابليتها للاستخدام
- للخدمة
- الإدارة
- الاسترداد
- الأمن والحماية
- البيانات Integrity
- السعة
- التوفر
- التوسعة
- التوافقية
- الموثوقية
- قابلية الصيانة
- التدقيق المطلوب
- القيود البيئية
أمثلة على المتطلبات غير الوظيفية
فيما يلي أمثلة عملية على المتطلبات غير الوظيفية:
- يجب على المستخدمين تغيير كلمة المرور الأولية بعد تسجيل الدخول الناجح الأول، ويجب عدم إعادة استخدام كلمة المرور الأولية مطلقًا.
- لا يُسمح للموظفين بتحديث معلومات رواتبهم الخاصة، ويجب الإبلاغ عن أي محاولة من هذا القبيل إلى مسؤول الأمن.
- يتم تسجيل كل محاولة فاشلة يقوم بها المستخدم للوصول إلى عنصر بيانات في سجل التدقيق.
- يجب أن يدعم الموقع الإلكتروني 20 مليون مستخدم متزامن دون التأثير سلبًا على أوقات الاستجابة.
- يجب أن يكون البرنامج قابلاً للنقل بحيث لا يسبب الانتقال من نظام تشغيل إلى آخر أي مشاكل.
- يجب أن تكون خصوصية المعلومات، وتصدير التقنيات المقيدة، وحقوق الملكية الفكرية قابلة للتدقيق.
المتطلبات الوظيفية مقابل المتطلبات غير الوظيفية
تتمثل الاختلافات الرئيسية بين المتطلبات الوظيفية وغير الوظيفية فيما يلي:
| المعاملات | متطلبات وظيفية | المتطلبات غير الوظيفية |
|---|---|---|
| معلوملت إضافية | الفعل | السمات |
| متطلبات | وهو إلزامي | إنها غير إلزامية |
| نوع الالتقاط | يتم التقاطه في حالة الاستخدام. | يتم التقاطها باعتبارها سمة الجودة. |
| النتيجة النهائية | ميزة المنتج | خصائص المنتج |
| اسر | من السهل التقاطها | من الصعب التقاطها |
| الهدف | يساعدك على التحقق من وظائف البرنامج. | يساعدك على التحقق من أداء البرنامج. |
| مجال التركيز | التركيز على متطلبات المستخدم | يركز على توقعات المستخدم. |
| توثيق | وصف ما يفعله المنتج | يصف كيفية عمل المنتج |
| نوع الاختبار | الاختبار الوظيفي مثل اختبار النظام، والتكامل، والاختبار الشامل، واختبار واجهة برمجة التطبيقات، وما إلى ذلك. | الاختبارات غير الوظيفية مثل الأداء والإجهاد وسهولة الاستخدام واختبار الأمان وما إلى ذلك. |
| تنفيذ اختبار | يتم تنفيذ الاختبار قبل الاختبار غير الوظيفي. | بعد الاختبار الوظيفي |
| معلومات المنتج | ميزات المنتج | خصائص المنتج |
مزايا المتطلبات غير الوظيفية
الفوائد الرئيسية لل اختبار غير وظيفي هي:
- تضمن المتطلبات غير الوظيفية أن يلتزم النظام بالقواعد القانونية وقواعد الامتثال.
- فهي تحمي موثوقية النظام وتوافره وأدائه.
- إنها توفر تجربة مستخدم جيدة وسهولة في التشغيل.
- إنهم يشكلون سياسة أمان البرنامج.
عيوب المتطلبات غير الوظيفية
من عيوب المتطلبات غير الوظيفية الشائعة ما يلي:
- قد تؤثر المتطلبات غير الوظيفية على العديد من الأنظمة الفرعية للبرمجيات عالية المستوى.
- إنها تتطلب عناية خاصة أثناء الهندسة المعمارية والتصميم عالي المستوى، مما يزيد التكلفة.
- نادراً ما يرتبط التنفيذ بنظام فرعي واحد من البرامج.
- يصعب تعديلها بمجرد اكتمال مرحلة التصميم المعماري.
نموذج FURPS+ لتصنيف المتطلبات غير الوظيفية
يُعدّ FURPS+ التصنيف الأكثر استخدامًا للمتطلبات غير الوظيفية. طُوّر هذا التصنيف في الأصل في شركة هيوليت-باكارد، وهو يُصنّف سمات الجودة إلى خمس فئات رئيسية بالإضافة إلى قيود إضافية مُشار إليها بعلامة "+". يُساعد هذا النموذج محللي الأعمال على تجنّب إغفال أي فئة كاملة من المتطلبات.
- وظائف: قدرات وأمان وإمكانية إعادة استخدام تتجاوز قائمة الميزات الأساسية.
- سهولة الاستخدام: العوامل البشرية، والجماليات، والاتساق، والتوثيق، واستجابة تجربة المستخدم.
- الموثوقية: التوافر، ومتوسط الوقت بين الأعطال، وإمكانية الاسترداد، وإمكانية التنبؤ، والدقة.
- الأداء: السرعة، والإنتاجية، والسعة، وقابلية التوسع، واستهلاك الموارد تحت الضغط.
- الدعم: قابلية الاختبار، والمرونة، وسهولة التركيب، وقابلية التوطين، وسهولة صيانة النظام المُسلّم.
- زائد (+): التصميم والتنفيذ والواجهة والقيود المادية مثل المنصات أو المعايير أو الأجهزة المطلوبة.
الفرق التي تقوم بربط كل متطلب غير وظيفي بفئة FURPS+ تكون أقل عرضة لإطلاق نظام يلبي الميزات ولكنه يفشل في الأداء أو الأمان أو قابلية الصيانة.
كيفية كتابة متطلبات غير وظيفية قابلة للاختبار
المتطلبات غير الوظيفية المكتوبة جيدًا قابلة للقياس والتحقق ومحددة زمنيًا. أما العبارات المبهمة مثل "يجب أن يكون النظام سريعًا" أو "يجب أن يكون التطبيق آمنًا" فهي مجرد تطلعات وليست متطلبات. اتبع الخطوات التالية لتحويل النية إلى متطلبات غير وظيفية قابلة للاختبار.
- حدد سمة الجودة. قم بتصنيف المشكلة ضمن فئة FURPS+ حتى يعرف الفريق ما إذا كانت متطلباً يتعلق بالأداء أو سهولة الاستخدام أو الأمان أو الموثوقية.
- اختر مقياسًا. يحتاج كل NFR إلى وحدة قياس - ميلي ثانية، أو طلبات في الثانية، أو مستخدمين متزامنين، أو نسبة وقت التشغيل، أو معيار امتثال مثل ISO 27001.
- حدد عتبة رقمية. استبدل كلمة "سريع" بـ "أقل من 400 مللي ثانية عند النسبة المئوية 95". واستبدل عبارة "متوفر بدرجة عالية" بـ "وقت تشغيل شهري بنسبة 99.9%".
- صف الحالة. حدد الحمل أو البيئة أو شريحة المستخدمين التي ينطبق عليها الحد، مثل "أثناء ذروة المبيعات مع 10,000 مستخدم متزامن".
- حدد طريقة التحقق. لاحظ نوع الاختبار - اختبار التحميل، اختبار الاختراق، تجربة الفوضى، تدقيق إمكانية الوصول - والأداة التي ستؤكد العتبة.
- قم بتطبيق فحص SMART. تأكد من أن المتطلبات محددة وقابلة للقياس وقابلة للتحقيق وذات صلة ومحددة زمنياً قبل إدخالها في قائمة المهام المتراكمة.
مثال لإعادة الصياغة: تصبح عبارة "يجب أن يكون النظام سريعًا" كالتالي: "يجب أن تستجيب صفحة الدفع في أقل من 500 مللي ثانية عند النسبة المئوية 95 مع 5,000 مستخدم متزامن، تم التحقق من ذلك بواسطة JMeter "اختبر كل إصدار على حدة." يسمح البيان المعدل للمطورين بتصميمه، وللمختبرين بالتحقق منه، ولمالكي المنتج بقبوله دون جدال.


