1. 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:
Modelo de desarrollo
Personas-mes
(nominal)
Tiempo de desarrollo
(nominal)
Orgánico PM = 3.2 * KLDC 1.05
TD = 2.5 * PM0.38
Semi-libre PM = 3.0 * KLDC 1.12
TD = 2.5 * PM0.35
Empotrado PM = 2.8 * KLDC 1.20
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
(cost-drivers)
Valor de los factores
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
datos
0.94 1 1.08 1.16
Complejidad del software 0.70 0.85 1 1.15 1.30 1.65
Restricciones de tiempo
de ejecución
1 1.11 1.30 1.66
Restricciones de memoria 1 1.06 1.21 1.56
Volatilidad del hardware 0.87 1 1.15 1.30
Restricciones de tiempo
de respuesta
0.87 1 1.07 1.15
Calidad de los analistas 1.46 1.19 1 0.86 0.71
Experiencia con el tipo de
aplicación
1.29 1.13 1 0.91 0.82
Experiencia con el
hardware
1.21 1.10 1 0.90
2. Ingeniería del Software de Gestión
Doble Titulación: ITIG - LADE
Curso: 2010/2010 - 2º Cuatrimestre
Experiencia con el
lenguaje de programación
1.14 1.07 1 0.95
Calidad de los
programadores
1.42 1.17 1 0.86 0.70
Técnicas modernas de
programación
1.24 1.10 1 0.91 0.82
Empleo de herramientas 1.24 1.10 1 0.91 0.83
Restricciones a la
duración del proyecto
1.23 1.08 1 1.04 1.10
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?