Программная ошибка
- 1 year ago
- 0
- 0
Программная археология — дисциплина, изучающая слабо документированное или недокументированное , в целях его сопровождения . Программная археология включает в себя обратную разработку приложений, использование специальных инструментальных средств и технологических процессов для извлечения и понимания структуры кода, восстановления замысла его разработчиков . Программная археология помогает обнаружить проблемы, связанные с неудачной архитектурой приложения и отмершим (неиспользуемым) кодом . Термин используется уже несколько десятилетий и отражает следующую метафору: разработчик, читающий код унаследованного программного обеспечения, ощущает себя так же, как и археолог, исследующий памятники древней цивилизации .
В 2001 году на конференции секция программной археологии определила следующие инструменты и методы программной археологии, некоторые из которых относятся к объектно-ориентированному программированию :
В целях систематической трассировки вызовов функций без широкомасштабного редактирования кодовой базы исследуемого приложения можно успешно применять аспектно-ориентированное программирование (например, AspectJ для Java, для C# .NET), разработав аспектные классы для получения средствами рефлексии информации о состоянии стека вызовов, отфильтровывания из него нужной информации и записи ее в журнальный файл или окно протокола работы (т.н. лога) приложения.
При сопровождении экспертной системы важным источником информации о логике ее работы являются сообщения подсистемы объяснений .
и указывают на важность использования системы контроля версий , контейнера управления зависимостями, инструментов индексирования текста (GLIMPSE, SWISH-E) и «[составления] карты исследования» .
Подобно настоящей археологии, программная археология предполагает исследовательскую работу для понимания мыслительных процессов предшественников . На секции OOPSLA Уорд Каннингем предложил так называемый «синоптический сигнатурный анализ», который дает в первом приближении понимание «духа» программы путём показа разработчику только лишь пунктуации кода (двоеточия, операторные скобки ) . Также Каннингем предложил рассматривать программы, напечатанные минимально возможным шрифтом, для понимания общей структуры программы .
Методы сетевого и временно́го анализа, расширение для Microsoft Visual Studio могут помочь обнаружить шаблоны совместной деятельности разработчиков унаследованного ПО, которые, в свою очередь, могут пролить свет на силы и слабости получившегося в итоге кода .
Майкл Розлог из Embarcadero Technologies описал программную археологию как процесс из шести шагов, который позволяет разработчикам ответить на такие вопросы: «Что досталось мне в наследство?» и «В каких местах этот код ужасен?» Эти шаги, как и обнаруженные секцией OOPSLA, включая визуализацию кода для понимания архитектуры приложения, используют метрики программного обеспечения для поиска нарушений принципов проектирования и стиля программирования, модульное тестирование и профилирование для поиска дефектов ПО (т.н. багов) и узких мест в производительности, а также сбор информации о структуре приложения, восстановленной в процессе программно-археологических раскопок . Программная археология может также быть услугой, предоставляемой штатным разрабочикам внешними консультантами .
Митч Розенберг (InfoVentions.net) утверждает, что «первый закон программной археологии» звучит так:
Оно здесь находится не просто так, и причина может быть одна из трёх:
- Оно должно было быть здесь, но уже не должно .
- Ему не нужно было быть здесь, а программист, написавший это, не ведал, что творил .
- Оно всё еще должно быть здесь, и это Вы не ведаете, что творите .
Следствие этого «закона»: пока причина неизвестна, не следует изменять код (или данные)
.