Dentro de la ingeniería de software , el campo de minería de repositorios de software [ 1 ] ( MSR ) [ 2 ] analiza los datos abundantes disponibles en los repositorios de software, como repositorios de control de versiones , archivos de listas de correo , sistemas de seguimiento de errores , sistemas de seguimiento de incidencias , etc., para descubrir información interesante y procesable sobre sistemas de software , proyectos e ingeniería de software .
Definición
Herzig y Zeller definen la “minería de archivos de software” como un proceso para “obtener mucha evidencia inicial” mediante la extracción de datos de repositorios de software. Además, definen las “fuentes de datos” como artefactos basados en productos, como el código fuente, los artefactos de requisitos o los archivos de versiones, y afirman que estas fuentes son imparciales, pero ruidosas e incompletas. [ 3 ]
Técnicas
Análisis de cambios acoplados
La idea del análisis de cambios acoplados es que los desarrolladores modifican frecuentemente entidades de código (por ejemplo, archivos) de forma conjunta para corregir defectos o introducir nuevas funcionalidades. Estos acoplamientos entre las entidades a menudo no se explicitan en el código ni en otros documentos. En particular, los desarrolladores nuevos en el proyecto desconocen qué entidades deben modificarse conjuntamente. El análisis de cambios acoplados busca extraer este acoplamiento del sistema de control de versiones del proyecto. Mediante las confirmaciones y la cronología de los cambios, podemos identificar qué entidades se modifican frecuentemente de forma conjunta. Esta información podría presentarse a los desarrolladores que estén a punto de modificar una de las entidades para facilitarles sus modificaciones posteriores. [ 4 ]
Análisis de compromiso
En los sistemas de control de versiones existen muchos tipos diferentes de confirmaciones, por ejemplo, confirmaciones de corrección de errores, confirmaciones de nuevas funcionalidades, confirmaciones de documentación, etc. Para tomar decisiones basadas en datos a partir de confirmaciones anteriores, es necesario seleccionar subconjuntos de confirmaciones que cumplan un criterio determinado. Esto se puede hacer a partir del mensaje de la confirmación. [ 5 ]
Generación de documentación
Es posible generar documentación útil a partir de repositorios de software de minería. Por ejemplo, Jadeite calcula estadísticas de uso y ayuda a los nuevos usuarios a identificar rápidamente las clases más utilizadas. [ 6 ]
Datos y herramientas
Los datos de minería de datos provienen principalmente de sistemas de control de versiones. Los primeros experimentos de minería se realizaron en repositorios CVS. [ 7 ] Posteriormente, los investigadores analizaron exhaustivamente los repositorios SVN. [ 8 ] Actualmente, los repositorios Git son los predominantes. [ 9 ] Dependiendo de la naturaleza de los datos requeridos (tamaño, dominio, procesamiento), se pueden descargar datos de cualquiera de estas fuentes. Sin embargo, la gobernanza y la recopilación de datos para la creación de grandes modelos de lenguaje han cambiado las reglas del juego, al integrar el uso de rastreadores web para obtener datos de múltiples fuentes y dominios.
Véase también
Referencias
- ↑ Hassan, Ahmed E. (2008). "El camino a seguir para la minería de repositorios de software" . Fronteras del mantenimiento de software 2008. IEEE. pp. 48–57 .
- ↑ Conferencia de trabajo sobre minería de repositorios de software , la principal conferencia de ingeniería de software en el área
- ↑ KS Herzig y A. Zeller, “Extrayendo tu propia evidencia”, en Making Software, págs. 517–529, Sebastopol, California, EE. UU.: O'Reilly, 2011.
- ↑ Gall, H.; Hajek, K.; Jazayeri, M. (1998). "Detección de acoplamiento lógico basada en el historial de lanzamientos de productos". Actas de la Conferencia Internacional sobre Mantenimiento de Software (Cat. No. 98CB36272) . págs. 190–198 . CiteSeerX 10.1.1.199.7754 . doi : 10.1109/icsm.1998.738508 . ISBN 978-0-8186-8779-2.
- ↑ Hindle, Abram; German, Daniel M.; Godfrey, Michael W.; Holt, Richard C. (2009). "Clasificación automática de grandes cambios en categorías de mantenimiento". 2009 IEEE 17th International Conference on Program Comprehension . pp. 30–39 . doi : 10.1109/ICPC.2009.5090025 . ISBN 978-1-4244-3998-0.
- ↑ Stylos, Jeffrey; Faulring, Andrew; Yang, Zizhuang; Myers, Brad A. (2009). "Mejora de la documentación de API mediante información de uso de API". Simposio IEEE de 2009 sobre lenguajes visuales y computación centrada en el ser humano (VL/HCC) . págs. 119–126 . doi : 10.1109/VLHCC.2009.5295283 . ISBN 978-1-4244-4876-0.
- ↑ Canfora, G.; Cerulo, L. (2005). "Análisis de impacto mediante la minería de repositorios de software y solicitudes de cambio". 11.º Simposio Internacional de Métricas de Software de la IEEE (METRICS'05) . pág. 29. doi : 10.1109/METRICS.2005.28 . ISBN 978-0-7695-2371-2.
- ↑ d'Ambros, Marco; Gall, Harald; Lanza, Michele; Pinzger, Martin (2008). «Análisis de repositorios de software para comprender la evolución del software». Evolución del software . págs. 37–67 . doi : 10.1007/978-3-540-76440-3_3 . ISBN 978-3-540-76439-7.
- ↑ Kalliamvakou, Eirini; Gousios, Georgios; Blincoe, Kelly; Singer, Leif; German, Daniel M.; Damian, Daniela (2014). «Las promesas y los peligros de la minería de GitHub». Actas de la 11.ª Conferencia de Trabajo sobre Minería de Repositorios de Software - MSR 2014. págs. 92–101 . doi : 10.1145/2597073.2597074 . ISBN 9781450328630.
- Ingeniería de software