ما المقصود بالتعليمات البرمجية القديمة؟

28 أبريل 2025

المؤلفين

Cole Stryker

Editorial Lead, AI Models

ما المقصود بالتعليمات البرمجية القديمة؟

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

في كتابه الصادر عام 2004 Working Effectively with Legacy Code، قدم Michael Feathers وصفًا آخر—"التعليمات البرمجية غير المُختبرة".1 هذا التعريف للتعليمات البرمجية القديمة يعني أن المبرمجين ليس لديهم أي طريقة للتحقق من أن التعليمات البرمجية تعمل وكما هو متوقع. تفتقر العديد من الأنظمة القديمة أيضًا إلى الوثائق الكافية اللازمة لفهم سلوكها، ما يجعل توسيعها أو تحسينها مهمة ثقيلة على المطورين.

تحديات صيانة التعليمات البرمجية القديمة

تسهم التعليمات البرمجية القديمة في الأعباء التقنية، والتي يجب "تخفيفها" بمرور الوقت من خلال الصيانة المستمرة للتعليمات البرمجية. فيما يلي بعض التحديات الشائعة التي قد تواجهها المؤسسات في أثناء صيانة التعليمات البرمجية القديمة:

    ● قابلية التكيف

    ● التكلفة

    ● الأداء

    ● قابلية التوسع

    ● الأمن والامتثال

قابلية التكيف

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

التكلفة

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

الأداء

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

قابلية التوسع

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

الأمان والامتثال

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

كيفية تحديث التعليمات البرمجية القديمة

يتطلب تحديث التطبيقات القديمة تخطيطًا دقيقًا. فيما يلي منهجية مكونة من 5 خطوات للمساعدة على تبسيط العملية:

    ● تحديد قاعدة التعليمات البرمجية

    ● قسّم لتتحكم

    ● إنشاء اختبارات التوصيف

    ● إعادة الهيكلة أو النقل أو إعادة الكتابة

    ● الاختبار والتوثيق

تحديد قاعدة التعليمات البرمجية

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

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

قسّم لتتحكم

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

إنشاء اختبارات التوصيف

عادةً ما تُكتب الاختبارات للتحقق من صحة التعليمات البرمجية وسلوكها المتوقع. ومع ذلك، تُنشأ اختبارات التوصيف لفهم ما تفعله التعليمات البرمجية وكيفية عملها. يُعد هذا مفيدًا لفهم التعليمات البرمجية القديمة.2  

إعادة الهيكلة أو النقل أو إعادة الكتابة

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

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

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

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

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

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

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

الاختبار والتوثيق

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

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

تصميم ثلاثي الأبعاد لكرات تتدحرج على مسار

أحدث الأخبار والرؤى حول الذكاء الاصطناعي 


تتوفر معارف وأخبار منسقة بمهارة حول الذكاء الاصطناعي والسحابة وغيرها في نشرة Think الإخبارية الأسبوعية. 

أدوات تحديث التعليمات البرمجية القديمة

يمكن أن تساعد العديد من الأدوات على تسريع وأتمتة عملية تحديث التعليمات البرمجية القديمة. فيما يلي أبرز هذه الأدوات:

    ● أدوات تحليل التعليمات البرمجية الثابتة

    ● تطبيقات تصور التعليمات البرمجية

    ● أُطر عمل أتمتة الاختبار

    ● منصات ومجموعات أدوات النقل

    ● أدوات إنشاء المستندات

أدوات تحليل التعليمات البرمجية الثابتة

يمكن أن تساعد أدوات التحليل الثابتة على تصحيح التعليمات البرمجية القديمة للعثور على عيوب البرمجة ومشاكل الجودة وحتى الثغرات الأمنية. تدعم العديد من أدوات تحليل التعليمات البرمجية الثابتة لغات البرمجة القديمة مثل C و COBOL وPL/I وRPG. تتضمن أمثلة أدوات تحليل التعليمات البرمجية الثابتة CodeSonar وKlocwork وPMD مفتوح المصدر وSonarQube.

تطبيقات تصور التعليمات البرمجية

تمثل أدوات تصور التعليمات البرمجية مصدر الرمز بيانيًا لتوفير صورة أوضح لكيفية عمله، خاصةً لقواعد التعليمات البرمجية الضخمة أو المعقدة. تأتي هذه التمثيلات البيانية بتنسيقات مختلفة مثل خرائط التعليمات البرمجية والمخططات الانسيابية ومخططات لغة النمذجة الموحدة (UML). ومن الأمثلة على تطبيقات تصور التعليمات البرمجية CodeScene وCodeSee وUnderstand وغيرها.

