يكتشف المطورون نوعًا جديدًا من أخطاء البرمجيات: أخطاء صامتة تقدم معلومات خاطئة دون أن تتسبب في تعطل الأنظمة. تعني هذه المشكلات الخفية أن الأنظمة يمكن أن تُبلغ عن نجاحها بثقة بينما هي معطلة أساسًا، مما يجعل اكتشافها صعبًا للغاية.
أحيانًا، قد تكون البرمجيات معطلة دون أن يدرك أحد ذلك. لا نتحدث هنا عن الأعطال أو رسائل الخطأ التي تظهر فجأة؛ بل عن أنظمة تعرض معلومات خاطئة بثقة تامة، مما يجعلك تعتقد أن كل شيء على ما يرام بينما هو ليس كذلك. ماذا يعني هذا بالنسبة لك؟ هذا يعني أن الأرقام التي تراها، أو الحالات المُبلغ عنها، أو حتى ما هو متاح في قائمة معينة، قد تكون خاطئة تمامًا، ولا أحد يعلم لأن النظام لم يشير إليها كمشكلة.
في الآونة الأخيرة، واجه المطورون هذه المشكلة بالذات في مشاريع متعددة. لقد وجدوا العديد من الحالات التي أكدت فيها البرمجيات أن شيئًا ما صحيح، لكن لا يوجد ما يتحقق من ذلك فعليًا. كان التأكيد ببساطة خاطئًا. على سبيل المثال، زعم نظام امتثال أنه يفي بقواعد خصوصية البيانات بناءً على أدلة غير موجودة. وعرضت شاشة مطبخ بشكل غير صحيح عدم وجود طلبات للطهي، حتى مع انتظار العملاء الذين دفعوا. وعرضت لوحة تحكم بفخر معدل نجاح بنسبة 97.8% فوق قائمة تضم ثلاثة عشر عملية فاشلة مباشرة. حتى خدمة ويب كان من المفترض أن تقدم أحدث التنسيقات (CSS) كانت تقدم محتوى قديمًا عن طريق الخطأ.
الجزء المخيف؟ لم تتسبب أي من هذه الأخطاء في تعطل النظام أو إظهار رسالة خطأ. العطل يعطي المطورين رسالة واضحة حول الخطأ الذي حدث ومكان البحث عنه. ولكن عندما يبلغ النظام معلومات غير صحيحة بثقة دون أن يتعطل، فإنه لا يخبرك بشيء. ويستمر في تضليلك حتى يقوم شخص ما بالتحقق يدويًا ويكتشف التناقض.
أحد الأمثلة الصارخة شمل التحكم في خصوصية البيانات. أبلغ النظام أن البيانات الحساسة تُعالج بشكل صحيح، مستشهدًا بضمانين: أعمدة مشفرة وميزة خاصة لإخفاء البيانات الشخصية في سجلات التدقيق. بينما كان التشفير صحيحًا، فإن ميزة إخفاء البيانات الشخصية، أو 'السمة' (trait) كما تُسمى في البرمجة، لم تُطبق فعليًا على أي جزء من نموذج بيانات المستخدم. كان التحكم أخضر دائمًا، بناءً على ميزة موجودة بالاسم ولكن ليست في الممارسة.
لم تُنسَ هذه المشكلة فقط. كان تطبيق هذه الميزة مباشرة على نموذج المستخدم الرئيسي يسبب تضاربًا مع مكون آخر أساسي. بعبارة تقنية، حاولت سمتان برمجيتان الإعلان عن دالة بنفس الاسم، وهو خطأ فادح في لغة PHP ما لم يتم تحديد أيهما يجب استخدامه بشكل صريح. هذا يعني أن النظام لا يمكن تجميعه حتى بدون حل محدد لم يكن مطبقًا على الجزء الأكثر أهمية في التطبيق. لذا، لفترة طويلة، بدا النظام متوافقًا على الورق، ولكن في الواقع، لم يكن إجراء حماية البيانات الحاسم نشطًا حيثما كان الأمر أكثر أهمية. وهذا يسلط الضوء على سبب كون التحقق الشامل، وليس مجرد التأكيدات الواثقة، ضروريًا للغاية.
في الآونة الأخيرة، واجه المطورون هذه المشكلة بالذات في مشاريع متعددة. لقد وجدوا العديد من الحالات التي أكدت فيها البرمجيات أن شيئًا ما صحيح، لكن لا يوجد ما يتحقق من ذلك فعليًا. كان التأكيد ببساطة خاطئًا. على سبيل المثال، زعم نظام امتثال أنه يفي بقواعد خصوصية البيانات بناءً على أدلة غير موجودة. وعرضت شاشة مطبخ بشكل غير صحيح عدم وجود طلبات للطهي، حتى مع انتظار العملاء الذين دفعوا. وعرضت لوحة تحكم بفخر معدل نجاح بنسبة 97.8% فوق قائمة تضم ثلاثة عشر عملية فاشلة مباشرة. حتى خدمة ويب كان من المفترض أن تقدم أحدث التنسيقات (CSS) كانت تقدم محتوى قديمًا عن طريق الخطأ.
الجزء المخيف؟ لم تتسبب أي من هذه الأخطاء في تعطل النظام أو إظهار رسالة خطأ. العطل يعطي المطورين رسالة واضحة حول الخطأ الذي حدث ومكان البحث عنه. ولكن عندما يبلغ النظام معلومات غير صحيحة بثقة دون أن يتعطل، فإنه لا يخبرك بشيء. ويستمر في تضليلك حتى يقوم شخص ما بالتحقق يدويًا ويكتشف التناقض.
أحد الأمثلة الصارخة شمل التحكم في خصوصية البيانات. أبلغ النظام أن البيانات الحساسة تُعالج بشكل صحيح، مستشهدًا بضمانين: أعمدة مشفرة وميزة خاصة لإخفاء البيانات الشخصية في سجلات التدقيق. بينما كان التشفير صحيحًا، فإن ميزة إخفاء البيانات الشخصية، أو 'السمة' (trait) كما تُسمى في البرمجة، لم تُطبق فعليًا على أي جزء من نموذج بيانات المستخدم. كان التحكم أخضر دائمًا، بناءً على ميزة موجودة بالاسم ولكن ليست في الممارسة.
لم تُنسَ هذه المشكلة فقط. كان تطبيق هذه الميزة مباشرة على نموذج المستخدم الرئيسي يسبب تضاربًا مع مكون آخر أساسي. بعبارة تقنية، حاولت سمتان برمجيتان الإعلان عن دالة بنفس الاسم، وهو خطأ فادح في لغة PHP ما لم يتم تحديد أيهما يجب استخدامه بشكل صريح. هذا يعني أن النظام لا يمكن تجميعه حتى بدون حل محدد لم يكن مطبقًا على الجزء الأكثر أهمية في التطبيق. لذا، لفترة طويلة، بدا النظام متوافقًا على الورق، ولكن في الواقع، لم يكن إجراء حماية البيانات الحاسم نشطًا حيثما كان الأمر أكثر أهمية. وهذا يسلط الضوء على سبب كون التحقق الشامل، وليس مجرد التأكيدات الواثقة، ضروريًا للغاية.