Cocomo II

Anuncio
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
COCOMO II
Breve historia
El modelo COCOMO ha evolucionado debido a los constantes avances en
el mercado de desarrollo de software.
En el año 1981 Barry Boehm publica el modelo COCOMO, acorde a las prácticas de desarrollo de
software de aquel momento [Boehm 1981]. Durante la década de los 80, el modelo se continuó
perfeccionando y consolidando, siendo el modelo de estimación de costos más ampliamente
utilizado en el mundo.
En el año 1983 se introduce el lenguaje de programación Ada (American National Standard
Institute) para reducir los costos de desarrollo de grandes sistemas. Algunos aspectos de Ada
provocaron un gran impacto en los costos de desarrollo y mantenimiento, así Barry Boehm y
Walker Royce definieron un modelo revisado, llamado Ada COCOMO [Boehm 1989].
En los 90, las técnicas de desarrollo de software cambiaron dramáticamente, surgieron la necesidad
de reusar software existente, la construcción de sistemas usando
librerías, etc. Estos cambios comenzaron a generar problemas en la
aplicación del modelo COCOMO. La solución fue reinventar el
modelo. Después de algunos años y de un esfuerzo combinado de
USC-CSE (University of Southern California- Center For Software
Engineering), IRUS at UC Irvine y organizaciones privadas, aparece
COCOMO II. Las incorporaciones a este modelo lo reforzaron e
hicieron apto para ser aplicado en proyectos vinculados a
tecnologías como orientación a objetos, desarrollo incremental,
composición de aplicación, y reingeniería. COCOMO II consta de tres
modelos, cada uno de los cuales ofrece una precisión acorde a cada
etapa de desarrollo del proyecto. Enunciados en orden creciente de
fidelidad son, modelo de Composición de Aplicación, Diseño Temprano y Post Arquitectura.
El USC- CSE implementó los dos últimos modelos en una herramienta de software. Esta
herramienta le permite al planificador hacer rápidamente una exploración de las posibilidades de
un proyecto, analizando qué efectos provoca el ajuste de requerimientos, recursos y staff sobre la
estimación de costos y tiempos.
Para evitar confusión el modelo COCOMO original fue redesignado con el nombre COCOMO’ 81. Así
todas las referencias de COCOMO encontradas en la literatura antes de 1995 se refieren a lo que
ahora llamamos COCOMO’81. La mayoría de las referencias publicadas a partir de 1995 se refieren
a COCOMO II.
1
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
Cocomo II
Es un modelo de estimación de costes.
COnstrucive COst MOdel (MOdelo COnstructivo de Costo.
Creado por Barry W. Boehm.
Los objetivos principales que se tuvieron en cuenta para construir el modelo COCOMO II fueron:
Desarrollar un modelo de estimación de costo y cronograma de proyectos de software que
se adaptara tanto a las prácticas de desarrollo de la década del 90 como a las futuras.
Construir una base de datos de proyectos de software que permitiera la calibración
continua del modelo, y así incrementar la precisión en la estimación.
Implementar una herramienta de software que soportara el modelo.
Proveer un marco analítico cuantitativo y un conjunto de herramientas y técnicas que
evaluaran el impacto de las mejoras tecnológicas de software sobre los costos y tiempos en
las diferentes etapas del ciclo de vida de desarrollo.
COCOMO II está compuesto por tres modelos denominados: Composición de Aplicación, Diseño
Temprano y Post-Arquitectura.
Éstos surgen en respuesta a la diversidad del mercado actual y futuro de desarrollo de software.
Esta diversidad podría representarse con el siguiente esquema
2
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
Aplicaciones desarrolladas por Usuarios Finales:
•En este sector se encuentran las aplicaciones de procesamiento de información generadas
directamente por usuarios finales, mediante la utilización de generadores de aplicaciones
tales como planillas de cálculo, sistemas de consultas, etc. Estas aplicaciones surgen
debido al uso masivo de estas herramientas, conjuntamente con la presión actual para
obtener soluciones rápidas y flexibles.
Generadores de Aplicaciones:
•En este sector operan firmas como Lotus, Microsoft, Novell, Borland con el objetivo de
crear módulos pre-empaquetados que serán usados por usuarios finales y
programadores.
Aplicaciones con Componentes:
•Sector en el que se encuentran aquellas aplicaciones que son específicas para ser
resueltas por soluciones pre-empaquetadas, pero son lo suficientemente simples para ser
construidas a partir de componentes interoperables.
•Componentes típicas son constructores de interfases gráficas, administradores de bases
de datos, buscadores inteligentes de datos, componentes de dominio-específico
(medicina, finanzas, procesos industriales, etc.). Estas aplicaciones son generadas por un
equipo reducido de personas, en pocas semanas o meses.
Sistemas Integrados: Sistemas de gran escala, con un alto grado de integración
entre sus componentes, sin antecedentes en el mercado que se puedan tomar
como base. Porciones de estos sistemas pueden ser desarrolladas a través de la
composición de aplicaciones. Entre las empresas que desarrollan software
representativo de este sector, se encuentran grandes firmas que desarrollan
software de telecomunicaciones, sistemas de información corporativos, sistemas
de control de fabricación, etc.
Infraestructura: Área que comprende el desarrollo de sistemas operativos,
protocolos de redes, sistemas administradores de bases de datos, etc.
Incrementalmente este sector direccionará sus soluciones, hacia problemas
genéricos de procesamiento distribuido y procesamiento de transacciones, a
soluciones middleware. Firmas representativas son Microsoft, Oracle, SyBase,
Novell y NeXT.
3
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
1. Modelo I:
Nivel inicial de prototipado - Modelo Composición de Aplicación.
El esfuerzo necesario para concretar un proyecto de desarrollo de software, cualquiera sea el
modelo empleado, se expresa en meses/persona (PM) y representa los meses de trabajo de
una persona fulltime, requeridos para desarrollar el proyecto.
Estimación del Esfuerzo
Estimaciones realizadas con puntos de objeto y una fórmula simple para el cálculo del esfuerzo
Soporta proyectos con prototipado y proyectos que hacen uso intensivo de la
reutilización.
Basado en estimaciones estándar de la productividad del desarrollador en puntosobjeto/mes.
Tiene en cuenta el uso de herramientas CASE
La fórmula es:
.
Cálculo de Esfuerzo
PM = ( NOP * (1 - %reuse/100 ) ) / PROD
Donde:
NOP (Nuevos Puntos Objeto): Tamaño del nuevo software a desarrollar expresado
en Puntos Objeto y se calcula de la siguiente manera:
%reuso: Porcentaje de reuso que se espera lograr en el proyecto
PROD: Es la productividad promedio determinada a partir del análisis de datos de
proyectos en [Banker 1994], mostrada en
2. Modelo II:
Modelo para Diseño Temprano (EDM)
Este modelo se usa en las etapas tempranas de un proyecto de software, cuando se conoce
muy poco del tamaño del producto a ser desarrollado, de la naturaleza de la plataforma, del
personal a ser incorporado al proyecto o detalles específicos del proceso a utilizar. Este modelo
podría emplearse tanto en productos desarrollados en sectores de Generadores de Aplicación,
Sistemas Integrados o Infraestructura.
El modelo de Diseño Temprano ajusta el esfuerzo nominal usando siete factores de costo. La
fórmula para el cálculo del esfuerzo es la siguiente:
4
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
Donde
PMEstimado: es el esfuerzo nominal ajustado por 7 factores, que reflejan otros aspectos
propios del proyecto que afectan al esfuerzo necesario para la ejecución del mismo.
KSLOC: es el tamaño del software a desarrollar expresado en miles de líneas de código
fuente.
A es una constante que captura los efectos lineales sobre el esfuerzo de acuerdo a la
variación del tamaño, (A=2.94).
B es el factor exponencial de escala, toma en cuenta las características relacionadas con las
economías y deseconomías de escala producidas cuando un proyecto de software
incrementa su tamaño.
EMi corresponde a los factores de costo que tienen un efecto multiplicativo sobre el
esfuerzo, llamados Multiplicadores de Esfuerzo (Effort Multipliers). Cada factor se puede
clasificar en seis niveles diferentes que expresan el impacto del multiplicador sobre el
esfuerzo de desarrollo. Esta escala varía desde un nivel Extra Bajo hasta un nivel Extra Alto.
Cada nivel tiene un peso asociado. El peso promedio o nominal es 1.0.
Si el factor provoca un efecto nocivo en el esfuerzo de un proyecto, el valor del
multiplicador correspondiente será mayor que 1.0, caso contrario el multiplicador será
inferior a 1.0.
Los multiplicadores reflejan la capacidad de los desarrolladores, requerimientos no funcionales,
la familiaridad con la plataforma de desarrollo, etc.
1. Abrev. Descripción
Ponderación
2. RCPX
Fiabilidad de producto y complejidad 0 a 1
3. RUSE Reutilización requerida
0a1
4. PDIF
Dificultad de la plataforma
0a1
5. PREX
Experiencia del personal
0a1
6. PERS
Capacidad del personal
0a1
7. SCED
Agenda requerida
0a1
8. FCIL
Facilidades de soporte de grupo
0a1
PM refleja la cantidad de código generada automáticamente
5
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
3. Modelo III:
Nivel post-arquitectura.
Es el modelo de estimación más detallado y se aplica cuando la arquitectura del proyecto está
completamente definida. Este modelo se aplica durante el desarrollo y mantenimiento de
productos de software incluidos en las áreas de Sistemas Integrados, Infraestructura y
Generadores de Aplicaciones.
El esfuerzo nominal se ajusta usando 17 factores multiplicadores de esfuerzo. El mayor número
de multiplicadores permite analizar con más exactitud el conocimiento disponible en las
últimas etapas de desarrollo, ajustando el modelo de tal forma que refleje fielmente el
producto de software bajo desarrollo. La fórmula para el cálculo del esfuerzo es la siguiente:
Estimación de Esfuerzo
Personas Mes Nominales
.
PM= A * TamañoB * EMi
(A= 2.94)
B < 1. Los esfuerzos de desarrollo mejoran cuando escalan. Si se dobla el tamaño, el
esfuerzo es menor del doble.
B = 1. Los proyectos están balanceados. Los aumentos son proporcionales.
B > 1. Los esfuerzos de desarrollo empeoran cuando escalan. Si se dobla el tamaño, el
esfuerzo es menor del doble.
Factor de Escala
B = 0,91 + 0,01 ×  Wi
Cálculo de Esfuerzo
PM = PMnominal *  EMi
6
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
EM : Effort Multipliers W : Factores de Escala (Fi)
Nº Factores de escala Fi
Abreviatura
1.
2.
3.
4.
5.
PREC
FLEX
RESL
TEAM
PMAT
Precedentes
Flexibilidad de desarrollo
Resolución de arquitectura riesgo
Cohesión del equipo de trabajo
Madurez del Proceso
Tabla de Puntuación:
Modelos de Madurez del software
Nivel
Definición
Características
Optimizado
0.00
La organización completa está volcada en la mejora
continua de los procesos. Se hace uso intensivo de las
métricas y se gestiona el proceso de innovación.
Se caracteriza porque las organizaciones disponen de
un conjunto de métricas significativas de calidad y
productividad, que se usan de modo sistemático para la
toma de decisiones y la gestión de riesgos. El software
resultante es de alta calidad.
Además de una buena gestión de proyectos, a este
nivel las organizaciones disponen de correctos
procedimientos de coordinación entre grupos,
formación del personal, técnicas de ingeniería más
detalladas y un nivel más avanzado de métricas en los
Mejoramiento
realimentando al proceso
– Productividad y calidad
Proceso medido
Gestionado
cuantitativamente
1.56
Definido
3.12
7
Ing. Hesmeralda Rojas Enriquez
Proceso
definido
institucionalizado
e
Gerencia de Proyectos Informáticos
Repetible
4.68
Inicial
Superior 6.24
Inferior 7.80
8
C.P.Ingeniería de Sistemas e Informática - UTEA
procesos. Se implementan técnicas de revisión por
pares.
En este nivel las organizaciones disponen de unas
prácticas institucionalizadas de gestión de proyectos,
existen unas métricas básicas y un razonable
seguimiento de la calidad. La relación con
subcontratistas
y
clientes
está
gestionada
sistemáticamente.
Las organizaciones en este nivel no disponen de un
ambiente estable para el desarrollo y mantenimiento
de software. Aunque se utilicen técnicas correctas de
ingeniería, los esfuerzos se ven minados por falta de
planificación. El éxito de los proyectos se basa la
mayoría de las veces en el esfuerzo personal, aunque a
menudo se producen fracasos y casi siempre retrasos y
sobrecostes. El resultado de los proyectos es
impredecible.
Ing. Hesmeralda Rojas Enriquez
2011
Proceso dependiente de
individuo
Caótico - Riesgo
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
Multiplicadores de esfuerzo (EM)
Son 17:
 Relacionados con el producto:
1. (RELY). Fiabilidad Requerida de Software
Esta es la medida de hasta qué punto el software debe realizar su función esperada
durante un periodo de tiempo.
2. (DATA). Medida del Volumen de Datos
Esta medida intenta capturar lo que afecta en el desarrollo del producto los
requerimientos de datos grandes. La medida se determina calculando D/P.
DATA se valora como Bajo si D/P es menor que 10 y Muy Alto si es mayor que 1000.
3. (CPLX). Complejidad del Producto
Las Medidas de complejidad del módulo versus Tipo de módulo proporciona la escala de
valores CPLX de Cocomo II. La complejidad se decide en 5 áreas: Funcionamiento de
control, Funcionamiento computacional, Funcionamiento de Dispositivos dependientes,
Funcionamiento del sector de datos y Funcionamiento del Gestor de Interfaz de Usuario.
Se seleccionará el área o combinación de áreas que caracterizan al producto o a un
subsistema del producto. La medida de complejidad es la media subjetiva de estas áreas.
3.1. Funcionamiento de control
Muy Bajo: código con unos pocos operadores de programación no anidados.
Bajo: anidamiento sencillo de operadores de programación estructurados.
Nominal: Mayoría de anidamiento simple.
Alto: Operadores de programación estructurados altamente anidados
compuestos de muchos predicados.
Muy Alto: Codificación recursiva. Manejo de interrupciones con prioridades
fijadas. Sincronización de tareas, retorno de llamadas complejas, proceso
distribuido, etc.
Extra Alto: Múltiples recursos de planificación con cambio dinámico de
prioridades. Control a nivel de microcódigo. Control distribuido en tiempo real.
3.2. Funcionamiento computacional
Muy Bajo: Evaluación de expresiones simples, por ejemplo
Bajo: Evaluación de expresiones de nivel moderado: p.ej
Nominal: Uso de rutinas matemáticas y estadísticas estándar.
Alto: Análisis numérico básico: ecuaciones diferenciales ordinarias.
Muy Alto: Análisis numérico difícil pero estructurado: ecuaciones de matrices,
ecuaciones diferenciales parciales.
Extra Alto: Análisis numérico difícil y sin estructurar.
9
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
3.3. Funcionamiento dispositivos dependientes
Muy Bajo: Declaraciones simples de lectura-escritura con formatos simples.
Bajo: No necesidad de conocimiento de características del procesador
particular o del dispositivo de I/O.
Nominal: El proceso de I/O incluye selección de dispositivo, estado de
validación y proceso de errores.
Alto: Operación de I/O a nivel físico (traducción de direcciones físicas de
almacenamiento: búsquedas, lecturas, etc.).
Muy Alto: Rutinas para diagnóstico de interrupciones, servicio de
enmascaramiento. Manejo de línea de comunicación.
Extra Alto: Dispositivo dependiente temporalmente de la codificación.
Operaciones microprogramazas.
3.4. Funcionamiento del sector de datos
Muy Bajo: Arrays simples en memoria principal. Actualizaciones, Queries
simples
Bajo: Archivos únicos sin cambio en la estructura de datos, sin ediciones, sin
archivos intermedios. Actualizaciones, Queries moderadamente complejos
Nominal: Entradas de múltiples archivos y salida de un único archivo. Cambios
estructurales simples, ediciones simples. Actualizaciones, Queries complejos.
Alto: Encadenamientos simples activados por contenidos de hileras de datos.
Muy Alto: Coordinación de bases de datos distribuidas. Encadenamientos
complejos. Optimización de la búsqueda
Extra Alto: Acoplamiento fuerte, estructuras de objetos y relacionales
dinámicas.
3.5. Funcionamiento de gestor de Interfaces de usuario
Muy Bajo: Forma de entrada simple, generadores de informes
Bajo: Uso de constructores simples de interfaces gráficos de usuario
Nominal: Uso simple de conjunto Widget
Alto: Extensión y desarrollo de conjunto Widget. Voz simple de I/O multimedia
Muy Alto: Multimedia complejo 2D/3D, gráficos dinámicos multimedia
Extra Alto: Multimedia complejo, realidad virtual.
4. (RUSE). Reutilización Requerida
Explica el esfuerzo adicional necesario para construir componentes pensados para se
reutilizados en otros proyectos.
5. (DOCU). Documentación Asociada a las Necesidades del Ciclo de Vida
10
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos

C.P.Ingeniería de Sistemas e Informática - UTEA
2011
Relacionados con la plataforma de desarrollo:
6. (TIME). Restricción del Tiempo de Ejecución
Esta es una medida de la restricción del tiempo de ejecución
7. (STOR). Restricción de Almacenamiento Principal
Esta medida representa el grado de restricción de almacenamiento principal.
8. (PVOL). Volatilidad de la Plataforma
Plataforma: significa la complejidad del Hardware y Software (OS, DBMS, etc.) que el producto
software necesita para realizar sus tareas.

Relacionados con personal
9. (ACAP). Habilidad del Analista
Lo que se debe considerar en esta medida son la habilidad de análisis y diseño, la eficiencia y la
habilidad para comunicar y cooperar que posee el Analista, no se debe considerar aquí el nivel de
experiencia ya que se mide con AEXP.
10.(PCAP). Habilidad del Programador
Lo que se debe considerar en esta medida son la habilidad de análisis y diseño, la eficiencia y la
habilidad para comunicar y cooperar que posee el Programador, no se debe considerar aquí el
nivel de experiencia ya que se mide con AEXP.
11.(AEXP). Experiencia en las Aplicaciones
Esto mide el nivel de experiencia en aplicaciones del equipo de proyecto en el desarrollo de
sistemas.
12.(PEXP). Experiencia en la Plataforma
Aquí se reconoce la importancia de entender el uso de plataformas más poderosas, incluyendo
más interfaces gráficas.
13.(LTEX). Experiencia en la Herramienta y en el Lenguaje
Esta es una medida del nivel de experiencia en el lenguaje de programación.
11
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
14.(PCON). Continuidad del Personal
La escala de valores mide el movimiento de personal del proyecto anualmente.

Relacionados con el proyecto
15.(TOOL) Uso de Herramientas Software
Los valores para la herramienta van desde edición y código simple, Muy Bajo, hasta herramientas
integradas de gestión del ciclo de vida, Muy Alto.
16.(SITE). Desarrollo Multilugar
Determinar la medida del driver de costo incluye el cálculo y la medida de 2 factores: Localización
del lugar (desde totalmente localizado hasta distribución internacional) y soporte de
comunicación (desde correo de superficie y algún acceso telefónico hasta multimedia totalmente
interactivo).
17.(SCED). Calendario de Desarrollo Requerido
Este valor mide las restricciones de horario impuestas al equipo de proyecto que desarrolla el
software. Los valores se definen en términos de porcentaje de aceleración o alargamiento sobre
el calendario respecto de un calendario nominal para un proyecto que requiere una cantidad de
esfuerzo dada.
12
Ing. Hesmeralda Rojas Enriquez
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
Tabla que refleja los coeficientes necesarios para el cálculo:
Abreviatura Muy bajo
Bajo
Nominal
Alto
Muy alto
Extra alto
RELY
0.75
0.88
1.00
1.15
1.39
1.00
DATA
1.00
0.93
1.00
1.09
1.19
1.00
CPLX
0.75
0.88
1.00
1.15
1.30
1.66
RUSE
1.00
0.91
1.00
1.14
1.29
1.49
DOCU
0.89
0.95
1.00
1.06
1.13
1.00
TIME
1.00
1.00
1.00
1.11
1.31
1.67
STOR
1.00
1.00
1.00
1.06
1.21
1..57
PVOL
1.00
0.87
1.00
1.15
1.30
1.00
ACAP
1.50
1.22
1.00
0.83
0.67
1.00
PCAP
1.37
1.16
1.00
0.87
0.74
1.00
PCON
1.24
1.10
1.00
0.92
0.84
1.00
AEXP
1.22
1.10
1.00
0.89
0.81
1.00
PEXP
1.25
1.12
1.00
0.88
0.81
1.00
LTEX
1.22
1.10
1.00
0.91
0.84
1.00
TOOL
1.24
1.12
1.00
0.86
0.72
1.00
SITE
1.25
1.10
1.00
0.92
0.84
1.00
SCED
1.29
1.10
1.00
1.00
1.00
1.00
Determinación del Tiempo de Desarrollo y Cantidad de Personal
Determinación del Tiempo de Desarrollo
Tdes= 3.67 * (E)0.28 + 0.002 * ∑SFi
Cantidad de Personal
CH= E/Tdes
13
Ing. Hesmeralda Rojas Enriquez
2011
Gerencia de Proyectos Informáticos
C.P.Ingeniería de Sistemas e Informática - UTEA
2011
EJERCICIOS
Para un software se ha hallado que el total de Puntos de Función Ajustados fue de 349.6
TLDC = Nº medio de LDC de “x” lenguaje de programación x PFA/1000
TLDC= 53 x 349.6 / 1000
TLDC= 18.52
Determinación de los factores de escala
E= A * (Tamaño)B X EMi
E= Esfuerzo nominal
Tamaño= Puntos de Función Ajustados
14
Ing. Hesmeralda Rojas Enriquez
Descargar