طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 245 · ضمان جودة تطبيقات الويب
الدرس 11 · الوحدة 6: تحليل وتقييم النتائج

شدّة العيب وأولويته

مئة عيبٍ ووقتٌ محدود؛ بأيّ ترتيبٍ نُصلح، وكيف نقرّر؟ ⏱ نحو 35 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تفرّق بين الشدّة والأولوية.
  • تدرك أن الأثر على العمل قد يرفع الأولوية.
  • تحوّل الحكم إلى قرار بمصفوفة.
  • ترتّب الإصلاح حسب الأثر لا الاكتشاف.

١ليست كل العيوب سواء

مئة عيبٍ في قائمتك، ووقتٌ محدود. أيّها أوّلًا؟ هنا نفرّق بين بُعدين كثيرًا ما يُخلطان:

الشدّة Severityالأولوية Priority
تقيسحجم الضرر التقنيّعجلة الإصلاح للعمل
يقرّرهاالمُختبِر/التقنيّمدير المنتج/العمل
مثال عالٍانهيار الخادمخطأٌ إملائيّ في الشعار

المفتاح: عيبٌ قد يكون عالي الشدّة منخفض الأولوية (انهيارٌ في ميزةٍ لا يستخدمها أحد)، أو منخفض الشدّة عالي الأولوية (خطأٌ إملائيّ في اسم الشركة على الصفحة الرئيسية — بسيطٌ تقنيًّا لكنه محرج فيُصلَح فورًا).

٢مصفوفة القرار

نرتّب الإصلاح بدمج الشدّة مع تكرار الحدوث والأثر على العمل. مصفوفةٌ بسيطة تحوّل الحكم إلى قرار:

main.py
def priority(severity, blocks_purchase):    "severity: 1=بسيط .. 4=حرج | blocks_purchase: هل يمنع الشراء؟"    if severity >= 4 or blocks_purchase:        return "P1 — فورًا"    if severity == 3:        return "P2 — هذا الأسبوع"    if severity == 2:        return "P3 — لاحقًا"    return "P4 — عند التفرّغ" print(priority(4, False))     # حرج ولو لا يمنع الشراءprint(priority(1, True))      # بسيط لكنه يمنع الشراء ← عاجلprint(priority(2, False))
Shell×
>>> %Run main.py
P1 — فورًا
P1 — فورًا
P3 — لاحقًا
>>>

لاحظ السطر الثاني: عيبٌ بسيط الشدّة لكنه يمنع الشراء صار P1. الأثر على العمل يرفع الأولوية ولو كانت الشدّة التقنية منخفضة.

٣من الفرز إلى العمل

هذا جزءٌ من «تحليل وتقييم النتائج»: لا نكتفي بعدّ العيوب، بل نرتّبها حتى يذهب الوقت المحدود إلى الأهمّ أثرًا.

توقّع وتحقّق

الشدّة تقيس:

الأولوية تقيس:

خطأ إملائيّ في اسم الشركة بالصفحة الرئيسية:

نُصلح أوّلًا ما:

الخلاصة

تحدٍّ برمجي: رتّب العيوب

متوسط

أكمل priority: تعيد "P1" إن كانت الشدّة ≥ 4 أو العيب يمنع الشراء، و"P2" إن كانت الشدّة 3، و"P3" لغير ذلك. اطبع أولوية ثلاث حالات.

المطلوب:
  • طبّق القاعدة أعلاه.
  • اطبع أولوية (2, True) و(3, False) و(1, False).

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

main.py
def priority(severity, blocks_purchase):    # P1 إن severity>=4 أو blocks_purchase، P2 إن severity==3، وإلا P3    passprint(priority(2, True))print(priority(3, False))print(priority(1, False))
المطلوب×
P1
P2
P3
💡 تلميح 1
ابدأ بالشرط الأعلى: severity>=4 or blocks_purchase → "P1".
💡 تلميح 2
ثم severity==3 → "P2"، وإلا "P3".

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

main.py
def priority(severity, blocks_purchase):    if severity >= 4 or blocks_purchase:        return "P1"    if severity == 3:        return "P2"    return "P3"print(priority(2, True))print(priority(3, False))print(priority(1, False))
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

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