تدهور البرمجيات

إن تدهور البرمجيات ( تدهور البتات ، تدهور الكود ، تآكل البرمجيات ، انحلال البرمجيات ، أو إنتروبيا البرمجيات ) هو التدهور أو التدهور أو فقدان استخدام أو أداء البرمجيات بمرور الوقت.

يُعرّف كتاب " ملف المصطلحات التقنية "، وهو موسوعة لمصطلحات القرصنة، مصطلح "تلف البتات" بأنه تفسير ساخر لتدهور برنامج حاسوبي بمرور الوقت حتى لو "لم يتغير شيء"؛ الفكرة وراء ذلك هي كما لو أن البتات التي تُكوّن البرنامج قد تعرضت للتحلل الإشعاعي. [ 1 ]

الأسباب

هناك عدة عوامل مسؤولة عن تدهور البرمجيات، بما في ذلك التغييرات في البيئة التي تعمل فيها البرمجيات، وتدهور التوافق بين أجزاء البرمجيات نفسها، وظهور الأخطاء في التعليمات البرمجية غير المستخدمة أو التي نادراً ما تستخدم.

تغير البيئة

تسجيل شاشة يُظهر خللاً ظهر في برنامج Blender 2.9 نتيجةً لتغييرات في تعريفات AMD ، مما تسبب في ظهور نقاط ضوئية متقطعة وعرض غير صحيح لأسطح المتجهات العمودية . وقد استدعى الأمر إجراء تحديثات في كود Blender لمعالجة هذه التغييرات، مما أدى إلى إصلاح الخلل.

عند حدوث تغييرات في بيئة البرنامج، وخاصةً التغييرات التي لم يتوقعها مصمم البرنامج، قد لا يعمل البرنامج كما كان مُخططًا له في الأصل. على سبيل المثال، استخدم العديد من مصممي ألعاب الكمبيوتر الأوائل سرعة معالج الكمبيوتر كمؤقت في ألعابهم . [ 2 ] ومع ذلك ، أصبحت معالجات الكمبيوتر الأحدث أسرع، وبالتالي زادت سرعة اللعب تبعًا لذلك، مما جعل الألعاب أقل قابلية للاستخدام بمرور الوقت.

إمكانية واحدة

هناك تغييرات في بيئة النظام لا علاقة لها بمصمم البرنامج، بل بمستخدميه. في البداية، يستطيع المستخدم تشغيل النظام بسلاسة وكفاءة لفترة معينة. ولكن، عندما يتوقف النظام عن العمل بشكل صحيح، أو عندما يرغب المستخدمون في الوصول إلى إعدادات النظام، لا يمكنهم تكرار تلك الخطوة الأولى بسبب اختلاف السياق وعدم توفر المعلومات (فقدان كلمة المرور، أو نقص التعليمات، أو ببساطة واجهة مستخدم معقدة تم ضبطها مسبقًا بالتجربة والخطأ). أطلق مهندس المعلومات جوناس سودرستروم على هذا المفهوم اسم " إمكانية الاستعادة لمرة واحدة " [ 3 ] ، ويعرّفه بأنه "الخاصية الموجودة في النظام التقني التي تمنع المستخدم من استعادة النظام بعد تعطلّه".

رمز غير مستخدم

قد تحتوي أجزاء من التعليمات البرمجية قليلة الاستخدام، مثل مرشحات المستندات أو الواجهات المصممة للاستخدام من قبل برامج أخرى، على أخطاء برمجية تمر دون أن يلاحظها أحد. ومع تغير متطلبات المستخدمين وعوامل خارجية أخرى، قد يتم تنفيذ هذه التعليمات البرمجية لاحقًا، مما يكشف عن الأخطاء ويجعل البرنامج يبدو أقل كفاءة.

رمز نادر التحديث

قد يؤدي الصيانة الدورية للبرامج والأنظمة إلى تلف البرامج. على وجه الخصوص، عندما يحتوي البرنامج على أجزاء متعددة تعمل بشكل مستقل عن بعضها البعض، فإن إغفال كيفية تأثير التغييرات التي تطرأ على أحد الأجزاء على الأجزاء الأخرى قد يؤدي إلى ظهور أخطاء برمجية.

في بعض الحالات، قد يتخذ هذا شكل تغيير المكتبات التي يستخدمها البرنامج بطريقة تؤثر سلبًا عليه. فإذا لم يعد بالإمكان استخدام الإصدار القديم من مكتبة كانت تعمل سابقًا مع البرنامج بسبب تعارضات مع برامج أخرى أو ثغرات أمنية تم اكتشافها فيه، فقد لا يتوفر إصدار بديل مناسب من المكتبة التي يحتاجها البرنامج.

الاتصال بالإنترنت

