desenvolvimento de sistemas web - luiz...
TRANSCRIPT
Luiz Leão – [email protected]
http://www.luizleao.com
Medidas de Esforço de Desenvolvimento de
Software
Unidade 1 – Fundamentos de Métricas e Medidas
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 1 – Fundamentos de métricas e medidas
• Introdução
• Métrica e medida
• Características de uma métrica
• Definição de uma métrica
• Classificação da métrica quanto ao objetivo
• Acompanhamento da métrica
• Medidas diretas
• Medidas indiretas
• Medidas no ciclo de vida do software
• Medidas no software pronto (kloc – defeitos – produtividade)
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 2 – Determinação de ponto função
• Ponto função
• Fator de ajuste
• Contagem de ponto função não ajustado
• Ponto função ajustado
• Medidas no modelo preliminar de dados
• Modelo e funções básicas
• Projeto detalhado
• Medir arquivos lógicos internos
• Complexidade de algoritmos
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 2 – Determinação de ponto função (cont.)
• Tratamento nas entradas de dados
• Complexidade da entrada
• Saída
– Complexidade da saída
• Consultas
– Complexidade das consultas –
• TED – Tipo de Elemento de Dados
• TER – Tipo de Elemento de Registro
• TAR – Tipo de Arquivo Referenciado
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 2 – Determinação de ponto função (cont.)
• Calculo de PF para:
– Um caso e uso
– Um programa
– Um diagrama de classes
– Um diagrama de sequencia
– Uma tela – um arquivo
– Um DFD
– Um diagrama lógico de dados
– Uma proposta de manutenção
– Uma classe de projeto
– Um método
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 3 – Métricas Utilizando Ponto Função
• Medidas da produtividade por PF
• Aspectos de influência na produtividade
• Produtividade por fase
• Relacionamento entre linguagens
• Decisão
• Acompanhamento das fase do projeto
• Estimativas de ponto função para manutenção de
software
• Orçamento do projeto
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 4 – Técnicas de estimativa de esforço e prazo
• Tipo e técnicas de estimativa
• COCOMO (Básico – Intermediário – detalhado)
• COCOMO II
• Estimativas de prazo
• Estimativas de custo
• Estimativas de defeitos pré-release
• Estimativas de esforço de retrabalho
• Método de Putman
• Estimativa de custos e esforço para a manutenção de software
• Outros métodos
• Estudo de casos
• Acompanhar projetos (método EVA).
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 5 – Estimativas com Base Estatística
• Estimativas a partir de bases estatísticas
• Erros
• Interpolação de medidas (linear, exponencial,
logarítmica,..)
• Regressão Linear
• Formas de Cálculos
• Dados históricos
• Custo estimado baseado no esforços
• Estudo de Casos
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Unidade 1 – Fundamentos de métricas e medidas
• Introdução
• Métrica e medida
• Características de uma métrica
• Definição de uma métrica
• Classificação da métrica quanto ao objetivo
• Acompanhamento da métrica
• Medidas Diretas
• Medidas Indiretas
• Medidas no Ciclo de Vida do Software
• Medidas no software pronto (kloc – defeitos – produtividade)
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• Só podemos gerenciar o que podemos medir
• Não podemos otimizar o que não é medido
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• O que é?
• Quem faz?
• Quais são os passos?
• Qual é o produto do trabalho?
• Como garanto que fiz corretamente?
• Por que Medir?
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• O que é?
– São medidas quantitativas que permitem ao pessoal de software
ter ideia da eficácia do processo de software e dos projetos que
são conduzidos usando o processo como arcabouço
(PRESSMAN, 2002)
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• Quem faz?
– Gerentes de Software ou Projeto: Analisam as métricas
– Engenheiros de Software: Coletam as medidas
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• Quais são os passos?
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• Qual o produto do trabalho?
– Obter um conjunto de métricas de software que nos forneça uma
idéia do processo e entendimento do projeto
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• Como garanto que fiz corretamente?
– Aplicando um esquema de medição consistente, mas simples,
que nunca deve ser usado para avaliar, premiar ou punir o
desempenho individual.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Introdução
• Por que Medir?
– Indicar a qualidade do produto;
– Avaliar a produtividade dos que desenvolvem o produto;
– Determinar os benefícios derivados de novos métodos e
ferramentas de engenharia de software;
– Formar uma base para as estimativas;
– Buscar oportunidades por refatoração;
– Ajudar na justificativa de aquisição de novas ferramentas ou de
treinamentos adicionais;
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Glossário
• Medida
• Medição
• Indicador
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medida
• Fornece uma indicação quantitativa da extensão,
quantidade, dimensão, capacidade ou tamanho de algum
atributo de um produto, ou de um processo
(PRESSMAN,2002)
• Ex: Quantidade de Funcionalidades de um sistema,
quantidade de telas, etc.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medição
• É o ato de determinação de uma medida (IEEE)
• Ex: Em um sistema acadêmico foram encontrados 10
telas, 40 funções e 10 tabelas de dados.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Indicador
• É uma métrica ou a combinação delas, que
fornece compreensão do processo de
software, de um projeto ou do produto
• Um indicador fornece compreensão que
possibilita ao gerente de projeto ou aos
engenheiros de software ajustar o processo,
projeto ou produto para tornar as coisas
melhores.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Indicador
• Ex: Foi constatado que um formulário de
coleta de requisitos A otimiza o trabalho ,
economizando 20% do tempo em relação ao
formulário B, logo, o formulário A será adotado
como padrão em medições futuras
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Características de uma Métrica
• Facilmente calculada, entendida e testada
• Passível de estudos estatísticos
• Expressa em alguma unidade
• Obtida o mais cedo possível no ciclo de vida do software
• Passível de automação (Ferramentas)
• Repetível e independente do observador (Modelo)
• Sugere uma estratégia de melhoria
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Em resumo...
• Uma métrica deve ser:
– Válida: Quantifica o que queremos medir
– Confiável: Produz os mesmos resultados dadas as mesmas
condições
– Prática: Barata, fácil de computar e fácil de interpretar
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Classificação da Métrica quanto ao Objetivo
• Medidas Diretas
• Medidas Indiretas
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Acompanhamento da Métrica
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas Diretas
• São medidas mais simples de serem quantificadas pois
são tangíveis (Podem sem visualizadas)
• Incluem custo e esforço aplicados
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas Diretas
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas Indiretas
• Medidas abstratas, logo, tem uma quantificação mais
complexa, porém, indispensável no contexto do projeto
• Cada uma das medidas deve ser analisada de forma
particular.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas Indiretas
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Métricas Orientadas ao Tamanho
• Mede o tamanho do software pelo número de linhas do
código-fonte
• Devem ser descartadas as linhas em branco e
comentários – Muito trabalhoso!!
• Está diretamente ligada a linguagem de programação
utilizada, logo, não pode servir de indicador para
softwares desenvolvidos em outras linguagens
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Métricas Orientadas à Função
• Criada por Allan Albercht (1979)
• Ao invés de contarmos linhas, contamos funcionalidades
do software;
• Baseada na visão de negócio do usuário;
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Métricas Orientadas à Função (Cont.)
• É independente da linguagem utilizada e de qualquer
tecnologia em geral;
• Ela não permite calcular o esforço de desenvolvimento,
mas gera uma variável que pode permitir seu cálculo;
• Auxilia o usuário final a melhorar o exame e avaliação de
projetos.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas no Software Pronto
• Efetuada após a entrega do produto
• Usaremos a métrica Orientada a Tamanho – mais
especificamente a KLOC
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
KLOC
• Kilo Lines Of Code (Mil Linhas de Código)
• Métrica que analisa a quantidade de linhas de um código
• Muito utilizada em grande sistemas
• É utilizada também como medida de referência
comparativa para erros em sistemas, servindo como base
para homologação ou aceitação de projetos (Ex: aceita-se
até "x" erros por KLOC para aprovar um sistema e colocá-
lo em produção).
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas no software pronto
• A partir de dados rudimentares, contidos na tabela de
medidas orientada a tamanho, um conjunto de métricas
simples pode ser desenvolvido a cada projeto:
– Erros por KLOC
– Defeitos por KLOC
– Valor (R$) por LOC (linha de código)
– Páginas de Documentação por KLOC
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas no software pronto
• Tabela de Medidas Orientada a Tamanho
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas no software pronto
• Adicionalmente, outras métricas podem ser calculadas:
– Erros por Pessoa-mês
– LOC por Pessoa-mês
– Valor (R$) por Páginas de Documentação
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Medidas no software pronto
• Adicionalmente, outras métricas podem ser calculadas:
– Erros por Pessoa-mês
– LOC por Pessoa-mês
– Valor (R$) por Páginas de Documentação
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Estimativa de KLOC
• Fórmula para estimar o tamanho do software:
kloc = (KlocOtimista + 4 * KlocEsperado + KlocPessimista)/6
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
KLOC
• Defeitos
– Ocorre quando atividades de garantia de qualidade (p. ex.,
revisões técnicas formais) deixam de descobrir um erro num
produto de trabalho produzido durante o processo de
software (PRESSMAN, 2002)
– Serve de métrica para quantificarmos a qualidade do
software
Qualidade = defeitos/KLOC
– A densidade de defeitos encontrados, a cada 1000 linhas
de código, será usada como um dos fatores que
determinam a qualidade do software
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
KLOC
• Produtividade
– Capacidade da equipe em desenvolver as atividades
envolvidas no processo de software
Produtividade = KLOC/Esforço (Pessoa-mês)
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
KLOC
• Problemas na Métrica
– O KLOC é uma medida direta, portanto é feita sobre as
atividades. E, só podemos contar as linhas de um
software após ele ter sido escrito. Portanto,
terminado.
– Alguns contestam o KLOC por que não privilegia a boa
programação (mais eficiente) ou o uso de linguagens
mais eficientes.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
KLOC
• Problemas na Métrica (Cont.)
– O acompanhamento de projetos com métricas
baseadas no KLOC compara projetos de
características distintas nas especificações de
funcionalidades e na sua forma de implementar.
– Comparar a produtividade de projetos desenvolvidos
em ambientes distintos pode gerar conclusões
equivocadas
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
KLOC
• Problemas na Métrica (Cont.)
– Linguagens Orientadas a Objeto tendem a tornar o
projeto extremamente caro com essa métrica, pelo fato
de produzir muitos artefatos (classes, interfaces, APIs),
que consomem milhares de linhas de código.
– Linguagens procedurais tende a ser mais baratas,
porém o custo de manutenção desses softwares são
elevados.
Unidade I – Fundamentos de Métricas e Medidas
Medidas de Esforço de Desenvolvimento de Software
Sobre Métricas Orientadas a Tamanho
• São amplamente usadas até hoje, porém, o debate sobre
a sua validade e aplicabilidade continuam