Программная археология
Археология программного обеспечения или археология исходного кода — это исследование плохо документированных или недокументированных устаревших реализаций программного обеспечения в рамках обслуживания программного обеспечения . [1] [2] Программная археология, названная по аналогии с археологией , [3] включает обратное проектирование программных модулей и применение различных инструментов и процессов для извлечения и понимания структуры программы и восстановления проектной информации. [1] [4] Археология программного обеспечения может выявить дисфункциональные командные процессы, в результате которых были созданы плохо спроектированные или даже неиспользуемые программные модули, а в некоторых случаях может быть обнаружен намеренно запутанный код. [5] Этот термин используется уже несколько десятилетий. [6]
Археология программного обеспечения продолжает оставаться темой обсуждения на последних конференциях по разработке программного обеспечения. [7]
Техники [ править ]
Семинар по археологии программного обеспечения на конференции OOPSLA (Объектно-ориентированное программирование, системы, языки и приложения) 2001 года выявил следующие методы археологии программного обеспечения, некоторые из которых специфичны для объектно-ориентированного программирования : [8]
- Языки сценариев для создания статических отчетов и фильтрации результатов диагностики.
- Текущая документация на HTML-страницах или вики.
- Синоптический анализ сигнатур, статистический анализ и визуализации программные инструменты
- Инструменты обратного проектирования
- Трассировка на уровне операционной системы с помощью truss или strace
- Поисковые системы и инструменты для поиска ключевых слов в исходных файлах
- IDE просмотр файлов
- Платформы модульного тестирования, такие как JUnit и CppUnit.
- Создание документации API с использованием таких инструментов, как Javadoc и doxygen.
- Отладчики
В более общем плане Энди Хант и Дэйв Томас отмечают важность контроля версий , управления зависимостями , инструментов индексирования текста, таких как GLIMPSE и SWISH-E , и «[рисования] карты, когда вы начинаете исследовать». [8]
Как и настоящая археология, программная археология включает в себя исследовательскую работу, направленную на понимание мыслительных процессов своих предшественников. [8] На семинаре OOPSLA Уорд Каннингем предложил метод синоптического анализа сигнатур, который давал общее представление о программе, показывая только знаки препинания, такие как точки с запятой и фигурные скобки . [9] В том же духе Каннингем предложил просматривать программы шрифтом в 2 пункта, чтобы понять общую структуру. [10] Еще одним методом, выявленным на семинаре, было использование инструментов аспектно-ориентированного программирования, таких как AspectJ, для систематического внедрения кода трассировки без прямого редактирования устаревшей программы. [8]
Методы сетевого и временного анализа могут выявить закономерности совместной деятельности разработчиков устаревшего программного обеспечения, что, в свою очередь, может пролить свет на сильные и слабые стороны создаваемых программных артефактов. [11]
Майкл Розлог из Embarcadero Technologies описал археологию программного обеспечения как шестиэтапный процесс, который позволяет программистам отвечать на такие вопросы, как «Что я только что унаследовал?» и «Где страшные участки кода?» [12] Эти шаги, аналогичные шагам, определенным на семинаре OOPSLA, включают использование визуализации для получения визуального представления дизайна программы, использование показателей программного обеспечения для поиска нарушений дизайна и стиля, использование модульного тестирования и профилирования для поиска ошибок и узких мест в производительности, а также сбор проектной информации, полученной в процессе. [12] Археология программного обеспечения также может быть услугой, предоставляемой программистам внешними консультантами. [13]
В популярной культуре [ править ]
Профессия « программист-археолог » занимает видное место в научно-фантастическом романе Вернора Винджа 1999 года «Глубина в небе» . [14]
См. также [ править ]
- Восстановление архитектуры программного обеспечения
- Рефакторинг кода
- Ретрокомпьютинг
- Хрупкость программного обеспечения
- Программное гниение
- Энтропия программного обеспечения
- Заброшенное ПО
Ссылки [ править ]
- ^ Jump up to: а б Роблес, Грегорио; Гонсалес-Бараона, Хесус М.; Херраиз, Израиль (2005). «Эмпирический подход к археологии программного обеспечения» (PDF) . Стендовые материалы Международной конференции по сопровождению программного обеспечения .
- ^ Эмблер, Скотт В. «Анализ устаревших гибких систем и интеграционное моделирование» . www.agilemodeling.com . Проверено 20 августа 2010 г.
Без точной документации или доступа к знающим людям последним средством может стать анализ исходного кода устаревшей системы... Эту попытку часто называют археологией программного обеспечения.
- ^ Мойер, Брайон (4 марта 2009 г.). «Археология программного обеспечения: модернизация старых систем» (PDF) . Журнал встраиваемых технологий .
- ^ Хопкинс, Ричард; Дженкинс, Кевин (2008). «5. Мифический Метачеловек» . Поедание ИТ-слона: переход от разработки с нуля к действующей технологии . Аддисон-Уэсли. п. 93. ИСБН 978-0-13-713012-2 .
- ^ Спинеллис, Диомидис ; Гусиос, Георгиос (2009). «2. Повесть о двух системах § Отсутствие сплоченности» . Красивая архитектура . О'Рейли. п. 29. ISBN 978-0-596-51798-4 .
- ^ Раннее обсуждение Грасс, Джудит Э. (зима 1992 г.). «Археология объектно-ориентированного дизайна с CIA ++» (PDF) . Вычислительные системы . 5 (1).
- ^ Например, «32-я Международная конференция ACM/IEEE по программной инженерии» . Май 2010. .
- ^ Jump up to: а б с д Хант, Энди ; Томас, Дэйв (март – апрель 2002 г.). «Археология программного обеспечения» (PDF) . Программное обеспечение IEEE . 19 (2): 20–22. дои : 10.1109/52.991327 .
- ^ Каннингем, Уорд (2001). «Опрос сигнатур: метод просмотра незнакомого кода» . Заявление о позиции семинара, Археология программного обеспечения: понимание больших систем, OOPSLA 2001 .
- ^ Кук, Джон Д. (10 ноября 2009 г.). «Программная археология» . Стремление .
- ^ де Соуза, Клейдсон; Фрелих, Джон; Дуриш, Пол (2005). «В поисках источника: исходный код программного обеспечения как социальный и технический артефакт» (PDF) . Материалы Международной конференции ACM SIGGROUP 2005 г. по поддержке групповой работы . стр. 197–206. дои : 10.1145/1099203.1099239 . ISBN 1595932232 .
- ^ Jump up to: а б Розлог, Михаил (28 января 2008 г.). «Археология программного обеспечения: что это такое и почему это должно волновать разработчиков Java?» . java.sys-con.com.
- ^ Шарвуд, Саймон (3 ноября 2004 г.). «В поисках утраченного кода» . ЗДНет .
- ^ Рис, Гарет (12 июня 2013 г.). «Археология программного обеспечения и технический долг» .
Внешние ссылки [ править ]
- «Позиционные документы» . Семинар OOPSLA 2001 по археологии программного обеспечения: понимание больших систем . Архивировано из оригинала 12 июня 2010 г.
- «Написание кода, чтение кода и археология программного обеспечения» . Еще раз в Кодекс . Компьютерный мир . 23 сентября 2009 г. Архивировано из оригинала 29 января 2011 г.
- Розлог, Михаил (13 марта 2008 г.). «Как применить археологию программного обеспечения в процессе разработки» (PDF) .
- «Подкаст OOPSLA 2008 с Грэди Бучом по археологии программного обеспечения и смежным темам» (Подкаст). 2008. Архивировано из оригинала 26 сентября 2011 г.