تعفن البرمجيات
تعفن البرمجيات ( تعفن البتات ، تعفن الكود ، تآكل البرمجيات ، اضمحلال البرمجيات ، أو إنتروبيا البرمجيات ) هو التدهور أو التلف أو فقدان الاستخدام أو أداء البرمجيات بمرور الوقت.
من منظور تجربة مستخدم البرنامج، فإن الأمر يتعلق بتطور بيئة التشغيل بما في ذلك الأجهزة. والسبب الأول للخسارة الموضوعية في الاستخدام العملي للبرامج هو فقدان النظام المضيف كبيئة تشغيل عملية.
يعرّف ملف المصطلحات ، وهو عبارة عن مجموعة من تقاليد القراصنة، "تعفن البتات" بأنه تفسير ساخر لتدهور برنامج برمجي بمرور الوقت حتى لو "لم يتغير شيء"؛ والفكرة وراء هذا الأمر هي كما لو كانت البتات التي يتكون منها البرنامج معرضة للتحلل الإشعاعي. [1]
الأسباب
هناك العديد من العوامل المسؤولة عن تعفن البرمجيات، بما في ذلك التغييرات في البيئة التي يعمل فيها البرنامج، وتدهور التوافق بين أجزاء البرنامج نفسه، وظهور الأخطاء في التعليمات البرمجية غير المستخدمة أو التي نادرا ما تستخدم.
تغير البيئة
عندما تحدث تغييرات في بيئة البرنامج، وخاصة التغييرات التي لم يتوقعها مصمم البرنامج، فقد لا يعمل البرنامج كما كان مقصودًا في الأصل. على سبيل المثال، استخدم العديد من مصممي ألعاب الكمبيوتر الأوائل سرعة ساعة وحدة المعالجة المركزية كمؤقت في ألعابهم . [ 2 ] ومع ذلك، كانت ساعات وحدة المعالجة المركزية الأحدث أسرع، لذلك زادت سرعة اللعب وفقًا لذلك، مما جعل الألعاب أقل قابلية للاستخدام بمرور الوقت.
القدرة على التكرار
هناك تغييرات في البيئة لا تتعلق بمصمم البرنامج، بل بمستخدميه. في البداية، يمكن للمستخدم أن يعيد النظام إلى العمل، ويجعله يعمل دون أي عيب لفترة زمنية معينة. ولكن عندما يتوقف النظام عن العمل بشكل صحيح، أو عندما يريد المستخدمون الوصول إلى عناصر التحكم في التكوين، لا يمكنهم تكرار هذه الخطوة الأولية بسبب السياق المختلف والمعلومات غير المتاحة (فقدان كلمة المرور، أو التعليمات المفقودة، أو ببساطة واجهة مستخدم يصعب إدارتها تم تكوينها أولاً عن طريق التجربة والخطأ). أطلق مهندس المعلومات جوناس سودرستروم على هذا المفهوم اسم Onceability ، [3] ويعرفه بأنه "الجودة في النظام الفني التي تمنع المستخدم من استعادة النظام، بمجرد فشله".
الكود غير مستخدم
قد تحتوي أجزاء التعليمات البرمجية التي لا يتم استخدامها بشكل متكرر، مثل مرشحات المستندات أو الواجهات المصممة للاستخدام بواسطة برامج أخرى، على أخطاء لا يتم ملاحظتها. ومع التغييرات في متطلبات المستخدم والعوامل الخارجية الأخرى، قد يتم تنفيذ هذا التعليمات البرمجية لاحقًا، مما يؤدي إلى الكشف عن الأخطاء وجعل البرنامج يبدو أقل وظيفية.
كود نادر التحديث
قد يؤدي الصيانة العادية للبرامج والأنظمة أيضًا إلى تلف البرامج. على وجه الخصوص، عندما يحتوي البرنامج على أجزاء متعددة تعمل على مسافة ذراع من بعضها البعض، فإن الفشل في مراعاة كيفية تأثير التغييرات على جزء واحد على الأجزاء الأخرى قد يؤدي إلى ظهور أخطاء.
في بعض الحالات، قد يتخذ هذا شكل تغيير المكتبات التي يستخدمها البرنامج بطريقة تؤثر سلبًا على البرنامج. إذا لم يعد من الممكن استخدام الإصدار القديم من المكتبة التي كانت تعمل سابقًا مع البرنامج بسبب تعارضات مع برامج أخرى أو عيوب أمنية تم العثور عليها في الإصدار القديم، فقد لا يكون هناك إصدار صالح للمكتبة المطلوبة لاستخدام البرنامج.
الاتصال عبر الإنترنت
غالبًا ما تتصل البرامج التجارية الحديثة بخادم عبر الإنترنت للتحقق من الترخيص والوصول إلى المعلومات. إذا تم إيقاف تشغيل الخدمة عبر الإنترنت التي تشغل البرنامج، فقد يتوقف عن العمل. [4] [5]
منذ أواخر عام 2010، تستخدم معظم مواقع الويب اتصالات HTTPS آمنة . ومع ذلك، يتطلب هذا مفاتيح تشفير تسمى شهادات الجذر والتي لها تواريخ انتهاء صلاحية. بعد انتهاء صلاحية الشهادات، يفقد الجهاز الاتصال بمعظم مواقع الويب ما لم يتم تحديث المفاتيح باستمرار. [6]
هناك مشكلة أخرى وهي أنه في مارس 2021 تم إيقاف العمل بمعايير التشفير القديمة TLS 1.0 وTLS 1.1 . [7] وهذا يعني أن أنظمة التشغيل والمتصفحات والبرامج الأخرى عبر الإنترنت التي لا تدعم TLS 1.2 على الأقل لا يمكنها الاتصال بمعظم مواقع الويب، حتى لتنزيل التصحيحات أو تحديث المتصفح، إذا كانت متوفرة. يُطلق على هذا أحيانًا "نهاية TLS".
تتضمن المنتجات التي لا يمكنها الاتصال بمعظم مواقع الويب أجهزة PowerMac وأجهزة Unix القديمة وإصدارات Microsoft Windows الأقدم من Server 2008/Windows 7 (على الأقل بدون استخدام متصفح تابع لجهة خارجية). يدعم متصفح Internet Explorer 8 في Server 2008/Windows 7 بروتوكول TLS 1.2 ولكنه معطل افتراضيًا. [8]
تصنيف
يتم تصنيف تعفن البرامج عادةً على أنه "تعفن خامد" أو "تعفن نشط".
العفن الخامل
تصبح البرامج التي لا يتم استخدامها حاليًا غير قابلة للاستخدام تدريجيًا مع تغير بقية التطبيق. كما تساهم التغييرات في متطلبات المستخدم وبيئة البرنامج في التدهور.
تعفن نشط
إن البرامج التي تخضع للتعديل المستمر قد تفقد سلامتها بمرور الوقت إذا لم يتم تطبيق عمليات التخفيف المناسبة بشكل متسق. ومع ذلك، تتطلب العديد من البرامج تغييرات مستمرة لتلبية المتطلبات الجديدة وتصحيح الأخطاء، ونادرًا ما يكون من العملي إعادة هندسة البرامج في كل مرة يتم فيها إجراء تغيير. وهذا يخلق ما هو في الأساس عملية تطور للبرنامج، مما يجعله يبتعد عن التصميم الهندسي الأصلي. ونتيجة لهذا والبيئة المتغيرة، قد يتم إبطال الافتراضات التي وضعها المصممون الأصليون، وبالتالي إدخال الأخطاء.
في الممارسة العملية، قد تكون إضافة ميزات جديدة أولوية على تحديث الوثائق ؛ ولكن بدون الوثائق، من الممكن أن تضيع المعرفة المحددة المتعلقة بأجزاء من البرنامج. وإلى حد ما، يمكن التخفيف من ذلك باتباع أفضل الممارسات الحالية لاتفاقيات الترميز .
يتباطأ تدهور البرامج النشطة بمجرد اقتراب التطبيق من نهاية عمره التجاري وتوقف المزيد من التطوير. غالبًا ما يتعلم المستخدمون كيفية التغلب على أي أخطاء متبقية في البرنامج ، ويصبح سلوك البرنامج ثابتًا حيث لا يتغير شيء.
أمثلة
مثال لبرنامج الذكاء الاصطناعي
لقد عانت العديد من البرامج الرائدة منذ الأيام الأولى لأبحاث الذكاء الاصطناعي من خلل في البرامج لا يمكن إصلاحه. على سبيل المثال، لا يمكن تشغيل برنامج SHRDLU الأصلي (برنامج فهم اللغة الطبيعية المبكر) على أي جهاز كمبيوتر أو محاكي كمبيوتر حديث، لأنه تم تطويره في الأيام التي كانت فيها LISP وPLANNER لا تزال في مرحلة التطوير، وبالتالي يستخدم وحدات ماكرو غير قياسية ومكتبات برامج لم تعد موجودة بعد الآن.
مثال على منتدى عبر الإنترنت متشعب
لنفترض أن أحد المشرفين أنشأ منتدى باستخدام برنامج منتدى مفتوح المصدر ، ثم قام بتعديله بشكل كبير بإضافة ميزات وخيارات جديدة. تتطلب هذه العملية تعديلات مكثفة على الكود الحالي والانحراف عن الوظيفة الأصلية لهذا البرنامج.
ومن هنا، هناك عدة طرق يمكن أن يؤثر بها تعفن البرامج على النظام:
- قد يقوم المسؤولون عن طريق الخطأ بإجراء تغييرات تتعارض مع بعضها البعض أو مع البرنامج الأصلي، مما يتسبب في تصرف المنتدى بشكل غير متوقع أو تعطله تمامًا. وهذا يضعهم في موقف سيئ للغاية: نظرًا لانحرافهم بشكل كبير عن الكود الأصلي، فسيكون من الصعب الحصول على الدعم الفني والمساعدة في إحياء المنتدى.
- قد يتم اكتشاف ثغرة أمنية في الكود المصدر الأصلي للمنتدى، مما يتطلب تصحيحًا أمنيًا. ومع ذلك، نظرًا لأن المسؤول قد عدل الكود على نطاق واسع، فقد لا يكون التصحيح قابلاً للتطبيق بشكل مباشر على الكود الخاص به، مما يتطلب من المسؤول إعادة كتابة التحديث بشكل فعال.
- قد يتخلى المسؤول الذي أجرى التعديلات عن منصبه، مما يترك المسؤول الجديد مع منتدى معقد ومُعدل بشكل كبير ويفتقر إلى التوثيق الكامل. بدون فهم كامل للتعديلات، من الصعب على المسؤول الجديد إجراء تغييرات دون إدخال تعارضات وأخطاء. علاوة على ذلك، قد لا تكون وثائق النظام الأصلي متاحة بعد الآن، أو الأسوأ من ذلك، قد تكون مضللة بسبب الاختلافات الدقيقة في المتطلبات الوظيفية.
مثال ويكي
لنفترض أن مشرف موقع ويب قام بتثبيت أحدث إصدار من MediaWiki ، وهو البرنامج الذي يعمل على تشغيل مواقع wiki مثل Wikipedia، ثم لم يقم أبدًا بتطبيق أي تحديثات. بمرور الوقت، من المرجح أن يقوم مضيف الويب بتحديث إصدارات لغة البرمجة (مثل PHP ) وقاعدة البيانات (مثل MariaDB ) دون استشارة مشرف الموقع. بعد فترة طويلة بما فيه الكفاية، سيؤدي هذا في النهاية إلى تعطل مواقع الويب المعقدة التي لم يتم تحديثها، لأن أحدث إصدارات PHP و MariaDB ستحتوي على تغييرات جذرية حيث أنها تبطل بعض الوظائف المضمنة بشكل صارم ، مما يؤدي إلى كسر التوافق مع الإصدارات السابقة والتسبب في أخطاء قاتلة . تشمل المشكلات الأخرى التي يمكن أن تنشأ مع برامج مواقع الويب غير المحدثة نقاط الضعف الأمنية والبريد العشوائي .
إعادة الهيكلة
إعادة الهيكلة هي وسيلة لمعالجة مشكلة تعفن البرمجيات. وهي توصف بأنها عملية إعادة كتابة الكود الحالي لتحسين بنيته دون التأثير على سلوكه الخارجي. [9] وهذا يشمل إزالة الكود الميت وإعادة كتابة الأقسام التي تم تعديلها على نطاق واسع ولم تعد تعمل بكفاءة. يجب الحرص على عدم تغيير السلوك الخارجي للبرنامج، حيث يمكن أن يؤدي هذا إلى عدم التوافق وبالتالي يساهم في تعفن البرمجيات. بعض مبادئ التصميم التي يجب مراعاتها عندما يتعلق الأمر بإعادة الهيكلة هي الحفاظ على البنية الهرمية للكود وتنفيذ التجريد لتبسيط وتعميم هياكل الكود. [10]
انظر أيضا
- رائحة الكود
- جحيم التبعية
- خسارة الجيل
- تضخم البرامج
- هشاشة البرمجيات
- SOLID – مبادئ تصميم البرمجة الموجهة للكائنات
مراجع
- ^ رايموند، إيريك. "Bit rot". The Jargon File . تم الاسترجاع في 3 مارس 2013 .
- ^ Salemi, Joe (1992-01-28). مجلة PC. Ziff Davis, Inc. ص 286.
- ^ جوناس سودرستروم. "القدرة على التكرار: نتيجة تعفن التكنولوجيا". مؤرشف من الأصل في 2021-06-03.
- ^ Amadeo, Ron (31 أكتوبر 2016). "تاريخ أندرويد (المحدث)". Ars Technica . تم الاسترجاع في 31 أكتوبر 2021 .
- ^ "برنامج Adobe CS2 متاح الآن مجانًا، نوعًا ما". مجلة Mobile Magazine. 2013-01-14. مؤرشف من الأصل في 2013-01-18 . تم الاسترجاع في 2013-01-20 .
- ^ بول واجينسيل (2020-12-24). "نهاية العالم مؤجلة: لن تتوقف أجهزة أندرويد هذه عن العمل في الخريف المقبل". دليل توم . تم الاسترجاع في 2023-03-16 .
- ^ "RFC ft-ietf-tls-oldversions-deprecate: إلغاء TLS 1.0 وTLS 1.1". IETF Datatracker . 2021-03-23 . تم الاسترجاع في 2023-03-16 .
- ^ "Windows 7 يضيف دعمًا لـ TLSv1.1 وTLSv1.2 - IEInternals - الصفحة الرئيسية للموقع - مدونات MSDN". مؤرشف من الأصل في 2013-12-26.
- ^ فاولر، مارتن (11 أكتوبر 2007). "ما هو إعادة الهيكلة" . تم الاسترجاع في 2007-11-22 .
- ^ سوريانارايانا، جيريش، غانيش سامارثيام، وتوشار شارما. إعادة البناء لروائح تصميم البرمجيات: إدارة الديون الفنية / جيريش سوريانارايانا، غانيش سامارثيام، توشار شارما. الطبعة الأولى. والثام, ماساتشوستس ; مورغان كوفمان، 2015. طباعة.
