quarta-feira, 3 de junho de 2020

Medição, Medidas, Métricas e Indicadores

Métricas de software estão se tornando cada vez mais uma parte importante na prática da Engenharia de Software. A cada dia, um número maior de empresas e governos está adotando e reportando métricas de qualidade como parte dos requisitos contratuais de desenvolvimento.

Métricas: medidas para o sucesso
 
Fonte: Kenishirotie/Shutterstock

Padrões, modelos e normas como ISO (International Organization for Standardization), CMMI (Capability Maturity Model Integration), entre outros, consideram as métricas entre as suas práticas recomendadas. Empresas estão usando métricas para melhor compreender, mapear, controlar e predizer projetos, processos e produtos de software.

De acordo com Maitino Neto (2016, p. 148), a medição é o processo pelo qual “os números são atribuídos aos atributos de entidades do mundo real”. O autor exemplifica o conceito dizendo que quando medimos a separação entre dois pontos e obtemos 10, o valor 10 é atribuído à grandeza física denominada distância. Isso indica que a medição é uma quantificação direta, que utiliza um único valor. Mas quando tratamos de métrica, utilizamos uma medição indireta, pois esta envolve o cálculo e uso de mais de uma medida. Como exemplo, podemos utilizar a medida de número de linhas de código e a medida de número de defeitos encontrados no programa para determinar a métrica de quantidade de defeitos por linha de código.

Ainda como exemplos de medição, podemos considerar, no campo da Engenharia, medidas como consumo de energia, peso, dimensões físicas, temperatura voltagem etc.

Maitino Neto (2016) ainda afirma que é desejável que as métricas sejam capazes de fornecer informação relevante para auxiliar a tomada de decisão e ainda contribuir para que se possa realizar comparação de desempenhos.

Embora existam métricas referenciais, usadas de forma padronizada pelos desenvolvedores de software, métricas podem ser baseadas nos objetivos da organização e na sua necessidade de informação para a tomada de decisão.

No contexto da engenharia de software, Pressman e Maxim (2016, p. 654) definem medida como um valor que “fornece uma indicação quantitativa da extensão, quantidade, dimensão, capacidade ou tamanho de algum atributo de um produto ou processo”. Os autores fazem referência ao IEEE Standard Glossary of Software Engineering Terminology que define métrica como uma “medida quantitativa do grau em que um sistema, componente ou processo possui um determinado atributo”.

Ainda de acordo com os autores, quando um único ponto de dados foi coletado (como, por exemplo, o número de erros descoberto em um único componente de software) uma medida foi estabelecida. Medição ocorre como resultado da coleção de um ou mais pontos de dados (por exemplo, um certo número de revisões de componentes e testes de unidade são investigados para coletar medidas do número de erros em cada um). Uma métrica de software relaciona as medidas individuais de algum modo, como, por exemplo, o número médio de erros encontrados por revisão ou número médio de erros encontrados por teste unitário.

Um engenheiro de software coleta medidas e desenvolve métricas de modo que indicadores sejam obtidos. Pressman e Maxim (2016, p. 655) definem um indicador como “uma métrica ou combinação de métricas que fornece profundidade na visão do processo, projeto ou produto de software”. Um indicador fornece um parâmetro que permite ao gerente do projeto ou engenheiros de software ajustarem o processo, projeto ou produto para torná-lo melhor e gerenciável. A figura ilustra esses conceitos.

De acordo com a figura, na Engenharia de Software a medição é útil principalmente quando relacionada ao processo, projeto e produto de software.

Visão geral sobre medidas, métricas e indicadores

Pode ser aplicada ao processo de software com o objetivo de melhorá-lo continuamente. No caso do projeto de software, as medidas podem auxiliar nas estimativas de prazos e custos, no controle de qualidade, na avaliação da produtividade, no controle do projeto e na tomada de decisões, conforme o projeto evolui. As medidas relacionadas ao produto de software focalizam atributos específicos de artefatos e são coletadas à medida que tarefas técnicas (análise, projeto, codificação e teste) são conduzidas.

Meirelles (2008) afirma que uma grande variedade de métricas já foram propostas, mas nem todas mostram resultados satisfatórios. Isso ocorre por vários fatores: algumas exigem medições muito complexas, outras são muito restritas, limitando sua aplicação, e outras violam as noções básicas dos atributos de um software (qualidade, por exemplo).

As métricas de software consideradas efetivas devem possuir alguns atributos que incluem:

  • Simples e computáveis: deve ser relativamente fácil aprender como derivar a métrica e seu cálculo não deve exigir esforço ou tempo exagerado.
  • Empíricas e intuitivamente persuasivas: a métrica deve satisfazer as noções intuitivas do engenheiro de software sobre o atributo do produto que está sendo considerado.
  • Consistentes e objetivas: a métrica deve produzir sempre resultados que não sejam ambíguos.
  • Independentes da linguagem de programação: métricas devem ser baseadas no modelo de análise, modelo de projeto ou na estrutura do programa.
  • Capazes de atuar como mecanismo efetivo para realimentação de alta qualidade: isto é, a métrica deve levar a um produto final da mais alta qualidade.

Enfim, as métricas devem permitir a comparação dos resultados para medir qualidade, eficiência, custo, produtividade, entre outros aspectos mensuráveis da análise, desenho, codificação e testes de software.

Nenhum comentário:

Postar um comentário