تقييم الدرس 27
من المستند إلى التنفيذ: مصفوفة التتبع
أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس
أسئلة التقييم
تقييم الدرس 27: من المستند إلى التنفيذ: مصفوفة التتبع. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) أين يجد المطور «متى أعتبر الميزة منتهية؟»
2) في مخطط المتطلبات، علاقة الاختبار بالمتطلب:
3) متطلب في مصفوفة التتبع بلا كود. حالته:
4) أي مما يلي ليس من تعريف «منجز» في الدرس؟
5) رمز الحالة المحدد في المواصفة للإضافة إلى قائمة الانتظار:
2السؤال الثاني: صح أم خطأ
1) يحق للمطور تغيير السلوك عن المواصفة دون توثيق إن رآه أفضل.
الصواب: خطأ
2) مصفوفة التتبع تساعد على معرفة ما يتأثر بتغيير متطلب.
الصواب: صح
3) كل معيار قبول يمكن تحويله إلى حالة اختبار.
الصواب: صح
4)
Gold Plating إضافة ميزات لم تطلبها المواصفة.الصواب: صح
5) مصفوفة التتبع تُملأ مرة واحدة في بداية المشروع فقط.
الصواب: خطأ
3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة
1) الجدول الذي يربط المتطلبات بالتصميم والكود والاختبار يسمّى مصفوفة .
الإجابة: التتبع
2) في
requirementDiagram، العنصر الذي يحقق المتطلب يرتبط به بـ .الإجابة: satisfies
3) قائمة شروط اعتبار العمل مكتملًا تسمّى تعريف .
الإجابة: منجز
4السؤال الرابع: أسئلة عملية
1) ما الذي يتحقق
verifies من FR-15.1 في المخطط؟2) ما جسم الاستجابة؟ (الدورة سعتها 2، ولا أحد مسجل بعد) POST /api/courses/1/enroll
const express = require('express');const app = express();app.use(express.json()); const tokens = { 'tok-1': 1, 'tok-2': 2, 'tok-3': 3, 'tok-4': 4 };const course = { id: 1, title: 'تصميم الويب', capacity: 2, enrolled: [], waitlist: [] }; function auth(req, res, next) { req.userId = tokens[(req.headers.authorization || '').replace('Bearer ', '')]; if (!req.userId) return res.status(401).json({ error: 'سجّل الدخول' }); next();} app.get('/api/courses/1', (req, res) => { res.json({ enrolled: course.enrolled, waitlist: course.waitlist });}); // FR-02.2 + FR-15.1 + BR-06app.post('/api/courses/1/enroll', auth, (req, res) => { if (course.enrolled.includes(req.userId) || course.waitlist.includes(req.userId)) return res.status(409).json({ error: 'مسجل أو منتظر مسبقًا' }); // BR-06 if (course.enrolled.length >= course.capacity) { // FR-15.1 course.waitlist.push(req.userId); return res.status(202).json({ status: 'waitlisted', position: course.waitlist.length }); } course.enrolled.push(req.userId); res.status(201).json({ status: 'enrolled' });}); // FR-02.5 + FR-15.2app.delete('/api/courses/1/enroll', auth, (req, res) => { course.enrolled = course.enrolled.filter(id => id !== req.userId); let promoted = null; if (course.enrolled.length < course.capacity && course.waitlist.length) { promoted = course.waitlist.shift(); course.enrolled.push(promoted); } res.json({ cancelled: true, promoted });}); app.listen(3000);
الاستجابة الصحيحة:
{"status":"enrolled"}أجب عن الأسئلة ثم اضغط «صحّح ورقتي».