Você está na página 1de 13

Métricas de software

Aula 4: Estimativa de esfoço e prazo

Introdução
Nesta aula, você compreenderá as seguintes técnicas de estimativa: COCOMO (básico,
intermediário e detalhado); COCOMO II (estimativas de prazo, de custo e de defeitos);
método de Putnam e a complexidade ciclomática.

Objetivos
Compreender as técnicas de estimativa COCOMO e COCOMO II;
Entender o método de Putnam e a complexidade ciclomática.

COCOMO
O que é COCOMO?

COnstructive COst MOdel (COCOMO) é um algorítmico modelo de estimativa do custo do


software criado por Barry Boehm.

O modelo usa uma fórmula básica de regressão, com parâmetros que são derivados dos
dados históricos e das características atuais dos projetos.

O método COCOMO é um modelo de estimativa do tempo de desenvolvimento de um


software e está baseado no estudo de 63 projetos, dos quais foram examinados de 2.000 a
100.000 linhas de código em linguagens de programação Assembly.

O COCOMO consiste em três implementações: básico, intermediário e avançado. Avance a


tela e compreenda cada uma delas.

COCOMO básico
COCOMO básico é um modelo estático que calcula o esforço de desenvolvimento de
software e seu custo em função do tamanho de linhas de códigos desenvolvidas. Aplica-se
às seguintes classes de projetos do software:

Orgânicos: são projetos relativamente pequenos, simples e com pouca inovação, com
equipes de dimensão relativamente pequena. Exemplo: mala direta.

Semidestacado ou difuso (em tamanho e complexidade): são projetos intermediários com


características entre o modo orgânico e o embutido, em que as equipes de trabalho são
heterogêneas em termo de experiência, como, por exemplo, um sistema de processamento
de transações (folha de pagamento).

Embutido ou restrito: aplicável no desenvolvimento de sistemas complexos embutidos em


hardware, com muitas inovações, restrições severas e/ou requisitos muito voláteis e de
confinamentos operacionais; exemplo: sistema de controle de telefonia.

Figura 1

Fonte: Elaborado pelo autor

Os coeficientes ab, bb, cb e db

Tabela 1

Projeto de software ab bb cb db

Orgânico 2,4 1,05 2,5 0,38

Semidestacado 3,0 1,12 2,5 0,35

Embutido 3,6 1,20 2,5 0,32

O COCOMO básico é um modelo estático de valor simples, que calcula o esforço do


desenvolvimento de software em função do tamanho deste software, expresso em linhas
de código estimadas. Avance e veja alguns exemplos.

Exemplos de COCOMO básico


Uma vantagem do COCOMO básico é a sua rapidez em estimativas de custo de software;
porém, sua exatidão é limitada devido à falta de fatores para explicar as diferenças entre:

Ferramentas;
Qualidade de pessoal e experiência;
Uso de ferramentas modernas e técnicas;
Outros atributos de projeto que influenciam nos custos de software.
Figura 2

Fonte: Elaborado pelo autor

Exemplo 1: Considere um software com 33,3 Kloc; usando o modelo semidestacado, temos:

Tabela 2

Esforço Duração do projeto

E = 3,0 (Kloc)1,12 D = 2,5 (E) 0,35

= 3,0 (33,3) 1,12 = 2,5 *(152) 0,35

= 152 pessoas/mês = 14,5 meses

Logo, o número ideal de pessoas no projeto é:

N = E/D = 152/14,5 = 11 pessoas

Suponha que outro software tenha o Kloc igual a 45,3?

Tabela 3

Esforço Duração do projeto

E = 3,0 (Kloc) 1,12 D = 2,5 (E) 0,35

= 3,0 (45,3) 1,12 = 2,5 *(215) 0,35

= 215 pessoas/mês = 16,4 meses

Exemplo 2: Considere que, após uma análise de ponto de função, detectamos 236 PFs não
ajustados e que, além disso, as fórmulas do COCOMO tenham sido construídas com Kloc.
Se a linguagem utilizada for ACCESS, temos:

