Las métricas permiten conocer lo que está sucediendo para tomar acciones adecuadas y ajustarse a las necesidades que se están atendiendo. Pero si no se toman decisiones en función de las métricas, haberlas recolectado sería un esfuerzo innecesario. Tesys provee una herramienta que utiliza la información obtenida mediantes las técnicas previamente mencionadas para poder estimar el rendimiento de los desarrolladores en tareas futuras.
La estimaciones que Tesys realiza son capaces de proporcionar información adicional sobre cómo un desarrollador va a llevar a cabo una determinada tarea. Dichas estimaciones se basan en la técnica estadística de regresión lineal (Cohen, et al., 2003) la cual requiere un conocimiento a priori de qué datos están correlacionados entre sí (Cohen, et al. 2002) y su respectiva función de regresión. Luego, si se conoce una correlación entre dos métricas, mediante la función de regresión se puede estimar el valor de una métrica a partir del valor de la otra con un margen de error que dependerá de cuan fuerte es el grado de correlación entre esas dos métricas. Actualmente Tesys cuenta con la capacidad de llevar a cabo análisis de correlaciones lineales mediante el cálculo del coeficiente de correlación de Pearson (Pearson, 1895). Dado que las correlaciones lineales son las más comunes que se encuentran entre las métricas y los datos cuantitativos son los más comunes que se encuentran en las herramientas de desarrollo.
Por lo general las correlaciones no son globales a un proyecto de software, sino que varían en función de los desarrolladores. Es importante tener en cuenta que no todos los desarrolladores poseen las mismas características y las conclusiones que se puedan sacar observando un grupo seguramente no apliquen para todos los individuos. Incluso, un individuo en particular podría evolucionar en el tiempo. Por ese motivo, se decidió calcular las correlaciones entre la métricas dentro del contexto de un desarrollador, esto quiere decir que Tesys analizará todas las tareas de un desarrollador en particular obteniendo sus métricas y calculado la correlación entre ellas, luego todos los cálculos comenzarán de cero al analizar a un nuevo desarrollador ya que no es válido asumir que las relaciones entre métricas serán las mismas. A modo de ejemplo, en la Tabla 3.8, se puede observar una muestra de tareas realizadas con sus respectivas métricas, y luego, en la Tabla 3.9, se muestra el resultado del cálculo de las correlaciones lineales de dichas métricas por cada desarrollador.
Desarrollador Tarea Líneas Rendimiento (%) Tiempo (hs)
Christina B. ANGRY55 333 93 6,0 Christina B. ANGRY87 59 15 2,5 Christina B. ANGRY30 62 23 1,3 Christina B. ANGRY54 88 54 2,0 Joe C. ANGRY47 86 37 1,6 Joe C. ANGRY75 10 9 2,0 Joe C. ANGRY38 68 15 1,4 Joe C. ANGRY6 70 49 1,4 Joe C. ANGRY15 51 31 1,0 Joe C. ANGRY11 250 88 5,5 Tabla 3.8: Ejemplo de datos con los que cuenta el sistema previo al análisis de estimaciones.
Desarrollador Líneas & Rendimiento Rendimiento & Tiempo Líneas & Tiempo
Christina B. 0,9222 0,8442 0,9672
Joe C. 0,9222 0,7966 0,9027
Tabla 3.9: Ejemplo de correlaciones calculadas.
Una vez calculadas las correlaciones se puede saber la precisión de una regresión lineal. Tesys brinda la posibilidad al PM de indicar los rangos de correlación aceptables. De este modo se usarán para las estimaciones, solo las regresiones lineales de los pares de métricas en los que su correlación se encuentre en el rango aceptable. La Figura 3.8 muestra las regresiones lineales que surgen de la Tabla 3.8.
Figura 3.8: Ejemplo de regresiones lineales de las métricas correlacionadas.
Una vez que el sistema realiza todos los cálculos descritos previamente ya es capaz de realizar estimaciones cuando se le brinda la información sobre la tarea que debe estimarse. La información que Tesys requiere para poder realizar una estimación no tiene ninguna regla particular, con solo proporcionar el valor de una métrica ya se pueden obtener estimaciones. Sin embargo, cuando se requiere mayor precisión en la estimación es necesario proveer la mayor cantidad de información detallada sobre cómo será la tarea a desarrollar. Esta información que debe ser proporcionada, es habitual que no exista y que no se conozca con certeza. El PM debe ser capaz de poder estimar algún atributo de la tarea a realizar. Las
estimaciones que el sistema lleve a cabo están fuertemente relacionadas a las que se le suministraron y si se hace de manera incorrecta, se puede esperar lo mismo por parte de Tesys.
Contar con este tipo de soporte para estimar tareas tiene dos beneficios. Por un lado si la persona que realiza las estimaciones está involucrada en el proceso de desarrollo y tiene conocimiento del producto de se está desarrollando, es posible que pueda estimar determinadas métricas de la tarea a realizar con más facilidad que otras. Estas métricas que le son más fáciles de estimar pueden no ser un factor decisivo para la toma de decisiones, sin embargo son muy útiles para que Tesys pueda estimar otras métricas que sí lo sean. Si la persona que utiliza Tesys no puede estimar ningún valor, existe la posibilidad de hacer una encuesta a todos los desarrolladores para obtener información de cuánto estima cada uno que le costara la tarea, en base a los datos que se obtengan se puede utilizar alguna medida de tendencia central para obtener los datos que necesitan ser proporcionados a Tesys . El otro beneficio es que mediante los cálculos que son realizados por persona es posible encontrar correlaciones entre métricas personales que a simple vista resultaría imposible y de esta forma conocer mejor las características de cada desarrollador dentro del proceso de desarrollo. Un ejemplo de las estimaciones que se realizan para la métrica Tiempo igual a tres horas se puede ver en la Tabla 3.10.
Desarrollador Líneas Incidencias
Christina B. 138.55 46.96
Joe C. 127.22 49.67
Tabla 3.10: Ejemplo de estimaciones realizadas a partir de un Tiempo proporcionado.
Si bien cada desarrollar se comporta de manera diferente a los demás y no puede tomarse a todos para calcular las correlaciones, este problema también ocurre al nivel de una misma persona. Es habitual que el rendimiento de un desarrollador sea mayor o menor dependiendo de la tarea que se deba realizar. Un ejemplo claro es en base a la tecnología que el mismo deba utilizar, si un desarrollador en Java de pronto debe realizar una tarea en JavaScript no se puede esperar que el rendimiento sea el mismo.
Estos problemas están considerados dentro del modelo de estimaciones de Tesys y se solventan permitiendo filtrar las tareas con las que se realizarán los cálculos. Hasta el momento se vio cómo se utilizan todas las tareas de un desarrollador para realizar una estimación, sin embargo es posible utilizar las habilidades que la misma requirió para filtrar qué tareas deben ser tenidas en cuenta a la hora de realizar los cálculos. De este modo, si se quiere estimar una tarea que es en código Java, se filtra por la habilidad Java . La cantidad de información que se utiliza para calcular las correlaciones y regresiones va a disminuir lo que provoca menos datos para analizar. Pero los datos utilizados para realizar los cálculos son los más parecidos a los que la tarea futura va a poseer, de esta manera es posible lograr estimaciones más precisas. Los resultados sobre la conveniencia de este tipo de filtros se analizarán en la sección de Resultados obtenidos.
Los ejemplos en esta sección fueron presentados de forma que se pueda apreciar el funcionamiento interno de Tesys. Sin embargo, la herramienta real presenta todas las estimaciones que es capaz de obtener mediante el componente gráfico de la misma. Utilizar los gráficos para mostrar este tipo de información tiene varias ventajas a mostrarla de forma cruda. A continuación se detalla el funcionamiento del componente gráfico de Tesys.