¿Cómo tener éxito con un modelo de estimación de esfuerzo?
Como ya hemos visto en los post anteriores, generar un modelo de estimación de esfuerzo, es necesario para poder llevar a cabo un proyecto con éxito, desde el primer momento. Los datos base de estos modelos, pueden obtenerse de muchas maneras, pero se ha demostrado que cuando se aplican técnicas de Big Data (poda por filas y columnas de un dataset), los datos de partida dan como resultado modelos más precisos que contribuyen a mejorar la calidad del proyecto.
También se ha visto, que aunque no se disponga de repositorios propios de los que extraer los datos para hacer el modelo, se puede recurrir a otras fuentes, como los repositorios públicos de datasets, que proporcionan conjuntos de datos, ya preparados para ser adaptados por las empresas a las necesidades de sus modelos.
Una vez obtenidos los datos…
Cuando todos los datos necesarios han sido obtenidos por alguno de los medios comentados anteriormente, la pregunta más lógica es, ¿qué hago con estos datos? ¿Cómo los trato? ¿Qué técnicas utilizo? Durante este post se van a comentar cuatro de los aspectos más importantes al generar un modelo de coste: las técnicas de estimación, los predictores de esfuerzo, las características de los datasets y las metodologías ágiles que existen.
Técnicas para la estimación de esfuerzo y tamaño
Para realizar la estimación de esfuerzo, generalmente se utilizan dos técnicas que han sido muy estudiadas, “juicio experto” y “planning poker”. Ambas permiten realizar una estimación en función del criterio de alguien que ya ha realizado un proyecto similar.
“Juicio experto”, se basa en obtener datos de los repositorios que contengan datos de proyectos similares al que se quiere realizar. De esta manera, se estimará suponiendo que el sistema va a suponer un esfuerzo similar al que supuso en otro momento, un proyecto muy parecido. El inconveniente de esta técnica, es que las personas que trabajan en el proyecto actual, tienen características diferentes de las que generaron los datos, y esta variación no se tiene en cuenta.
“Planning poker”, se basa en tomar decisiones por consenso, así se decidirá el tamaño o el esfuerzo de cada tarea del proyecto haciendo caso a lo que diga la mayoría del equipo de desarrollo. Como punto negativo, es posible destacar que las decisiones las termina tomando un equipo quizá menos experto, sin embargo, se ha demostrado que esta técnica ofrece estimaciones menos optimistas y más precisas que otras, siendo, además, los desarrolladores quienes planifican su propio trabajo.
Predictores de esfuerzo
El predictor de esfuerzo más utilizado es “puntos de caso de uso”, este método utiliza los actores y casos de uso para calcular el esfuerzo que significará desarrollarlos. Resulta ser un predictor objetivo que arroja resultados concluyentes.
Existen otros predictores de esfuerzo, utilizados anteriormente, como puede ser “líneas de código”, que tiende a ser subjetivo y condicionado al programador del que se extraigan los datos.
Características de los datasets
Una vez definidas las técnicas que se van a aplicar sobre los datos, se hace necesario analizar esos datos, ya que deben tener unas características concretas.
Los datasets sobre los que se realizan los modelos pueden tener dominios muy diferentes, sin embargo, de acuerdo a las fuentes consultadas, la mayoría de los modelos que se realizan son sobre dominios industriales, y con datos obtenidos dentro de la propia empresa que va a realizar el modelo. Si se analiza esta situación, tiene mucha lógica, ya que utilizar datos de la propia empresa hace que sea más barato el modelo (no hay que comprar los datos), y además es información más fiable.
Técnicas ágiles
Por último, es importante seguir una metodología ágil durante el proyecto, en base a las estimaciones que se han obtenido con los métodos anteriormente descritos.
En este apartado destacamos dos, ambas conocidas y muy utilizadas. Scrum y Extremme programming. Ambas se ajustan bien a las técnicas descritas anteriormente, y siguen un nivel de planificación iterativa.
Scrum, se basa en seguir una estrategia de desarrollo incremental, solapando las distintas fases del desarrollo y dividiendo el proyecto en varios sprints, teniendo equipos auto organizados impulsando la comunicación verbal entre todos los miembros y disciplinas involucrados en el proyecto.
Extreme Programing, se basa en una metodología que considera que los cambios de los requisitos sobre la marcha son un aspecto inevitable e incluso deseable del desarrollo de proyectos, ya que esto hace que el sistema vaya adaptándose la necesidad real del cliente.
Una vez respondidas estas cuatro preguntas, podemos destacar las principales técnicas que se usan actualmente para cada apartado, “planning poker” para estimar el esfuerzo, utilizando “puntos de caso de uso” como predictor. Mayoritariamente, se trabaja sobre datasets de dominio industrial utilizando scrum o extreme programming.
Sin embargo, se hace necesario destacar que cada proyecto es diferente y estas técnicas sólo deben ser una guía inicial, sobre las que el jefe o el equipo del proyecto, construyan su propio modelo de estimación de software.