Tabela 4

Linguagem LOC/PF Linguagem LOC/PF

ACCESS 38 FoxPro 2.5 34

Ansi SQL 13 HTML 3.0 156

Ansi COBOL 85 91 JAVA 53

C 128 LISP 64
Linguagem LOC/PF Linguagem LOC/PF

C++ 53 Smaltalk 22

Clipper 19 Object pascal 29

COBOL II 107 Oracle 40

dBase IV 36 Turbo C 128

Delphi 29 Turbo Pascal V.5 49

Fortran 95 71 Visual Basic 5 29

TAMANHO = 38 x 236 (PF) = 8968 LOC = 8,968 KLOC

Usando o COCOMO básico, o gerente considerou o projeto como orgânico. Sendo assim,
vamos usar as fórmulas.

Tabela 5

Esforço Duração do projeto

E = 3,0 (Kloc) 1,12 D = 2,5 (E) 0,35

= 3,0 x(9) 1,12 = 2,5 *(36) 0,35

= 36 pessoas/mês = 4,3 meses

Logo, o número ideal de pessoas no projeto é:

N = E/D = 36/4,3 = 8 pessoas

COCOMO intermediário
O método intermediário é uma extensão do método básico, porém, com mais categorias de
controle, como: atributos do produto; atributos de hardware; atributos pessoais; atributos do
projeto.

Atributos do produto

I – Confiabilidade exigida do software;

II – Tamanho do banco de dados;

III – Complexidade do software.

Atributos do hardware
I – Restrições de desempenho de run-time;

II - Restrições de memória;

III – Mudanças do ambiente de software;

IV – Tempo de resposta.

Atributos de pessoal

I – Capacidade dos analistas;

II – Capacidade dos programadores;

III – Experiência na aplicação;

IV – Experiência no ambiente de hardware;

V – Experiência com a linguagem de programação.

Atributos do projeto

I – Uso de ferramenta de software;

II – Técnicas modernas de programação;

III – Prazo requerido para o desenvolvimento.

O COCOMO intermediário calcula o esforço de desenvolvimento de software em função do


tamanho do programa, que inclui custo, avaliação subjetiva do produto, hardware, pessoal e
atributos de projeto. Observe a fórmula:

E = ai (LOC)(bi).EAF

Onde: E é o esforço aplicado em pessoas por mês; LOC é o número de linhas de código
para o projeto; e EAF é o fator calculado

Os coeficientes ai e bi são dados na tabela:

Tabela 6

Projeto de software ai bi

Orgânico 3,2 1,05

Semidestacado 3,0 1,12

Embutido 2,8 1,50

Considere que, no exemplo 2 (COCOMO intermediário), o gerente considerou o projeto


como orgânico; portanto, usaremos as fórmulas:

Tabela 7

Esforço Duração do projeto

E = 3,2 (Kloc)1,05 x EAF D = 2,5 (E) 0,38


Cálculo do EAF: analisando os 15 direcionadores da tabela de multiplicadores de esforço
(clique aqui para visualizá-la), o gerente alcançou os seguintes resultados:

Complexidade do software: Alta


Restrições quanto ao uso da memória: Alto
Experiência com a linguagem de programação: Baixa
Capacidade dos programadores: Baixa

Os outros atributos foram considerados normais.

Assim, podemos calcular o EAF:

EAF = (1,15 x 1,06 x 1,14 x 1,17) = 1,63

Dessa forma, pode-se estimar o esforço:

E = 3,2 (Kloc) 1,05 x EAF

E = 3,2 (9)1,05 x 1,63 = 52,42 pessoas-mês

Prazo:

D = 2,5 (E) 0,38

D = 2,5(52,42)0,38 = 11,26 meses

COCOMO avançado
No COCOMO avançado, são incorporadas características da versão intermediária com uma
avaliação de impacto de custo em cada passo do projeto.

Nele, pode ser empregado software interativo auxiliar para a estimativa de custos e prazos.
A partir de um conjunto de atributos, premissas e modos de desenvolvimento, o COCOMO
estima os prazos, custos e recursos necessários para cada etapa do ciclo de vida do
produto.

