Программная археология — дисциплина, изучающая плохо документированное или недокументированное устаревшее программное обеспечение, в целях его сопровождения[1][2]. Компьютерная археология включает в себя обратную разработку программ, использование множества инструментов и процессов для извлечения и понимания структуры программы и восстановления замысла разработчиков[1][3]. Компьютерная археология может обнаружить проблемы, связанные с плохой архитектурой приложения и неиспользуемым кодом[4]. Термин используется уже несколько десятилетий[5] и отражает следующую метафору: программист, читающий устаревшее программное обеспечение, ощущает себя так же, как и археолог, исследующий руины древней цивилизации[6].
В 2001 году на конференции OOPSLA секция компьютерной археологии определила следующие инструменты и методы компьютерной археологии, некоторые из которых относятся к объектно-ориентированному программированию[6]:
Энди Хант и Дейв Томас указывают на важность контроля версий, управления зависимостями, инструментов индексирования текста (GLIMPSE, SWISH-E) и «[составления] карты исследования»[6].
Подобно настоящей археологии, компьютерная археология предполагает исследовательскую работу для понимания мыслительных процессов предков[6]. На секции OOPSLA Уорд Каннингем предложил так называемый «синоптический сигнатурный анализ», который дает понимание «духа» программы путём показывания программисту только лишь пунктуации кода (двоеточия, операторные скобки)[7]. Также Каннингем предложил рассматривать программы, напечатанные минимально возможным шрифтом для понимания общей структуры программы[8]. Возможно также использование аспектно-ориентированного программирования (например, AspectJ) для систематической трассировки кода без редактирования исследуемой программы[6].
Методы сетевого и временно́го анализа могут обнаружить шаблоны совместной деятельности разработчиков устаревшего ПО, которые, в свою очередь, могут пролить свет на силы и слабости получившегося в итоге кода[9].
Майкл Розлог из Embarcadero Technologies описал компьютерную археологию как процесс из шести шагов, который позволяет программистам ответить на такие вопросы: «Что досталось мне в наследство?» и «В каких местах этот код ужасен?»[10] Эти шаги, как и обнаруженные секцией OOPSLA, включая визуализацию кода для понимания архитектуры программы, используют метрики программного обеспечения для поиска нарушений дизайна и стиля программирования, модульное тестирование и профилирования для поиска багов и узких мест в производительности, и сбор информации о структуре приложения, восстановленной в процессе[10]. Компьютерная археология может также быть услугой, предоставляемой программистам внешними консультантами[11].
Митч Розенберг (InfoVentions.net) утверждает, что «первый закон компьютерной археологии» звучит так:
![]() |
Оно здесь находится не просто так, и причина может быть одна из трёх:
| ![]() |
.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .