Caracterización y evolución de métodos de estimación de software
Fecha
2014Autor
Pedrozo Petrazzini, Osmar Gabriel
Lencina, Andrea Berenice
Dapozo, Gladys Noemí
Metadatos
Mostrar el registro completo del ítemResumen
Desde que se introdujo el término “crisis del software” a finales de los años 60s, una de las principales problemáticas
que dieron origen al mismo, estaba vinculada con la falta de precisión en la planificación de los proyectos y en la
estimación de costos. Sin embargo, a pesar de los avances, estos aspectos constituyen una fuerte preocupación de
las empresas que desarrollan software hoy en día, dado que las estimaciones ineficientes afectan negativamente el
cumplimiento de plazos, contribuyen a la entrega de productos incompletos, incrementan el precio final y generan
pérdida de competitividad.
Debido a esto, es indispensable el uso de metodologías o herramientas que provean mecanismos para obtener datos
objetivos que permitan evaluar, predecir y mejorar la calidad del software y garantizar resultados satisfactorios. El valor
de las mediciones aumenta cuanto más tempranamente se obtienen, pero también es más difícil obtener mayor
precisión en la estimación en etapas iniciales. A medida que el proyecto se desarrolla se incrementan y se refinan los
datos que nutren a las metodologías de estimación. De aquí la importancia de recabar información en las distintas
fases del ciclo de vida.
Para obtener un panorama actualizado de los distintos métodos y herramientas que se utilizan para la estimación de
software y observar como evolucionaron en el tiempo acompañando hitos significativos en la historia del desarrollo de
software, se realizó un análisis y caracterización, en especial, en los aspectos referidos a su vinculación con los
diferentes paradigmas de programación, metodologías de desarrollo, y contexto de uso.
Del estudio realizado surge claramente que los métodos de estimación se clasifican en dos grandes ramas de acuerdo
a la naturaleza de los métodos utilizados. Por un lado los métodos heurísticos (basados en juicio experto, estimación
por analogía, método ascendente, método descendente, método algorítmico), y por otro lado los métodos paramétricos
(COCOMO, SLIM, IFPUG, COSMIC-ffp, Puntos de casos de uso, etc).
De los modelos de estimación que se han publicado desde los años 60 hasta la actualidad, muchos quedaron
obsoletos, pero otros como el modelo SLIM (1979), el modelo COCOMO (1981) y su actualización COCOMO II (1997)
han ido evolucionando, y sirvieron de base para muchas de las herramientas de estimación existentes en la actualidad.
Se observó que las primeras metodologías intentaban ser independiente de las tecnologías utilizadas para el
desarrollo del software, pero con el tiempo se fueron adecuando a las tecnologías emergentes. Por ejemplo, dentro del
paradigma orientado a objetos se proponen los métodos basados en Puntos de casos de uso y Puntos de objeto, en
un contexto de desarrollo ágil surgieron metodologías tales como Wideband Delphi y Planningpoker, para el desarrollo
de proyectos de gran envergadura se propone el método IFPUG-FPA y, para los sistemas de tiempo real, de gestión e
hibridos, aparecieron COSMIC FFP, MkII y NESMA.
Por otra parte, es notable la tendencia hacia la combinación de diferentes métodos de estimación para lograr
resultados más precisos y apropiados al contexto de aplicación. Así también, se destaca la aparición de nuevos
métodos que incluyen técnicas de inteligencia artificial, tales como la lógica difusa, sistemas basados en conocimiento
y redes neuronales.
De los resultados obtenidos se concluye que el proceso de estimar no es una tarea sencilla y que no es una actividad
estática sino más bien dinámica abarcando diferentes fases del ciclo de vida del desarrollo. Además, cabe destacar
que si bien las estimaciones permiten mejorar las predicciones favoreciendo el éxito de un proyecto, en general los
modelos no contemplan todas las variables que afectan a los proyectos, como la complejidad o los factores humanos
asociados, por lo cual permanece un cierto nivel de riesgo que es necesario considerar.