Археоло́гія програ́много забезпе́чення — вивчення погано, чи взагалі не документованої успадкованої системи, як елементу супроводження програмного забезпечення. Gregorio Robles, Jesus M. Gonzalez-Barahona, and Israel Herraiz, «An Empirical Approach to Software Archaeology , „ Poster Proceedings of the International Conference on Software Maintenance, 2005. “Agile Legacy System Analysis and Integration Modeling » by Scott W. Ambler at agilemodeling.com, accessed 20 August 2010: «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.» Програмна археологія, названа по аналогії з археологією, Bryon Moyer, "Software Archeology: Modernizing Old Systems , " Embedded Technology Journal, March 4, 2009. включає в себе обернену інженерію програмних модулів, і застосування різноманітних інструментів та процесів для виокремлення інформації розуміння інформації про проектування системи.

Richard Hopkins and Kevin Jenkins, Eating the IT Elephant: Moving from greenfield development to brownfield , Addison-Wesley, 2008, ISBN 0-13-713012-0, p. 93. Програмна археологія може розкрити дисфункціональні процеси в команді, які створили погано спроектовані чи навіть невикористовувані програмні модулі Diomidis Spinellis and Georgios Gousios, Beautiful Architecture , O'Reilly, 2009, ISBN 0-596-51798-X, p. 29. Термін використовується протягом кількох десятиліть, An early discussion is Judith E. Grass, "Object-Oriented Design Archaeology with CIA++, " Computing Systems, Vol. 5, No. 1, Winter 1992. і відображає досить природну метафору: програміст що читає успадкований код може відчувати себе в ситуації аналогічній до тієї що відчуває себе археологом який досліджує нашарування стародавньої цивілізації

Підходи Майстер-клас по програмній археології на конференції OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) в 2001 виокремив наступні підходи в програмній археології, деякі з яких є специфічними для ООП:Енді Хант та Дейв Томас, «Software Archaeology », IEEE Software, vol. 19, no. 2, pp. 20-22, Mar./Apr. 2002, .

Скриптові мови для побудови статичних звітів та фільтрації діагностичного виводу Створення документації в HTML сторінках чи вікі Статистичний аналіз та інструменти візуалізації програмного забезпечення Інструменти оберненої інженерії Трасування на рівні операційної системи за допомогою truss чи strace Пошукові машини та інші інструменти для пошуку ключових слів в вихідних файлах Браузер файлів в IDE Покривання тестами, наприклад за допомогою JUnit чи CppUnit Генерація документації API з використанням інструментів на зразок Javadoc чи doxygen Зневаджувач

Узагальнюючи, Енді Хант та Дейв Томас відмітили важливість керування версіями, менеджменту залежностей, інструментів для індексування текстів на зразок GLIMPSE та SWISH-E, і «креслення карти на самому початку розвідки»

Як і справжня археологія, програмна археологія включає дослідження для того щоб зрозуміти мисленнєві процеси попередників. На семінарі OOPSLA, Вард Каннінгам запропонував спосіб що дозволяє «відчути» загальну організацію програми, показуючи тільки пунктуацію, наприклад лише крапки з комою та фігурні дужки.Вард Каннінгам, «Signature Survey: A Method for Browsing Unfamiliar Code , „ Workshop Position Statement, Software Archeology: Understanding Large Systems, OOPSLA 2001. В тому ж настрої Каннінгам запропонував переглядати код програми шрифтом розміром два пункти, щоб побачити структуру загалом.“Software Archeology » on John D. Cook's blog The Endeavour, November 10, 2009. Інший підхід запропонований на семінарі — використовувати аспектно-орієнтоване програмування, наприклад такі інструменти як AspectJ щоб систематично додавати код трасування не редагуючи успадковану програму на пряму.

Програмна археологія продовжує бути предметом дискусії й на більш недавніх конференціях з розробки програмного забезпечення.Наприклад, 32nd ACM/IEEE International Conference on Software Engineering в Кейптауні, травень 2010.

Див. також

Рефакторинг Крихкість програмного забезпечення Гниття програмного забезпечення

Примітки

Посилання Writing code, reading code and software archeology, Once More into the Code blog at Computerworld, September 23, 2009 How To Apply Software Archeology To Your Development Process , презентація Майкла Розлога, 13 березня, 2008 OOPSLA 2008 Podcast з Граді Бучем про програмну археологію та пов'язані теми