stringtranslate.com

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) necesaria para desarrollar o mantener el software basándose en datos incompletos, inciertos y ruidosos. Las estimaciones de esfuerzo se pueden utilizar como información 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 prácticas de estimación sugieren que la estimación realizada por expertos es la estrategia dominante a la hora de estimar el esfuerzo de desarrollo de software. [3]

Por lo general, las estimaciones de esfuerzo son demasiado optimistas y existe un exceso de confianza en su precisión. El exceso de esfuerzo medio parece ser de alrededor del 30 % y no disminuye con el tiempo. Para una revisión de las encuestas sobre el error de estimación de 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 exceso de confianza en la precisión de las estimaciones de esfuerzo se ilustra con el hallazgo de que, en promedio, si un profesional de 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 incluir el esfuerzo real es solo del 60-70 %. [5]

En la actualidad, el término "estimación del esfuerzo" se utiliza para designar conceptos diferentes, como el 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 surgir problemas de comunicación y porque los conceptos sirven a 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 al menos desde 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 han 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 , modelos de producción económica, computación blanda , 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 los años 1970 y 1980 y desde entonces se actualizan con nuevos datos de calibración, siendo el último lanzamiento 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 la investigación realizada en los años 1970 y 1980, pero se recalibran con medidas de tamaño modificadas y diferentes enfoques de conteo, como los puntos de caso de uso [11] o los puntos de objeto y los puntos de función COSMIC en los años 1990.

Enfoques de estimación

Hay muchas formas de categorizar los enfoques de estimación, véase por ejemplo [12] [13] . Las categorías de nivel superior son las siguientes:

A continuación se presentan ejemplos de enfoques 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 las estimaciones de los distintos 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 en función de la precisión esperada de un enfoque incluyen:

El hallazgo más sólido, en muchos dominios de previsión, 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 ser consciente de 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 tener en cuenta 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 de introducción de un enfoque.

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 = | (esfuerzo real) - (esfuerzo estimado) |/(esfuerzo real)

Esta medida ha sido criticada [23] [24] [25] y existen varias medidas alternativas, como medidas más simétricas, [26] la media ponderada de cuartiles de errores relativos (WMQ) [27] y la variación media de la estimación (MVFE). [28]

La MRE no es confiable si los elementos individuales están sesgados. Se prefiere PRED(25) como medida de precisión de 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 elevado no puede interpretarse automáticamente como un indicador de una capacidad de estimación baja. Entre las razones alternativas, que compiten o complementan, se incluyen el bajo control de los costes del proyecto, la alta complejidad del trabajo de desarrollo y una mayor funcionalidad entregada de la estimada originalmente. En [29] 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 realizar estimaciones de esfuerzo demasiado optimistas. Estos factores son esenciales para tenerlos en cuenta incluso cuando se utilizan modelos de estimación formales, porque gran parte de la información que se aporta a estos modelos se basa en juicios. Los factores que se ha demostrado que son importantes son las ilusiones , el anclaje , la falacia de planificación y la disonancia cognitiva . [30]

Humor

