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

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