En el desarrollo de software , la estimación del esfuerzo es el proceso de predecir la cantidad de esfuerzo más realista (expresada en términos de horas-persona o dinero) que se requiere para desarrollar o mantener un software basado en una entrada incompleta, incierta y ruidosa. 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]
Estado de la práctica
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 lamentable, porque pueden surgir problemas de comunicación y porque los conceptos sirven para diferentes objetivos. [6] [7]
Historia
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 de 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, computación suave , 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 realizada 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 recalibran con medidas de tamaño modificadas y diferentes enfoques de conteo, como los puntos de casos de uso [11] o los puntos de objeto en la década de 1990.
Enfoques de estimación
Hay muchas formas de categorizar los enfoques de estimación, ver por ejemplo. [12] [13] Las categorías de nivel superior son las siguientes:
- Estimación experta: El paso de cuantificación, es decir, el paso en el que se produce la estimación en base a procesos de juicio. [14]
- Modelo de estimación formal: el paso de cuantificación se basa en procesos mecánicos, por ejemplo, el uso de una fórmula derivada de datos históricos.
- Estimación basada en combinaciones: el paso de cuantificación se basa en una combinación mecánica y de juicios de estimaciones de diferentes fuentes.
A continuación se muestran ejemplos de enfoques de estimación dentro de cada categoría.
Enfoque de estimación | Categoría | Ejemplos de apoyo a la implementación del enfoque de estimación |
---|---|---|
Estimación basada en analogías | Modelo de estimación formal | ANGEL, puntos de micro función ponderados |
Estimación basada en WBS (de abajo hacia arriba) | Estimación experta | Software de gestión de proyectos , plantillas de actividades específicas de la empresa. |
Modelos paramétricos | Modelo de estimación formal | COCOMO , SLIM , SEER-SEM , TruePlanning para software |
Modelos de estimación basados en tamaño [15] | Modelo de estimación formal | Análisis de puntos de función , [16] Análisis de casos de uso , Puntos de casos de uso , SSU (Unidad de tamaño de software), Estimación basada en puntos de historia en desarrollo de software ágil , Puntos de objeto |
Estimación de grupo | Estimación experta | Planificación de póquer , banda ancha delphi |
Combinación mecánica | Estimación basada en combinaciones | Promedio de una estimación de esfuerzo basada en analogías y una estructura de desglose del Trabajo [17] |
Combinación de juicio | Estimación basada en combinaciones | Juicio de expertos basado en estimaciones de un modelo paramétrico y estimación grupal |
Selección de enfoques de estimación
La evidencia sobre las diferencias en la precisión de la estimación de diferentes enfoques y modelos de estimación sugiere que no existe un "mejor enfoque" y que la precisión relativa de un enfoque o modelo en comparación con otro depende en gran medida del contexto. [18] Esto implica que diferentes organizaciones se benefician de diferentes enfoques de estimación. Los hallazgos [19] que pueden respaldar la selección de un enfoque de estimación basado en la precisión esperada de un enfoque incluyen:
- La estimación de expertos es, en promedio, al menos tan precisa como la estimación del esfuerzo basada en modelos. En particular, las situaciones con relaciones inestables e información de gran importancia no incluida en el modelo pueden sugerir el uso de una estimación experta. Esto supone, por supuesto, que se dispone de expertos con experiencia relevante.
- Los modelos de estimación formales que no se adaptan al contexto de una organización en particular pueden ser muy inexactos. En consecuencia, el uso de datos históricos propios es crucial si no se puede estar seguro de que las relaciones centrales del modelo de estimación (por ejemplo, los parámetros de la fórmula) se basan en contextos de proyectos similares.
- Los modelos de estimación formales pueden ser particularmente útiles en situaciones en las que el modelo se adapta al contexto de la organización (ya sea mediante el uso de datos históricos propios o que el modelo se deriva de proyectos y contextos similares), y es probable que las estimaciones de los expertos sean correctas. sujeto a un fuerte grado de ilusión.
El hallazgo más sólido, en muchos dominios de pronóstico, es que la combinación de estimaciones de fuentes independientes, preferiblemente aplicando diferentes enfoques, mejorará en promedio la precisión de la estimación. [19] [20] [21]
Es importante conocer las limitaciones de cada enfoque tradicional para medir la productividad del desarrollo de software. [22]
Además, otros factores como la facilidad para comprender y comunicar los resultados de un enfoque, la facilidad de uso de un enfoque y el costo de la introducción de un enfoque deben considerarse en un proceso de selección.
Evaluación de la precisión de las estimaciones
La medida más común de la precisión de la estimación promedio es el MMRE (magnitud media del error relativo), donde el MRE de cada estimación se define como:
MRE =
Esta medida ha sido criticada [23] [24] [25] y existen varias medidas alternativas, como medidas más simétricas, [26] Media ponderada de los cuartiles de errores relativos (WMQ) [27] y Variación media de la estimación (MVFE ). [28]
MRE no es confiable si los elementos individuales están sesgados. Se prefiere PRED (25) como medida de precisión de la estimación. PRED (25) mide el porcentaje de valores predichos que están dentro del 25 por ciento del valor real.
Un error de estimación alto no puede interpretarse automáticamente como un indicador de capacidad de estimación baja. Las razones alternativas, competitivas o complementarias incluyen el control de bajo costo del proyecto, la alta complejidad del trabajo de desarrollo y una mayor funcionalidad entregada que la estimada originalmente. Se incluye un marco para mejorar el uso y la interpretación de la medición del error de estimación. [29]
Problemas psicologicos
Hay muchos factores psicológicos que pueden explicar la fuerte tendencia hacia estimaciones de esfuerzo demasiado optimistas que deben tratarse para aumentar la precisión de las estimaciones de esfuerzo. Estos factores son esenciales incluso cuando se utilizan modelos de estimación formales, porque gran parte de la información de estos modelos se basa en juicios. Los factores que han demostrado ser importantes son: ilusiones , anclajes , falacia de planificación y disonancia cognitiva . Se puede encontrar una discusión sobre estos y otros factores en el trabajo de Jørgensen y Grimstad. [30]
- Es fácil estimar lo que sabe.
- Es difícil estimar lo que sabes que no sabes. (incógnitas conocidas)
- Es muy difícil estimar cosas que no sabes que no sabes. (incógnitas desconocidas)
Humor
La subestimación crónica del esfuerzo de desarrollo ha llevado a la acuñación y popularidad de numerosos adagios humorísticos, como referirse irónicamente a una tarea como una " pequeña cuestión de programación " (cuando es probable que se requiera mucho esfuerzo) y citar leyes sobre la subestimación:
- Regla del noventa y noventa :
El primer 90 por ciento del código representa el primer 90 por ciento del tiempo de desarrollo. El 10 por ciento restante del código representa el 90 por ciento restante del tiempo de desarrollo. [31]
- Tom Cargill, Bell Labs
- Ley de Hofstadter :
Ley de Hofstadter: siempre se tarda más de lo esperado, incluso si se tiene en cuenta la ley de Hofstadter.
- Douglas Hofstadter , Gödel, Escher, Bach: Una trenza dorada eterna [32]
- Ley de Fred Brooks :
Lo que un programador puede hacer en un mes, dos programadores pueden hacerlo en dos meses.
- Fred Brooks
Además del hecho de que estimar los esfuerzos de desarrollo es difícil, vale la pena señalar que asignar más recursos no siempre ayuda.
Comparación de software de estimación de desarrollo
Software | Presupuesto de horario | Costo estimado | Modelos de costos | Aporte | Formato de salida del informe | Lenguajes de programación admitidos | Plataformas | Costo | Licencia |
---|---|---|---|---|---|---|---|---|---|
AFCAA REVIC [33] | sí | sí | REVIC | KLOC , factores de escala, impulsores de costos | propietario, texto | alguna | DOS | Libre | Propietario Gratis para distribución pública |
Vidente para el software | sí | sí | SEER-SEM | SLOC , puntos de función , casos de uso, ascendente, objeto, características | propietario, Excel, Microsoft Project, IBM Rational, Oracle Crystal Ball | alguna | Windows, Cualquiera ( basado en web ) | Comercial | Propiedad |
SLIM [34] | sí | sí | DELGADO | Tamaño ( SLOC , puntos de función , casos de uso, etc.), limitaciones (tamaño, duración, esfuerzo, personal), factores de escala, proyectos históricos, tendencias históricas | propietario, Excel, Microsoft Project, Microsoft PowerPoint, IBM Rational, texto, HTML | alguna | Windows, Cualquiera ( basado en web ) [35] | Comercial | Propiedad |
TruePlanning [36] | sí | sí | PRECIO | Componentes, estructuras, actividades, generadores de costos, procesos, tamaño de software funcional (líneas de código fuente (SLOC), puntos de función, puntos de conversión de casos de uso (UCCP), puntos de objetos predictivos (POP), etc.) | Excel, CAD | alguna | Ventanas | Comercial | Propiedad |
Ver también
- Cono de incertidumbre
- Estimación de costos en ingeniería de software
- Modelos de estimación de costos
- Sobrecosto
- Puntos de función
- Falacia de planificación
- Estimación basada en proxy
- Modelo de Putnam
- Métrica de software
- Modelos paramétricos de software
Referencias
- ^ "Lo que hacemos y no sabemos acerca de la estimación del esfuerzo de desarrollo de software" .
- ^ "Guía de evaluación y estimación de costos GAO-09-3SP Mejores prácticas para desarrollar y administrar los costos del programa de capital" (PDF) . Oficina de Responsabilidad del Gobierno de EE. UU. 2009.
- ^ Jørgensen, M. (2004). "Una revisión de estudios sobre la estimación experta del esfuerzo de desarrollo de software" . Revista de sistemas y software . 70 (1–2): 37–60. doi : 10.1016 / S0164-1212 (02) 00156-5 .
- ^ Molokken, K. Jorgensen, M. (2003). "Una revisión de encuestas de software sobre la estimación del esfuerzo de software". 2003 Simposio Internacional de Ingeniería Empírica de Software, 2003. ISESE 2003. Actas . págs. 223-230. doi : 10.1109 / ISESE.2003.1237981 . ISBN 978-0-7695-2002-5. S2CID 15471986 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Jørgensen, M. Teigen, KH Ribu, K. (2004). "¿Más seguro que seguro? Confianza excesiva en los intervalos de predicción del esfuerzo de desarrollo de software basado en juicio". Revista de sistemas y software . 70 (1–2): 79–93. doi : 10.1016 / S0164-1212 (02) 00160-7 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Edwards, JS Moores (1994). "Un conflicto entre el uso de herramientas de estimación y planificación en la gestión de sistemas de información". Revista europea de sistemas de información . 3 (2): 139-147. doi : 10.1057 / ejis.1994.14 . S2CID 62582672 .
- ^ Goodwin, P. (1998). Mejora de la previsión de ventas con criterio: el papel de la investigación de laboratorio. Pronosticar con juicio. G. Wright y P. Goodwin. Nueva York, John Wiley & Sons: 91-112. Hola
- ^ Farr, L. Nanus, B. "Factores que afectan el costo de la programación de computadoras, volumen I" (PDF) .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Farr, L. Nanus, B. "Factores que afectan el costo de la programación informática, volumen II" (PDF) .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Nelson, EA (1966). Manual de gestión para la estimación de costos de programación informática. AD-A648750, Systems Development Corp.
- ^ Anda, B. Angelvik, E. Ribu, K. (2002). "Mejora de las prácticas de estimación mediante la aplicación de modelos de casos de uso". Apuntes de conferencias en Ciencias de la Computación . 2559 : 383–397. CiteSeerX 10.1.1.546.112 . doi : 10.1007 / 3-540-36209-6_32 . ISBN 978-3-540-00234-5.CS1 maint: varios nombres: lista de autores ( enlace )ISBN 9783540002345 , 9783540362098 .
- ^ Briand, LC y Wieczorek, I. (2002). Estimación de recursos en ingeniería de software. Enciclopedia de ingeniería de software. JJ Marcinak. Nueva York, John Wiley & Sons: 1160-1196.
- ^ Jørgensen, M. Shepperd, M. "Una revisión sistemática de los estudios de estimación de costos de desarrollo de software" .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ "Servicios de desarrollo de software a medida - Desarrollo de aplicaciones a medida - Oxagile" .
- ^ Hill Peter (ISBSG) - Estimation Workbook 2 - publicado por International Software Benchmarking Standards Group ISBSG - Estimation and Benchmarking Resource Center Archivado 2008-08-29 en Wayback Machine
- ^ Morris Pam - Descripción general de métricas totales de análisis de punto de función - Centro de recursos de punto de función
- ^ Srinivasa Gopal y Meenakshi D'Souza. 2012. Mejora de la precisión de la estimación mediante el uso de razonamiento basado en casos y un enfoque de estimación combinado. En Actas de la 5ª Conferencia de Ingeniería de Software de India (ISEC '12). ACM, Nueva York, NY, EE. UU., 75-78. DOI = https://dx.doi.org/10.1145/2134254.2134267
- ^ Shepperd, M. Kadoda, G. (2001). "Comparación de técnicas de predicción de software mediante simulación" . Transacciones IEEE sobre ingeniería de software . 27 (11): 1014–1022. doi : 10.1109 / 32.965341 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ a b Jørgensen, M. "Estimación del esfuerzo de trabajo de desarrollo de software: evidencia de juicio experto y modelos formales" .
- ^ Winkler, RL (1989). "Combinando previsiones: una base filosófica y algunos temas de actualidad Manager". Revista Internacional de Pronósticos . 5 (4): 605–609. doi : 10.1016 / 0169-2070 (89) 90018-6 .
- ^ Blattberg, RC Hoch, SJ (1990). "Modelos de base de datos e intuición gerencial: 50% Modelo + 50% Gerente". Ciencias de la gestión . 36 (8): 887–899. doi : 10.1287 / mnsc.36.8.887 . JSTOR 2632364 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ BlueOptima (29 de octubre de 2019). "Identificación de métricas de desarrollo de software objetivas y fiables" .
- ^ Shepperd, M. Cartwright, M. Kadoda, G. (2000). "Sobre la construcción de sistemas de predicción para ingenieros de software". Ingeniería de software empírica . 5 (3): 175–182. doi : 10.1023 / A: 1026582314146 . S2CID 1293988 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Kitchenham, B. Pickard, LM MacDonell, SG Shepperd. "Qué precisión miden realmente las estadísticas" .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Foss, T. Stensrud, E. Kitchenham, B. Myrtveit, I. (2003). "Estudio de simulación del criterio de evaluación del modelo MMRE" . Transacciones IEEE sobre ingeniería de software . 29 (11): 985–995. CiteSeerX 10.1.1.101.5792 . doi : 10.1109 / TSE.2003.1245300 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Miyazaki, Y. Terakado, M. Ozaki, K. Nozaki, H. (1994). "Regresión robusta para el desarrollo de modelos de estimación de software" . Revista de sistemas y software . 27 : 3-16. doi : 10.1016 / 0164-1212 (94) 90110-4 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Lo, B. Gao, X. "Evaluación de modelos de estimación de costos de software: criterios de precisión, consistencia y regresión" .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Hughes, RT Cunliffe, A. Young-Martos, F. (1998). "Evaluación de técnicas de construcción de modelos de esfuerzo de desarrollo de software para su aplicación en un entorno de telecomunicaciones en tiempo real" . Actas de la IEE - Software . 145 : 29. doi : 10.1049 / ip-sen: 19983370 .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Grimstad, S. Jørgensen, M. (2006). "Un marco para el análisis de la precisión de la estimación de costos de software" .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Jørgensen, M. Grimstad, S. "Cómo evitar el impacto de información irrelevante y engañosa al estimar el esfuerzo de desarrollo de software" .CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Bentley, Jon (1985). "Programación de perlas". Las comunicaciones del ACM (se requiere pago)
|format=
requieren|url=
( ayuda ) . 28 (9): 896–901. doi : 10.1145 / 4284.315122 . ISSN 0001-0782 . S2CID 5832776 . - ^ Gödel, Escher, Bach: Una trenza dorada eterna . 20 aniversario ed., 1999, p. 152. ISBN 0-465-02656-7 .
- ^ Sitio conmemorativo de Revic manual de AFCAA Revic 9.2
- ^ "Descripción general de SLIM Suite" . Qsm.com . Consultado el 27 de agosto de 2019 .
- ^ "SLIM-WebServices" . Qsm.com . Consultado el 27 de agosto de 2019 .
- ^ Sitio de TruePlanning Integrated Cost Models PRICE Systems Archivado el 5 de noviembre de 2015 en Wayback Machine.