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 software basándose en datos incompletos, inciertos y ruidosos. Las estimaciones de esfuerzo pueden utilizarse como insumos para los 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 de expertos es la estrategia dominante al estimar el esfuerzo de desarrollo de software. [3]

Normalmente, las estimaciones del esfuerzo son demasiado optimistas y existe un exceso de confianza en su precisión. El esfuerzo medio superado parece ser de alrededor del 30% y no disminuye con el tiempo. Para 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 exactitud de las estimaciones del 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 sólo del 60-70%. [5]

Actualmente el término “estimación del esfuerzo” se utiliza para denotar diferentes conceptos como el uso más probable del esfuerzo (valor modal), el esfuerzo que corresponde a una probabilidad del 50% de no superarse (mediana), el esfuerzo planeado, 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 para 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 del 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ística bayesiana , análisis léxico de especificaciones de requisitos, programación genética , programación lineal , producción económica. modelos, informática suave , modelado de lógica difusa , arranque 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étricos 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 la última publicació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, 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 puntos de objeto y puntos de función COSMIC en la década de 1990.

Enfoques de estimación

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

A continuación se muestran 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 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:

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 ser consciente de las limitaciones de cada enfoque tradicional para medir la productividad del desarrollo de software. [22]

Además, en el 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 de su introducción.

Evaluación de la precisión 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 [23] [24] [25] y existen varias medidas alternativas, como medidas más simétricas, [26] Media ponderada de 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 previstos 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 una capacidad de estimación baja. Las razones alternativas, competitivas o complementarias incluyen el bajo control de costos del proyecto, la alta complejidad del trabajo de desarrollo y una mayor funcionalidad entregada de lo estimado originalmente. Se incluye un marco para mejorar el uso y la interpretación de la medición del error de estimación. [29]

Problemas psicológicos

Hay muchos factores psicológicos que podrían explicar la fuerte tendencia hacia estimaciones de esfuerzo excesivamente optimistas. Es esencial considerar estos factores incluso cuando se utilizan modelos de estimación formales, porque gran parte de los datos de entrada de estos modelos se basan 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 adagios humorísticos, como referirse irónicamente a una tarea como una " pequeña cuestión 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 si se tiene en cuenta la Ley de Hofstadter.

Lo que un programador puede hacer en un mes, dos programadores lo pueden hacer en dos meses.

—Fred  Brooks

Comparación de software de estimación de desarrollo.

Ver también

Referencias

  1. ^ "Lo que hacemos y lo que no sabemos sobre la estimación del esfuerzo de desarrollo de software".
  2. ^ "Guía de evaluación y estimación de costos GAO-09-3SP Mejores prácticas para desarrollar y gestionar los costos de programas de capital" (PDF) . Oficina de Responsabilidad del Gobierno de EE. UU. 2009.
  3. ^ Jorgensen, 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 encuestas de software sobre estimación del esfuerzo del software". 2003 Simposio Internacional sobre Ingeniería de Software Empírico, 2003. ISESE 2003. Actas . págs. 223-230. doi :10.1109/ISESE.2003.1237981. ISBN 978-0-7695-2002-5. S2CID  15471986.{{cite book}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  5. ^ Jørgensen, M. Teigen, KH Ribu, K. (2004). "¿Es mejor estar seguro que estar seguro? Exceso de confianza en los intervalos de predicción del esfuerzo de desarrollo de software basados ​​en juicios". Revista de Sistemas y Software . 70 (1–2): 79–93. doi :10.1016/S0164-1212(02)00160-7.{{cite journal}}: Mantenimiento CS1: 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). Mejora de la previsión de ventas juiciosa: el papel de la investigación de laboratorio. Pronosticar con criterio. G. Wright y P. Goodwin. Nueva York, John Wiley & Sons: 91-112. Hola
  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}}: Mantenimiento CS1: 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}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  10. ^ Nelson, EA (1966). Manual de Gestión para la Estimación de Costos de Programación Informática. AD-A648750, Corporación de Desarrollo de Sistemas.
  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 centrado en el producto . Apuntes de conferencias sobre 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}}: Mantenimiento CS1: 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 los estudios de estimación de costos de desarrollo de software".{{cite web}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  14. ^ "Servicios de desarrollo de software personalizados - Desarrollo de aplicaciones personalizadas - Oxagile".
  15. ^ 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 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 la estimación mediante el uso de razonamiento basado en casos y un enfoque de estimación combinado. En actas de la Quinta 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". Transacciones IEEE sobre ingeniería de software . 27 (11): 1014-1022. doi : 10.1109/32.965341.{{cite journal}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  19. ^ ab Jørgensen, M. "Estimación del esfuerzo de trabajo de desarrollo de software: evidencia sobre juicio de expertos y modelos formales".
  20. ^ Winkler, RL (1989). "Combinación de previsiones: una base filosófica y algunas cuestiones de actualidad". Revista internacional de previsión . 5 (4): 605–609. doi :10.1016/0169-2070(89)90018-6.
  21. ^ 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.{{cite journal}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  22. ^ BlueOptima (29 de octubre de 2019). "Identificación de 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}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  24. ^ Kitchenham, B. , Pickard, LM, MacDonell, SG Shepperd. "Qué miden realmente las estadísticas de precisión".{{cite web}}: Mantenimiento CS1: 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}}: Mantenimiento CS1: 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". Revista de Sistemas y Software . 27 : 3–16. doi :10.1016/0164-1212(94)90110-4.{{cite journal}}: Mantenimiento CS1: 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, coherencia y regresión".{{cite web}}: Mantenimiento CS1: 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". Actas de la IEE: software . 145 : 29. doi : 10.1049/ip-sen: 19983370.{{cite journal}}: Mantenimiento CS1: 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 costos de software".{{cite web}}: Mantenimiento CS1: 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". Software IEEE : 78–83.{{cite journal}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  31. ^ Bentley, Jon (1985). "Perlas de programación" (pago requerido) . Comunicaciones de la ACM . 28 (9): 896–901. doi : 10.1145/4284.315122 . ISSN  0001-0782. S2CID  5832776.
  32. ^ Gödel, Escher, Bach: una eterna trenza dorada . Edición 20 aniversario, 1999, p. 152. ISBN 0-465-02656-7 . 
  33. ^ Manual de AFCAA Revic 9.2 Sitio conmemorativo de Revic
  34. ^ "Descripción general de la suite SLIM". Qsm.com . Consultado el 27 de agosto de 2019 .
  35. ^ "Servicios web SLIM". Qsm.com . Consultado el 27 de agosto de 2019 .
  36. ^ Sitio de sistemas PRICE de modelos de costos integrados TruePlanning Archivado el 5 de noviembre de 2015 en Wayback Machine.