Ingeniería del Software de Gestión
Doble Titulación: ITIG - LADE
Curso: 2010/2010 - 2º Cuatrimestre
Ejercicio de Análisis 3.
Planificación de Proyectos.
Estimaciones de Software.
COCOMO
El modelo COCOMO es seguramente el más conocido, ya que como subraya Conte
et al., es el “mas completo y detalladamente documentado de todos los modelos de
esfuerzo”. Este modelo se basa en una estimación previa del tamaño del software
en líneas de código (LDC). Este dato sirve como parámetro de las ecuaciones de
cálculo de esfuerzo derivadas por B.W. Boehm.
La forma general de la ecuación de esfuerzo es:
Esfuerzo = a * (KLDC)b
Con base en esta ecuación y al modelo de desarrollo del proyecto, las ecuaciones
de esfuerzo y tiempo de COCOMO son:
Personas-mes Tiempo de desarrollo
Modelo de desarrollo
(nominal) (nominal)
1.05
Orgánico PM = 3.2 * KLDC TD = 2.5 * PM0.38
1.12
Semi-libre PM = 3.0 * KLDC TD = 2.5 * PM0.35
1.20
Empotrado PM = 2.8 * KLDC TD = 2.5 * PM0.32
En el modelo intermedio de COCOMO, el valor de esfuerzo nominal calculado con
las ecuaciones anteriores debe ser ajustado de acuerdo a los factores de coste del
modelo, que se pueden observar en la tabla 2. Cuando un factor se valora como
nominal o medio, el valor asignado es siempre 1, es decir, no influye en el coste.
Factores Valor de los factores
(cost-drivers)
Muy bajo Bajo Medio Alto Muy alto Extra
Fiabilidad requerida 0.75 0.88 1 1.15 1.40
Tamaño de la base de 0.94 1 1.08 1.16
datos
Complejidad del software 0.70 0.85 1 1.15 1.30 1.65
Restricciones de tiempo 1 1.11 1.30 1.66
de ejecución
Restricciones de memoria 1 1.06 1.21 1.56
Volatilidad del hardware 0.87 1 1.15 1.30
Restricciones de tiempo 0.87 1 1.07 1.15
de respuesta
Calidad de los analistas 1.46 1.19 1 0.86 0.71
Experiencia con el tipo de 1.29 1.13 1 0.91 0.82
aplicación
Experiencia con el 1.21 1.10 1 0.90
hardware
Ingeniería del Software de Gestión
Doble Titulación: ITIG - LADE
Curso: 2010/2010 - 2º Cuatrimestre
Experiencia con el 1.14 1.07 1 0.95
lenguaje de programación
Calidad de los 1.42 1.17 1 0.86 0.70
programadores
Técnicas modernas de 1.24 1.10 1 0.91 0.82
programación
Empleo de herramientas 1.24 1.10 1 0.91 0.83
Restricciones a la 1.23 1.08 1 1.04 1.10
duración del proyecto
Ejemplo:
Es usted el jefe de un proyecto de desarrollo de un sistema de comunicaciones en
el cual ha estimado tener 30 KLDC. El software a desarrollar es de alta complejidad
pero afortunadamente podremos contar con personal de muy alta cualificación y
experiencia específica en el tipo de software a desarrollar. Teniendo en cuenta que
el costo del salario mensual de cada persona es de 1350€ mensuales, calcule el
esfuerzo de desarrollo de este sistema.
Esfuerzo nominal = 3.2 * 301.05 = 113.79 personas-mes
Ajustando el esfuerzo según las variables descritas:
Esfuerzo = 113.79 * 1.15 (complejidad) * 0.7 (calidad prog) * 0.91 (experiencia)
Esfuerzo = 83.35 personas – mes
Con este dato, hallamos el resto de variables:
Costo = 83.35 *1350 € = 112.522,5 €
Tiempo = 2.5 * 83.350.38 = 13.42 meses
No medio de personas = 83.35/13.42 = 6.2 personas
Ejercicios:
1. Para el caso del ejemplo presentado, ¿sería mas rentable en tiempo y
dinero, emplear personas de nivel medio cuyo salario es de 1.275 €
mensuales?
2. Se desea desarrollar para el avión AIR-96 el software para un controlador de
presión del aire en cabina que residente en ROM interactúe sobre los
mecanismos de ajuste en función de las señales que le llegan de los
sensores, con bastantes cambios de requisitos debidos a distintas
variaciones en el soporte hardware. El tamaño estimado es de 65 KLDC.
Consideramos los factores de costes a nivel nominal excepto la fiabilidad
(muy alta), base de datos (reducida), restricciones de memoria, de tiempo
de ejecución y de respuesta (muy altas), complejidad (alta), experiencia en
el hardware (alta) y gran calidad en los programadores. Teniendo en cuenta
que el salario medio bruto anual (14 pagas) es de 24.000€ por persona,
estímese el esfuerzo requerido para este proyecto.
3. Para el ejercicio 2, ¿sería más rentable en tiempo y dinero, si se decidiera
utilizar técnicas modernas de programación (alta) a cambio de tener una
restricción de la duración del proyecto alta?