Software Analitycs, ¿para que me sirve?
En el post anterior habíamos visto que la gran cantidad de datos disponibles en repositorios y otras fuentes, los podemos transformar en información útil para facilitar la toma de decisiones en proyectos de software. Para ello podemos utilizar Software Analytics.
En esta ocasión abordaremos como realmente podemos aplicar Software Analytics, en el proceso de toma de decisiones durante el de desarrollo de proyectos de software. Para ello presentaremos cuales son los usuarios potenciales de esta herramienta y en que ámbitos de su trabajo las podrán utilizar. Adicionalmente, presentaremos algunos artefactos disponibles para la extracción de datos.
¿Cuáles son los usuarios de las herramientas de Software Analytics?
Las herramientas de Analytics dentro de la ingeniería de software, principalmente dan soporte a los siguientes usuarios:
- Desarrolladores
- Evaluadores
- Líderes de Proyecto
- Gestores de portafolio
Recolectando las investigaciones realizadas en el campo de Software Analytics, se puede remarcar que el 90% de herramientas disponibles benefician a los desarrolladores, y el 47% de herramientas dan soporte exclusivamente a desarrolladores (ver figura 1). Estos resultados muestran la necesidad de elaborar herramientas que ayuden a los otros miembros del grupo en un proyecto de desarrollo de software.
Figura 1 Distribución de aplicaciones desarrolladas por tipo de usuario
¿En qué ámbitos de mi proyecto puedo utilizar Software Analytics?
- Mantenimiento del software e ingeniería inversa
Frecuentemente los desarrolladores de software y líderes de proyecto, se enfrentan con tareas de mantenimiento de grandes proyectos, de las cuales no tienen soporte debido a la inapropiada documentación. Software Analytics puede ser utilizado para obtener de repositorios, los detalles de la evolución de proyectos pasados y procesarlos para mostrar de forma visual algunos hechos de la evolución del proyecto. Esta información será útil para apoyar la toma de decisiones relacionadas con el mantenimiento de proyectos de software.
Software Analytics también puede ser usada como una herramienta para realizar ingeniería inversa. Software Analytics permite analizar el código fuente de aplicaciones para obtener información acerca de la estructura del código y poder identificar algunas características del mismo.
- Software Analytics como una herramienta para colaboración en equipo y tablero de información
Un caso concreto de este ámbito, son algunas herramientas de Software Analytics que mozilla ha aplicado para visualizar información obtenida del procesamiento de datos almacenados en bugzilla, un repositorio de seguimiento de errores. A través de los datos históricos almacenados en bugzilla se pueden crear tableros de información que permiten a los líderes de proyecto monitorear las contribuciones realizadas por la comunidad e identificar tendencias de errores. Esta herramienta resulta eficaz para manejar las contribuciones realizadas y ayudar a la toma de decisiones estratégicas en torno a la participación de la comunidad.
- Software Analytics para manejo de incidentes y predicción de defectos
Las herramientas de Software Analytics podrían ser aplicadas para identificar información relevante a la causa de un incidente que se esté investigando. Esta información es extraída a partir de grandes cantidades de datos de monitorización como: registros del sistema operativo, registros de transacciones, contadores de rendimiento, entre otros. Esta información debería provisionar a los ingenieros de desarrollo información adecuada para determinar el lugar del incidente.
- Plataforma de Software Analytics
Software Analitycs también está en la capacidad de cubrir varios ámbitos del proceso de desarrollo de software y dar herramientas a distintos miembros de un equipo de desarrollo de software. Un ejemplo es la herramienta CODEMINE desarrollada por ingenieros de Microsoft para provisionar a los equipos de desarrollo de software una plataforma común de Analytics útil para diferentes miembros del equipo. CODEMINE tiene la habilidad de extraer datos de diferentes artefactos (como código fuente, registros del sistema, planificación del proyecto, reportes de incidentes, entre otros).
- Estimación de esfuerzo utilizando Software Analytics
La estimación de esfuerzo es una herramienta que las empresas utilizan en las etapas tempranas del proyecto para estimar el número de desarrolladores y la cantidad de tiempo requerida para desarrollar software.
Particularmente en proyectos abiertos, resulta un desafío estimar su esfuerzo debido a la naturaleza distribuida y colaborativa. Debido a ello, la estimación del esfuerzo en este tipo de proyectos generalmente es desconocida.
OpenStack es una herramienta que utiliza Software Analytics para estimar el esfuerzo en proyectos abiertos. Esta herramienta extrae datos relativos a las actividades de los desarrolladores a partir de repositorios de administración de códigos fuentes. Los datos extraídos son procesados para generar información útil para la estimación de esfuerzos en el desarrollo de software.
¿De donde se sacan los datos utilizados en Software Analytics?
Software Analytics utiliza varios artefactos (ver Tabla 1) de donde se pueden extraer datos útiles para transformarlos en información útil para la toma de decisiones. La mayoría de herramientas disponibles únicamente utilizan una sola fuente para obtener los datos, siendo los bloques de código fuente, el artefacto mayormente utilizado.
Artefactos de Software utilizados para Software Analytics |
Código fuente |
Repositorios de código |
Sistemas de seguimientos de incidencias |
E-mails |
Sistemas de control de versiones |
Wikis |
Reportes de errores |
Aplicaciones móviles |
Encuestas a desarrolladores |
Datos de evaluación |
Tabla 1 Artefactos de Software utilizados en SA.
Conclusión
Software Analytics es una herramienta utilizado por algunos miembros dentro de un equipo de desarrollo de software. Los líderes de proyecto, desarrolladores, evaluadores y gestores de portafolio son los miembros que tienen la mayor cantidad de herramientas disponibles de Software Analytics, dentro de estos usuarios, los desarrolladores son los que más herramientas de Analytics tienen a su disposición. Adicionalmente, los ámbitos donde se puede utilizar Software Analytics son varios, entre los principales: trabajo colaborativo, manejo de incidentes, estimación de esfuerzos. Por último, los artefactos de software utilizados para la extracción de datos son diversos, el código fuente es el mayormente utilizado.