Estimación del esfuerzo de desarrollo de software


En el desarrollo de software , la estimación del esfuerzo es el proceso de predecir la cantidad más realista de esfuerzo (expresada en términos de horas-persona o dinero) que se requiere para desarrollar o mantener un software basado en entradas incompletas, inciertas y ruidosas. Las estimaciones de esfuerzo se pueden utilizar como entrada para planes de proyectos, planes de iteración, presupuestos, análisis de inversiones, procesos de fijación de precios y rondas de licitación. [1] [2]

Las encuestas publicadas sobre la práctica de la estimación sugieren que la estimación experta es la estrategia dominante al estimar el esfuerzo de desarrollo de software. [3]

Por lo general, las estimaciones de esfuerzo son demasiado optimistas y existe una gran confianza en su precisión. El exceso de esfuerzo medio parece ser de aproximadamente un 30% y no disminuye con el tiempo. Para obtener una revisión de las encuestas de errores de estimación del esfuerzo, consulte. [4] Sin embargo, la medición del error de estimación es problemática, consulte Evaluación de la precisión de las estimaciones . El fuerte exceso de confianza en la precisión de las estimaciones de esfuerzo se ilustra con el hallazgo de que, en promedio, si un profesional del software tiene un 90% de confianza o "casi seguro" de incluir el esfuerzo real en un intervalo mínimo-máximo, la frecuencia observada de incluir el esfuerzo real es solo del 60-70%. [5]

Actualmente el término “estimación de esfuerzo” se utiliza para denotar como diferentes conceptos tales como uso más probable del esfuerzo (valor modal), el esfuerzo que corresponde a una probabilidad del 50% de no exceder (mediana), el esfuerzo planificado, el esfuerzo presupuestado o el esfuerzo utilizado para proponer una oferta o precio al cliente. Se cree que esto es desafortunado, porque pueden ocurrir problemas de comunicación y porque los conceptos sirven para diferentes objetivos. [6] [7]

Los investigadores y profesionales del software han abordado los problemas de la estimación del esfuerzo para proyectos de desarrollo de software desde al menos la década de 1960; véase, por ejemplo, el trabajo de Farr [8] [9] y Nelson. [10]

La mayor parte de la investigación se ha centrado en la construcción de modelos formales de estimación del esfuerzo de software. Los primeros modelos se basaban típicamente en análisis de regresión o se derivaban matemáticamente de teorías de otros dominios. Desde entonces, se ha evaluado un gran número de enfoques de construcción de modelos, como enfoques basados ​​en razonamiento basado en casos , árboles de clasificación y regresión , simulación , redes neuronales , estadísticas bayesianas , análisis léxico de especificaciones de requisitos, programación genética , programación lineal , producción económica. modelos, soft computing ,modelado de lógica difusa , bootstrapping estadístico y combinaciones de dos o más de estos modelos. Los métodos de estimación quizás más comunes en la actualidad son los modelos de estimación paramétrica COCOMO , SEER-SEM y SLIM. Tienen su base en la investigación de estimación llevada a cabo en las décadas de 1970 y 1980 y desde entonces se actualizan con nuevos datos de calibración, siendo la última versión importante COCOMO II en el año 2000. Los enfoques de estimación se basan en medidas de tamaño basadas en la funcionalidad, por ejemplo, función puntos , también se basa en investigaciones realizadas en las décadas de 1970 y 1980, pero se vuelven a calibrar con medidas de tamaño modificadas y diferentes enfoques de conteo, como los puntos de casos de uso [11] opuntos de objeto en la década de 1990.