أُطر عمل أتمتة الاختبار

تُنشئ أُطر العمل هذه الاختبارات الآلية وتُجريها وتُنتج تقارير عن تلك الاختبارات. تشمل أُطر العمل الشائعة لأتمتة الاختبارات Cypress وSelenium لتطبيقات الويب وAppium لتطبيقات الأجهزة المحمولة.

منصات ومجموعات أدوات النقل

تساعد المنصات ومجموعات الأدوات هذه على تبسيط سير عمل النقل للأنظمة القديمة وأتمتتها. بعض منصات النقل الكبرى هي AWS Application Migration Service، وAzure Migrate، ومجموعات أدوات النقل من Google Cloud، و IBM Cloud Transformation Advisor ، وRed Hat Migration Toolkit for Applications.

أدوات إنشاء المستندات

تُنشئ هذه الأدوات تلقائيًا الوثائق من مصدر الرمز وملفات الإدخال الأخرى. من أمثلة أدوات إنشاء المستندات Doxygen وSphinx وSwimm وغيرها.

الذكاء الاصطناعي وتحديث التعليمات البرمجية القديمة

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

يمكن استخدام الذكاء الاصطناعي التوليدي للمساعدة في مهام تحديث التعليمات البرمجية القديمة التالية:

    ● شرح التعليمات البرمجية

    ● إعادة هيكلة التعليمات البرمجية

    ● تحويل التعليمات البرمجية

    ● إنشاء الاختبارات والوثائق

شرح التعليمات البرمجية

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

إعادة هيكلة التعليمات البرمجية

يمكن للأدوات المدعومة بالذكاء الاصطناعي تقديم توصيات إعادة الهيكلة في الوقت الفعلي. على سبيل المثال، يستخدم IBM watsonx Code Assistant نماذج IBM Graniteلتحديد الأخطاء والتحسينات. ومن ثَم يقترح إصلاحات مستهدفة تتماشى مع اتفاقيات البرمجة المعمول بها في الفريق، ما يساعد على تبسيط عملية إعادة هيكلة التعليمات البرمجية وتسريعها.

تحويل التعليمات البرمجية

يمكن لأنظمة الذكاء الاصطناعي اقتراح طرق لتغيير مصدر الرمز من لغة برمجة قديمة إلى لغة برمجة أكثر حداثة. على سبيل المثال، يدمج IBM watsonx Code Assistant for Z الأتمتة والذكاء الاصطناعي التوليدي لمساعدة المطورين على تحديث تطبيقات الكمبيوتر المركزي. تتضمن إمكانات الذكاء الاصطناعي التوليدي هذه شرح التعليمات البرمجية المكتوبة بلغة COBOL وJCL وPL/I وتحويل التعليمات البرمجية المكتوبة بلغة COBOL إلى لغة Java .

إنشاء الاختبارات والوثائق

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

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

أكاديمية الذكاء الاصطناعي

الاستعانة بالذكاء الاصطناعي التوليدي لتحديث التطبيقات

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

حلول ذات صلة
الترحيل السحابي - IBM Instana Observability 

تعمل Instana على تبسيط رحلة الترحيل السحابي من خلال تقديم مراقبة شاملة ورؤى قابلة للتنفيذ.

استكشف Instana
حلول تحديث تطبيقات الكمبيوتر المركزي

الاستفادة من الذكاء الاصطناعي التوليدي في تسريع تحديث تطبيقات الكمبيوتر المركزي وتبسيطها.

استكشف تحديث الحاسبات المركزية
الخدمات الاستشارية لتحديث التطبيقات

تحسين التطبيقات القديمة باستخدام السحابة الهجينة وخدمات وإستراتيجيات التحديث المدعومة بالذكاء الاصطناعي.

خدمات تحديث التطبيقات
اتخِذ الخطوة التالية

تحسين التطبيقات القديمة باستخدام السحابة الهجينة وخدمات وإستراتيجيات التحديث المدعومة بالذكاء الاصطناعي.

استكشف خدمات تحديث التطبيقات تنزيل دليل الاستخدام
الحواشي

1 #195 - Working Effectively with Legacy Code and AI Coding Assistant - Michael Feathers، Tech Lead Journal، 14 أكتوبر 2024

2 اختبار التوصيف، Michael Feathers، 8 أغسطس 2016

3 التين الخانق، Martin Fowler، 22 أغسطس 2024