COCOMO avançado: Spider-CoCoMo


O que é Spider-CoCoMo?

É uma ferramenta oriunda das pesquisas do projeto SPIDER da Universidade Federal do


Pará (OLIVEIRA, 2010).

Esse projeto tem como objetivo a construção de uma suíte de ferramentas livres para dar
suporte à implementação do modelo de qualidade MPS.BR – Melhoria de Processo de
Software Brasileiro (SOFTEX, 2009).

Por que foi concebida?

Sua concepção ocorreu pela necessidade de uma forma sistematizada e simples para
realizar estimativas de projetos de software, pois a maioria das empresas utilizam planilhas
eletrônicas e, com elas, não é possível atender completamente às necessidades dos
gerentes, tendo em vista que não é possível obter uma base histórica dos valores estimados
nos projetos da organização.
O que é o MPS.BR?

O MPS.BR (SOFTEX, 2009) é um programa que busca avaliar processos de desenvolvimento


de software por meio de um conjunto de boas práticas. Esse modelo se divide em sete
níveis de maturidade, partindo do nível G, o mais baixo, até o nível A, o mais alto. À medida
que se passa de um nível para o outro, o processo é entendido como mais maduro; cada
nível possui um conjunto de atividades, denominados processos. Por fim, cada processo
contido em um nível possui resultados esperados, que indicam que um determinado item
do processo em questão foi alcançado. A avaliação se dá pela análise de cada resultado
esperado dos processos.

A Spider-CoCoMo está inserida no contexto do processo Gerência de Projetos, auxiliando


nas estimativas de custo, prazos e número de pessoas. A ferramenta está indiretamente
ligada com o resultado esperado do GPR 2 e diretamente ligada com o GPR 4, dois dos
resultados esperados desse processo.

GPR 2

Visa garantir que tarefas e produtos de trabalho sejam dimensionados por meio de métodos
apropriados. A ferramenta necessita que o resultado esperado seja cumprido, pois ele serve
de parâmetro para o cálculo do CoCoMo. Em particular para esse resultado esperado, o
projeto SPIDER possui duas ferramentas para medir o tamanho de projeto baseado no
método de análise de pontos por função e pontos por casos de uso, que são a Spider-APF e
a Spider-UCP (BALDEZ, 2010).

Caso seja adotado qualquer outro tipo de método que não os citados anteriormente, o valor
pode ser inserido manualmente na Spider-CoCoMo sem que haja perda nos resultados
estimados.

GPR 4

Requer que o esforço e os custos sejam estimados. Esse resultado esperado é totalmente
atendido com a utilização da Spider-CoCoMo tanto nos níveis G e F, tendo em vista que o
método CoCoMo é utilizado para estimativas, como dito anteriormente, como nos níveis
superiores ao F, pois os valores estimados são armazenados em banco de dados, sendo
feito um histórico deles. Esse é o grande diferencial da Spider-CoCoMo sobre as planilhas
eletrônicas.

COCOMO II
O que é o COCOMO II?

O COCOMO II (segunda versão do COCOMO – COnstructive COst MOdel) é um modelo


objetivo de custos para o planejamento e execução de projetos de software. Um modelo de
custos fornece estrutura (framework) para a comunicação de decisões de negócio entre os
envolvidos em um empreendimento baseado em software.

Além disso, oferece suporte a negociações contratuais, análises de melhoria de processo,


aquisição de ferramentas, alterações na arquitetura, decisões entre desenvolvimento e
aquisição de componentes, assim como diversas outras decisões sobre retorno do
investimento, servindo de base a estimativas plenas de credibilidade.

Como se processa?

Embora a maioria das organizações inicie o processo de estimativa utilizando modelos


lineares simples, o amadurecimento do processo de software leva à utilização de modelos
mais sofisticados, capazes de melhor descrever os fatores que influenciam os projetos de
software.
O COCOMO II é uma excelente escolha nesse sentido. Desenvolvido em uma universidade e
fortemente apoiado pela indústria, oferece uma solução aberta, escalável e respeitada.

