Departamento de Informtica Gua prctica para COCOMO 2.0 I ngeniera de Software Avanzada 1 INTRODUCCIN COCOMO 2.0 (Constructive Cost Model, COCOMO) surge como respuesta a las falencias de COCOMO original (COCOMO 81) y a la necesidades planteadas por un nuevo escenario para el desarrollo de software (cambios tecnolgicos, nuevos modelos del ciclo de vida, nuevas herramientas, reingeniera, generadores de aplicaciones, enfoque orientado a objetos, etc.) proponiendo principalmente el uso de diferentes modelos de tamao segn el avance del proyecto y el nivel de conocimiento del sistema en desarrollo. En concreto COCOMO 2.0 provee tres modelos de estimacin secuenciales que corresponden a las siguientes etapas: Etapa 1 o Application Composition Model orientada a apoyar la estimacin en las etapas tempranas del desarrollo de software, donde bsicamente se cuenta con escasa informacin sobre los requerimientos del sistema. Este modelo adems apoya la estimacin para el desarrollo de prototipos rpidos en cualquier etapa del ciclo de vida del software. Etapa 2 o Early Design Model enfocada a apoyar la estimacin tras la definicin de los requerimientos y as respaldar la toma de decisiones sobre la evaluacin de arquitecturas y conceptos de operacin alternativos para el desarrollo de software. Etapa 3 o Post-Architecture Model orientada a apoyar la estimacin durante el desarrollo del sistema. 2 2 ETAPA 1: THE APPLICATION COMPOSITION MODEL 2.1 Descripcin general La etapa 1 esta enfocada a apoyar la estimacin de esfuerzo durante las fase de planificacin de un proyecto de desarrollo de software. Esto implica que la estimacin deba realizarse sobre la base de informacin exigua y en muchos casos insuficiente. Dadas estas circunstancias, COCOMO 2.0 propone que es posible identificar elementos de alto nivel que permitan estimar el tamao del producto final, base fundamental para el clculo del esfuerzo. Luego, se sugiere estimar el tamao del producto como puntos objeto (Object Points, OP) que capturan el tamao en trminos de generadores de esfuerzo de alto nivel: informes, ventanas, componentes de tercera generacin, vistas y tablas de datos. 2.2 Estimacin del esfuerzo En la etapa 1 de COCOMO 2.0 el esfuerzo se define como: E=NOP/PROD Donde E: esfuerzo en personas-mes NOP (New Object Points): nuevos puntos objeto PROD: razn de productividad A. Estimacin de tamao a travs de NOP Paso 1: Identificacin de los tipos de objeto. Lista de las ventanas, informes y componentes de tercera generacin (objetos, clases, herencia, etc.) que abarcar la aplicacin. Paso 2: Clasificacin de cada tipo de objeto segn su complejidad. Identificados los objetos, es necesario para cada uno de ellos (informes y ventanas) determinar el nmero de vistas que contiene, el nmero de tablas de datos que referencia y el tipo de fuente de dichas tablas (servidores o clientes). Con estos datos y segn las tablas 1 y 2 se obtiene el nivel de complejidad (simple, medio, o difcil) de cada objeto. Observacin: Los componentes de tercera generacin son clasificados como difciles. Ventanas Nmero y fuentes de tablas de datos Nmero de vistas contenidas Total < 4 (<2 srvr, <3 clnt) Total < 8 (2/3 srvr, 3-5 clnt) Total >8 (>3 srvr, >5 clnt) <3 Simple Simple Media 3-7 Simple Media Difcil >8 Media Difcil Difcil Tabla 1 3 Informes Nmero y fuentes de tablas de datos Nmero de vistas Contenidas Total < 4 (<2 srvr, <3 clnt) Total < 8 (2/3 srvr, 3-5 clnt) Total >8 (>3 srvr, >5 clnt) 0-1 Simple Simple Media 2-3 Simple Media Difcil >4 Media Difcil Difcil Tabla 2 Paso 3: Clculo de los puntos objeto (Object Points, OP). Para calcular los OP se ingresa el nmero de objetos identificados dentro de cada categora de complejidad de acuerdo a la siguiente tabla. Luego se realiza un clculo simple cuyo resultado son los OP. Complejidad Peso Tipo de objeto Simple Media Difcil Subtotal Ventana __x 1 +__x 2 +__x 3 = Informe __x 2 +__x 5 +__x 8 = Componente de 3GL __x 10 = Total OP (+) = Tabla 3. Clculo de OP. Observacin: El factor multiplicador de cada celda refleja el esfuerzo relativo requerido para implementar un tipo de objeto con un nivel de complejidad dado. Paso 4: Clculo de los Nuevos Puntos Objeto (New Object Points, NOP). El clculo de los NOP corresponde a la consideracin del reuso como un factor importante dentro de la estimacin del tamao del producto final. NOP= (OP)/(100-%r)/100 Donde %r corresponde a los objetos (informes, ventanas y componentes de 3GL) de proyectos previos que sern reutilizados en el proyecto actual. B. Estimacin de PROD Paso 1: Determinacin de la razn de productividad PROD. Para el clculo de la productividad, en la etapa 1 de COCOMO 2.0 se consideran dos aspectos clave: la experiencia y la capacidad de los desarrolladores, y la madurez y la capacidad de ICASE. Cada uno de estos factores debe ser clasificado como muy bajo, bajo, nominal, alto o muy alto, para luego y segn la siguiente tabla establecer el valor de la razn de productividad, PROD. Experiencia y capacidad de los desarrolladores Muy Baja Baja Nominal Alta Muy Alta Madurez y capacidad de ICASE Muy Baja Baja Nominal Alta Muy Alta PROD 4 7 13 25 50 Tabla 4. Estimacin de la razn de productividad (PROD). Dado que el valor que tomen los factores involucrados puede ser substancialmente diferente (Por ejemplo: Experiencia y capacidad de los desarrolladores= Alta, y Madurez y capacidad de ICASE= Muy Baja) los autores recomiendan privilegiar el valor ms cercano al nominal. 4 3 ETAPAS 2 Y 3: THE EARLY DESIGN MODEL & THE POST- ARCHITECTURE MODEL 3.1 Descripcin general Una vez que la etapa de planificacin ha sido aprobada, es necesario tomar decisiones sobre las arquitecturas y los conceptos de operacin alternativos. Luego, COCOMO 2.0 establece una segunda etapa orientada precisamente a apoyar esta tarea. La etapa 2 cuenta con mayor informacin sobre los requerimientos del proyecto, mas sta an es insuficiente para una estimacin precisa. Ante ello COCOMO 2.0 propone utilizar los puntos de funcin (Function Points, FP) como estimador de tamao, pues ofrecen una descripcin mejor que los OP para estimar la funcionalidad capturada en los requerimientos. COCOMO 2.0 define, adems, una tercera etapa orientada a entregar informacin (estimaciones) sobre el estado del proyecto para facilitar el control de posibles desviaciones en relacin a la planificacin inicial (tiempo y esfuerzo) durante el desarrollo del sistema. Esto implica que se cuenta con mayor informacin sobre el sistema, por lo que COCOMO 2.0 sugiere la contabilizacin de las lneas de cdigo (LOC) y el uso de cost drivers de una manera similar a COCOMO original, incorporando modelos de reuso, modelos reingeniera, y nuevos cost drivers. 3.2 Estimacin de esfuerzo A. Estimacin del esfuerzo nominal Para ambas etapas el esfuerzo nominal es definido como: PM nominal = A* (Tamao) B Donde A: constante B: factor de economa des-economa de escala Tamao: KSLOC Paso 1: Determinacin de la constante A. El propsito de la constante es capturar el efecto multiplicador del aumento del tamao de un proyecto. Hasta el momento ha sido establecida temporalmente como: A= 2.45, para la etapa 2 A= 2.55, para la etapa 3. Paso 2: Clculo del factor de economa de escala B. El factor de B captura la economa de escala en un proyecto. Se habla de economa de escala (B<1) cuando al aumentar el tamao del producto al doble, el esfuerzo aumenta en una cifra menor que el doble, por lo tanto un aumento en el tamao del producto produce un aumento de la productividad. Si el esfuerzo aumenta en el mismo factor que el tamao se habla de equilibrio (B=1), y en el caso que aumentara ms que el doble se habla de des-economa (B>1). En COCOMO original este factor corresponda a una constante que variaba segn el tipo o modo de desarrollo de software (orgnico, semi-desconectado, o embebido). Sin embargo durante el desarrollo de COCOMO 2.0 se establece que es ms adecuado determinar B segn los elementos que influyen sobre la 5 productividad del desarrollo, es decir los factores de escala que determinan una economa o des-economa de escala. Estos son: Precedentes (Precedentedness , PREC): experiencia de los desarrolladores en el desarrollo de proyectos similares. Flexibilidad (Development Flexibility, FLEX): flexibilidad del proceso de desarrollo en relacin con los requerimientos establecidos. Arquitctura y resolucin de los riesgos (Architecture/ Risk Resolution, RESL): gestin de los riesgos medido como porcentaje de respuesta que es capaz de lograr la organizacin ante la ocurrencia de algn riesgo. Cohesin del equipo (Team Cohesion, TEAM): tipo de interaccin de los miembros de la organizacin desarrolladora. Madurez del proceso (Process Maturity, PMAT): nivel de madurez de la organizacin en relacin con las reas de prcticas clave (Key Practices Areas, KPA) del CMM (Capability Maturity Model). Cada uno de estos factores de escala es ponderado con un peso w i , que vara entre 0 y 5, segn los criterios de la siguiente tabla: Scale Fators Very Low Low Nominal High Very High Extra High w i 5 4 3 2 1 0 PREC thoroughly unpreceden ted largely unpreceden ted somewhat unpreceden ted generally familiar largely familiar Throughly familiar FLEX rigorous occasional relaxation some relaxation general conformity some conformity general goals RESL little (20%) some (40%) often (60%) Generally (75%) mostly (90%) full (100%) TEAM very difficult interactions some difficult interactions basically cooperative interactions largely cooperative highly cooperative seamless interaction PMAT Weighted average of Yes answers to CMM Maturity Questionnaire Tabla 5. Ponderacin de los factores de escala. Para calcular el PMAT se evala el porcentaje de cumplimiento de las 18 reas de prcticas clave definidas en el CMM del Software Engineering Institute, SEI (Ver tabla 6). Luego el PMAT se calcula como: PMAT= 5 - (((KPA%*i)/100)*5/18) ,i=1,..,18 KPA Almost always Often About half Occassion_ ally Rarely if ever Does not apply Dont know KPA% >90% 60-90% 40-60% 10-40% <10% Requeriments Management o o o o o o o Software Project Management o o o o o o o Software Project Tracking and Oversight o o o o o o o Software Subcontract Management o o o o o o o Software Configuration Management o o o o o o o Software Quality Assurance o o o o o o o Organization Process Focus o o o o o o o Organization Process Definition o o o o o o o Trainning Program o o o o o o o Integrated Software Management o o o o o o o Software Product Engineering o o o o o o o Intergoup Coordination o o o o o o o Peer Reviews o o o o o o o 6 KPA Almost always Often About half Occassion_ ally Rarely if ever Does not apply Dont know KPA% >90% 60-90% 40-60% 10-40% <10% Quantitative Process Management o o o o o o o Software Quality Management o o o o o o o Defect Prevention o o o o o o o Tecnology Change Mangement o o o o o o o Process Change Management o o o o o o o Tabla 6. Cuestionario de madurez del CMM (continuacin). Una vez ponderados los factores de escala es posible calcular el factor de economa de escala, B, como: B= 0,91 + 0,01* w i , i=1,..,5 Donde w i corresponde al peso asignado a cada factor de escala. Paso 3: Estimacin de tamao. El mtodo para estimar el tamao en COCOMO 2.0 est fuertemente determinado por la informacin disponible. Como se vio anteriormente en la etapa 1, dada la escasa informacin, el tamao se calcula en trminos de OP. En la etapa 2, la situacin es diferente, la especificacin de requerimientos ya es ms slida por lo que una estimacin por medio de puntos de funcin (Function Points, FP) y su traduccin a miles de lneas de cdigo (KSLOC) parece ms adecuada. En la etapa 3 en cambio, ya se est en el desarrollo propiamente tal. Luego, dependiendo del estado de avance del desarrollo se podran contabilizar las lneas de cdigo directamente, en caso contrario se mantiene el clculo por PF. El clculo de FP se realiza segn el procedimiento establecido por IFPUG. Sin embargo, para COCOMO 2.0 lo relevante es establecer los puntos de funcin no ajustados (Unadjusted Function Points, UFP). Es ms, el tamao en KSLOC es calculado por tabla a travs del valor de UFP y no PF. En relacin a las LOC la dificultad se encuentra en la definicin de qu es o no una LOC. Para establcer consistencia al momento de contabilizar las LOC directamente se sugiere utilizar la Checklist de definicin de LOC del SEI. Mostrado a continuacin. 7 8 Paso 4: Ajuste del tamao por reuso. Al igual que en la etapa 1, en las presentes etapas el reuso es considerado un factor importante dentro de la estimacin. Para ambos casos, se calculan las lneas de cdigo equivalentes (ESLOC) producto del reuso. Este clculo requiere de la estimacin de los siguientes elementos de entrada : ASLOC: tamao del software (en LOC) que debe ser adaptado. DM: porcentaje de diseo que debe modificarse en el software para adaptarlo a los nuevos objetivos y al nuevo ambiente. CM: porcentaje de cdigo que debe modificarse en el software para adaptarlo a los nuevos objetivos y al nuevo ambiente. IM: porcentaje del esfuerzo de integracin original que debe ser modificado para integrar el software reusado. Adems, en la estimacin de las ESLOC se consideran la influencia de los siguientes elementos: La comprensin del software (Software Understanding, SU) que ser reutilizado en trminos de su estructura, su correspondencia con la aplicacin en desarrollo y la documentacin disponible. El nivel de evaluacin y asimilacin (Assessment & Assimilation, AA) requerido para determinar cundo un modulo es apropiado o no para la aplicacin y para integrar su descripcin a la descripcin del producto. La familiaridad del programador con el software que ser reutilizado. (Programmer`s Unfamiliarity, UNFM) Cada uno de estos factores es calculado por medio de las tablas 8, 9 y 10 respectivamente. Very Low Low Nominal High Very High SU (%) 50 40 30 20 10 Structure Very low cohesion, high coupling, spaghetti code Moderately low cohesion, high coupling Reassonably well structured, some weak areas High cohesion, low coupling Strong modularity, information hiding in data/control structures Application Clarity No match between program and application world views Some correlation between program and application Moderate correlation between program and application Good correlation between program and application Clear match between program and application world views Self Descriptive ness Obscure code; documentatio n missing, obscure or obsolete Some code commentary and headers; some useful documentation Moderate levels of code commentary, headers, documentations Good code commentary and headers, useful documentation; some weak areas Self descriptive code, documentation up to date, well organized with design rationale Tabla 8. Estimacin del SU. AA Increment Level of AA Effort 0 None 2 Basic module search and documentation 4 Some module Test and Evaluation, documentation 6 Considerable module Test and Evaluation, documentation 8 Extensive module Test and Evaluation, documentation Tabla 9. Estimacin del AA. 9 UNFM Increment Level of Unfamiliarity 0,0 Completely familiar 0,2 Mostly familiar 0,4 Somewhat familiar 0,6 Considerably familiar 0,8 Mostly unfamiliar 1,0 Completely unfamiliar Tabla 10. Estimacin del UNFM. Una vez determinados los ASLOC, DM, CM, IM, SU, AA y UNFM es posible calcular las ESLOC como: ESLOC=[ASLOC(AA+AAF(1+0,02(SU)(UNFM)))]/100, AAF<=0,5 ESLOC=[ASLOC(AA+AAF+(SU)(UNFM))]/100, AAF>0,5 Donde AAF= 0,4(DM) + 0,3(CM) + 0,3(IM) Paso 5: Ajuste por reingeniera. Otro de los aspectos considerados importantes en el momento de estimar el esfuerzo nominal es la reingeniera, la cual se entiende como la capacidad de migrar automticamente de la aplicacin A a B. La reingeniera es considerada mediante el siguiente ajuste: PM nominal = A* (Tamao) B + [ASLOC (AT/100)/ATPROD] Donde ASLOC: tamao del software (LOC) que debe ser adaptado (estimado subjetivamente). AT: % del cdigo que ser reingenierado mediante traduccin automtica (Ver tabla 11). ATPROD: razn de productividad de la traduccin automtica. (temporalmente, 2400[LOC/ Person- month] ) Re-engineering target AT Batch processing 96% Batch with SORT 90% Batch with DBMS 88% Batch, SORT, DBMS 82% Interactive 50% Tabla 11. Estimacin del AT. B. Estimacin del esfuerzo ajustado En forma anloga a COCOMO 81, COCOMO 2.0 considera en sus etapas 2 y 3 el ajuste del esfuerzo nominal al considerar un conjunto de cost drivers, cuyo efecto es ponderado obtenindose un mutliplicador de esfuerzo (Effort multipliers, EM i ) asociado a cada cost driver. PM ajustado = PM nominal * EM i Los cost drivers considerados varan segn la etapa del modelo de COCOMO 2.0 que se utilice. 10 Multiplicadores de esfuerzo de Etapa 2. La etapa 2 considera 7 cost drivers apreciables en la tabla 12. En trminos globales, cada uno de los cost drivers pertenecientes a la etapa 2 corresponde la agrupacin de uno o ms cost drivers de la etapa 3: Cost Driver Description Counterpart Combined Post-Architecture (Stage 3) Cost Driver PERS Personnel capability ACAP, PCAP, PCON RCPX Product reliability and complexity RELY, DATA, CPLX, DOCU RUSE Required reuse RUSE PDIF Platform difficulty TIME, STOR, PVOL PREX Personnel experience AEXP, PEXP,LTEX FCIL Facilities TOOL, SITE SCED Schedule SCED Tabla 12. Cost Drivers de la Etapa 2. En el caso de RUSE y de SCED sus respectivos EM son calculados directamente a partir de las tablas 13 y 14. En el caso de los cost drivers restantes se calcula el EM para los cost drivers de la etapa 3 que lo componen y luego se calcula el EM como el promedio de los EM de sus componentes. Por ejemplo, EM PDIF =[EM PDIF + EM PDIF + EM PDIF ]/ 3. Multiplicadores de esfuerzo de Etapa 3. La etapa 3 se compone de 17 cost drivers, cada uno de los cuales es clasificado como Very Low hasta Extra High segn la tabla 13. Una vez clasificado el cost driver se obtiene el EM respectivo por medio de la tabla 14. 11 Tabla 13. Clasificacin de los cost drivers para la etapa 3. 12 13 Very Low Low Nominal High Very High Extra High Factores de producto RELY 0.75 0.88 1.00 1.15 1.39 - DATA - 0.93 1.00 1.09 1.19 - CPLX 0.7 0.88 1.00 1.15 1.30 1.66 RUSE - 0.91 1.00 1.14 1.29 1.49 DOCU - 0.95 1.00 1.06 1.13 - Factores de plataforma TIME - - 1.00 1.11 1.31 1.67 STOR - - 1.00 1.06 1.21 1.57 PVOL - 0.87 1.00 1.15 1.30 - Factores de personal ACAP 1.50 1.22 1.00 0.83 0.67 - PCAP 1.37 1.16 1.00 0.87 0.74 - AEXP 1.22 1.10 1.00 0.89 0.81 - PEXP 1.25 1.12 1.00 0.88 0.81 - LTEX 1.22 1.10 1.00 0.91 0.84 - PCON 1.24 1.10 1.00 0.92 0.84 - Factores del proyecto TOOL 1.24 1.12 1.00 0.86 0.72 - SITE 1.25 1.10 1.00 0.92 0.84 0.78 SCED 1.29 1.10 1.00 1.00 1.00 - Tabla 14. 3.3 Estimacin de tiempo de desarrollo Una vez calculado el esfuerzo ajustado es posible, estimar el tiempo de desarrollo: TDEV= [3,67*(PM x ) (0,28+0,2*(B-1.01)) ]*SCED%/100 Donde TDEV: tiempo de desarrollo desde el establecimiento de la baselineK de requerimientos hasta la aceptacin del producto final. PM x : estimacin del esfuerzo ajustado sin considerar el cost driver SCED. 3.4 Mantencin La aplicacin de COCOMO 2.0 a la etapa de mantencin asume el trmino del desarrollo del software y la contabilizacin de las lneas de cdigo de ste (Tamao del Cdigo Base). Luego: (Tamao) M = [(Tamao del Cdigo Base)*MCF]*MAF Donde (Tamao) M : estimacin del tamao en KSLOC asociado a la mantencin MCF (Maintenance Change Factor): porcentaje de cambios en el cdigo base . Este factor es el equivalente al ACT de mantencin en COCOMO 81, salvo por que el MCF puede estar asociado a cualquier perodo (ACT impone un perodo de 12 meses). 14 MCF= (Tamao agregado + Tamao modificado)/Tamao del Cdigo Base MAF (Maintenance Adjustment Factor): factor de ajuste de mantencin. MAF= 1+((SU/100)*UNFM) Luego, el esfuerzo asociado a mantencin se calcula como: PM M =A*(Tamao M ) B * EM i ,i=1,..,17 Adems, si se conoce el tiempo o el personal de mantencin es posible calcular el personal o el tiempo respectivo mediante: PM M= T M* FSP M