Interested Article - Программная археология

Программная археология — дисциплина, изучающая слабо документированное или недокументированное , в целях его сопровождения . Программная археология включает в себя обратную разработку приложений, использование специальных инструментальных средств и технологических процессов для извлечения и понимания структуры кода, восстановления замысла его разработчиков . Программная археология помогает обнаружить проблемы, связанные с неудачной архитектурой приложения и отмершим (неиспользуемым) кодом . Термин используется уже несколько десятилетий и отражает следующую метафору: разработчик, читающий код унаследованного программного обеспечения, ощущает себя так же, как и археолог, исследующий памятники древней цивилизации .

Инструменты и методы

В 2001 году на конференции секция программной археологии определила следующие инструменты и методы программной археологии, некоторые из которых относятся к объектно-ориентированному программированию :

В целях систематической трассировки вызовов функций без широкомасштабного редактирования кодовой базы исследуемого приложения можно успешно применять аспектно-ориентированное программирование (например, AspectJ для Java, для C# .NET), разработав аспектные классы для получения средствами рефлексии информации о состоянии стека вызовов, отфильтровывания из него нужной информации и записи ее в журнальный файл или окно протокола работы (т.н. лога) приложения.

При сопровождении экспертной системы важным источником информации о логике ее работы являются сообщения подсистемы объяснений .

и указывают на важность использования системы контроля версий , контейнера управления зависимостями, инструментов индексирования текста (GLIMPSE, SWISH-E) и «[составления] карты исследования» .

Подобно настоящей археологии, программная археология предполагает исследовательскую работу для понимания мыслительных процессов предшественников . На секции OOPSLA Уорд Каннингем предложил так называемый «синоптический сигнатурный анализ», который дает в первом приближении понимание «духа» программы путём показа разработчику только лишь пунктуации кода (двоеточия, операторные скобки ) . Также Каннингем предложил рассматривать программы, напечатанные минимально возможным шрифтом, для понимания общей структуры программы .

Методы сетевого и временно́го анализа, расширение для Microsoft Visual Studio могут помочь обнаружить шаблоны совместной деятельности разработчиков унаследованного ПО, которые, в свою очередь, могут пролить свет на силы и слабости получившегося в итоге кода .

Майкл Розлог из Embarcadero Technologies описал программную археологию как процесс из шести шагов, который позволяет разработчикам ответить на такие вопросы: «Что досталось мне в наследство?» и «В каких местах этот код ужасен?» Эти шаги, как и обнаруженные секцией OOPSLA, включая визуализацию кода для понимания архитектуры приложения, используют метрики программного обеспечения для поиска нарушений принципов проектирования и стиля программирования, модульное тестирование и профилирование для поиска дефектов ПО (т.н. багов) и узких мест в производительности, а также сбор информации о структуре приложения, восстановленной в процессе программно-археологических раскопок . Программная археология может также быть услугой, предоставляемой штатным разрабочикам внешними консультантами .

Митч Розенберг (InfoVentions.net) утверждает, что «первый закон программной археологии» звучит так:

Оно здесь находится не просто так, и причина может быть одна из трёх:

  1. Оно должно было быть здесь, но уже не должно .
  2. Ему не нужно было быть здесь, а программист, написавший это, не ведал, что творил .
  3. Оно всё еще должно быть здесь, и это Вы не ведаете, что творите .

Следствие этого «закона»: пока причина неизвестна, не следует изменять код (или данные)

.

См. также

Примечания

  1. Gregorio Robles, Jesus M. Gonzalez-Barahona, and Israel Herraiz, « от 20 января 2020 на Wayback Machine , „ Poster Proceedings of the International Conference on Software Maintenance , 2005.
  2. “ от 23 марта 2021 на Wayback Machine » 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.
  3. Richard Hopkins and Kevin Jenkins, от 23 марта 2015 на Wayback Machine , Addison-Wesley, 2008, ISBN 0-13-713012-0 , p. 93.
  4. Diomidis Spinellis and Georgios Gousios, от 22 марта 2015 на Wayback Machine , O’Reilly, 2009, ISBN 0-596-51798-X , p. 29.
  5. An early discussion is Judith E. Grass, " , " Computing Systems , Vol. 5, No. 1, Winter 1992.
  6. Andy Hunt and Dave Thomas, « от 9 ноября 2020 на Wayback Machine », IEEE Software , vol. 19, no. 2, pp. 20-22, Mar.
  7. Гаврилова Т. А., Хорошевский В. Ф. Базы знаний интеллектуальных систем. — СПб. : Питер, 2000..
  8. Ward Cunningham , « от 22 августа 2010 на Wayback Machine , „ Workshop Position Statement, Software Archeology: Understanding Large Systems, OOPSLA 2001.
  9. “ от 6 марта 2012 на Wayback Machine » on John D. Cook’s blog The Endeavour , November 10, 2009.
  10. Cleidson de Souza, Jon Froehlich, and Paul Dourish, " от 23 сентября 2015 на Wayback Machine , " Proceedings of the 2005 International ACM SIGGROUP Conference on Supporting Group Work, pp. 197—206.
  11. Michael Rozlog, " от 13 июля 2015 на Wayback Machine , " article on java.sys-con.com, January 28, 2008.
  12. Simon Sharwood, от 14 марта 2012 на Wayback Machine , ZDNet , November 3, 2004.
  13. For example, the in Cape Town, South Africa in May 2010
Источник —

Same as Программная археология