Quais são suas vantagens?

O mesmo processo pode ser aplicado ao projeto inteiro ou apenas a um


componente individual;
O COCOMO pode calcular a programação da manutenção anual;
O COCOMO pode examinar a vantagem de dados históricos e, com essas
informações, criar uma constante da calibração que pode ser calculada para
estimativas futuras.

Qual é a sua desvantagem?

Imprecisão: sua precisão pode ser prejudicada no início do projeto, pois o modelo depende
fortemente de uma estimativa precisa da quantidade de linhas

Método de Putnam
O método de Putnam considera múltiplas variáveis e o ciclo de desenvolvimento do projeto.

Com base em análise estatística, Putnam relacionou os comportamentos prazo e esforço.

Equação de Putnam

L = Ck. K1/3.Td 4/3, onde:

L = linhas de códigos;

Ck = constante de estado de tecnologia;

K = Esforço (pessoa/ano);

Td = tempo de desenvolvimento em anos.

Ck

2.000Ambiente de desenvolvimento pobre.

8.000Métodos em prática, documentação e revisões adequadas.

11.000Ambiente ótimo, com ferramentas e técnicas automatizadas.

Complexidade ciclomática
O que é?

Em 1976, McCabe criou uma maneira de testar cada caminho independente de um


programa, de forma que a quantidade de casos de teste será a complexidade ciclomática
do programa.

Complexidade ciclomática ou complexidade condicional é uma métrica usada para indicar a


complexidade do software; mede a quantidade de caminhos de execução independentes a
partir do código fonte.
Como é calculada?

É calculada a partir de um grafo de fluxo: os nós do grafo correspondem a grupos


indivisíveis de comandos, e uma aresta conecta dois nós.

Em que pode ser aplicada?

A complexidade ciclomática também pode ser aplicada a funções, módulos, métodos ou


classes individuais de um programa.

Complexidade ciclomática
Vamos a um exemplo?

Veja como calcular a complexidade ciclomática para um artefato de software (VG).

Figura 3

Fonte: Elaborado pelo autor

V(G) = E – N + 2P

Para:

E=8P=1

N=7

V(G) = 8 – 7 + 2 = 3

V(G) = 3

V(G): Complexidade ciclomática;

G: Grafo (fluxograma);

E: Número de bordas (ligações);

N: Número de nós (instruções);

P: Número de componentes conectados ao gráfico (assumimos P = 1).


Conclusões
Não existe um modelo único;
Deve-se desenvolver o modelo mais adequado à empresa;
O modelo deve ser periodicamente revisto;
Deve-se validar por mais de um método;
É um aspecto estratégico para a empresa.

Finalizamos esta aula; avance e faça uma atividade.

Atividade proposta

Discuta com seus colegas a importância da adoção do modelo de estimativa de ciusto


COCOMO no processo de projeto de software a importância de se determinar a
complexidade ciclomática.

COCOMO, COCOMO II, Complexidade.

Exercícios de fixação

O método COCOMO é um modelo de estimativa do tempo de desenvolvimento de um


software, baseado no estudo de vários projetos, dos quais foram examinados de 2.000 a
100.000 linhas de código em linguagens de programação Assembly. Esse método consiste
em três implementações: básico, intermediário e avançado.

O modelo básico:

É um modelo com atributos de controle, como: atributos do produto; atributos de


hardware; atributos pessoais; atributos do projeto. É um modelo com características da
versão intermediária com uma avaliação de impacto de custo em cada passo do
projeto.

É um modelo estático que calcula o esforço de desenvolvimento de software e seu


custo em função do tamanho de linhas de códigos.

É um modelo dinâmico com características próprias que calcula o esforço de cada


programador.

É um modelo sistêmico que calcula as horas trabalhadas por cada equipe do projeto.

O COCOMO básico se aplica a três classes de projetos do software; são elas:

Básico, intermediário e avançado

