INGENIERIA DE SISTEMAS E INFORMATICAINGENIERIA DE SOFTWARE II COCOMO II 1. 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. Luis Enrique Alvarez Vargas 1 El modelo COCOMO original se ha convertido en uno de los modelos de estimación de coste del software más utilizados y estudiados en la industria. ANALOGÍA: Este método implica una estimación por analogía con proyectos similares. La principal virtud de la estimación por analogía es que está basada en la experiencia real de un proyecto. La estimación de costos de software tiene dos usos en la administración de proyectos: Durante la etapa de planeamiento: Permite decidir cuantas personas son necesarias para llevar a cabo el proyecto y establecer el cronograma adecuado. Para controlar el progreso del proyecto: Es esencial evaluar si el proyecto está evolucionando de acuerdo al cronograma y tomar las acciones correctivas si fuera necesario. En el ámbito de la ingeniería de software. INGENIERIA DE SISTEMAS E INFORMATICA INGENIERIA DE SOFTWARE II 2. quienes usan su experiencia y conocimiento del proyecto propuesto para lograr una estimación de sus costos. Si bien es una de las primeras actividades. A diferencia de otras disciplinas de la ingeniería. que ya han finalizado. Una de las tareas de mayor importancia en la administración de proyectos de software es la estimación de costos. inmediatamente posterior al establecimiento de los requerimientos. la estimación de costos radica básicamente en estimar la cantidad de personas necesarias para desarrollar el producto. Aunque no es una ciencia exacta no podemos prescindir de ella puesto que hoy en día un error en las predicciones puede conducir a resultados adversos. Se han propuesto numerosos métodos de estimación. cronograma y calidad. Esta experiencia puede ser estudiada para determinar las diferencias específicas con Luis Enrique Alvarez Vargas 2 . Para esto se requiere contar con métricas que permitan medir el nivel de cumplimiento del desarrollo del software. Similarmente. el cronograma de desarrollo no puede reducirse dramáticamente sin deteriorar la calidad del producto de software y/o incrementar el costo de desarrollo. de manera de relacionar los costos reales con la estimación del costo del nuevo proyecto. Entre ellos se pueden contar: JUICIO DE EXPERTOS: Este método implica la consulta a expertos. modelo de estimación que se encuentra en la jerarquía de modelos de estimación de software con el nombre de COCOMO. La estimación de costos de software posibilita relacionar conceptos generales y técnicas del análisis económico en el mundo particular de la ingeniería de software. Estos tres aspectos están íntimamente relacionados y confrontados entre sí. el costo de los materiales es el principal componente a ser estimado. De esta manera. INTRODUCCIÓN: Modelo COCOMO II. se hace difícil incrementar la calidad sin aumentar el costo y/o el cronograma del software a desarrollar. Es importante reconocer la fuerte relación entre costo. Los modelos de estimación juegan un papel importante ya que permiten equilibrar estos tres factores. se ejecuta regularmente a medida que el proyecto progresa con el fin de ajustar la precisión en la estimación. en las cuales. por Constructive Cost Model (Modelo Constructivo de Coste). en lo que se refiere a restricciones. es extremadamente inadecuado. la principal desventaja es que no está claro hasta qué punto es realmente representativo el proyecto previo. Luis Enrique Alvarez Vargas 3 . Representa el más extenso modelo empírico para la estimación de software. y así incrementar la precisión en la estimación. no hay forma de compensar la falta o calidad de los datos de entrada y/o precisión de los valores de los factores de costo. 4. Después. generalmente por la persona responsable del desarrollo de la misma. técnicas. en especial si se desarrollan en nuevas áreas de aplicación. PARKINSON: Este método intenta adaptar la estimación del costo a los recursos disponibles. con nuevas técnicas y arquitecturas. por no poder asegurar que estas experiencias sean realmente representativas de proyectos futuros. o el cronograma necesario para estar primero en el mercado con el nuevo producto. INGENIERIA DE SISTEMAS E INFORMATICA INGENIERIA DE SOFTWARE II un proyecto nuevo y el impacto de los cambios en los costos. Comparados con otros métodos una de sus ventajas es la objetividad. Como sucede en cualquier modelo de estimación. Esto mismo constituye la principal desventaja. OBJETIVOS PARA LA CONSTRUCCIÓN DE COCOMO II 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. ESTIMACIÓN TOP-DOWN: A partir de las propiedades globales del producto de software se deriva el costo de todo el proyecto. personal y funcionalidad requerida. En general. Los valores de los factores se establecen a partir del análisis de regresión de datos confiables recopilados en proyectos anteriores. ya que están calibrados a partir de experiencias anteriores. Por otra parte. CARACTERÍSTICAS Es una herramienta basada en las líneas de código la cual la hace muy poderosa para la estimación de costos y no como otros que solamente miden el esfuerzo en base al tamaño. El modelo COCOMO es un ejemplo de modelo algorítmico 3. ESTIMACIÓN BOTTOM-UP: El costo de cada componente de software es estimado por separado. COCOMO 81. Existen herramientas automáticas que estiman costos basados en COCOMO como ser: Costar. Las técnicas de estimación bottom-up y top-down pueden ser usadas en conjunción con cualquiera de los métodos discutidos en esta sección. TASAR PARA GANAR: Estima los costos en función del presupuesto adecuado para ganar el trabajo. el costo total es dividido entre las diversas componentes. Construir una base de datos de proyectos de software que permitiera la calibración continua del modelo. MODELOS ALGORÍTMICOS: Estos métodos proveen uno o más algoritmos que estiman el costo del software en función de un número de variables que se consideran los principales factores de costo. y luego sumados para obtener el costo total del proyecto. Diseño Temprano y Post Arquitectura. Borland con el objetivo de crear módulos pre-empaquetados que serán usados por usuarios finales y programadores. Microsoft. SyBase. etc. se encuentran grandes firmas que desarrollan software de telecomunicaciones. etc. sistemas de consultas. hacia problemas genéricos de procesamiento distribuido y procesamiento de transacciones. mediante la utilización de generadores de aplicaciones tales como planillas de cálculo. etc. etc. Novell y NeXT Luis Enrique Alvarez Vargas 4 . Firmas representativas son Microsoft. pero son lo suficientemente simples para ser construidas a partir de componentes interoperables. a soluciones middleware. 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. sistemas de información corporativos. sistemas administradores de bases de datos. Estas aplicaciones surgen debido al uso masivo de estas herramientas. Oracle. conjuntamente con la presión actual para obtener soluciones rápidas y flexibles. Sistemas Integrados: Sistemas de gran escala. sin antecedentes en el mercado que se puedan tomar como base. Aplicaciones con Componentes: •Sector en el que se encuentran aquellas aplicaciones que son específicas para ser resueltas por soluciones pre-empaquetadas. protocolos de redes. Generadores de Aplicaciones: •En este sector operan firmas como Lotus. en pocas semanas o meses. Porciones de estos sistemas pueden ser desarrolladas a través de la composición de aplicaciones. finanzas. componentes de dominio- específico (medicina. Estos surgen en respuesta a la diversidad del mercado actual y futuro desarrollo de software. Novell. •Componentes típicas son constructores de interfaces gráficas. procesos industriales. administradores de bases de datos. Infraestructura: Área que comprende el desarrollo de sistemas operativos. Incrementalmente este sector direccionará sus soluciones. esta diversidad puede representarse con el siguiente esquema: APLICACIONES DESARROLLADAS POR USUARIOS FINALES GENERADORES DE APLICACIONES CON SISTEMAS APLICACIONES COMPONENTES INTEGRADOS INFRAESTRUSTURA Aplicaciones desarrolladas por Usuarios Finales: •En este sector se encuentran las aplicaciones de procesamiento de información generadas directamente por usuarios finales. COCOMO II está compuesto por tres modelos denominados: Composición de Aplicación. INGENIERIA DE SISTEMAS E INFORMATICA INGENIERIA DE SOFTWARE II Implementar una herramienta de software que soportara el modelo. buscadores inteligentes de datos. Entre las empresas que desarrollan software representativo de este sector.). con un alto grado de integración entre sus componentes. Estas aplicaciones son generadas por un equipo reducido de personas. sistemas de control de fabricación. MODELOS DE COCOMO II Los tres modelos de COCOMO II se adaptan tanto a las necesidades de los diferentes sectores. Se espera que en el transcurso del año 2001 se libere una nueva versión de la herramienta calibrada y actualizada. relaciones e interfaces. INGENIERIA DE SISTEMAS E INFORMATICA INGENIERIA DE SOFTWARE II 5. CONCLUSIONES Durante la última década. conforma estas premisas ya que son parte de sus objetivos principales. al igual que el modelo original preserva su estado de dominio público en relación a los algoritmos. la herramienta de software. Utilizado una vez que se han estabilizado los requisitos y que se ha establecido la arquitectura básica del software. Modelo de fase de diseño previo. donde el prototipado de las interfaces de usuario. reusabilidad. y la evaluación de la madurez de la tecnología son de suma importancia. lo que se conoce por granularidad de la información. Para contar con información fidedigna y favorecer el continuo refinamiento y calibración del modelo. Diseño Temprano y Post-Arquitectura. la evolución de las tecnologías de desarrollo de software impulsó un nuevo enfoque en la estimación de costos. la USC implementó un Programa de Recolección de Datos14. Además. como al tipo y cantidad de información disponible en cada etapa del ciclo de vida de desarrollo. Modelo de fase posterior a la arquitectura. estructuras de datos. logrando la madurez necesaria del modelo para conseguir estimaciones de gran precisión. la evaluación del rendimiento. en la actualidad siguen existiendo inconvenientes y limitaciones para las estimaciones. reingeniería. constituida por los modelos Composición de Aplicación. Otra de las ventajas de este modelo es que puede ser adaptado (calibrado) a un organismo en particular. 6. utilización de paquetes comerciales. la interacción del sistema y del software. composición de aplicaciones. si se cuenta con la experiencia de un número importante de proyectos ya culminados que puedan aportar los datos necesarios para la recalibración Sin lugar a dudas. que considerara conceptos tales como orientación a objetos. La familia de modelos de COCOMO II. Utilizado durante las primeras etapas de la Ingeniería del software. surgió la necesidad de que estos nuevos modelos se adaptaran a la granularidad de la información disponible en las diferentes etapas de desarrollo. Estos tres modelos son: Modelo de composición de aplicación. Utilizado durante la construcción del software. Luis Enrique Alvarez Vargas 5 . COCOMO II. pero más allá de esto COCOMO II ha recorrido un importante camino. Por lo tanto.3% 10. el cual es aplicado a un simple EAF para el sistema.36 Nivel de Componente de COCOMO Intermedio Basado sobre 30hombre-mes para el esfuerzo (E).13 = 11.5)1.2 (8. el factor de ajuste de esfuerzo (EAF) es calculado individualmente para cada componente.06 FACTURA 3000 35. INGENIERIA DE SISTEMAS E INFORMATICA INGENIERIA DE SOFTWARE II EJEMPLO: Usando COCOMO básico para estimar el esfuerzo requerido en el desarrollo de un programa de 850 líneas en modo orgánico se tiene el siguiente: E = 3.4% 7.60*1. considerando las 8500 líneas proyectadas. Esto es como un modelo monolítico. realizando la lista de componentes: COMPONENTES EDSI % TOTAL CMMNOM PERSONAL 2000 23.98 CMMADJ Luis Enrique Alvarez Vargas 6 .60 POR COBRAR 3500 41. Por ejemplo: el CMMADJ para el componente factura es calculado por: CMMADJ= (CMMNOM)*(EAF)= 10. (EDSI/mes-hombre)NOM= 8500/30 = 283 EDSI mes-hombre Usando el EDSI/ mes-hombre. es posible aclarar las variaciones entre los factores de costo y las diversidades de componentes. estimando (CMMADJ) para cada componente.06 CMMNOM Después de calcular el CMMNOM para cada componente. El factor EAF es aplicado a CMMNOM llegando a un nuevo ajuste en mes-hombre.05 * 1 = 30 Mes-hombre Boehn también adopta el modelo COCOMO Intermedio para repartir costos a componentes individuales. cada componente aporta una proporción al total de valor por ejemplo el componente nominal mes-hombre (CMMNOM) para el componente de personal es dado por: (CMMNOM) = EDSI por componente/ (EDSI/MM) NOM= 200/283 =7. el número de EDSI para hombre-mes es dado por.2% 12. [Consultado el 10 de diciembre de 2014] Disponible en: http://sinbad2. BIBLIOGRAFÍA ÁLVAREZ.mx/2012_01_19_archive.ujaen.es/cod/archivosPublicos/pfc/pfc_jesus_alvarez. 2011. Springer Science & Business Media. 2007. Análisis comparativo de estimación de esfuerzo en el desarrollo de software. COLOMO-PALACIOS. et al. César. [En línea]. et al. Agile Estimation Techniques and Innovate Approaches to Software Process Improvement. Web engineering: modelling and implementing web applications. 2012. INGENIERIA DE SISTEMAS E INFORMATICA INGENIERIA DE SOFTWARE II 7. Jesús.blogspot. 54-56. (ed. IGI Global. CAMPOS. Pablo Javier. 2007. En XVII Congreso Argentino de Ciencias de la Computación. ROSSI. Ricardo (ed). 2014. La Ingeniería de Software. Modelos de estimación en proyectos de software. THOMAS.html] Luis Enrique Alvarez Vargas 7 . Gustavo. Revisión de los modelos de estimación de costos. [en línea].). p.pdf]. [Consultado el: 30 de octubre de 2014] Disponible en: [http://laingeneriadesoftware. Método de estimación de costos de construcción.