Mapa mental
Métricas de software

Mapa mental: Métricas de software
Conteúdo do mapa
Métricas de software
Definição
- Medição que se refere a um software, processo ou documentação
Classificação de métricas quanto ao objeto
- Métricas de controle (Processo): Relacionadas a processos de software
- Utilizadas para tomada de decisões sobre alterações no processo de desenvolvimento de software
- Exemplo: esforço médio e tempo necessário para reparar os defeitos reportados
- Métricas de predição (Produto): Relacionadas a produtos de software
- Utilizadas para estimar o esforço necessário para construção ou alteração de software podendo ser
- Métricas estáticas ou internas: coletadas em representações do sistema como projeto, programa ou documentação
- Não há necessidade da execução dos programas
- Ajudam a mensurar a complexidade e a facilidade de compreensão e manutenção de um sistema de software
- Permitem medir a qualidade dos artefatos intermediários e prever a qualidade do produto final
- Tipos de métricas
- Fan-in/Fan-out
- Fan-in é uma medida do número de funções ou métodos que chamam alguma outra função ou método (digamos X)
- Um valor alto para fan-in significa que X está firmemente acoplado com o resto do projeto, e mudanças em X terão grande impacto
- Fan-out é o número de funções chamadas pela função X
- Fan-in é uma medida do número de funções ou métodos que chamam alguma outra função ou método (digamos X)
- Extensão de Código: medida do tamanho de um programa
- Geralmente, quanto maior for o tamanho do código de um componente, mais complexo e propenso a erros esse componente será
- Extensão de Identificadores: uma medida da extensão média de identificadores distintos em um programa
- Em geral, quanto maiores forem os identificadores, mais eles serão significativos e, por isso, mais compreensível será o programa
- A extensão de código foi mostrada como uma das métricas mais confiáveis de previsão de propensão a erros em componentes
- Geralmente, quanto maior for o tamanho do código de um componente, mais complexo e propenso a erros esse componente será
- Complexidade Ciclomática: medida da complexidade de controle de um programa
- Essa complexidade de controle pode estar relacionada à facilidade de compreensão do programa
- Utiliza a fórmula M = E – N + 2.P (M = Complexidade Ciclomática; E = Quantidade de Setas; N = Quantidade de Nós; P = Quantidade de Componentes Conectados)
- Profundidade de Aninhamento e Declarações Condicionais
- As declarações IF profundamente aninhadas são difíceis de compreender e são potencialmente propensas a erros
- Índice de Fog: medida da extensão média das palavras e das sentenças em documentos
- Quanto maior for o valor para o índice de Fog, mais difícil será a compreensão de documentos
- Fan-in/Fan-out
- Métricas dinâmicas ou externas: coletadas durante a execução do programa, a partir do comportamento do sistema ou do seu efeito no ambiente real de operação
- Ajudam a avaliar a eficiência e a confiabilidade de um programa
- Quase sempre estão relacionadas com atributos da qualidade de software
- As métricas dinâmicas geralmente possuem uma relação mais estreita com os atributos de qualidade de software do que as métricas estáticas
- Métricas estáticas ou internas: coletadas em representações do sistema como projeto, programa ou documentação
- Auxiliam a prever características dele, por exemplo: complexidade de um módulo ou a extensão média dos identificadores em um programa
- Utilizadas para estimar o esforço necessário para construção ou alteração de software podendo ser
- Métricas de controle (Processo): Relacionadas a processos de software
Classificação de méticas quanto à dependência
- Métricas diretas (básicas, quantitativas ou primitivas): não dependem da medição de outros atributos
- Custo/esforço do desenvolvimento, linhas de código, velocidade de execução
- Quantidade de memória, número de erros, quantidade de defeitos
- Métricas indiretas (qualitativas ou derivadas): dependem da medição de outros atributos
- Produtividade, qualidade e técnicas (funcionalidade, complexidade, eficiência, confiabilidade, manutenibilidade, modularidade, portabilidade)
- Métricas diretas (básicas, quantitativas ou primitivas): não dependem da medição de outros atributos
Classificação quanto a orientação a tamanho, função ou pessoas
- Métricas Orientadas Tamanho: baseadas no número de linhas de código produzidas, também conhecidas como Lines Of Code (LOC)
- Métricas Orientadas à Função: baseadas na funcionalidade do software, tais como Análise de Pontos de Função
- Métricas orientadas a Pessoas: indicam a forma como pessoas devem desenvolver programas de computador
Classificação quanto à subjetividade
- Métricas Objetivas: independem do autor da medição ou julgamento humano, por exemplo: quantidade de defeitos
- Métricas subjetivas: dependem do autor da medição ou julgamento humano, por exemplo: classificar criticidade de um defeito
Outras métricas diversas
- Métricas de Produtividade: concentram-se na saída do processo de engenharia de software (Ex: KLOC/Pessoa-Mês)
- Métricas de Qualidade: indicam o quanto o software atende aos requisitos definidos pelo usuário
- Métricas técnicas: concentram-se nas características do software (Ex: complexidade, modularidade, manutenibilidade, funcionalidade, etc)
- Métricas para o modelo de Análise: tratam de vários aspectos do modelo de análise incluindo funcionalidade entregue, tamanho do sistema e qualidade da especificação
- Métricas para o modelo de Projeto: quantificam atributos do projeto, de modo que permitam ao engenheiro de software avaliar a qualidade do projeto do software
Métricas de qualidade de software
- Subconjunto das métricas de software que se focam em aspectos de qualidade do produto, processo e projeto
- Subdivisões
- Métricas de qualidade do produto
- Níveis da definição de qualidade de software: qualidade intrínseca do produto e satisfação do cliente
- A qualidade intrínseca do produto é medida pelo número de bugs no software ou tempo que o software pode rodar sem falhar
- Mean Time To Failure (MTTF): tempo médio que um item irá funcionar antes de falhar determinando sua vida útil. Muito utilizada em sistema críticos
- Densidade de defeito: mede a quantidade de defeitos durante um período de tempo pelo tamanho do software. Utilizada em sistemas comerciais
- Mean Time Between Failure (MTBF): tempo médio entre falhas, i.e., tempo entre duas falhas sucessivas no sistema
- Métrica chave para sistemas que podem ser reparados ou restaurados
- Assim, é possível prever quando será a próxima falha do sistema
- É mais utilizado com hardware, mas pode ser também utilizado com software
- Níveis da definição de qualidade de software: qualidade intrínseca do produto e satisfação do cliente
- Métricas de qualidade de processo
- Utilizadas para melhorar o desenvolvimento de software e sua manutenção
- Tornam-se muito importantes em um processo de desenvolvimento, pois medem vários parâmetros nas várias fases do processo
- Um exemplo seria a Efetividade de Remoção de Defeitos
- A utilização desta métrica em todas as fases do processo de desenvolvimento faz com que seja possível medir a efetividade de remoção de defeitos e a injeção de erros
- Com isso se pode rastrear as fases que mais injetam erros na aplicação
- Um exemplo seria a Efetividade de Remoção de Defeitos
- Outras métricas são: Índice de Manutenção de Erros, Cobertura de Testes, obertura de Testes Modulares/Funcionais, etc.
- Métricas de qualidade de projeto
- Mais voltadas às características do projeto e de sua execução, e geralmente são montadas a partir da combinação das métricas de produto e processo
- Número de Desenvolvedores, Ciclo de Vida, Custo, Cronograma, Produtividade, etc
- Métricas de qualidade do produto
Métricas de qualidade de código
- Legibilidade: o código (comentário, não) deve claramente declarar sua intenção
- Testabilidade: o código deve ser organizado de uma forma que facilite o teste de unidade
- Isso apoia todos os esforços subsequentes
- Refatoração, correção de defeitos, revisão devido a alteração de especificações, etc
- Flexibilidade: dependência em relação a outros códigos devem ser minimizadas
- Construir implementações hard-coded (i.e., fixas) sobre tamanhos e estruturas de dados, classes concretas, etc tornam o código difícil de reusar e adaptar
- Compatibilidade: o código deve cumprir com os seus requisitos, funcionais ou não
- Economicidade: o código deve fazer uso razoável dos recursos do sistema: memória, processamento, etc
Informações
- Descrição
- Engenharia de software Mapa Mental sobre Métricas de software, criado por Michel Souza em 14-05-2018.
- Criado por
- Michel Souza
- Visualizações
- 0
- Avaliação
Mais sobre Métricas de software