Orgânico, semidestacado e embutido

Básico, semidestacado e restrito


Difuso, semidestacado e embutido

Orgânico, difuso e semidestacado

O COCOMO ____________________ é aplicado no desenvolvimento de sistemas complexos


embutidos em hardware, com muita inovação, com restrições severas e/ou com requisitos
muito voláteis e de confinamentos operacionais.

Difuso

Semidestacado

Orgânico

Funcional

Embutido

O COCOMO ____________________ mede projetos de software relativamente pequenos,


simples e com pouca inovação, com equipes de dimensão relativamente pequena.

Avançado

Semidestacado

Orgânico

Funcional

Embutido

O COCOMO ____________________ é aplicado quando as equipes de trabalho são


heterogêneas em termo de experiência; por exemplo, um sistema de processamento de
transações, como o controle de estoque.

Avançado

Semidestacado

Orgânico

Funcional

Embutido

O COCOMO II (segunda versão do COCOMO – COnstructive COst MOdel) é um modelo


objetivo de custos para o planejamento e execução de projetos de software. Um modelo de
custos fornece uma estrutura (framework) para a comunicação de decisões de negócio
entre os envolvidos em um empreendimento baseado em softwares. Marque as vantagens
do COCOMO II:

O mesmo processo pode ser aplicado ao projeto inteiro.

O mesmo processo pode ser aplicado a apenas um componente individual..

Sua precisão pode ser prejudicada no inicio do projeto, pois o modelo depende
fortemente de uma estimativa precisa da quantidade de linhas.
Pode calcular a programação da manutenção anual.

Pode fazer exame da vantagem de dados históricos e criar uma constante de calibração
que pode ser calculada para estimativas futuras.

O __________________ considera múltiplas variáveis e o ciclo de desenvolvimento do projeto


com base em análise estatística, relacionando os comportamentos prazo e esforço.

Método de esforço

Método COCOMO

Método COCOMO II

Método de pontos por função

Método de Putnam

A complexidade ciclomática ou complexidade condicional é uma métrica usada para indicar


a complexidade do software. Mede a quantidade de caminhos de execução independentes
a partir do código fonte. É calculada a partir de um(a):

Tabela da arquivos lógicos

Diagrama de fluxo de dados

Diagrama de casos de uso

Grafo de fluxo

Diagrama de Gantt

Analise esta tabela do COCOMO semidestacado.

Tabela 8

Projeto do software ab bb cb db

Semidestacado 3,0 1,12 2,5 0,35

Agora, determine o número de pessoas e o prazo que deve levar o projeto de um software
com 45 Kloc, usando:

E = ab * KLOC bb

D = cb * E db

P = E / D, onde:

E = Esforço aplicado por pessoa no mês

D = Tempo de desenvolvimento em meses

328 pessoas/mês – 12 meses

215 pessoas/mês – 16,4 meses

142 pessoas/mês – 25,7 meses


115 pessoas/mês – 26,4 meses

102 pessoas/mês – 18 meses

Determine a complexidade ciclomática de um software cujo grafo apresenta 12 bordas e 7


nós. Considere o número de componentes conectado igual a 1.

19

14

84

Síntese
Nesta aula:

COCOMO (básico, intermediário e detalhado);


COCOMO II: estimativas de prazo, custo e defeitos;
Método de Putnam – estudo de casos.

Referências
PADUA Filho, Wilson de. Engenharia de Software: fundamentos, métodos e padrões. 3. ed.
Rio de Janeiro: Editora LTC, 2009.

PETERS, James F. Engenharia de Software. 3. ed. Campus, 2001.

PRESSMAN, Roger S. Engenharia de Software. 7. ed. McGraw Hill, 2011.

SOMMERVILLE, Ian. Engenharia de Software. 8. ed. McGraw Hill, 2007.

VAZQUEZ, C. E.; SIMÕES, G. S.; ALBERT, R. M. Análise de ponto de função medição,


estimativa e gerenciamento de projetos de software. São Paulo: Editora Érica, 2009.

Você também pode gostar