غالباً ما تتصل البرامج التجارية الحديثة بخادم عبر الإنترنت للتحقق من التراخيص والوصول إلى المعلومات. إذا تم إيقاف تشغيل الخدمة عبر الإنترنت التي تدعم البرنامج، فقد يتوقف عن العمل. [ 4 ] [ 5 ]

منذ أواخر العقد الأول من الألفية الثانية، تستخدم معظم المواقع الإلكترونية اتصالات 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 لا تزالان قيد التطوير، وبالتالي يستخدم وحدات ماكرو ومكتبات برمجية غير قياسية لم تعد موجودة.

مثال على منتدى إلكتروني متفرع

لنفترض أن مديرًا أنشأ منتدى باستخدام برنامج مفتوح المصدر ، ثم قام بتعديله بشكل كبير بإضافة ميزات وخيارات جديدة. تتطلب هذه العملية تعديلات واسعة النطاق على الكود البرمجي الحالي وانحرافًا عن الوظائف الأصلية للبرنامج.

ومن هنا، توجد عدة طرق يمكن أن يؤثر بها تدهور البرمجيات على النظام:

  • قد يُجري المسؤول تغييرات غير مقصودة تتعارض مع بعضها البعض أو مع البرنامج الأصلي، مما يتسبب في سلوك غير متوقع للمنتدى أو تعطله تمامًا. وهذا يضعه في موقف حرج للغاية: نظرًا لانحرافه الكبير عن الكود الأصلي، سيصعب عليه الحصول على الدعم الفني والمساعدة لإعادة تشغيل المنتدى.
  • قد يتم اكتشاف ثغرة أمنية في شفرة المصدر الأصلية للمنتدى، مما يستدعي تثبيت رقعة أمنية. ومع ذلك، نظرًا لأن المسؤول قد عدّل الشفرة بشكل كبير، فقد لا تكون الرقعة قابلة للتطبيق مباشرة على شفرته، مما يستدعي إعادة كتابة التحديث بالكامل.
  • قد يُخلي المسؤول الذي أجرى التعديلات منصبه، تاركًا المسؤول الجديد أمام منتدى مُعقد ومُعدّل بشكل كبير ويفتقر إلى توثيق شامل. وبدون فهم كامل للتعديلات، يصعب على المسؤول الجديد إجراء تغييرات دون إحداث تعارضات وأخطاء برمجية. علاوة على ذلك، قد لا يكون توثيق النظام الأصلي متاحًا، أو الأسوأ من ذلك، قد يكون مُضللًا بسبب اختلافات طفيفة في المتطلبات الوظيفية.

مثال من ويكي

لنفترض أن مدير موقع ويب قام بتثبيت أحدث إصدار من ميدياويكي ، البرنامج الذي يُشغّل مواقع ويكي مثل ويكيبيديا، ثم لم يُطبّق أي تحديثات. مع مرور الوقت، من المرجح أن يقوم مُستضيف الموقع بتحديث إصدارات لغة البرمجة (مثل PHP ) وقاعدة البيانات (مثل MariaDB ) دون استشارة مدير الموقع. بعد فترة طويلة، سيؤدي ذلك في النهاية إلى تعطل المواقع المعقدة التي لم يتم تحديثها، لأن أحدث إصدارات PHP وMariaDB ستتضمن تغييرات جذرية حيث ستُهمل بعض الوظائف المُدمجة ، مما يُخلّ بالتوافق مع الإصدارات السابقة ويُسبب أخطاءً فادحة . تشمل المشاكل الأخرى التي قد تنشأ عن برامج مواقع الويب غير المُحدّثة الثغرات الأمنية والبريد العشوائي .

إعادة هيكلة

إعادة هيكلة البرمجيات هي وسيلة لمعالجة مشكلة تدهور البرمجيات. تُعرَّف بأنها عملية إعادة كتابة الكود البرمجي الحالي لتحسين بنيته دون التأثير على سلوكه الخارجي. [ 9 ] يشمل ذلك إزالة الأجزاء غير المستخدمة من الكود وإعادة كتابة الأجزاء التي تم تعديلها بشكل كبير ولم تعد تعمل بكفاءة. يجب توخي الحذر لتجنب تغيير السلوك الخارجي للبرنامج، لأن ذلك قد يُسبب عدم توافق، وبالتالي يُساهم في تدهور البرمجيات. من مبادئ التصميم التي يجب مراعاتها عند إعادة هيكلة الكود الحفاظ على البنية الهرمية للكود وتطبيق التجريد لتبسيط وتعميم هياكل الكود. [ 10 ]

إنتروبيا البرمجيات

