Estimación de Costes del Software - my. · PDF file(Eurotúnel), con una...
Transcript of Estimación de Costes del Software - my. · PDF file(Eurotúnel), con una...
Estimación de Costes del Software
Carlos Castillo Diestra
Propósito
Es propósito es mostrar como generar estimaciones fiables del esfuerzo, duración y costes para la producción de software.
Objetivos
o Comprender los fundamentos del coste del software
o Entender los principios del modelo de estimación COCOMO
o Estimar el esfuerzo, duración y coste de un software
Contenido
o Estimación de software
o Técnicas de estimación
o Modelo de costes algorítmicos
o Modelo COCOMO
Algunos proyectos famosos
• La Opera House en Sydney, que se estimó que su construcción llevaría alrededor de cinco años y tendría un coste aproximado de 7 millones de dólares. Finalmente, el costo fue de 102 millones de dólares y se demoró 14 años. (1959 – 1973)
Algunos proyectos famosos
El túnel bajo el Canal de la Mancha (Eurotúnel), con una estimación de costo de 7500 millones de dólares y plazo de entrega 1992, se terminó en 1994 con un costo de 17500 millones de dólares.
Algunos proyectos famosos
Tacoma Narrows Suspension Bridge (“Galloping Gertie”) el tercer puente más largo del mundo (tras el Golden Gate y el George Washington), que se hundió en 1940 cuatro meses y siete días después de su apertura.
Algunos proyectos famosos
En 1995 errores en el sistema del aeropuerto de Denver hicieron que el aeropuerto abra con un retraso de 16 meses y un exceso de gasto de 3500 millones de dólares.
Algunos proyectos famosos
o En 1988, la Westpac Banking Corporation decidió redefinir sus sistemas de información.
o Planificaron un proyecto de 85 millones de dólares para cinco años.
o Tres años más tarde, después de gastar 150 millones con poco éxito, asumió sus pérdidas, canceló el proyecto y elimino 500 empleados de desarrollo.
Otros Proyectos
o2004. Ford Motor Co. El sistema de compras es abandonado tras gastarse en él unos 400 millones.
o2004. J. Sainsbury PLC (UK): Sistema de SCM (Supply-change management) abandonado tras su instalación, y tras un gasto de 527 millones.
o2002. McDonald’s Corp.: Sistema de gestión de compras cancelado tras gastarse 170 millones.
o2001. Kmart Corp.: Sistema SCM cancelado tras gastar en él unos 130 millones.
o1993. Bolsa de Londres (UK): Systema Taurus es cancelado tras gasto de 600 millones.
o1993. Allstate Insurance Co.: Sistema de automatización de tareas es abandonado tras su instalación. Coste: 130 millones.
o1992. Budget Rent-A-Car, Hoteles Hilton, Marriott International y American Airlines: Sistema integrado de reservas cancelado tras un gasto de 165 millones
Interrogantes Fundamentales de la estimación
o ¿Cuánto esfuerzo se requiere para terminar una actividad?
o ¿Cuánto tiempo se necesita para terminar una actividad?
o ¿Cuál es el coste total de una actividad?
Estimación
Predicción cuantitativa de duración, esfuerzo y costes requeridos para realizar todas las actividades y constituir todos los productos asociados con un proyecto de software.
ELEMENTO UNIDAD
Duración Tiempo (meses, años, etc)
Esfuerzo Unidad de esfuerzo (personas.mes,personas.año, etc)
Coste Dólares, euros, soles, etc.
Elementos que hay que estimar
Componentes del coste del software
o Costes de Hardware y software. o Costes de viajes y entrenamiento. o Gastos Generales
• Gastos de edificios, energía eléctrica, aire acondicionado, etc.
• Gastos de redes y comunicaciones. • Gastos de instalaciones compartidas (e.g
biblioteca, personal de restaurante, etc.). o Costes de esfuerzo (Factor dominante en la
mayoria de los proyectos) • Los sueldos del personal involucrado en el
proyecto • Costes sociales y seguros.
Métodos utilizados para la estimación de proyectos.
o Basados en la experiencia.
o Basado exclusivamente en los recursos.
o Método basado exclusivamente en el mercado.
o Basado en los componentes del producto o en el proceso de desarrollo.
o Métodos algorítmicos
Métodos basados exclusivamente en la experiencia
o Juicio experto
• Puro,
• Delphi
o Analogía
o Distribución de la utilización de recursos en el ciclo de vida
Juicio experto: Puro
o Un experto estudia las especificaciones y hace su estimación.
o Se basa fundamentalmente en los conocimientos del experto.
o Si desaparece el experto, la empresa deja de estimar
Juicio experto: Wideband Delphi
o Se dan las especificaciones a un grupo de expertos.
o Se les reúne para que discutan tanto el producto como la estimación.
o Remiten sus estimaciones individuales al coordinador.
o Cada estimador recibe información sobre su estimación, y las ajenas pero de forma anónima.
o Se reúnen de nuevo para discutir las estimaciones.
o Cada uno revisa su propia estimación y la envía al coordinador.
o Se repite el proceso hasta que la estimación converge de forma razonable.
Analogía
o El coste del proyecto se estima en base a otros proyectos análogos que se han terminado previamente.
o Analogía, pueden variar los siguientes factores:
• Tamaño: ¿mayor o menor?
• Complejidad: ¿Más complejo de lo usual?
• Usuarios: Si hay más usuarios habrán más complicaciones.
• Otros factores: o Sistema Operativo, entornos (la primera vez
más).
o Hardware, ¿Es la primera vez que se va a utilizar?
o Personal del proyecto, ¿nuevos en la organización?
Método basado exclusivamente en los recursos: Parkinson
o En la estimación consiste en ver de cuanto personal y durante cuanto tiempo se dispone de el, haciendo esa estimación.
o En la realización:
“El trabajo se expande hasta
consumir todos los recursos
disponibles”
(Ley de Parkinson)
Método basado exclusivamente en el mercado: precio para vender.
o Lo importante es conseguir el contrato.
o El precio se fija en función de lo que creemos que esta dispuesto a pagar el cliente.
Basado en los componentes del producto o proceso de desarrollo:
o Bottom-up
• Se descompone el proyecto en las unidades lo menores posibles.
• Se estima cada unidad y se calcula el coste total.
o Top-Down
• Se ve todo el proyecto, se descompone en grandes bloques o fases.
• Se estima el coste de cada componente.
Modelo de costes algorítmico
o Se basan en la utilización de fórmulas que aplicadas sobre modelos top-down o bottom-up producen una estimación de coste del proyecto
o El coste se estima como una función matemática de los atributos del personal, producto, proyecto y plataforma.
o Tienen la siguiente estructura:
• Esfuerzo = A + B x TamañoC x M
• A, B y C son constantes que se obtienen empíricamente
• M es un multiplicador que refleja los atributos del personal, producto, proyecto y plataforma.
• Tamaño es la variable de estimación (LDC o PF)
Modelo de costes algorítmico
o Entre orientados a LDC propuestos se tienen:
• Modelo de Walston-Felix: E = 5,2 (KLDC)0,91
• Modelo de Bailey-Basisli: E = 5,5 + 0,73 (KLDC)1,16
• Modelo de Doty: E = 5,288 (KLDC)1,047
• Modelo simple de Boehm: E = 3,2 (KLDC)1,05
o Entre los modelos orientados a PF se tienen:
• Modelo de Albretch y Gaffney: E = -13,39 + 0,054PF
• Modelo de Kemerer: E = 60,62 x 7,728 x 10-8PF3
• Modelo de Matson, Barnett y Mellichamp: E = 585,7 + 15,12PF
El Modelo COCOMO
o COCOMO = COnstructive COst MOdel
o Basado en la experiencia de proyectos reales
o Modelo “Independiente”: no está ligado a un vendedor de software específico
o Larga historia: desde la versión inicial publicada en 1981 (COCOMO-81), pasando por varias instancias hasta COCOMO II.
COCOMO-81
Basado en el estudio de 63 proyectos
Jerarquía de Modelos:
o Modelo 1: Modelo básico
Calcula el esfuerzo del desarrollo en función del tamaño del programa, expresado en las líneas estimadas de código
o Modelo 2: Modelo intermedio
Calcula el esfuezo del desarrollo en función del tamaño del programa y de un conjunto de “conductores de coste”.
o Modelo 3: Modelo avanzado
Incorpora todas las características de le versión intermedia y lleva a cabo una evaluación del impacto de los conductores de coste en cada fase (análisis, diseño, etc.) del proceso de ingeniería de software
Modos de Proyectos de Software
o Modo Orgánico
Proyectos de software pequeños y sencillos en los que trabajan pequenos equipos, con buena experiencia en la aplicación, sobre un conjunto de requisitos poco rígidos
o Modo Moderado (semi-acoplado, semi-rígido)
Proyectos de software intermedios en tamaño y complejidad en los que equipos, con variados niveles de experiencia, deben satisfacer requisitos medio rigidos.
o Modo Empotrado (embebido, rígido)
Proyectos de software complejos que deben ser desarrollados en un conjunto de hardware, software y restricciones operativas muy restringido.
COCOMO-81
COCOMO-81
MODO ESFUERZO
(personas-mes)
TIEMPO DE
DESARROLLO
(meses)
Orgánico ESF = 2,4 (KLDC)1,05 TDES= 2,5 (ESF)0,38
Moderado ESF= 3,0 (KLDC)1,12
TDES= 2,5 (ESF)0,35
Embebido ESF = 3,6 (KLDC)1,20
TDES= 2,5 (ESF)0,32
COCOMO-81 - Básico
COCOMO 81 - Intermedio
MODO ESFUERZO
(personas-mes)
TIEMPO DE
DESARROLLO
(meses)
Orgánico ESF = 3,2 (KLDC)1,05 FEC TDES= 2,5 (ESF)0,38
Moderado ESF= 3,0 (KLDC)1,12 FEC
TDES= 2,5 (ESF)0,35
Embebido ESF = 2,8 (KLDC)1,20 FEC
TDES= 2,5 (ESF)0,32
Se considera un conjunto de atributos denominados conductores de coste:
FEC = п FEi
COCOMO 81 - Intermedio
o Producto
• Requerimientos de confiabilidad
• Tamaño de la base de datos
• Complejidad
o Computador usado
• Restricciones de tiempo de ejecución
• Restricciones de memoria principal
• Velocidad con que cambian los medios de cómputo
• Tiempo de respuesta del computador
Conductores de Coste:
COCOMO 81 - Intermedio
o Personal
• Capacidad de los analistas
• Experiencia de los analistas
• Capacidad de los programadores
• Experiencia en el sistema operativo
• Experiencia en el lenguaje de programación
o Proyecto
• Uso de técnicas modernas de programación
• Uso de herramientas de software
• Requisitos de planificación
Conductores de Coste:
COCOMO 81 - Intermedio
Tamaño de la Base de Datos
Descripción
KB/KLDC
<=10
KB/KLDC >10 y
<=100
KB/KLDC
>100 y <=1000
KB/KLDC
>1000
Nivel Muy Bajo Bajo Nominal Alto Muy alto Extra Alto
Multiplicador 0.94 1.00 1.08 1.16
Conductores de Coste: Ejemplo Requerimientos de Seguridad del Software
Descripción
Leves
inconvenientes
Pérdidas
fácilmente
recuperables
Pérdidas
moderadas
Grandes Perdidas
Financieras
Perdidas
Humanas
Nivel Muy Bajo Bajo Nominal Alto Muy alto Extra Alto
Multiplicador 0.75 0.88 1.00 1.15 1.40
Experiencia de los Analistas
Descripción 4 meses 1 año 3 años 6 años 12 años
Nivel Muy Bajo Bajo Nominal Alto Muy alto Extra Alto
Multiplicador 1.29 1.13 1.00 0.91 0.82
Guía para usar el Modelo COCOMO
o Si no sabe como configurar un conductor de coste (factor de esfuerzo) entonces usar los valores nominales.
o Si no puede decidir entre dos configuraciones tomar la más cercana a la nominal.
o No es obligatorio configurar todos los factores de coste. En un ambiente de desarrollo de un Software particular solamente algunos conductores de coste pueden ser importantes.
Ejemplo 1
FASE % ESFUERZO COSTO PERSONA MES (soles)
Análisis y Diseño 40% 5000
Programación 30% 4000
Pruebas 30% 6000
El Banco ABC encarga a la Empresa Radja S.A. el desarrollo de un sistema para que sus clientes realicen transacciones financieras vía web. Los clientes podrán consultar sus movimientos, consultar el estado de sus cuentas y realizar transferencias a terceros y pagos a cuenta. Si se estima que el software tendrá 100000 líneas de código, se usará la herramienta CASE Poseidon ¿cuál es el costo del proyecto? si el costo persona mes es el siguiente:
Ejemplo 1 - Solución
• Modelo: Intermedio
• Modo: Semiacoplado (Moderado) ESF=3 x (KLDC)1,12
• Conductores de coste:
1. Requerimentos de Seguridad del Software (Confiabilidad):
FRSS = 1,15 (Perdidas financieras)
2. Uso de Herramientas Software :
FUHS = 0,83 (Herramienta CASE)
• Costo persona mes promedio:
CPM = 0,4 * 5000 + 0,30 * 4000 + 0,3 * 6000 = 5000 soles.
• Esfuerzo Nominal (sin los conductores de coste):
ESF=3 x (KLDC)1,12 = 3 x (100)1,12 = 521,34 personas mes
• Esfuerzo Real (con los conductores de coste):
ESFreal = ESF x FRSS x FUHS = 521,34 x 1,15 x 0,83 = 497,62 personas mes
• Costo del Proyecto:
C = ESFreal x CPM = 497,62 x 5000 = 2 488 100 soles.
Ejemplo 2
La empresa WTR S.A. desea desarrollar un software para controlar máquinas de fabricación de autopartes. Se estima que el software tendrá aproximadamente 120 000 líneas de código y el costo promedio de un desarrollador será de 4000 soles mensuales. El proyecto se desarrollará bajo Linux, por lo que se contratará gente con al menos 3 años de experiencia en Linux. Bajo las condiciones descritas, la empresa CCD Data garantiza que el factor multiplicador del esfuerzo (conductores de coste) puede reducirse de 1.2 a 0.9 por medio del uso de un paquete para desarrollar software, cuyo costo es de 200 000 soles. ¿Desde el punto de vista económico, valdría la pena comprar dicho paquete? .
Ejemplo 2 - Solución
• Modelo: Intermedio • Modo: Empotrado (Control máquinas) ESF=2,8 x (KLDC)1,20 • Conductores de coste:
1. Experiencia en el Sistema Operativo: FESO = 0,96 (Más de 3 años en linux)
• Costo persona mes promedio: 4000 soles
Ejemplo 2 - Solución
Alternativa 1: Sin compra del paquete para desarrollar software
• Esfuerzo Nominal (sin los conductores de coste):
ESF=2,8 x (KLDC)1,20 = 2,8 x (120)1,20 = 875,33 personas mes
• Esfuerzo Real (con los conductores de coste):
ESFreal = ESF x FESO = 875,33 x 0,96 = 840,3168 personas mes
• Costo del Proyecto:
C = ESFreal x CPM = 840,3168 x 4000 = 3 361267,2 soles.
Ejemplo 2 - Solución
Alternativa 2: Comprando el paquete para desarrollar software • El esfuerzo se reduce en proporción de 1,2 a 0,9, por lo que se tiene el nuevo esfuerzo:
ESF =( ESFreal x 0,9 )/1,2 = (840,3168 x 0,9)/1,2 = 630,23
• Con lo cual el costo total seria:
C = Costo de desarrollo + costo del paquete
C = ESF x 4000 + 200 000
C = 630,23 x 4000 + 200 000 soles
C = 2 720 920 soles
Por lo tanto, comparando los costos de las alternativas, conviene
comprar el paquete para desarrollar software.
Conclusiones
o Para obtener buenas estimaciones para un proyecto, se deberían utilizar al menos dos o tres técnicas diferentes. Mediante la comparación y la conciliación de las estimaciones obtenidas con las diferentes técnicas, se puede obtener una estimación más exacta.
o La estimación del proyecto de software nunca será una ciencia exacta, pero la combinación de buenos datos históricos y de técnicas sistemáticas pueden mejorar la precisión de la estimación.
Referencias
1. Boehm, B., Abts, C., Brown, W., Chulani, S. y Clark, B. (2009). Software Cost Estimation With Cocomo II. USA: Ed. Prentice-Hall.
2. Boehm, B. (1981). Software Engineering Economics. USA: Ed. Prentice-Hall.
3. Charette, R. (2 Setiembre 2005). Why Software Fails. Recuperado el 1 de julio de 2013, de http://spectrum.ieee.org/computing/software/why-software-fails
4. Opera House de Sidney. Recuperado el 12 de junio de 2013, de http://www.cairnsunlimited.com/es/opera_sidney.htm