Археологія програмного забезпечення

Археоло́гія програ́много забезпе́чення — вивчення погано, чи взагалі не документованої успадкованої системи, як елементу супроводження програмного забезпечення. [1] [2] Програмна археологія, названа по аналогії з археологією, [3] включає в себе обернену інженерію програмних модулів, і застосування різноманітних інструментів та процесів для виокремлення інформації розуміння інформації про проектування системи. [1] [4] Програмна археологія може розкрити дисфункціональні процеси в команді, які створили погано спроектовані чи навіть невикористовувані програмні модулі [5] Термін використовується протягом кількох десятиліть, [6] і відображає досить природну метафору: програміст що читає успадкований код може відчувати себе в ситуації аналогічній до тієї що відчуває себе археологом який досліджує нашарування стародавньої цивілізації [7]

Підходи ред.

Майстер-клас по програмній археології на конференції OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) в 2001 виокремив наступні підходи в програмній археології, деякі з яких є специфічними для ООП:[7]

  • Скриптові мови для побудови статичних звітів та фільтрації діагностичного виводу
  • Створення документації в HTML сторінках чи вікі
  • Статистичний аналіз та інструменти візуалізації програмного забезпечення
  • Інструменти оберненої інженерії
  • Трасування на рівні операційної системи за допомогою truss чи strace
  • Пошукові машини та інші інструменти для пошуку ключових слів в вихідних файлах
  • Браузер файлів в IDE
  • Покривання тестами, наприклад за допомогою JUnit чи CppUnit
  • Генерація документації API з використанням інструментів на зразок Javadoc чи doxygen
  • Зневаджувач

Узагальнюючи, Енді Хант та Дейв Томас відмітили важливість керування версіями, менеджменту залежностей, інструментів для індексування текстів на зразок GLIMPSE та SWISH-E, і «креслення карти на самому початку розвідки»[7]

Як і справжня археологія, програмна археологія включає дослідження для того щоб зрозуміти мисленнєві процеси попередників.[7] На семінарі OOPSLA, Вард Каннінгам запропонував спосіб що дозволяє «відчути» загальну організацію програми, показуючи тільки пунктуацію, наприклад лише крапки з комою та фігурні дужки.[8] В тому ж настрої Каннінгам запропонував переглядати код програми шрифтом розміром два пункти, щоб побачити структуру загалом.[9] Інший підхід запропонований на семінарі — використовувати аспектно-орієнтоване програмування, наприклад такі інструменти як AspectJ щоб систематично додавати код трасування не редагуючи успадковану програму на пряму.[7]

Програмна археологія продовжує бути предметом дискусії й на більш недавніх конференціях з розробки програмного забезпечення.[10]

Див. також ред.

Примітки ред.

  1. а б Gregorio Robles, Jesus M. Gonzalez-Barahona, and Israel Herraiz, «An Empirical Approach to Software Archaeology [Архівовано 20 січня 2020 у Wayback Machine.], „ Poster Proceedings of the International Conference on Software Maintenance, 2005.
  2. Agile Legacy System Analysis and Integration Modeling [Архівовано 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… This effort is often referred to as software archaeology.»
  3. Bryon Moyer, "Software Archeology: Modernizing Old Systems [Архівовано 19 липня 2011 у Wayback Machine.], " Embedded Technology Journal, March 4, 2009.
  4. Richard Hopkins and Kevin Jenkins, Eating the IT Elephant: Moving from greenfield development to brownfield [Архівовано 23 березня 2015 у Wayback Machine.], Addison-Wesley, 2008, ISBN 0-13-713012-0, p. 93.
  5. Diomidis Spinellis and Georgios Gousios, Beautiful Architecture [Архівовано 22 березня 2015 у Wayback Machine.], O'Reilly, 2009, ISBN 0-596-51798-X, p. 29.
  6. An early discussion is Judith E. Grass, "Object-Oriented Design Archaeology with CIA++, " Computing Systems, Vol. 5, No. 1, Winter 1992.
  7. а б в г д Енді Хант та Дейв Томас, «Software Archaeology [Архівовано 9 листопада 2020 у Wayback Machine.]», IEEE Software, vol. 19, no. 2, pp. 20-22, Mar./Apr. 2002, DOI:10.1109/52.991327.
  8. Вард Каннінгам, «Signature Survey: A Method for Browsing Unfamiliar Code [Архівовано 22 серпня 2010 у Wayback Machine.], „ Workshop Position Statement, Software Archeology: Understanding Large Systems, OOPSLA 2001.
  9. Software Archeology [Архівовано 6 березня 2012 у Wayback Machine.]» on John D. Cook's blog The Endeavour, November 10, 2009.
  10. Наприклад, 32nd ACM/IEEE International Conference on Software Engineering в Кейптауні, травень 2010.

Посилання ред.