Mejorando la calidad software
mediante el análisis del proceso de revisión

El proceso de revisión de código está considerado como una buena práctica de programación ágil, y cada vez son más los proyectos que están incorporando este tipo de técnicas en su proceso de desarrollo.

La motivación principal de este Trabajo Fin de Máster es desarrollar una herramienta que permita evaluar de forma gráfica cómo se está realizando el proceso de revisión de código en diferentes proyectos para poder mejorarlo (por ejemplo escogiendo los revisores adecuados) y con ello, obtener en última instancia un software de mejor calidad, con menos errores, y por tanto, más seguro.

Los datos utilizados por nuestra herramienta son extraídos de GitHub, a través de su API REST.
GitHub es actualmente la mayor plataforma de desarrollo colaborativo, los mayores repositorios software open-source se encuentran alojados en ella. Además, entre sus diversas funcionalidades, GitHub cuenta con un completo sistema para realizar revisiones de código integrado en sus pull requests. Por todo ello estimamos que GitHub era la fuente de datos perfecta para nuestra aplicación.

Premio al mejor TFM 2018

Premio SISTEDES y Accenture technology al mejor Trabajo Fin de Máster sobre "Metodologías y herramientas para el desarrollo software" , Edición de 2018.

Extracción de datos desde GitHub

Extracción de datos desde GitHub

Como la mayoría de API's actuales, la API REST de GitHub, limita el número máximo de peticiones por hora. Actualmente este límite es de 5000.

Para gestionar ese límite, se ha desarrollado un gestor interno que es capaz de encolar solicitudes de extracción de datos, procesarlas mientras haya peticiones disponibles, y esperar a que se reinicie el límite cuando se hayan consumido todas.

Caracterización de repositorios

Caracterización de repositorios

La aplicación permite al usuario caracterizar diferentes repositorios (previamente solicitados a GitHub) mediante diferentes gráficos para comparar un repositorio frente a la media en términos cuantitativos como número de estrellas, número de forks, etc.
Otros gráficos describen como se está realizando el proceso de revisión a lo largo del tiempo, o bien como se utiliza el sistema de pull requests en ese repositorio concreto, etc.

Caracterización de Pull Requests

Caracterización de pull requests

La aplicación también permite caracterizar diferentes pull requests mediante diferentes gráficos sobre comparativas de tamaño (por ejemplo líneas añadidas vs eliminadas) y sobre comparativas frente a la media.

Caracterización de usuarios

Caracterización de usuarios

La caracterización de usuarios (revisores) puede resultar especialmente útil para mejorar el proceso de revisión.
Permite comparar usuarios en términos de revisiones, pull requests y comentarios de revisión.

Exportación de CSV

Exportación de CSV

Además del análisis visual que ofrece la herramienta, es posible exportar todas las revisiones de un repositorio en formato CSV para utilizarlas para otros fines (por ejemplo text mining)

API REST

API REST pública

Los datos utilizados por la aplicación web para crear los diferentes gráficos pueden ser obtenidos en formato JSON a través de la API REST pública que expone la herramienta.
El manual de uso de la API se encuentra disponible en la wiki.

Autor:

Mario Juez Gil

Tutores:

Carlos López Nozal
Raúl Marticorena Sánchez

Trabajo realizado para:

Admirable Research Group y DIGIT. Universidad de Burgos.

Admirable Research Group Docencia de Informática en Grados de Ingeniería y Trabajos de Fin de Grado