GoConqr has a new look! Let us know what you think.

Mind map

Métricas de software

Michel Souza Engenharia de software Portuguese

Mapa mental sobre métricas de software: classificação por objeto, dependência, subjetividade e métricas de qualidade

Mapa mental: Métricas de software

Map content

Métricas de software

  1. Definição

    • Medição que se refere a um software, processo ou documentação
  2. 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
            • 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
            • 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
        • 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
      • Auxiliam a prever características dele, por exemplo: complexidade de um módulo ou a extensão média dos identificadores em um programa
  3. 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)
  4. 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
  5. 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
  6. 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
  7. 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
      • 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
        • 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
  8. 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

Information

Description
Engenharia de software Mind Map on Métricas de software, created by Michel Souza on 14/05/2018.
Created by
Michel Souza
Views
0
Rating

More on Métricas de software

Feedback

What is it about?

What do you think of the new look?

How do you like it?