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