Métricas, Estimativas e Modelos de software
Qualidade
A avaliação da qualidade está relacionada a uma série de características intrínsecas do produto, ex.,- Quantidade de bugs
- Conformidade com requisitos
- Desempenho
- Indicador de qualidade
Métrica
É a medição de atributos de um processo, projeto, etc. É também uma relação entre medidas.
Atividades de medição e análise são importantes para:
- Caracterizar ou permitir entender processos, produtos, recursos e ambiente.
- Avaliar para determinar o status do projeto, com respeito aos planos feitos
- Predizer valores observados possam ser utilizados para predizer outros
- Melhorar, identificando causas de problemas e ineficiências e oportunidades de melhoria
Escalas de mensuração
- Nominal: escala inicial, baseada em uma avaliação nominal
- Ordinal: baseada numa ordem pre-estabelecida. Ex prioridade mínima, média, max.
- Intervalar: baseada em intervalos. Ex temperatura
- Razão: existe uma relação natural entre os valores. Ex: Salário
- Nas métricas de software serão usadas basicamente as escalas de razão e ordinal
Algumas métricas conhecidas no desenvolvimento de software:
- Números de linhas de código
- Número de pessoas para implementar um caso de uso
- Número de defeitos encontrados num produto
- Esforço necessário para realizar uma tarefa/projeto
- Tempo necessário para realizar uma tarefa/projeto
- Custo necessário para realizar uma tarefa/projeto
- Grau de satisfação do cliente
Objetivos
- Melhorar a previsibilidade e a chance de sucesso no projeto.
- Permitir melhor gerenciamento do projeto
- Reduzir pressões sobre cronogramas
- Apoiar decisões make or buy fazer/comprar
- Indicar a qualidade de um produto de software
- Avaliar benefícios
- Avaliar ROI
Características de uma boa métrica
- Facilmente calculada, entendida e testada
- Pode ser automatizável
- Deve ser útil para de estudos estatísticos
- Deve ser repetível, objetiva
- Capaz de indicar um caminho de melhoria
Classificação
- Métricas Diretas
- É aquela que é realizada em termos atributos observáveis. Números de linhas, número de erros, etc
- Métricas Indiretas
- São baseadas em medidas diretas. Ex. facilidade de manutenção, produtividade, esforço, tamanho baseado em funcionalidade. Não são observáveis diretamente.
- Métricas orientadas a tamanho
- São aquelas aplicáveis a contagem de tamanho de artefatos de software. Ex.: KLOC, número da páginas de documentação.
- Métricas orientadas à função
- Se baseia em métodos para medição de software do ponto de vista do usuário. Ex. Ponto de função, ponto de caso de uso, etc.
Análise de Pontos de Função (APF)
Consiste na contagem das funções que caracterizam um sistema, sob o ponto de vista do que ele faz para o usuário.
- Mede a funcionalidade entregue ao cliente (métrica indireta)
- Utiliza um método padronizado internacionalmente
- Pode ser usada tanto no início, no meio ou no final do projeto de software
- Útil para medição de produtos novos ou existentes, em evolução
- É baseado em função de dois tipos.
- Dado: relacionam-se ao modelo de dados. Dividem-se em Arquivos Lógicos Internos (ALI) e Arquivos de Interface Externa (AIE)
- Transação: estão relacionadas "as transações realizadas no escopo da aplicação. Geralmente são captadas por meio de casos de uso. Dividem-se em Entradas Externas (EE), Saídas Externas (SE) e Consultas Externas CE).
- É uma métrica indireta e funcional.
O que deve ser contado num produto, segundo a APF?
- Entradas: transações que alteram o estado do sistema. Ex: CRUD
- Saídas: transações que enviam dados para fora do sistema. Ex: Arquivos de interface
- Consultas: transações de consulta a bases de dados
- Arquivos Lógicos Internos: arquivos mantidos pelo sistema
- Arquivos de Interface Externa: arquivos externos que não são mantidos pela aplicação
Tipo de Contagem de PF
- Contagem Indicativa: feita no momento inicial do projeto com um modelo preliminar dos dados.
- Contagem Estimada: realizada quando se possui detalhes suficientes para fazer uma estimativa melhor. Quando se tem um modelo de funções básicas.
- Contagem Detalhada: bastante confiável, realizada quando se tem informações completas sobres as funções e dados.
Etapas do processo de contagem de pontos de função
- Identificação das funções do sistema
- Classificação de cada função de acordo com sua complexidade funcional
- Cálculo dos pontos de função brutos através de pesos de acordo com uma tabela
- Avaliação das 14 "características gerais" do sistema
- Determinação do fator de ajuste (específico do projeto)
- Cálculo dos pontos de função ajustados
Contagem por pontos de função
É feito por 5 etapas.
- Entradas
- São elementos que vão alterar algum estado dos dados na aplicação
- Saídas
- São funcionalidades que provem a troca de dados na saída de dados
- Arquivos lógicos internos
- São arquivos que armazenam informações da aplicação internamente
- Arquivos de interface externo
- São arquivos de outras aplicações que são apenas acessados
- Consulta
- Trazem dados que estão armazenados mediante uma seleção desses dados
Transações podem ser
- Entrada
- Saída
- Consulta
Produtividade = Tamanho do Produto / EsforçoObs.: Tamanho do Produto pode ser em diversas unidades, como PF/HH, PF/PM.
Esforço = Pessoas x TempoPrdutividade média é baseada em dados históricos, com a fórmula:
Qtd. Pessoas = Tamanho / (Produtividade x Tempo)
Itens de influência (Fatores de Ajuste)
- Teleprocessamento
- Processamento Distribuído
- Performance
- Carga de Máquina
- Volume de Transações
- Entradas de dados online
- Atualizações online
- Eficiência do usuário final
- Complexiadade do processamento
- Reutilização de código
- Facilidade de implantação
- Facilidade de operação
- Facilidade de manutenção/alterações
- Operação em múltiplos locais
Etapas para o cálculo da produtividade
- Medição do tamanho em pontos de função
- Registros históricos para determinar o escopo (medido em homens x hora)
- Calcular a produtividade obtida - Horas/PF ou PF/HH
- Estabelecer as produtividades médias para os diversos ambientes de desenvolvimento e tipos de projeto
Fatores que influênciam na produtividade de um projeto
- Inexperiência da equipe
- Gerenciamento ineficiente do projeto
- Requisitos instáveis
- Falta de metodologia
- Tamanho do projeto
Métodos de estimativas empíricos
- Estimativa Ad-hoc
- Estimativa isolada. Projeto não está conectado a uma outra situação conhecida.
- Estimativa gerencial
- Gerente estima o prazo. Problema de prazo sub-dimensionado.
- Métodos ágeis
- planning poker, etc
- De equipe
- a própria equipe estima o trabalho
- Pode ser feita utilizando uma técnica chamada Delphi: cada pessoa faz uma contagem e depois tenta-se convergir os valores
Reflexões sobre estimativas de software
- Métricas são falíveis
- Mesmo assim é melhor ter métricas do que planejar no escuro
- Utilizar faixas de tolerância é uma recomendação
- Não se consegue boas estimativas no início do projeto
- Mesmo assim uma estimativa inicial deve ser feita
- Uma base histórica é o que faz a diferença para uma boa estimativa
Outras métricas
- COCOMO II
- Bom para estimar custo. Difícil de ser usado.
- Pontos de Caso de Uso
- Derivada dos pontos de função, mas usa atores e casos de uso.
- Pontos de histórias de usuário
- aplicada em histórias de usuário dos métodos ágeis
- COSMIC
- Nova geração de métricas. Não estabelece limites para medição de uma função. Mede não somente a camada da aplicação mas a infraestrutura.
- Deve ser aplicado quando há muita variação de escopo
- Deve ser aplicado com muitos pontos de função
- Propicia o aumento da previsibilidade e menor variabilidade na relação entre o tamanho, custo e esforço.