La subestimación crónica del esfuerzo de desarrollo ha llevado a la acuñación y popularidad de numerosos refranes humorísticos, como referirse irónicamente a una tarea como un " pequeño asunto de programación " (cuando probablemente se requiera 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. [31]

—  Tom Cargill, Laboratorios Bell

Ley de Hofstadter: Siempre lleva más tiempo del esperado, incluso cuando se tiene en cuenta la Ley de Hofstadter.

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 desarrollo

Véase también

Referencias

  1. ^ "Lo que sabemos y lo que no sabemos sobre la estimación del esfuerzo de desarrollo de software".
  2. ^ "Guía de estimación y evaluación de costos GAO-09-3SP: Mejores prácticas para desarrollar y gestionar los costos de programas de capital" (PDF) . Oficina de Responsabilidad Gubernamental de los Estados Unidos. 2009.
  3. ^ 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.
  4. ^ Molokken, K. Jorgensen, M. (2003). "Una revisión de las encuestas de software sobre la estimación del esfuerzo de software". Simposio internacional de 2003 sobre ingeniería de software empírica, 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 )
  5. ^ Jørgensen, M. Teigen, KH Ribu, K. (2004). "¿Mejor seguro que seguro? Exceso de confianza en los intervalos de predicción del esfuerzo de desarrollo de software basados ​​en el juicio". 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 )
  6. ^ 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.
  7. ^ Goodwin, P. (1998). Mejorar la previsión de ventas basada en el juicio: el papel de la investigación de laboratorio. Previsión basada en el juicio. G. Wright y P. Goodwin. Nueva York, John Wiley & Sons: 91-112.
  8. ^ Farr, L. Nanus, B. "Factores que afectan el costo de la programación informática, volumen I" (PDF) . Archivado desde el original (PDF) el 21 de febrero de 2017.{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  9. ^ Farr, L. Nanus, B. "Factores que afectan el costo de la programación informática, volumen II" (PDF) . Archivado desde el original (PDF) el 28 de julio de 2018.{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  10. ^ Nelson, EA (1966). Manual de gestión para la estimación de los costes de programación informática. AD-A648750, Systems Development Corp.
  11. ^ 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 centrados en el producto . Apuntes de clase en informática. Vol. 2559. págs. 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: varios nombres: lista de autores ( enlace ) ISBN  9783540002345 , 9783540362098 .
  12. ^ 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.
  13. ^ Jørgensen, M. Shepperd, M. "Una revisión sistemática de estudios de estimación de costos de desarrollo de software".{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  14. ^ "Servicios de desarrollo de software personalizado - Desarrollo de aplicaciones personalizadas - Oxagile".
  15. ^ Hill Peter (ISBSG) – Estimation Workbook 2 – publicado por el International Software Benchmarking Standards Group ISBSG - Estimation and Benchmarking Resource Centre Archivado el 29 de agosto de 2008 en Wayback Machine
  16. ^ Morris Pam — Descripción general de las métricas totales del análisis de puntos de función - Centro de recursos de puntos de función
  17. ^ Srinivasa Gopal y Meenakshi D'Souza. 2012. Mejorar la precisión de las estimaciones 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 la India (ISEC '12). ACM, Nueva York, EE. UU., 75-78. doi :10.1145/2134254.2134267
  18. ^ 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. doi :10.1109/32.965341.{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  19. ^ ab Jørgensen, M. "Estimación del esfuerzo de trabajo de desarrollo de software: evidencia sobre el juicio de expertos y modelos formales".
  20. ^ Winkler, RL (1989). "Combinando pronósticos: una base filosófica y algunos problemas actuales". International Journal of Forecasting . 5 (4): 605–609. doi :10.1016/0169-2070(89)90018-6.
  21. ^ 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 )
  22. ^ BlueOptima (29 de octubre de 2019). "Cómo identificar métricas de desarrollo de software objetivas y confiables".
  23. ^ 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.{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  24. ^ Kitchenham, B. , Pickard, LM, MacDonell, SG Shepperd. "Lo que las estadísticas de precisión realmente miden".{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  25. ^ 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. CiteSeerX 10.1.1.101.5792 . doi :10.1109/TSE.2003.1245300. {{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  26. ^ 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 )
  27. ^ 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 )
  28. ^ 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". IEE Proceedings - Software . 145 : 29. doi :10.1049/ip-sen:19983370. Archivado desde el original el 20 de septiembre de 2017.{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  29. ^ Grimstad, S. Jørgensen, M. (2006). "Un marco para el análisis de la precisión de la estimación de costes de software".{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  30. ^ Jørgensen, M. Grimstad, S. (2008). "Cómo evitar el impacto de 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 )
  31. ^ Bentley, Jon (1985). "Programming pearls" (se requiere pago) . Communications of the ACM . 28 (9): 896–901. doi : 10.1145/4284.315122 . ISSN:  0001-0782. S2CID  : 5832776.
  32. ^ Gödel, Escher, Bach: Una eterna trenza de oro . Edición del 20º aniversario, 1999, pág. 152. ISBN 0-465-02656-7 . 
  33. ^ Manual de AFCAA Revic 9.2 Sitio conmemorativo de Revic
  34. ^ "Descripción general de SLIM Suite". Qsm.com . Consultado el 27 de agosto de 2019 .
  35. ^ "SLIM-WebServices". Qsm.com . Consultado el 27 de agosto de 2019 .
  36. ^ Sitio de sistemas PRICE de modelos de costos integrados de TruePlanning Archivado el 5 de noviembre de 2015 en Wayback Machine