Ejemplo Estimación con el método de Cocomo
Entre los distintos métodos de estimación de
costes de desarrollo de software, el modelo COCOMO (COnstructive COst MOdel)
desarrollado por Barry M. Boehm, se engloba en el grupo de los modelos
algorítmicos que tratan de establecer una relación matemática la cual permite
estimar el esfuerzo y tiempo requerido para desarrollar un producto.
Por un lado COCOMO
define tres modos de desarrollo o tipos de proyectos:
·
Orgánico: proyectos relativamente sencillos, menores de 50 KDLC líneas de
código, en los cuales se tiene experiencia de proyectos similares y se
encuentran en entornos estables.
·
Semi-acoplado: proyectos intermedios en complejidad y tamaño (menores de 300 KDLC),
donde la experiencia en este tipo de proyectos es variable, y las restricciones
intermedias.
·
Empotrado: proyectos bastante complejos, en los que apenas se tiene experiencia y
se engloban en un entorno de gran innovación técnica. Además se trabaja con
unos requisitos muy restrictivos y de gran volatilidad.
Y por otro lado existen diferentes modelos que define COCOMO:
·
Modelo básico: Se basa exclusivamente en el tamaño expresado en LDC.
·
Modelo intermedio: Además del tamaño del programa incluye un conjunto de medidas
subjetivas llamadas conductores de costes.
·
Modelo avanzado: Incluye todo lo del modelo intermedio además del impacto de cada
conductor de coste en las distintas fases de desarrollo.
Para nuestro caso el modelo intermedio
será el que usaremos, dado que realiza las estimaciones con bastante precisión.
Así pues las fórmulas serán las siguientes:
·
E = Esfuerzo = a KLDC e
* FAE (persona x mes)
·
T = Tiempo de duración del
desarrollo = c Esfuerzo d (meses)
·
P= Personal = E/T (personas)
Para calcular el Esfuerzo, necesitaremos hallar
la variable KDLC (Kilo-líneas de código), donde los PF (punto de función, hallado
en las primeras tablas ver http://adsiandmendez.blogspot.com.co/2016/06/metricas-de-calidad-de-software.html)
son 261,36 (dato ficticio para este ejemplo) y las líneas por cada PF equivalen
a 32 según vemos en la tabla que se ilustra a continuación:
LENGUAJE
|
|
Ensamblador
|
320
|
C
|
150
|
COBOL
|
105
|
Pascal
|
91
|
Prolog/LISP
|
64
|
C++
|
64
|
Visual Basic
|
32
|
SQL
|
12
|
Así pues tras saber que son 32 LDC por cada PF, por el hecho de ser
Visual Basic el programa con el cual desarrollamos el software el resultado de
los KDLC será el siguiente:
KLDC=
(PF * Líneas de código por cada PF)/1000 = (261,36*32)/1000= 8,363
KDLC
Así
pues, en nuestro caso el tipo orgánico será el más
apropiado ya que el número de líneas de código no supera los 50 KLDC, y además
el proyecto no es muy complejo, por consiguiente, los coeficientes que usaremos
serán las siguientes:
Proyecto Software
|
A
|
e
|
c
|
d
|
Orgánico
|
3,2
|
1,05
|
2,5
|
0,38
|
Semi-acoplado
|
3,0
|
1,12
|
2,5
|
0,35
|
Empotrado
|
2,8
|
1,20
|
2,5
|
0,32
|
Y por otro lado también hemos de hallar la
variable FAE, la cual se obtiene mediante la multiplicación de los valores
evaluados en los diferentes 15 conductores de coste que se observan en la
siguiente tabla:
Conductores de coste
|
VALORACIÓN
|
|||||
Muy bajo
|
Bajo
|
Nominal
|
Alto
|
Muy
alto
|
Extr. alto
|
|
Fiabilidad
requerida del software
|
0,75
|
0,88
|
1.00
|
1,15
|
1,40
|
-
|
Tamaño
de la base de datos
|
-
|
0,94
|
1.00
|
1,08
|
1,16
|
-
|
Complejidad
del producto
|
0,70
|
0,85
|
1.00
|
1,15
|
1,30
|
1,65
|
Restricciones
del tiempo de ejecución
|
-
|
-
|
1.00
|
1,11
|
1,30
|
1,66
|
Restricciones
del almacenamiento principal
|
-
|
-
|
1.00
|
1,06
|
1,21
|
1,56
|
Volatilidad
de la máquina virtual
|
-
|
0,87
|
1.00
|
1,15
|
1,30
|
-
|
Tiempo de
respuesta del ordenador
|
-
|
0,87
|
1.00
|
1,07
|
1,15
|
-
|
Capacidad del
analista
|
1,46
|
1,19
|
1.00
|
0,86
|
0,71
|
-
|
Experiencia
en la aplicación
|
1,29
|
1,13
|
1.00
|
0,91
|
0,82
|
-
|
Capacidad de
los programadores
|
1,42
|
1,17
|
1.00
|
0,86
|
0,70
|
-
|
Experiencia
en S.O. utilizado
|
1,21
|
1,10
|
1.00
|
0,90
|
-
|
-
|
Experiencia
en el lenguaje de programación
|
1,14
|
1,07
|
1.00
|
0,95
|
-
|
-
|
Prácticas de
programación modernas
|
1,24
|
1,10
|
1.00
|
0,91
|
0,82
|
-
|
Utilización
de herramientas software
|
1,24
|
1,10
|
1.00
|
0,91
|
0,83
|
-
|
Limitaciones
de planificación del proyecto
|
1,23
|
1,08
|
1.00
|
1,04
|
1,10
|
-
|
FAE=1,15*1,00*0,85*1,11*1,00*1,00*1,07*0,86*0,82*0,70*1,00*0,95*1,00*0,91*1,08 = 0,53508480
Justificación de los valores:
Atributos
de software
·
Fiabilidad requerida del
software: Si se produce un fallo por el pago de un
pedido, o fallo en alguna reserva, etc... puede ocasionar grandes pérdidas a la
empresa (Valoración Alta).
·
Tamaño de la base de datos: La base de datos de nuestro producto será de tipo estándar (Valoración
Nominal).
·
Complejidad del producto: La aplicación no va a realizar cálculos complejos (Valoración Baja).
Atributos de hardware
·
Restricciones del tiempo de
ejecución: En los requerimientos se exige alto
rendimiento (Valoración Alta).
·
Restricciones del
almacenamiento principal: No hay restricciones al
respecto (Valoración Nominal).
·
Volatilidad de la máquina
virtual: Se usarán sistemas de la “Familia Windows”
(Valoración Nominal).
·
Tiempo de respuesta del
ordenador: Deberá ser interactivo con el usuario
(Valoración Alta).
Atributos
del personal
·
Capacidad del analista: Capacidad alta relativamente, debido a la experiencia en análisis en
proyecto similar (Valoración Alta)
·
Experiencia en la aplicación: Se tiene cierta experiencia en aplicaciones de esta envergadura (Valoración
muy alta).
·
Capacidad de los programadores:
Teóricamente deberá tenerse una capacidad muy alta por
la experiencia en anteriores proyectos similares (Valoración muy alta).
·
Experiencia en S.O. utilizado: Con Windows 2000 Professional la experiencia es a nivel usuario
(Valoración Nominal).
·
Experiencia en el lenguaje de
programación: Es relativamente alta, dado que se
controlan las nociones básicas y las propias del proyecto (Valoración Alta).
Atributos del proyecto
·
Prácticas de programación modernas: Se usarán prácticas de programación mayormente convencional
(Valoración Nominal).
·
Utilización de herramientas
software: Se usarán herramientas estándar que no
exigirán apenas formación, de las cuales se tiene cierta experiencia
(Valoración Alta).
·
Limitaciones de planificación
del proyecto: Existen pocos límites de planificación.
(Valoración Baja).
Cálculo
del esfuerzo del desarrollo:
E = a KLDC e
* FAE = 3,2 * (8.363)^1,05 *
0,53508480 = 15,91 personas /mes
Cálculo
tiempo de desarrollo:
T = c Esfuerzo d = 2,5 *
(15,91)^0,38 = 7,15 meses
Productividad:
PR
= LDC/Esfuerzo = 8363/15,91 = 525 ,64 LDC/personas mes
Personal promedio:
P =
E/T = 15,91/7,15 = 2,22 personas
Según estas cifras será necesario un equipo
de 3 personas trabajando alrededor de 7 meses, pero puesto que el desarrollo
del proyecto debe realizarse en un plazo 3 meses, incrementaremos a 6 personas el
número de personas del equipo de proyecto (ya que 15,91/3 nos da alrededor de
este resultado).
Así pues tendremos un equipo formado por 1
Jefe de proyecto, 2 Analistas, 2
programadores y 1 Responsable de calidad.
El presente ejemplo, me ha parecido muy practico, y nos sirve para continuar diligenciando nuestro formato metricas.xml como parte de la evidencia metricadas de la calidad del software. Fuente de la información: proyectosumg.com/data/IngenieriaSoftware/cocomo.doc
No hay comentarios:
Publicar un comentario