stringtranslate.com

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

Археология программного обеспечения или археология исходного кода — это изучение плохо документированных или недокументированных реализаций устаревшего программного обеспечения в рамках обслуживания программного обеспечения . [1] [2] Археология программного обеспечения, названная по аналогии с археологией , [3] включает в себя обратную разработку программных модулей и применение различных инструментов и процессов для извлечения и понимания структуры программы и восстановления проектной информации. [1] [4] Археология программного обеспечения может выявить дисфункциональные командные процессы, которые создали плохо спроектированные или даже неиспользуемые программные модули, а в некоторых случаях может быть обнаружен намеренно запутывающий код . [5] Этот термин используется уже несколько десятилетий. [6]

Программная археология продолжает оставаться темой обсуждения на недавних конференциях по программной инженерии. [7]

Методы

Семинар по программной археологии на конференции OOPSLA (Объектно-ориентированное программирование, системы, языки и приложения) 2001 года выявил следующие методы программной археологии, некоторые из которых специфичны для объектно-ориентированного программирования : [8]

В более общем плане Энди Хант и Дэйв Томас отмечают важность контроля версий , управления зависимостями , инструментов индексации текста, таких как GLIMPSE и SWISH-E , и «[рисования] карты по мере начала исследования». [8]

Как и настоящая археология, программная археология включает в себя исследовательскую работу по пониманию мыслительных процессов предшественников. [8] На семинаре OOPSLA Уорд Каннингем предложил метод синоптического анализа сигнатур, который давал общее «ощущение» программы, показывая только знаки препинания, такие как точки с запятой и фигурные скобки . [9] В том же духе Каннингем предложил просматривать программы шрифтом 2 пункта, чтобы понять общую структуру. [10] Еще одним методом, выявленным на семинаре, было использование инструментов аспектно-ориентированного программирования, таких как AspectJ, для систематического внедрения кода трассировки без непосредственного редактирования устаревшей программы. [8]

Методы сетевого и временного анализа могут выявить закономерности совместной деятельности разработчиков устаревшего программного обеспечения, что, в свою очередь, может пролить свет на сильные и слабые стороны созданных программных артефактов. [11]

Майкл Розлог из Embarcadero Technologies описал программную археологию как шестишаговый процесс, который позволяет программистам ответить на такие вопросы, как «Что я только что унаследовал?» и «Где находятся пугающие разделы кода?» [12] Эти шаги, похожие на те, которые были определены на семинаре OOPSLA, включают использование визуализации для получения визуального представления дизайна программы, использование программных метрик для поиска нарушений дизайна и стиля, использование модульного тестирования и профилирования для поиска ошибок и узких мест производительности, а также сборку информации о дизайне, восстановленной в ходе процесса. [12] Программная археология также может быть услугой, предоставляемой программистам внешними консультантами. [13]

В популярной культуре

Профессия « программист-археолог » занимает видное место в научно-фантастическом романе Вернора Винджа 1999 года «Глубина в небе» . [14]

Смотрите также

Ссылки

  1. ^ ab Роблес, Грегорио; Гонсалес-Бараона, Хесус М.; Херраис, Израиль (2005). "Эмпирический подход к археологии программного обеспечения" (PDF) . Стендовые материалы Международной конференции по обслуживанию программного обеспечения .
  2. ^ Эмблер, Скотт В. "Анализ и моделирование интеграции гибких систем". agilemodeling.com . Получено 20.08.2010 . Без точной документации или доступа к знающим людям вашим последним средством может стать анализ исходного кода унаследованной системы... Эти усилия часто называют программной археологией.
  3. ^ Мойер, Брайон (4 марта 2009 г.). "Археология программного обеспечения: модернизация старых систем" (PDF) . Embedded Technology Journal .
  4. ^ Хопкинс, Ричард; Дженкинс, Кевин (2008). "5. Мифический метамен". Поедание IT-слона: переход от разработки новых месторождений к уже существующим . Addison-Wesley. стр. 93. ISBN 978-0-13-713012-2.
  5. ^ Спинеллис, Диомидис ; Гусиос, Георгиос (2009). "2. История двух систем § Отсутствие сплоченности". Прекрасная архитектура . O'Reilly. стр. 29. ISBN 978-0-596-51798-4.
  6. ^ Раннее обсуждение - Grass, Judith E. (зима 1992 г.). "Археология объектно-ориентированного проектирования с CIA++" (PDF) . Вычислительные системы . 5 (1).
  7. ^ Например, «32-я Международная конференция ACM/IEEE по программной инженерии». Май 2010 г..
  8. ^ abcd Хант, Энди ; Томас, Дэйв (март–апрель 2002 г.). «Археология программного обеспечения» (PDF) . IEEE Software . 19 (2): 20–22. doi :10.1109/52.991327.
  9. ^ Каннингем, Уорд (2001). «Обследование сигнатур: метод просмотра незнакомого кода». Заявление о позиции семинара, Археология программного обеспечения: понимание больших систем, OOPSLA 2001 .
  10. ^ Кук, Джон Д. (10 ноября 2009 г.). «Археология программного обеспечения». The Endeavour .
  11. ^ де Соуза, Клейдсон; Фрёлих, Джон; Дуриш, Пол (2005). «В поисках источника: исходный код программного обеспечения как социальный и технический артефакт» (PDF) . Труды Международной конференции ACM SIGGROUP 2005 года по поддержке групповой работы . стр. 197–206. doi :10.1145/1099203.1099239. ISBN 1595932232.
  12. ^ ab Розлог, Майкл (28 января 2008 г.). «Археология программного обеспечения: что это такое и почему это должно волновать разработчиков Java?». java.sys-con.com.
  13. Шарвуд, Саймон (3 ноября 2004 г.). «В поисках утраченного кода». ZDNet .
  14. ^ Риз, Гарет (12 июня 2013 г.). «Археология программного обеспечения и технический долг».

Внешние ссылки