Escolar Documentos
Profissional Documentos
Cultura Documentos
2.3 - Cocomo PDF
2.3 - Cocomo PDF
EM NÚMERO DE LINHAS
DE CÓDIGO
© PROF. RAUL SIDNEI WAZLAWICK
UFSC-CTC-INE
2010
ESTIMATIVA DE ESFORÇO
Uma das questões fundamentais em um projeto
de software é saber, antes de executá-lo, quanto
esforço em horas de trabalho será necessário para
executar o projeto.
Essa área, chamada de estimativa de esforço
conta com algumas técnicas que têm apresentado
resultados interessantes ao longo dos últimos
anos.
As técnicas de estimação de esforço utilizam pelo
menos um parâmetro como base.
Existem técnicas baseadas em uma predição do número de
linhas que o programa deverá ter e existem técnicas baseadas
em requisitos, sejam eles descritos como funções, casos de uso
ou histórias de usuário.
LOC E KLOC
A técnica conhecida como LOC (Lines of Code) ou
SLOC (Source Lines of Code) foi possivelmente a
primeira a surgir e consiste em estimar o número
de linhas que um programa deverá ter a partir da
opinião de especialistas.
Rapidamente a técnica evoluiu para a forma
conhecida como KLOC (Kilo Lines of Code), tendo
em vista o tamanho dos programas.
Uma unidade KLOC, portanto, vale mil unidades
LOC.
Além disso, também são usados os termos MLOC
para milhões de linhas e GLOC para bilhões de
linhas de código.
Este tipo de técnica surgiu numa época em que as
linguagens de programação, como FORTRAN eram
fortemente orientadas a linhas de código.
Naquele tempo, programas eram registrados em cartões
perfurados, uma linha de código por cartão, de forma
que era uma medida bastante natural.
Porém, as linguagens atuais não são mais tão restritivas
em termos de linhas de código, de forma que talvez fizesse
mais sentido falar em comandos ao invés de linhas.
Usuários de linguagens como C, Java ou Pascal, por
exemplo, poderão contar o número de comandos
terminados por “;”, obtendo assim uma boa medida de
complexidade de um programa.
Mesmo assim, a noção de comando só funciona bem para
linguagens imperativas.
No caso de linguagens declarativas ou funcionais outras
formas de medir complexidade precisam ser usadas.
RELATIVIDADE DA TÉCNICA
A noção de linha de código continua sendo uma
medida popular para complexidade de
programas, que podem varias de 10 a
100.000.000 de linhas ou comandos, com
complexidade inerente diretamente proporcional
na maioria das vezes.
A medida LOC faz sentido quando se compara
ordens de magnitude.
Um programa com 100.000 linhas possivelmente será
mais complexo do que um programa com 10.000
linhas.
Mas pouco se pode concluir ao se comparar um
programa com 10.000 linhas e um programa com
11.000 linhas.
COMO ESTIMAR KLOC
Uma técnica para estimação de KLOC é reunir a
equipe para discutir o sistema a ser desenvolvido.
Cada participante dará a sua opinião sobre a
quantidade de KLOC que serão necessárias para
desenvolver o sistema.
Usualmente a reunião não chegará a um valor
único.
3 VALORES DE KLOC SÃO OBTIDOS:
O KLOC otimista, ou seja, o número mínimo de
linhas que se espera desenvolver se todas as
condições forem favoráveis.
O KLOC pessimista, ou seja, o número máximo
de linhas que se espera desenvolver ante
condições desfavoráveis.
O KLOC médio, ou seja, o número de linhas que
se espera desenvolver em uma situação de
normalidade.
KLOC ESPERADO
KLOCesperado = (4*KLOCmédio + KLOCotimista + KLOCpessimista) / 6
ARMADILHAS
Programadores experientes produzirão software
com possivelmente menos linhas do que
programadores menos experientes.
A reutilização de software baixa o número de
linhas efetivamente produzidas em relação às
funcionalidades efetivamente disponibilizadas.
Assim, essa medida sempre será relativa ao tipo
de equipe e estrutura de trabalho que se tenha.
LOC E PRODUTIVIDADE
Não se deve também considerar LOC como uma
boa medida de produtividade individualmente,
pois muitas vezes a complexidade inerente de um
programa vai muito além da quantidade de
linhas:
poucas linhas de código poderão realizar tarefas
difíceis e complexas enquanto muitas linhas poderão
efetuar tarefas triviais apenas.
É o caso de quem desenvolve software científico
ou jogos em contraponto com a produção de meros
cadastros e relatórios.
LOC E REFATORAÇÃO
Outra situação a considerar é o fato de que
refatorações do software poderão remover muitas
linhas de código inútil ou redundante e isso não
deve ser considerado como uma produtividade
negativa.
COCOMO
COCOMO ou Constructive Cost Model é um
modelo de estimativa de esforço baseado em
KLOC.
O modelo foi criado por Boehm (1981) a partir de
um estudo empírico sobre sessenta e três projetos
na empresa TRW Aerospace.
Os programas examinados tinham de 2 a 100
KLOC e eram escritos em diversas linguagens de
programação.
Também conhecido como COCOMO 81.
COCOMO TEM 3 IMPLEMENTAÇÕES
Implementação básica, quando a única
informação sobre o sistema efetivamente
disponível é o número estimado de linhas de
código.
Implementação intermediária, quando certos
fatores relativos ao produto, suporte
computacional, pessoal e processo são conhecidos
e podem ser avaliados para o sistema a ser
produzido.
Implementação avançada, quando for necessário
subdividir o sistema em subsistemas e distribuir
as estimativas de esforço por fase e atividade.
TIPO DE PROJETO
Modo orgânico
se aplica quando o sistema a ser desenvolvido não envolver
dispositivos de hardware e a equipe estiver acostumada a
desenvolver este tipo de aplicação, ou seja, sistemas de baixo
risco tecnológico e baixo risco de pessoal.
Modo semi-destacado
se aplica a sistemas com maior grau de novidade para a equipe
e que envolvem interações significativas com hardware, mas
para os quais a equipe ainda tem algum conhecimento, ou
seja, sistemas onde a combinação do risco tecnológico e de
pessoal seja médio.
Modo embutido
se aplica a sistemas com alto grau de interação com diferentes
dispositivos de hardware, ou que sejam embarcados, e para os
quais a equipe tenha considerável dificuldade de abordagem.
São os sistemas com alto risco tecnológico e/ou de pessoal.
COMO ESCOLHER O TIPO DE PROJETO
INFORMAÇÕES OBTIDAS COM COCOMO
D = 11,5 meses
P = 5 pessoas