6.2مشكلات متكررة (دليل الحلول)
الأساسي في 30 ثانية
- التسمية: تُعالَج الحادثة أفضل بعَرَض دقيق («الحقل يبقى فارغًا») من انطباع («لا يعمل»).
- البحث عن السبب: ربط، استعلام، حقوق، تبعيات، معاملة — قد يأتي الإزعاج نفسه من عدة طبقات.
- الإصلاح من الجذر: الإجراء المستهدَف يمنع عودة العَرَض الأسبوع القادم في شكل آخر.
خط ياسين — دفتر الحوادث
يدير ياسين دفتر حوادث لتطبيق التجارة. كل مدخل يسجّل العَرَض الذي يراه المستخدم، والسبب المحتمل، والإجراء الذي حلّ المشكلة. على مرّ الأشهر تعود العائلات نفسها: حقول سيئة الربط، استعلامات واسعة جدًا، حقوق مطبَّقة خطأ، تبعيات منسية عند النشر وتحديثات محفوفة بالمخاطر.
الانعكاس: سمِّ العَرَض، تحقّق من السبب، طبّق الإجراء المستهدَف — وحدِّد الأساس الناقص وراء عَرَض يتكرر.
حادثة، عَرَض واحد
الخطأ الأول هو الإصلاح عشوائيًا. نبدأ بإعادة إنتاج الحادثة ووصفها بدقة: أي شاشة، أي حقل، أي مستخدم، أي بيانات. العَرَض الواضح يقسّم بالفعل زمن التشخيص.
من العَرَض إلى السبب
قد يأتي الإزعاج نفسه من ربط الحقول، أو استعلام سيئ الترشيح، أو حق معدّ خطأ، أو تبعية غائبة. نصعد الطبقات واحدة واحدة: البيانات، الشيفرة، الواجهة، البيئة.
الإصلاح دون رجوع
الإصلاح الدائم يرافقه اختبار عدم تراجع، وعند الحاجة ملاحظة في الدفتر. إصلاح عَرَض دون السبب ضمان لعودته بشكل آخر.
| العَرَض | الأسباب المحتملة | الإجراءات |
|---|---|---|
| حقل لا يعرض قيمة البند المتوقّع | ربط حقل/بند غير صحيح أو حقل غير معيَّن | التحقق من الربط في النافذة والتصفح؛ فحص HAjoute وHModifie وHEnDehors (N1.4) |
| التطبيق يتوقف عند الفتح لدى العميل | تبعيات مفقودة (dll، إطار عمل، برامج تشغيل) | التسليم بمثبّت كامل، التحقق من المتطلبات والاختبار على جهاز نظيف (N4.4) |
| استعلام يصبح بطيئًا جدًا في الإنتاج | ترشيح في WLangage بدل القاعدة، بنود غير مفهرسة | الترشيح في SQL (WHERE)، فهرسة البنود المفلترة والمربوطة، تحديد الاستعلام (N2.2) |
| مستخدمان يطمسان بيانات الآخر | قاعدة Classic مشتركة أو غياب المعاملة | الانتقال إلى Client/Serveur، تأطير الكتابات بمعاملات وإدارة التعارضات (N4.1) |
| التحديث التلقائي يفقد أو يطمس بيانات | تحويل بنية غير مختبر، غياب النسخة الاحتياطية | النسخ الاحتياطي، اختبار التحويل على نسخة تمثيلية وتخطيط رجوع (N4.4) |
| حق مستخدم لا يُطبَّق | مجموعة معدّة خطأ، تحقق على مستوى الشاشة فقط | تحديد المجموعات حسب الدور، التحقق من جهة الخادم والواجهة، الاختبار بملفات تعريف حقيقية (N4.2) |
سكربت جاهز للقول — توصيف حادثة (30 ث)
«هل يمكنكم إخباري على أي شاشة وأي حقل وأي مستخدم تظهر المشكلة، وبأي بيانات؟ أعيد الإنتاج، أتحقق من السبب وأصلح من الجذر.»
احتفظ به لتأطير حادثة مع مستخدم مستعجل.
سكربت جاهز للقول — الإعلان عن إصلاح (30 ث)
«حدّدت السبب: [ربط / استعلام / حق / تبعية]. أصلح، أعيد اختبار المسار الكامل وأسلّم النسخة مع نسخة احتياطية مسبقة.»
مفيد للطمأنة دون وعود عشوائية.
نموذج للنسخ واللصق — بطاقة حادثة
العَرَض: [شاشة / حقل / رسالة]
المستخدم: [ملف تعريف] البيانات: [المجموعة المعنية]
أُعيد إنتاجه: نعم/لا
الطبقة: البيانات / الشيفرة / الواجهة / البيئة
السبب المحتمل: [...]
الإجراء المطبَّق: [...]
اختبار عدم التراجع: نعم/لا
النسخة المسلَّمة: [x.y]
نموذج للنسخ واللصق — استعلام محدود ومفهرس
// الترشيح في جهة القاعدة، وتحديد النتيجة
MaRequete est une req
MaRequete = SQLExec("SELECT * FROM Commandes WHERE DateCmd = {ParamDate} LIMIT 100")
// التحقق من الفهرس على DateCmd في التحليل
// عدم جلب الملف كله ثم الفرز بـWLangage
الشركات الصغيرة جدًا / ميزانية محدودة
الاحتفاظ بدفتر حوادث بسيط (تاريخ، عَرَض، سبب، إجراء): ذاكرة الفريق أفضل من أداة ثقيلة لا تُملأ أبدًا.
شركة صغيرة متوسطة في وهران
التكييف مع الواقع المحلي: محطات قديمة، اتصالات غير مستقرة، تدخلات سريعة عند المنضدة وشرح بالفرنسية المبسطة.
عن بُعد / متعدد المواقع
مركزة السجلات وتوثيق كل إصلاح كي يفهم الزميل البعيد دون إعادة الاتصال بالمستخدم.
بين الثقافات
وصف العَرَض دون مصطلحات مهنية قبل النقل: رسالة واضحة أفضل من رقم خطأ غير مفهوم.
تحدٍّ 48 ساعة — طبّقه غدًا
خذ حادثة حقيقية وطبّق البطاقة: عَرَض موصوف، طبقة محددة، سبب متحقَّق منه، إجراء مطبَّق واختبار عدم تراجع.
- أعرف توصيف عَرَض، وتحديد الطبقة وتطبيق إصلاح مستهدَف.
- لديّ بطاقة حادثة قابلة لإعادة الاستخدام وانعكاس عدم تراجع.
- أنجزت تحدّي 48 ساعة أو جدولت موعده.
استعلام في التطبيق يصبح بطيئًا جدًا في الإنتاج. ما الإجراء الأول؟
الانعكاس: سمِّ العَرَض، تحقّق من السبب، طبّق الإجراء المستهدَف — وحدِّد الأساس الناقص وراء عَرَض يتكرر.