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) necesaria para desarrollar o mantener software a partir de datos incompletos, inciertos y con ruido. Las estimaciones del esfuerzo pueden utilizarse como datos de entrada para planes de proyecto, planes de iteración, presupuestos, análisis de inversión, 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 estimación sugieren que la estimación de expertos 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 excesiva en su precisión. El sobrecoste medio del esfuerzo parece ser de alrededor del 30 % y no disminuye con el tiempo. Para una revisión de las encuestas sobre errores en la estimación del esfuerzo, véase [ 4 ] . Sin embargo, la medición del error de estimación es problemática; véase Evaluación de la precisión de las estimaciones . La gran confianza excesiva 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 está "casi seguro" de incluir el esfuerzo real en un intervalo mínimo-máximo, la frecuencia observada de inclusión del esfuerzo real es solo del 60-70 %. [ 5 ]
Actualmente, el término "estimación del esfuerzo" se utiliza para referirse a diferentes conceptos, como el uso más probable del esfuerzo (valor modal), el esfuerzo que corresponde a una probabilidad del 50 % de no excederlo (mediana), el esfuerzo planificado, el esfuerzo presupuestado o el esfuerzo utilizado para proponer una oferta o precio al cliente. Se considera que esto es desafortunado, ya que pueden surgir problemas de comunicación y porque los conceptos persiguen objetivos diferentes. [ 6 ] [ 7 ]
Historia
Los investigadores y profesionales del software han estado abordando los problemas de 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 para la construcción de modelos, como los basados en razonamiento basado en casos , árboles de clasificación y regresión , simulación , redes neuronales , estadística bayesiana , análisis léxico de especificaciones de requisitos, programación genética , programación lineal , modelos de producción económica, computación blanda , modelado de lógica difusa , remuestreo estadístico y combinaciones de dos o más de estos modelos. Los métodos de estimación más comunes en la actualidad son, quizás, 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 basados en medidas de tamaño basadas en la funcionalidad, por ejemplo, puntos de función , también se basan 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 y los puntos de función COSMIC en la década de 1990.
Enfoques de estimación
Existen muchas formas de categorizar los enfoques de estimación; véase, 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 la estimación se produce en base a procesos de juicio. [ 14 ]
- Modelo de estimación formal: La etapa 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: La etapa de cuantificación se basa en una combinación subjetiva y mecánica de estimaciones procedentes de diferentes fuentes.
A continuación se muestran ejemplos de métodos de estimación dentro de cada categoría.
Selección de enfoques de estimación
La evidencia sobre las diferencias en la precisión de 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 dicho 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, en situaciones con relaciones inestables e información de gran importancia no incluida en el modelo, puede ser conveniente recurrir a la estimación de expertos. Esto presupone, por supuesto, que se cuenta con expertos con la experiencia pertinente.
- Los modelos de estimación formales que no se adaptan al contexto específico de una organización pueden resultar muy imprecisos. Por consiguiente, el uso de datos históricos propios es fundamental si no se tiene la certeza de que las relaciones principales 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 donde el modelo se adapta al contexto de la organización (ya sea mediante el uso de datos históricos propios o porque el modelo se deriva de proyectos y contextos similares), y es probable que las estimaciones de los expertos estén sujetas a un alto grado de subjetividad.
El hallazgo más sólido, en muchos ámbitos 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 tener en cuenta las limitaciones de cada enfoque tradicional para medir la productividad del desarrollo de software. [ 22 ]
Además, en un proceso de selección se deben considerar otros factores como la facilidad de comprensión y comunicación de los resultados de un enfoque, la facilidad de uso de un enfoque y el costo [ 23 ] de introducción de un enfoque.
Evaluación de la exactitud de las estimaciones
La medida más común de la precisión promedio de la estimación es el MMRE (Magnitud Media del Error Relativo), donde el MRE de cada estimación se define como:
- MRE = | ( esfuerzo real) - (esfuerzo estimado) | / (esfuerzo real)
Esta medida ha sido criticada [ 24 ] [ 25 ] [ 26 ] y existen varias medidas alternativas, como medidas más simétricas, [ 27 ] la Media ponderada de cuartiles de errores relativos (WMQ) [ 28 ] y la Variación media de la estimación (MVFE). [ 29 ]
El MRE no es fiable si los elementos individuales presentan asimetría. Se prefiere PRED(25) como medida de precisión de la estimación. PRED(25) mide el porcentaje de valores predichos que se encuentran dentro del 25 % del valor real.
Un error de estimación elevado no puede interpretarse automáticamente como un indicador de baja capacidad de estimación. Entre las razones alternativas, que compiten o se complementan, se incluyen el bajo control de costes del proyecto, la alta complejidad del trabajo de desarrollo y una mayor funcionalidad entregada de la estimada inicialmente. En [ 30 ] se incluye un marco para mejorar el uso y la interpretación de la medición del error de estimación.
Problemas psicológicos
Existen muchos factores psicológicos que podrían explicar la marcada tendencia a sobreestimar el esfuerzo. Es fundamental considerar estos factores incluso al utilizar modelos de estimación formales, ya que gran parte de la información que se introduce en estos modelos se basa en juicios subjetivos. Entre los factores que han demostrado ser importantes se encuentran el pensamiento ilusorio , el anclaje , la falacia de planificación y la disonancia cognitiva . [ 31 ]
- Es fácil estimar lo que se sabe.
- Es difícil estimar lo que se sabe que se desconoce. (incógnitas conocidas)
- Es muy difícil estimar lo que se desconoce que es desconocido. (incógnitas desconocidas)
Humor
La subestimación crónica del esfuerzo de desarrollo ha llevado a la creación y popularidad de numerosos adagios humorísticos, como referirse irónicamente a una tarea como "un pequeño asunto de programación " (cuando probablemente se requiere mucho esfuerzo) y citar leyes sobre la subestimación:
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 otro 90 por ciento del tiempo de desarrollo. [ 32 ]
— Tom Cargill, Laboratorios Bell
Ley de Hofstadter: Siempre se tarda más de lo esperado, incluso teniendo en cuenta la ley de Hofstadter.
— Douglas Hofstadter , Gödel, Escher, Bach: Una eterna trenza dorada [ 33 ]
Lo que un programador puede hacer en un mes, dos programadores pueden hacerlo en dos meses.
— Fred Brooks ,
Comparación de software de estimación de proyectos de desarrollo
Véase también
Referencias
- ↑ "Lo que sabemos y lo que no sabemos sobre la estimación del esfuerzo en el desarrollo de software" .
- ↑ "Guía de estimación y evaluación de costos GAO-09-3SP: Mejores prácticas para el desarrollo y la gestión de los costos de los programas de capital" (PDF) . Oficina de Responsabilidad Gubernamental de los Estados Unidos. 2009.
- ↑ Jørgensen, M. (2004). "Una revisión de estudios sobre la estimación experta del esfuerzo de desarrollo de software" . Journal of Systems and Software . 70 ( 1–2 ): 37–60 . doi : 10.1016/S0164-1212(02)00156-5 .
- ↑ Molokken, K. Jorgensen, M. (2003). "Una revisión de encuestas sobre software para la estimación del esfuerzo en el desarrollo de software". Simposio Internacional de Ingeniería de Software Empírica de 2003, ISESE 2003. Actas . págs. 223–230 . doi : 10.1109/ISESE.2003.1237981 . ISBN 978-0-7695-2002-5. S2CID 15471986 .
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Jørgensen, M. Teigen, KH Ribu, K. (2004). "¿Más vale seguro que confiable? Exceso de confianza en los intervalos de predicción del esfuerzo de desarrollo de software basados en juicios". Journal of Systems and Software . 70 ( 1–2 ): 79–93 . doi : 10.1016/S0164-1212(02)00160-7 .
{{cite journal}}: 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". European Journal of Information Systems . 3 (2): 139– 147. doi : 10.1057/ejis.1994.14 . S2CID 62582672 .
- ↑ Goodwin, P. (1998). Mejora de la previsión de ventas basada en el juicio: El papel de la investigación de laboratorio. Previsión 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 informática, volumen I" (PDF) . Archivado del original (PDF) el 21 de febrero de 2017.
{{cite web}}: 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) . Archivado del original (PDF) el 28 de julio de 2018.
{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Nelson, EA (1966). Manual de gestión para la estimación de los 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". Mejora de procesos de software centrada en el producto . Notas de clase en informática. Vol. 2559. pp. 383–397 . CiteSeerX 10.1.1.546.112 . doi : 10.1007/3-540-36209-6_32 . ISBN 978-3-540-00234-5.
{{cite book}}: CS1 maint: nombres múltiples: 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 estudios sobre la estimación de costos de desarrollo de software" .
{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ "Servicios de desarrollo de software a medida – Desarrollo de aplicaciones a medida – Oxagile" .
- ↑ Hill Peter (ISBSG) – Libro de trabajo de estimación 2 – publicado por International Software Benchmarking Standards Group ISBSG - Centro de recursos de estimación y evaluación comparativa. Archivado el 29/08/2008 en Wayback Machine.
- ↑ Morris Pam — Descripción general del análisis de puntos de función Métricas totales - Centro de recursos de puntos de función
- ↑ Srinivasa Gopal y Meenakshi D'Souza. 2012. Mejora de la precisión de la estimación mediante el razonamiento basado en casos y un enfoque de estimación combinado. En Actas de la 5.ª Conferencia de Ingeniería de Software de la India (ISEC '12). ACM, Nueva York, EE. UU., 75-78. doi : 10.1145/2134254.2134267
- ↑ Shepperd, M. Kadoda, G. (2001). "Comparación de técnicas de predicción de software mediante simulación" . IEEE Transactions on Software Engineering . 27 (11): 1014– 1022. Bibcode : 2001ITSEn..27.1014S . doi : 10.1109/32.965341 .
{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace ) - 1 2 Jørgensen, M. "Estimación del esfuerzo de trabajo en el desarrollo de software: evidencia sobre el juicio de expertos y modelos formales" .
- ↑ Winkler, RL (1989). "Combinación de pronósticos: una base filosófica y algunos problemas actuales Manager". International Journal of Forecasting . 5 (4): 605– 609. doi : 10.1016/0169-2070(89)90018-6 .
- ↑ Blattberg, RC Hoch, SJ (1990). "Modelos de bases de datos e intuición gerencial: 50% modelo + 50% gerente". Management Science . 36 (8): 887– 899. doi : 10.1287/mnsc.36.8.887 . JSTOR 2632364 .
{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ BlueOptima (29/10/2019). "Identificación de métricas de desarrollo de software fiables y objetivas" .
- ↑ https://www.scalacode.com/guides/software-development-cost/
- ↑ Shepperd, M. Cartwright, M. Kadoda, G. (2000). "Sobre la creació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 .
{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Kitchenham, B. , Pickard, LM, MacDonell, SG Shepperd. "Qué es lo que realmente miden las estadísticas de precisión" .
{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ^ Foss, T., Stensrud, E., Kitchenham, B. , Myrtveit, I. (2003). "Un estudio de simulación del criterio de evaluación del modelo MMRE" . Transacciones IEEE sobre ingeniería de software . 29 (11): 985– 995. Bibcode : 2003ITSEn..29..985F . CiteSeerX 10.1.1.101.5792 . doi : 10.1109/TSE.2003.1245300 .
{{cite journal}}: 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" . Journal of Systems and Software . 27 : 3–16 . doi : 10.1016/0164-1212(94)90110-4 .
{{cite journal}}: 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" .
{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Hughes, RT Cunliffe, A. Young-Martos, F. (1998). "Evaluación de técnicas de modelado del esfuerzo de desarrollo de software para su aplicación en un entorno de telecomunicaciones en tiempo real" . IEE Proceedings - Software . 145 :29. doi : 10.1049/ip-sen:19983370 (inactivo el 12 de julio de 2025). Archivado del original el 20 de septiembre de 2017.
{{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace ) 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" .
{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Jørgensen, M. Grimstad, S. (2008). "Cómo evitar el impacto de la información irrelevante y engañosa al estimar el esfuerzo de desarrollo de software" . IEEE Software : 78–83 .
{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Bentley, Jon (1985). "Perlas de programación" (se requiere pago) . Communications of the ACM . 28 (9): 896– 901. doi : 10.1145/4284.315122 . ISSN 0001-0782 . S2CID 5832776 .
- ↑ Gödel, Escher, Bach: Una eterna trenza dorada . Edición del 20.º aniversario, 1999, pág. 152. ISBN 0-465-02656-7.
- ↑ Manual de AFCAA Revic 9.2 Sitio conmemorativo de Revic
- ↑ "Descripción general de la suite SLIM" . Qsm.com . Consultado el 27 de agosto de 2019 .
- ↑ "SLIM-WebServices" . Qsm.com . Consultado el 27 de agosto de 2019 .
- ↑ Modelos de costos integrados de TruePlanning Sitio de PRICE Systems Archivado el 05/11/2015 en Wayback Machine
- Gestión de proyectos de software
- Costos de ingeniería de software