# برمجيات علم الآثار

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

## نبذة

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

## تقنيات

حلقة عمل بشأن آثار البرامج في عام 2001 OOPSLA (البرمجة الموجهة ضد الكائنات، الأنظمة واللغات والتطبيقات) حدد المؤتمر تقنيات علم الآثار البرمجية التالية، وبعضها خاص بالبرمجة الموجهة نحو الكائنات:
التطبيقات) حدد المؤتمر تقنيات علم الآثار البرمجية التالية، وبعضها خاص بالبرمجة الموجهة نحو الكائنات:
* لغات البرمجة اللغوية تقوم بإنشاء مستند على شكل Ub مستند لإنشاء تقارير ثابتة وتصفية ناتج التشخيص
* وثائق مستمرة في صفحات HTML أو Wikis
* تحليل توقيع شامل وتحليل إحصائي، وأدوات عرض البرامج
* أدوات الهندسة العكسية
* تتبع مستوى نظام التشغيل عبر أداة الرسم الخاصة بـ Truss
* محركات البحث والأدوات للبحث عن الكلمات الأساسية في الملفات المصدر
* ملف IDE
* أطر اختبار الوحدة مثل JUnit وCppUnit
* إنشاء وثائق API باستخدام أدوات مثل javadoc وduxygen
* Debugen وبشكل أكثر عمومًا، يلاحظ أندي هانت وديف توماس أهمية التحكم في الإصدار وإدارة التبعية وأدوات فهرسة النصوص مثل اللمحة وswan-E و"(رسم) خريطة عند البدء في استكشاف 171 من الآثار الحقيقية.
على سبيل المثال علم الآثار الحقيقي، فإن علم الآثار البرمجي ينطوي على عمل استقصائي لقراءة العمليات الفكرية لمن سبقوها، 1/1 في ورشة عمل[ OOPSLA] ، وقد اقترح وارد كانينجهام بتقنية تحليل توقيع شامل والتي أعطت شعورا عاما "لبرنامج من خلال إظهار علامات الترقيم فقط، مثل الفواصل المنقوطة والأقواس المتعرجة بالوريد نفسه، وقد اقترحت كانينغهام برامج عرض بخط ثنائي النقاط لفهم البنية العامة وهناك تقنية أخرى تم تحديدها في ورشة العمل هي استخدام أدوات برمجة ذات وجهة نظر أساسية مثل جانب لتقديم تعليمات تتبع برمجية بشكل منهجي دون تحرير البرنامج القديم مباشرة. يمكن أن تكشف تقنيات التحليل الزماني والشبكة عن أنماط النشاط التعاوني من قبل مطوري البرامج القديمة، وتشمل هذه الخطوات، مثل تلك التي حددتها ورشة عمل OOPSLA، استخدام التصور للحصول على تمثيل مرئي لتصميم البرنامج، واستخدام مقاييس البرامج للبحث عن انتهاكات التصميم والنمط، واستخدام اختبار الوحدة ووضع الأنماط للبحث عن الأخطاء واختناقات الأداء، وتجميع معلومات التصميم التي تم استردادها بواسطة العملية.

## التطور

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

## انظر أيضا

* هندسة البرمجيات
* إعادة هيكلة الكود
* إعادة المعالجة

## مراجع

* ↑ Robles, Gregorio; Gonzalez-Barahona, Jesus M.; Herraiz, Israel (2005). "An Empirical Approach to Software Archaeology" (PDF). Poster Proceedings of the International Conference on Software Maintenance
* ↑ ^ Ambler, Scott W. "Agile Legacy System Analysis and Integration Modeling". agilemodeling.com. Retrieved 2010-08-20. Without accurate documentation, or access to knowledgeable people, your last resort may be to analyze the source code for the legacy system... This effort is often referred to as software archaeology.
* بوابة برمجيات
* بوابة التاريخ
* بوابة علم الآثار
* بوابة برمجيات حرة
* بوابة تقانة المعلومات
* بوابة برمجة الحاسوب