علم آثار البرمجيات
علم آثار البرمجيات، أو علم آثار شفرة المصدر، هو دراسة تطبيقات البرمجيات القديمة سيئة التوثيق أو غير الموثقة ، كجزء من صيانة البرمجيات . [ 1 ] [ 2 ] يشمل علم آثار البرمجيات، الذي سُمّي قياسًا على علم الآثار ، [ 3 ] الهندسة العكسية لوحدات البرمجيات، وتطبيق مجموعة متنوعة من الأدوات والعمليات لاستخراج وفهم بنية البرنامج واستعادة معلومات التصميم. [ 1 ] [ 4 ] قد يكشف علم آثار البرمجيات عن عمليات فريق مختلة وظيفيًا أنتجت وحدات برمجية سيئة التصميم أو حتى غير مستخدمة، وفي بعض الحالات قد يتم العثور على شفرة مُبهمة عمدًا. [ 5 ] يُستخدم هذا المصطلح منذ عقود. [ 6 ]
لا يزال علم آثار البرمجيات موضوعًا للنقاش في مؤتمرات هندسة البرمجيات الحديثة. [ 7 ]
التقنيات
حددت ورشة عمل حول علم آثار البرمجيات في مؤتمر OOPSLA (البرمجة الموجهة للكائنات والأنظمة واللغات والتطبيقات) لعام 2001 تقنيات علم آثار البرمجيات التالية، وبعضها خاص بالبرمجة الموجهة للكائنات : [ 8 ]
- لغات البرمجة النصية لإنشاء تقارير ثابتة ولتصفية مخرجات التشخيص
- توثيق مستمر في صفحات HTML أو ويكي
- أدوات تحليل التوقيعات الشاملة، والتحليل الإحصائي، وتصور البرامج
- أدوات الهندسة العكسية
- تتبع على مستوى نظام التشغيل عبر truss أو strace
- محركات البحث وأدوات البحث عن الكلمات المفتاحية في ملفات المصدر
- استعراض ملفات بيئة التطوير المتكاملة
- أطر اختبار الوحدات مثل JUnit و CppUnit
- إنشاء وثائق واجهة برمجة التطبيقات باستخدام أدوات مثل Javadoc و Doxygen
- أدوات تصحيح الأخطاء
وبشكل عام، يشير آندي هانت وديف توماس إلى أهمية التحكم في الإصدارات ، وإدارة التبعيات ، وأدوات فهرسة النصوص مثل GLIMPSE و SWISH-E ، و"رسم خريطة أثناء بدء الاستكشاف". [ 8 ]
على غرار علم الآثار الحقيقي، ينطوي علم آثار البرمجيات على عمل استقصائي لفهم عمليات التفكير لدى من سبقونا. [ 8 ] في ورشة عمل OOPSLA، اقترح وارد كانينغهام تقنية تحليل التوقيع الموجز التي تعطي انطباعًا عامًا عن البرنامج من خلال عرض علامات الترقيم فقط، مثل الفواصل المنقوطة والأقواس المعقوفة . [ 9 ] وبالمثل، اقترح كانينغهام عرض البرامج بخط بحجم نقطتين لفهم بنيتها العامة. [ 10 ] ومن التقنيات الأخرى التي تم تحديدها في ورشة العمل استخدام أدوات البرمجة الموجهة نحو الجوانب، مثل AspectJ، لإدخال رمز التتبع بشكل منهجي دون تعديل البرنامج القديم مباشرةً. [ 8 ]
يمكن لتقنيات تحليل الشبكات والتحليل الزمني أن تكشف أنماط النشاط التعاوني لمطوري البرامج القديمة، مما قد يسلط الضوء بدوره على نقاط القوة والضعف في منتجات البرامج المنتجة. [ 11 ]
وصف مايكل روزلوغ من شركة إمباركاديرو تكنولوجيز علم آثار البرمجيات بأنه عملية من ست خطوات تمكّن المبرمجين من الإجابة على أسئلة مثل: "ما الذي ورثته للتو؟" و"أين تكمن الأجزاء الخطيرة من الكود؟" [ 12 ] تشمل هذه الخطوات، المشابهة لتلك التي حددتها ورشة عمل OOPSLA، استخدام التصور للحصول على تمثيل مرئي لتصميم البرنامج، واستخدام مقاييس البرمجيات للبحث عن انتهاكات التصميم والأسلوب، واستخدام اختبارات الوحدات وتحليل الأداء للبحث عن الأخطاء ومواطن الاختناق في الأداء، وتجميع معلومات التصميم التي تم استخلاصها من خلال هذه العملية. [ 12 ] كما يمكن أن يكون علم آثار البرمجيات خدمة يقدمها مستشارون خارجيون للمبرمجين. [ 13 ]
في الثقافة الشعبية
تبرز مهنة " المبرمج-عالم الآثار " بشكل بارز في رواية الخيال العلمي " عمق في السماء" للكاتب فيرنور فينج عام 1999. [ 14 ]
انظر أيضاً
- استعادة بنية البرمجيات – أساليب إعادة بناء البرمجيات
- إعادة هيكلة الكود – إعادة تنظيم الكود البرمجي الحالي دون تغيير سلوكه الخارجي
- الحوسبة القديمة – استخدام الهواة لمعدات الكمبيوتر القديمة
- هشاشة البرمجيات – وصف لمدى صعوبة تعديل البرمجيات
- تدهور البرمجيات – تدهور البرمجيات أو فقدانها لوظيفتها بمرور الوقت
- تدهور البرمجيات – تدهور أو فقدان إمكانية استخدام البرمجيات بمرور الوقت. صفحات تعرض أوصافًا مختصرة لأهداف إعادة التوجيه
- البرامج المهجورة - برامج لم تعد تُباع أو تُصان.
مراجع
- 1 2 روبليس، غريغوريو؛ غونزاليس-باراهونا، خيسوس م.؛ هيرايز، إسرائيل (2005). "نهج تجريبي لعلم آثار البرمجيات" (ملف PDF) . وقائع ملصق المؤتمر الدولي لصيانة البرمجيات .
- ↑ أمبلر، سكوت و. "تحليل وتكامل الأنظمة القديمة الرشيقة" . agilemodeling.com . تاريخ الاسترجاع: 20 أغسطس 2010.
بدون توثيق دقيق، أو إمكانية الوصول إلى أشخاص ذوي خبرة، قد يكون ملاذك الأخير هو تحليل شفرة المصدر للنظام القديم... يُشار إلى هذا الجهد غالبًا باسم علم آثار البرمجيات.
- ↑ موير، برايون (4 مارس 2009). "علم آثار البرمجيات: تحديث الأنظمة القديمة" (ملف PDF) . مجلة التكنولوجيا المدمجة .
- ↑ هوبكنز، ريتشارد؛ جينكينز، كيفن (2008). "5. الرجل الخارق الأسطوري" . أكل فيل تكنولوجيا المعلومات: الانتقال من تطوير الأراضي البكر إلى الأراضي الملوثة . أديسون-ويسلي. ص 93. ISBN 978-0-13-713012-2.
- ↑ سبينليس، ديوميديس ؛ غوسيوس، جورجيوس (2009). "2. حكاية نظامين § غياب التماسك" . العمارة الجميلة . أورايلي. ص 29. ISBN 978-0-596-51798-4.
- ↑ من المناقشات المبكرة: غراس، جوديث إي. (شتاء 1992). "علم آثار التصميم الموجه للكائنات باستخدام CIA++" (ملف PDF) . أنظمة الحوسبة . 5 (1).
- ↑ على سبيل المثال، "المؤتمر الدولي الثاني والثلاثون لجمعية ACM/IEEE حول هندسة البرمجيات" . مايو 2010..
- 1 2 3 4 هانت، آندي ؛ توماس، ديف (مارس-أبريل 2002). "علم آثار البرمجيات" (ملف PDF) . مجلة IEEE للبرمجيات . 19 (2): 20-22 . رمز Bibcode : 2002ISoft..19b..20. . doi : 10.1109/52.991327 .
- ↑ كونينغهام، وارد (2001). "مسح التوقيعات: طريقة لتصفح التعليمات البرمجية غير المألوفة" . بيان موقف ورشة العمل، علم آثار البرمجيات: فهم الأنظمة الكبيرة، OOPSLA 2001 .
- ↑ كوك، جون د. (10 نوفمبر 2009). "علم آثار البرمجيات" . ذا إنديفور .
- ↑ دي سوزا، كليدسون؛ فروهليش، جون؛ دوريش، بول (2005). "البحث عن المصدر: شفرة المصدر البرمجية كمنتج اجتماعي وتقني" (ملف PDF) . وقائع مؤتمر ACM SIGGROUP الدولي لعام 2005 حول دعم العمل الجماعي . الصفحات 197-206 . doi : 10.1145/1099203.1099239 . ISBN 1595932232.
- 1 2 روزلوغ، مايكل (28 يناير 2008). "علم آثار البرمجيات: ما هو ولماذا يجب أن يهتم به مطورو جافا؟" . java.sys-con.com.
- ↑ شاروود، سيمون (3 نوفمبر 2004). "غزاة الشفرة المفقودة" . زد نت .
- ↑ ريس، غاريث (2013-06-12). "علم آثار البرمجيات والديون التقنية" .
روابط خارجية
- "أوراق الموقف" . ورشة عمل OOPSLA 2001 حول علم آثار البرمجيات: فهم الأنظمة الكبيرة . مؤرشفة من الأصل بتاريخ 12-06-2010.
- "كتابة الشفرة، وقراءة الشفرة، وعلم آثار البرمجيات" . العودة إلى الشفرة . مجلة كمبيوتر وورلد . 23 سبتمبر 2009. مؤرشف من الأصل في 29 يناير 2011.
- روزلوغ، مايكل (13 مارس 2008). "كيفية تطبيق علم آثار البرمجيات على عملية التطوير الخاصة بك" (ملف PDF) .
- بودكاست OOPSLA 2008 مع جرادي بوتش حول علم آثار البرمجيات والمواضيع ذات الصلة (بودكاست). 2008. مؤرشف من الأصل بتاريخ 26 سبتمبر 2011.
- مصطلحات الحاسوب
- صيانة البرامج
