Dentro de la ingeniería de software , el campo de minería de repositorios de software [1] ( MSR ) [2] analiza los ricos datos 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 problemas , etc. para descubrir información interesante y útil sobre sistemas de software , proyectos e ingeniería de software .
Herzig y Zeller definen la “minería de archivos de software” como un proceso para “obtener una gran cantidad de 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, artefactos de requisitos o archivos de versiones y afirman que estas fuentes son imparciales, pero ruidosas e incompletas. [3]
La idea del análisis de cambios acoplados es que los desarrolladores cambien las entidades del código (por ejemplo, archivos) juntas con frecuencia para corregir defectos o introducir nuevas características. Estos acoplamientos entre las entidades a menudo no se hacen explícitos en el código u otros documentos. Especialmente los desarrolladores nuevos en el proyecto no saben qué entidades deben cambiarse juntas. El análisis de cambios acoplados tiene como objetivo extraer el acoplamiento del sistema de control de versiones de un proyecto. A través de las confirmaciones y el momento de los cambios, podríamos identificar qué entidades cambian juntas con frecuencia. Esta información podría luego presentarse a los desarrolladores que estén a punto de cambiar una de las entidades para ayudarlos en sus cambios posteriores. [4]
Existen muchos tipos diferentes de commits en los sistemas de control de versiones, por ejemplo, commits de corrección de errores, commits de nuevas características, commits de documentación, etc. Para tomar decisiones basadas en datos basados en commits anteriores, es necesario seleccionar subconjuntos de commits que cumplan con un criterio determinado. Esto se puede hacer en función del mensaje de commit. [5]
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 principiantes a identificar rápidamente las clases de uso común. [6]
Los datos de minería primarios provienen de sistemas de control de versiones. Los primeros experimentos de minería se realizaron en repositorios CVS. [7] Luego, los investigadores analizaron exhaustivamente los repositorios SVN. [8] Ahora, los repositorios Git son dominantes. [9] Dependiendo de la naturaleza de los datos requeridos (tamaño, dominio, procesamiento), uno puede descargar datos de una de estas fuentes. Sin embargo, la gobernanza de datos y la recopilación de datos con el fin de construir modelos de lenguaje grandes han llegado a cambiar las reglas del juego, al integrar el uso de rastreadores web para obtener datos de múltiples fuentes y dominios.