Una estimación de software es una predicción de cuánto tiempo durará o costará su desarrollo y/o mantenimiento.

Si se trata de estimar el tiempo, el esfuerzo puede expresarse en horas-persona u otra unidad.

Si se trata de estimaciones de costo, se puede expresar en la moneda de preferencia.

El reto de elaborar estimaciones de software, es realizar predicciones realistas, basándose en información incompleta e incierta.

En la gestión de proyectos de software, las estimaciones  principalmente se utilizan para:

  • Desarrollar planes de proyectos.
  • Elaborar presupuestos.
  • Fijación de precios de un software para un cliente empresarial.

Las técnicas de estimación de proyectos de software se pueden clasificar de la siguiente manera:

Juicio de expertos

Esta técnica consisten entregar la información de levantamiento de requisitos de software (por ejemplo las minutas de reunión o documento de especificación de requisitos de software) y entregárselo a uno o varios conocedores del desarrollo de software y del área de negocio.

Quienes revisan la información proporcionada, en caso de que no haya dudas, se disponen a estimar.

Por analogía

Este tipo de estimación consiste en comparar el desarrollo de software propuesto con proyectos similares.

La ventaja sobre la estimación por juicio experto, es que la analogía se basa en lecciones aprendidas (experiencias) que están documentadas, por lo cual esta se basa en números documentados.

Una posible desventaja es que si existe mucha variación de las tecnologías y funcionalidades de un proyecto a otro, lo cual hace que las estimaciones sean poco confiables.

Por descomposición

Consiste en realizar una descomposición de proyecto en componentes, y estos a su vez en sub-componentes de mayor detalle.
Este tipo de estimación parte del principio que dividir un problema en sus partes facilita su ataque y análisis.

Los estimados sobre componentes más pequeños tendrían una mayor exactitud que los componentes grandes, permitiendo identificar y eliminar la falta de información que pudiese afectar el estimado.

Por medio de modelos de estimación

Comprende la utilización de modelos paramétricos, que se utilizan para realizar las estimaciones de software.

Un ejemplo de estimación por modelo es COCOMO, en el cual se utiliza una fórmula de regresión lineal aplicada a datos históricos de proyectos pasados, produciendo los estimados mediante esta función de estimación.