Buscar

Técnicas de Estimativa de Software

Prévia do material em texto

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.
Compreender as técnicas de estimativa COCOMO e COCOMO II;
Entender o método de Putnam e a complexidade ciclomática.
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.
Métricas de software
Aula 4: Estimativa de esfoço e prazo
Introdução
Objetivos
COCOMO
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.
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.
Exemplos de COCOMO básico
http://pos.estacio.webaula.com.br/cursos/ATU298/aula4/img/figura1.png
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
http://pos.estacio.webaula.com.br/cursos/ATU298/aula4/img/figura2.png
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
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
COCOMO intermediário
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
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.
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.
COCOMO avançado
COCOMO avançado: Spider-CoCoMo
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 maisalto. À 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.
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.
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.
COCOMO II
O que é o COCOMO II?
Como se processa?
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.
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.
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
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.
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.
Quais são suas vantagens?
Qual é a sua desvantagem?
Método de Putnam
Complexidade ciclomática
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.
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 = 8 P = 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).
Complexidade ciclomática
http://pos.estacio.webaula.com.br/cursos/ATU298/aula4/img/figura3figura3.png
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.
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.
Conclusões
Atividade proposta
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 podeser 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
Nesta aula:
COCOMO (básico, intermediário e detalhado);
COCOMO II: estimativas de prazo, custo e defeitos;
Método de Putnam – estudo de casos.
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.
p 5
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.
5
7
19
14
84
Síntese
Referências

Continue navegando