Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El Cliente dice: “¡Te damos tiempos límite razonables! ¿Por qué no puedes cumplirlos?”
Ese argumento es muy común en el desarrollo de software y el hecho de fijar la fecha de
entrega antes de establecer los requisitos, es el problema más antiguo de la ingeniería de
software, pero si ya estamos conscientes de todo esto ¿por qué la improvisación parece ser el
estándar? y ¿por qué no se tienen procesos de estimación bien definidos?
Hoy en día existen diversas herramientas y metodologías que nos permiten estimar costos
como SPR KnowledgePlan de Capers Jones o COCOMO II de Barry Boehm, por comentar
algunos. Sin embargo fenómenos como el “Proyecto interminable” y la “Marcha de la muerte”
siguen siendo comunes en muchos desarrollos. Existen muchos factores que afectan las
estimaciones de costo como:
No existe una forma simple de calcular el esfuerzo requerido para desarrollar un proyecto de
software. Las estimaciones iniciales se hacen bajo la base a la definición de requisitos que el
cliente provee a un alto nivel (funcionalidades o pantallas). Los pasos típicos en una estimación
son:
Diseño inicial
Está basado en los requerimientos originales del sistema a un alto nivel (pantallas, reportes,
procesos, transacciones) lo que son traducidos a puntos de aplicación, esto nos sirve para
hacer una predicción temprana del costo.
Reutilización
Este nivel se utiliza para calcular el esfuerzo requerido para integrar el código generado por los
IDE’s o herramientas de generación de código reutilizable como Spring Roo o Genexus por
ejemplo, tomando en cuenta componentes reutilizables que facilitan el desarrollo como Apache
Commons.
Post-arquitectura
Ya diseñado el sistema se pueden hacer estimaciones más precisas del tamaño del software,
aquí es importante señalar que el software tiene una tasa de crecimiento de los requerimientos
del sistema entre el 2 y el 5 por ciento mensual, por lo cual no es posible hacer una estimación
exacta pero las predicciones de costo se pueden acercar mucho a la realidad gracias a la
aplicación de métricas que nos permiten tener una variación muy pequeña con respecto al
producto final.
Cocomo está basado en fórmulas para hacer las estimaciones, véase la figura 1 donde se
estima el esfuerzo del personal por mes (PM), después se hace la estimación del tamaño del
proyecto (SIZE) y finalmente se obtiene una proyección del esfuerzo requerido (B)
contemplando los factores involucrados (SF).
Obviamente el realizar los cálculos manualmente es una tarea lenta y tediosa por lo cual
existen muchas aplicaciones que se encargan de realizar todas las fórmulas, como USC
COCOMO II que es la aplicación de la página oficial de COCOMO.
Conclusión
La estimación de costos es una actividad muy importante en el desarrollo de software. Esta
actividad no es estática sino que cambia en diferentes puntos del ciclo de vida del desarrollo.
Se tienen que hacer estimaciones desde diferentes puntos de vista, desde la predicción de
costos hasta la retrospectiva de comportamiento del costo, para lo cual las herramientas de
estimación nos ayudan a agilizar la tarea. Sin duda el poder hacer predicciones con respecto al
costo del software nos da ventajas que facilitan el éxito de un proyecto, sin embargo esto no
debe de ser exhaustivo ya que se tienen variables que el modelo no contempla totalmente
como la incertidumbre, la complejidad o factores humanos de los cuales no se puede tener
control, por lo cual se deben tomar en cuenta los riesgos del proceso de desarrollo de software.
Una de las ventajas de COCOMO es el poder medir el comportamiento de costo de un proyecto
de software de forma interna para la empresa de desarrollo. Lo que nos permite tener un
referente en diferentes puntos del proyecto y así poder comprobar que las proyecciones de
costo originales se cumplan.