يصف مصطلح "إنتروبيا البرمجيات" ميل نظام البرمجيات إلى فقدان بنيته تدريجيًا أو زيادة تعقيده نتيجةً لعمليات الإصلاح والتعديل التي تُجرى عليه. [ 11 ] استخدم ماني ليمان مصطلح "الإنتروبيا" عام 1974 لوصف تعقيد نظام البرمجيات، وربطه بالقانون الثاني للديناميكا الحرارية . تنص قوانين ليمان لتطور البرمجيات على أن نظام البرمجيات المعقد سيحتاج إلى تعديلات مستمرة للحفاظ على ملاءمته للبيئة المحيطة به، وأن هذه التعديلات ستزيد من إنتروبيا النظام ما لم تُبذل جهود محددة لتقليلها. [ 12 ]

وصف إيفار جاكوبسون وآخرون في عام 1992 مفهوم إنتروبيا البرمجيات بشكل مشابه، وجادلوا بأن هذه الزيادة في الفوضى مع تعديل النظام ستجعل نظام البرمجيات غير اقتصادي في نهاية المطاف، على الرغم من أن الوقت اللازم لحدوث ذلك يعتمد بشكل كبير على تصميمه الأولي، ويمكن تمديده عن طريق إعادة هيكلة الكود. [ 13 ]

في عام 1999، استخدم أندرو هانت وديفيد توماس إصلاح النوافذ المكسورة كاستعارة لتجنب فوضى البرمجيات في تطوير البرمجيات. [ 14 ]

انظر أيضاً

مراجع

  1. ريموند، إريك. "تلف البتات" . ملف المصطلحات التقنية . مؤرشف من الأصل في 7 مايو 2025. تم الاسترجاع في 3 مارس 2013 .
  2. ساليمي، جو (28 يناير 1992). مجلة الكمبيوتر الشخصي . زيف ديفيس، إنك. ص 286. 
  3. جوناس سودرستروم. "إمكانية الوصول لمرة واحدة: نتيجة تدهور التكنولوجيا" . مؤرشف من الأصل بتاريخ 2021-06-03.
  4. أماديو، رون (31 أكتوبر 2016). "تاريخ أندرويد (المُحدَّث)" . آرس تكنيكا . تم الاطلاع عليه في 31 أكتوبر 2021 .
  5. "أدوبي CS2 متوفر الآن مجاناً، نوعاً ما" . مجلة موبايل. ١٤ يناير ٢٠١٣. مؤرشف من الأصل في ١٨ يناير ٢٠١٣. تم الاطلاع عليه في ٢٠ يناير ٢٠١٣ .
  6. بول واغنسيل (24 ديسمبر 2020). "تأجيل نهاية العالم: لن تنقطع هذه الأجهزة التي تعمل بنظام أندرويد عن الإنترنت في الخريف المقبل" . دليل توم . تم الاطلاع عليه بتاريخ 16 مارس 2023 .
  7. "RFC ft-ietf-tls-oldversions-deprecate: إيقاف استخدام TLS 1.0 وTLS 1.1" . IETF Datatracker . 2021-03-23 . تم الاطلاع عليه بتاريخ 2023-03-16 .
  8. "يُضيف نظام التشغيل Windows 7 دعمًا لبروتوكولي TLSv1.1 وTLSv1.2 - IEInternals - الصفحة الرئيسية للموقع - مدونات MSDN" . مؤرشف من الأصل بتاريخ 26 ديسمبر 2013.
  9. فاولر، مارتن (11 أكتوبر 2007). "ما هي إعادة هيكلة الكود؟" . تم الاسترجاع في 22 نوفمبر 2007 .
  10. سوريانارايانا، جيريش، غانيش سامارثيام، وتوشار شارما. إعادة البناء لروائح تصميم البرمجيات: إدارة الديون الفنية / جيريش سوريانارايانا، غانيش سامارثيام، توشار شارما. الطبعة الأولى. والثام, ماساتشوستس ; مورغان كوفمان، 2015. طباعة.
  11. ^ تريباثي، بريادارشي؛ نايك، كشيراساغار (2014). تطور البرمجيات وصيانتها: نهج الممارس . هوبوكين، نيو جيرسي: وايلي. ص. 376. ردمك  978-0-470-60341-3.
  12. ليمان، إم إم؛ بيلادي، إل إيه (1985)، تطور البرامج: عمليات تغيير البرمجيات ، دار النشر الأكاديمية، ص 143-144 ، رقم ISBN  9780124424401
  13. ^ جاكوبسون ، إيفار. كريسترسون، ماغنوس. جونسون، باتريك؛ Övergaard، Gunnar (1992)، هندسة البرمجيات الموجهة للكائنات: نهج قائم على حالة الاستخدام ، مطبعة ACM. أديسون ويسلي، ص 70-72 ، ISBN  0-201-54435-0
  14. هانت، أندرو؛ توماس، ديفيد (1999)، المبرمج العملي ، أديسون ويسلي، الصفحات 4-6 ، ISBN  0-201-61622-X