stringtranslate.com

Arqueología del software

La arqueología del software o arqueología del código fuente es el estudio de implementaciones de software heredado mal documentadas o no documentadas , como parte del mantenimiento del software . [1] [2] La arqueología del software, llamada así por analogía con la arqueología , [3] incluye la ingeniería inversa de módulos de software y la aplicación de una variedad de herramientas y procesos para extraer y comprender la estructura del programa y recuperar información de diseño. [1] [4] La arqueología del software puede revelar procesos de equipo disfuncionales que han producido módulos de software mal diseñados o incluso sin usar, y en algunos casos se puede encontrar código deliberadamente ofuscador . [5] El término ha estado en uso durante décadas. [6]

La arqueología del software ha seguido siendo un tema de discusión en conferencias de ingeniería de software más recientes. [7]

Técnicas

Un taller sobre arqueología de software en la conferencia OOPSLA (Programación orientada a objetos, sistemas, lenguajes y aplicaciones) de 2001 identificó las siguientes técnicas de arqueología de software, algunas de las cuales son específicas de la programación orientada a objetos : [8]

En términos más generales, Andy Hunt y Dave Thomas destacan la importancia del control de versiones , la gestión de dependencias , las herramientas de indexación de texto como GLIMPSE y SWISH-E y "[dibujar] un mapa a medida que comienzas a explorar". [8]

Al igual que la verdadera arqueología, la arqueología del software implica un trabajo de investigación para comprender los procesos de pensamiento de los predecesores. [8] En el taller OOPSLA, Ward Cunningham sugirió una técnica de análisis de firma sinóptica que daba una "sensación" general de un programa al mostrar solo la puntuación, como punto y coma y llaves . [9] En la misma línea, Cunningham ha sugerido ver los programas en una fuente de 2 puntos para comprender la estructura general. [10] Otra técnica identificada en el taller fue el uso de herramientas de programación orientada a aspectos como AspectJ para introducir sistemáticamente código de seguimiento sin editar directamente el programa heredado. [8]

Las técnicas de análisis temporal y de redes pueden revelar los patrones de actividad colaborativa de los desarrolladores de software heredado, lo que a su vez puede arrojar luz sobre las fortalezas y debilidades de los artefactos de software producidos. [11]

Michael Rozlog, de Embarcadero Technologies, ha descrito la arqueología de software como un proceso de seis pasos que permite a los programadores responder a preguntas como "¿Qué acabo de heredar?" y "¿Dónde están las secciones del código que dan miedo?" [12]. Estos pasos, similares a los identificados en el taller OOPSLA, incluyen el uso de la visualización para obtener una representación visual del diseño del programa, el uso de métricas de software para buscar violaciones de diseño y estilo, el uso de pruebas unitarias y creación de perfiles para buscar errores y cuellos de botella en el rendimiento, y el ensamblaje de la información de diseño recuperada por el proceso. [12] La arqueología de software también puede ser un servicio proporcionado a los programadores por consultores externos. [13]

En la cultura popular

La profesión de " programador-arqueólogo " ocupa un lugar destacado en la novela de ciencia ficción de Vernor Vinge de 1999 , A Deepness in the Sky . [14]

Véase también

Referencias

  1. ^ ab Robles, Gregorio; Gonzalez-Barahona, Jesus M.; Herraiz, Israel (2005). "Un enfoque empírico a la arqueología del software" (PDF) . Actas de la Conferencia Internacional sobre Mantenimiento de Software .
  2. ^ Ambler, Scott W. "Agile Legacy System Analysis and Integration Modeling". agilemodeling.com . Consultado el 20 de agosto de 2010. Sin una documentación precisa o acceso a personas con conocimientos, su último recurso puede ser analizar el código fuente del sistema heredado... Este esfuerzo se conoce a menudo como arqueología del software.
  3. ^ Moyer, Bryon (4 de marzo de 2009). "Arqueología del software: modernización de sistemas antiguos" (PDF) . Embedded Technology Journal .
  4. ^ Hopkins, Richard; Jenkins, Kevin (2008). "5. El mítico Metaman". Devorando al elefante de la TI: pasando del desarrollo de terrenos verdes al desarrollo de terrenos industriales abandonados . Addison-Wesley. pág. 93. ISBN 978-0-13-713012-2.
  5. ^ Spinellis, Diomidis ; Gousios, Georgios (2009). "2. Una historia de dos sistemas § Falta de cohesión". Arquitectura hermosa . O'Reilly. p. 29. ISBN 978-0-596-51798-4.
  6. ^ Una discusión temprana se encuentra en Grass, Judith E. (Winter 1992). "Arqueología del diseño orientado a objetos con CIA++" (PDF) . Computing Systems . 5 (1).
  7. ^ Por ejemplo, la "32ª Conferencia Internacional ACM/IEEE sobre Ingeniería de Software". Mayo de 2010..
  8. ^ abcd Hunt, Andy ; Thomas, Dave (marzo-abril de 2002). "Arqueología del software" (PDF) . IEEE Software . 19 (2): 20-22. doi :10.1109/52.991327.
  9. ^ Cunningham, Ward (2001). "Encuesta de firmas: un método para explorar código desconocido". Declaración de posición del taller, Arqueología del software: comprensión de los sistemas grandes, OOPSLA 2001 .
  10. ^ Cook, John D. (10 de noviembre de 2009). "Arqueología del software". The Endeavour .
  11. ^ de Souza, Cleidson; Froehlich, Jon; Dourish, Paul (2005). "Buscando la fuente: el código fuente del software como un artefacto social y técnico" (PDF) . Actas de la Conferencia Internacional ACM SIGGROUP de 2005 sobre apoyo al trabajo en grupo . págs. 197–206. doi :10.1145/1099203.1099239. ISBN . 1595932232.
  12. ^ ab Rozlog, Michael (28 de enero de 2008). "Arqueología del software: ¿Qué es y por qué debería interesarles a los desarrolladores de Java?". java.sys-con.com.
  13. ^ Sharwood, Simon (3 de noviembre de 2004). "En busca del código perdido". ZDNet .
  14. ^ Rees, Gareth (12 de junio de 2013). "Arqueología del software y deuda técnica".

Enlaces externos