دورة التسليم
هذا هو المعيار الذي نلتزم به، وليس وصفًا لما يحدث اليوم. حين تتعارض الحقيقة مع هذه الصفحة، فالحقيقة هي الخطأ الذي نُصلحه. هذه الصفحة تقول ما هو مطلوب، لا ما هو مضبوط فعلًا اليوم — انظر أي صفحة تكسب للفرق، ولماذا تقول صفحة في قسم Azure DevOps العكس.
هذه الصفحة تملك حلقة الـ build: الإيقاع، وحالات الـ board، والبوابتين اللتين تحيطان بها. أمّا المشروع من أوله إلى آخره — الـ lead والـ discovery والـ SOW والـ go-live والـ warranty والإغلاق — فانظر الصورة الكاملة (SDLC).
الإيقاع: Scrumban
Section titled “الإيقاع: Scrumban”الـ Scrum الصِرف لا ينجح في شركة خدمات لأن مختصّينا مُوزَّعون على أكثر من مشروع في آنٍ واحد — لا يمكن حجز شخص بالكامل لـ sprint مشروع واحد. والـ Kanban الصِرف لا يمنح العميل إيقاعًا. لذلك نعمل بـ cadence ثابت مدّته أسبوعان (المراسم التي يشعر بها العميل) فوق flow board بحدود WIP (العمل اليومي).
flowchart LR
subgraph Cadence["Fixed 2-week cadence — per project"]
P["Planning<br/>pull from backlog"] --> Demo["Client demo"] --> Retro["Retro"]
end
subgraph Flow["Flow board — WIP-limited, daily"]
Ready["Ready<br/>DoR met"] --> InDev["In Dev"] --> CR["Code Review"] --> QAcol["QA"] --> UATcol["UAT"] --> Done["Done<br/>DoD met"]
end
P -.pulls into.-> Ready
Done -.feeds.-> Demo
القواعد الأساسية:
- حدود WIP لكل عمود — والقيم تعيش في اللوحات وعناصر العمل لا هنا. هذا أهمّ علاج لمشكلة «كل شيء بدأ ولا شيء اكتمل».
- إيقاع واحد مدّته أسبوعان لكل المشاريع حتى يقع الـ planning والـ demo والـ retro على نبضة متوقّعة.
- الأخطاء (bugs) والدعم يتدفّقان باستمرار عبر مسار expedite — لا ينتظران حدود الـ
sprint. - الـ
Definition of Readyيحكم الدخول إلى الـ board، والـDefinition of Doneيحكم الوصول إلى “Done”. كلاهما مكتوب على عمود اللوحة كـ Definition of Done — مرئي للجميع، لكن اللوحة لا تمنعك. انظر اللوحات وعناصر العمل.
حالات الـ board مقابل العمل
Section titled “حالات الـ board مقابل العمل”stateDiagram-v2 [*] --> Ready: DoR met Ready --> InDev: pulled (within WIP limit) InDev --> CodeReview: PR opened CodeReview --> QA: approved + merged QA --> UAT: passed UAT --> Done: client sign-off (DoD met) QA --> InDev: failed UAT --> InDev: change requested Done --> [*]
Definition of Ready (شرط الدخول إلى الـ board)
Section titled “Definition of Ready (شرط الدخول إلى الـ board)”تكون الـ story جاهزة فقط عندما تتحقّق كل النقاط:
- بيان واضح للمشكلة — حاجة المستخدم لا الحل.
- معايير قبول (acceptance criteria) مكتوبة وقابلة للاختبار.
- النطاق صغير بما يكفي لإنهائه داخل cadence واحد.
- تحديد الـ dependencies والتصاميم (API contract، الشاشات).
- لا يوجد سؤال معلّق يوقف العمل.
- بيان أثر الأداء — لأي تغيير على مسار يُنفَّذ مع كل request، أو حلقة تدور على I/O، أو مهمة خلفية، تذكر الـ story عدد الاستعلامات والنداءات الخارجية لكل تشغيل، قبل التغيير وبعده.
Definition of Done (اكتمال الـ story فعليًا)
Section titled “Definition of Done (اكتمال الـ story فعليًا)”- الكود مدموج عبر
PR(الـ build validation أخضر، وتمّت المراجعة). - اختبارات مكتوبة وناجحة في نفس الـ
PR، وتحقّقت بوابة الـ diff coverage على الأسطر المتغيّرة. - اجتاز الـ QA مقابل معايير القبول.
- عُرِض على العميل وقُبِل (أو الـ PM نيابةً عنه).
- لا regression معروف، وتحديث التوثيق و
AGENTS.mdإذا تغيّر السلوك.