COCOMO II Bruno Hott
COCOMO II
Bruno Hott
Bruno Hott 2
COCOMO II
● COCOMO II foi construído em cima do COCOMO '81 para levar em consideração:
– Novos processos de desenvolvimento (ex. espiral)
– Aumentar a flexibilidade em desenvolvimento de software (ex. reuso, geração de código automático)
– Necessidade de tomada de decisão com informações incompletas
– Novos dados de projetos (161 projects vs 61)
Bruno Hott 3
COCOMO II:Modelos
● COCOMO II incorpora um conjunto de submodelos que produzem estimativas ainda mais detalhadas de software.
● Os submodelos do COCOMO II são:
– Application Composition Model – Para prototipação
– Early Design Model – Usado quando os requisitos estão disponíveis mas a arquitetura ainda não começou.
– Post-architecture model – Usando uma vez que a arquitetura do sistema foi concebida e mais informações acerca do sistema está disponível.
● Mais do que isso:
– Reuse model – Usado para calcular o esforço da integração de componentes reusáveis.
Bruno Hott 4
COCOMO II: Equações
MM=2.94⋅(SIZE)E⋅∏i=1
n
EM i
E=0.91+0.01⋅∑ j=15 SF j
TDEV=3.67⋅(MM )F
F=0.28+0.2⋅0.01⋅∑j=1
5
SF j
F=0.28+0.2⋅(E−0.91)
O expoente depende de fatores de ajuste(ao invés de ser somente uma constantecomo no COCOMO '81
Todas as contantes (precisam) ser ajustadas com valores da organização.
A diferença entre ED e PA é o número de parâmetros.
Bruno Hott 5
COCOMO II:Exemplo 1
● Como exemplo, vamos estimar quanto esforço e tempo de desenvolvimento um projeto médio com 100 KSLOC consumirá.
● Para um projeto médio, todos os multiplicadores de esforço são iguais a 1.0.
● E será definido como 1.15 para refletir um projeto grande qualquer.
Bruno Hott 6
COCOMO II:Exemplo 1
● Como exemplo, vamos estimar quanto esforço e tempo de desenvolvimento um projeto médio com 100 KSLOC consumirá.
● Para um projeto médio, todos os multiplicadores de esforço são iguais a 1.0.
● E será definido como 1.15 para refletir um projeto grande qualquer.
● MM = 2.94 * (100)1.15 = 585.61 pessoa-mes
● TDEV = 3.67 * (586.6)(0.28+0.2*(1.15-0.91))
TDEV = 3.67 * (586.6)0.328 = 29.7 meses
● Equipe = 586.6 / 29.7 = 19.75 ~ 20 pessoas.
Bruno Hott 7
Relacionando FPs à SLOC
Linguagem SLOC / FP Linguagem SLOC / FP
Access 38 Jovial 107
Ada 83 71 Lisp 64
Ada 95 49 Machine Code 640
Al Shell 49 Modula 2 80
APL 32 Pascal 91
Assembly - Basic 320 PERL 27
Assembly - Macro 213 PowerBuilder 16
Basic - ANSI 64 Prolog 64
Basic - Compiled 91 Query - Default 13
Basic - Visual 32 Report Generator 80
C 128 Second Generation Language 107
C++ 55 Simulation - Default 46
Cobol (ANSI 85) 91 Spreadsheet 6
Database - Default 40 Third Generation Language 80
Fifth Generation Language 4 Unix Shell Scripts 107
First Generation Language 320 USR_1 1
Forth 64 USR_2 1
Fortran 77 107 USR_3 1
Fortran 95 71 USR_4 1
Fourth Generation Language 20 USR_5 1
High Level Language 64 Visual Basic 5.0 29
HTML 3.0 15 Visual C++ 34
Java 53
Bruno Hott 8
Scale Factors
● O expoente E é calculado a partir de cinco fatores de escala (SF) que representam as economias relativas (ou dispêndio) de escala encontradas para projetos de diferentes tamanhos de software.
● Se E < 1.0, então o projeto apresenta economias de escala. Algumas economias de projeto podem ser alcançadas via ferramentas específicas do projeto (ex. simulações, testbeds).
● Se E = 1.0 a economia está em seu ponto de equilíbrio. Este modelo linear é comumente utilizado para estimar custos de pequenos projetos.
● Se E > 1.0, o projeto apresenta dispêndios de escala. O que ocorre geralmente por causa de dois fatores principais:
– Aumento do overhead de comunicação.
– Crescimento do overhead de integração.
Bruno Hott 9
COCOMO II:Exemplo 2
● Os fatores de escala com classificação Extra High são classificados com o peso 0. Então, em um projeto com 100 KSLOC com Extra High para todos os fatores de escala terá sum(SFj) = 0
● Por outro lado, se um projeto possui todos os fatores de escala classificados como Very Low, teremos sum(SFj) = 31.6,
Bruno Hott 10
COCOMO II:Exemplo 2
● Os fatores de escala com classificação Extra High são classificados com o peso 0. Então, em um projeto com 100 KSLOC com Extra High para todos os fatores de escala terá sum(SFj) = 0
● E = 0.91 + 0.1 * 0.0 = 0.91
● MM = 2.94 * (100)0.91 = 194 p/m.
● Por outro lado, se um projeto possui todos os fatores de escala classificados como Very Low, teremos sum(SFj) = 31.6,
● E = 0.91 + 0.1 * 31.6 = 1.226
● MM = 2.94 * (100)1.226 = 832 p/m.
Bruno Hott 11
Scale Factors:comportamento exponencial
Bruno Hott 12
Scale Factors
Scale Factors Very Low Low Nominal High Very High Extra High
Precedentedness PREC 6.20 4.96 3.72 2.48 1.24 0.00
Flexibility FLEX 5.07 4.05 3.04 2.03 1.01 0.00
Design/Risk RESL 7.07 5.65 4.24 2.83 1.41 0.00
Team Cohesion TEAM 5.48 4.38 3.29 2.19 1.10 0.00
Process Maturity (CMMI) PMAT 7.80 6.24 4.68 3.12 1.56 0.00
● Precedentedness: quão novo o projeto é para a organização
● Flexibility: flexibilidade de desenvolvimento (ex. rigidez dos requerimentos)
● Design/Risk: profundidade do projeto e resolução de riscos
● Team Cohesion: coesão do grupo
● Process Maturity: maturidade que vem do questionário CMMI
Bruno Hott 13
COCOMO II:Multiplicadores de Esforço
● De 7 (Early Design) ou 17 (Post Architecture) de acordo com o nível de detalhes necessário
Effort Adjustment Factors Early Design cost drivers Post-Architecture cost drivers
Product reliability and complexity RCPX RELY, DATA, CPLX, DOCU
Required reuse RUSE RUSE
Platform difficulty PDIF TIME, STOR, PVOL
Personnel capability PERS ACAP, PCAP, PCON
Personnel experience PREX AEXP, PEXP, LTEX
Facilities FCIL TOOL, SITE
Required Development Schedule SCED SCED
Bruno Hott 14
Multiplicadores de Esforço:Post-Architecture
Effort Adjustment Factors - PA Very Low Low Nominal High Very High Extra High
Product Factors
Required Software Reliability RELY 0.82 0.92 1.00 1.10 1.26
Data Base Size DATA 0.90 1.00 1.14 1.28
Product Complexity CPLX 0.73 0.87 1.00 1.17 1.34 1.74
Developed for Reusability RUSE 0.95 1.00 1.07 1.15 1.24
Documentation Match to Life-Cicle Needs DOCU 0.81 0.91 1.00 1.11 1.23
Platform Factors
Execution Time Constraint TIME 1.00 1.11 1.29 1.63
Main Storage Contraint STOR 1.00 1.05 1.17 1.46
Platform Volatility PVOL 0.87 1.00 1.15 1.30
Personnel Factors
Analyst Capability ACAP 1.42 1.19 1.00 0.85 0.71
Programmer Capability PCAP 1.34 1.15 1.00 0.88 0.76
Personnel Continuity PCON 1.29 1.12 1.00 0.90 0.81
Applicatins Experience APEX 1.22 1.10 1.00 0.88 0.81
Platform Experience PLEX 1.19 1.09 1.00 0.91 0.85
Language and Toll Experience LTEX 1.20 1.09 1.00 0.91 0.84
Project Factors
Use of Software Tools TOOL 1.17 1.09 1.00 0.90 0.78
Multisite Development SITE 1.22 1.09 1.00 0.93 0.86 0.80
Required Development Schedule SCED 1.43 1.14 1.00
Bruno Hott 15
Multiplicadores de Esforço:Early Design
Effort Adjustment Factors - ED Extra Low Very Low Low Nominal High Very High Extra High
ACAP, PCAP, PCON 3, 4 5, 6 7, 8 9 10, 11 12, 13 14, 15
Personnel Capability (PERS) 2.12 1.62 1.26 1.00 0.83 0.63 0.50
RELY, DATA, CPLX, DOCU 5, 6 7, 8 9 - 11 12 13 - 15 16 - 18 19 - 21
Product Reliability and Complexity (RCPX) 0.49 0.60 0.83 1.00 1.33 1.91 2.72
TIME, STOR, PVOL 8 9 10 - 12 13 - 15 16, 17
Platform Difficulty (PDIF) 0.87 1.00 1.29 1.81 2.61
APEX, PLEX, LTEX 3, 4 5, 6 7, 8 9 10, 11 12, 13 14, 15
Personnel Experience (PREX) 1.59 1.33 1.22 1.00 0.87 0.74 0.62
TOOL, SITE 2 3 4, 5 6 7, 8 9, 10 11
Facilities (FCIL) 1.43 1.30 1.10 1.00 0.87 0.73 0.62
Developed for Reusability (RUSE) 0.95 1.00 1.07 1.15 1.24
Required Development Schedule (SCED) 1.43 1.14 1.00
Bruno Hott 16
COCOMO II:Exemplo 3
● Projeto A é um software com 32,000 DSI. Está numa área de missão crítica (RELY = 1.26, TIME = 1.29, CPLX = 1.34). Por outro lado, o time de programadores possuem experiência com a linguagem de programação (LTEX = 0.91) e alta capacidade de programação (PCAP = 0.88). Além da equipe ser altamente coesa (TEAM = 1.10). Pode-se estimar:
Bruno Hott 17
COCOMO II:Exemplo 3
● Projeto A é um software com 32,000 DSI. Está numa área de missão crítica (RELY = 1.26, TIME = 1.29, CPLX = 1.34). Por outro lado, o time de programadores possuem experiência com a linguagem de programação (LTEX = 0.91) e alta capacidade de programação (PCAP = 0.88). Além da equipe ser altamente coesa (TEAM = 1.10). Pode-se estimar:
● E = 0.91 + 0.01 * sum(SF) = 1.08Esforço: 2.94 * (32)1.08 * prod(EM)MM = 2.94 * 42.2 * 1.74 = 216 p/m
● F = 0.28 + 0.2 * (1.08 – 0.91) = 0.314
Prazo: 3.67 * (216)0.314 = 19.8 ~20 meses
● Número médio de pessoas: 216 / 20 = 10.8 ~11 pessoas