• Nenhum resultado encontrado

3. MÉTRICAS DE SOFTWARE

3.1 P ROPRIEDADES D ESEJÁVEIS

Muitos autores têm proposto propriedades desejáveis de métricas de software [9, 12, 20, 23]. Uma métrica deve ser objetiva, ou seja, o valor resultante de seu cálculo deve indicar claramente a situação da característica que ela pretende representar. Ela deve ser intuitiva e possuir alguma forma de ser validada. Além disso, uma métrica deve ser robusta e confiável, visando fornecer um feedback ao usuário da métrica. A métrica deve fornecer informação, através de análise estatística que permita ao usuário obter um melhor entendimento do projeto e de como ele pode ser melhorado.

Brito e Abreu em [9] sugerem que os seguintes critérios devem ser considerados na adoção de um conjunto de métricas:

1. Métricas devem ser bem definidas.

2. Métricas devem ser dimensionáveis ou expressas em alguma unidade.

3. Métricas devem ser obtidas o mais cedo possível no ciclo de vida do sistema.

4. Métricas devem ser facilmente calculadas.

5. Métricas devem estar em uma escala que aumente sua precisão.

6. Métricas devem ser vistas como probabilidades de forma a permitir a aplicação de teorias estatísticas sobre as mesmas.

Já Gilb [20] observa que medidas de um processo de desenvolvimento de software devem possuir as seguintes características:

1. As métricas devem ser robustas, ou seja, devem ser precisas e relativamente insensíveis a pequenas mudanças em ferramentas, métodos ou características do produto.

2. As métricas devem sugerir uma norma, indicando os valores ótimos e os valores a serem evitados.

Inspector – Um Processo de Avaliação de Progresso para Projetos de Software 31

3. As métricas devem relacionar propriedades do produto ou processo, ou seja, devem relacionar o número de erros ao tamanho, aos recursos gastos, etc.

4. As métricas devem sugerir uma estratégia de melhoria.

5. As métricas devem ser resultados naturais de um processo, ou seja, as atividades necessárias para coleta e avaliação das métricas não devem prejudicar o desenvolvimento do produto.

6. As métricas devem ser simples.

7. As métricas devem ser intuitivas e rastreáveis.

Portanto, resumindo, para que uma métrica seja realmente útil e de qualidade, ela deve ser válida, confiável e prática [23]. Diz-se que uma métrica é válida se ela quantifica o que nós queremos medir. Ela é confiável se a aplicação correta do seu algoritmo produz o mesmo resultado dadas as mesmas condições. Além disso, uma métrica é prática quando é barata, fácil de computar e fácil de interpretar. As subseções a seguir descrevem mais detalhadamente cada uma destas propriedades.

3.1.1 Validade

Existem diferentes tipos de validade identificadas na literatura, classificados em três categorias: superficial, interna e externa [23].

Validade superficial não comprova a validade de uma métrica, pois apenas indica que a métrica é intuitivamente válida. Tal validade é útil somente sob uma perspectiva prática. Se uma métrica não possui tal validade, ela dificilmente se aplica corretamente ao projeto. A grande maioria das métricas conhecidas e utilizadas apresentam validade superficial. Por exemplo, a métrica número de classes indica intuitivamente o tamanho do sistema, pois sistemas que possuem mais classes que outros são considerados, intuitivamente, maiores.

Validade interna lida com quão bem uma métrica captura diferenças reais nos valores de um atributo da entidade a ser medida. Por exemplo, usando a métrica número de linhas de código para comparar o tamanho de um programa em C com outro, se o número de vírgulas de um programa é maior que no outro, então ele possui tamanho Inspector – Um Processo de Avaliação de Progresso para Projetos de Software 32

maior que o outro. Esta métrica possui validade interna se ela realmente capturar o significado de tamanho. Validade interna pode ser verificada através de experimentos cuidadosamente construídos.

A forma geral de se identificar a validade interna de uma métrica é observar a validade de: conteúdo, critérios relacionados e construção [23]. Validade de conteúdo verifica se a cobertura da métrica sobre o atributo a ser mensurado é boa. Validade dos critérios relacionados verifica se a métrica prediz a ocorrência de um evento futuro ou estima a condição corrente. Validade de construção lida com a identificação dos atributos da entidade, as diferentes métricas dos atributos e as teorias nas quais os atributos foram baseados.

Validade externa endereça a generalidade da métrica. Primeiro verifica se a métrica pode ser generalizada além das entidades que estão sendo medidas atualmente, e em seguida verifica se a métrica pode ser generalizada para ambientes diferentes do que está sendo atualmente usado [23].

3.1.2 Confiabilidade

É uma propriedade necessária à métrica, mas não suficiente. Ela endereça se uma métrica produz ou não resultados consistentes. Basicamente consiste em verificar duas propriedades: estabilidade e equivalência.

Estabilidade lida com a idéia que a métrica deve produzir os mesmos resultados dada uma mesma entidade em um mesmo ambiente. Dependendo do tipo de métrica a ser testada, dois problemas geralmente acontecem. Primeiro, as pessoas podem aprender como a métrica é calculada e modificar a entidade somente para produzir os resultados desejados, sem se preocupar com o processo de desenvolvimento estabelecido. Além disso, o processo de medição utilizado pode alterar o resultado da entidade que está sendo medida, causando efeitos colaterais não desejados.

A propriedade de equivalência verifica o impacto de diferentes amostras ou investigadores na métrica. Por exemplo, é possível verificar se dois programas escritos em uma mesma linguagem são equivalentes em tamanho, se os dois programas Inspector – Um Processo de Avaliação de Progresso para Projetos de Software 33

apresentam os mesmos valores para a métrica de tamanho utilizada (linha de código, número de vírgulas, etc.).

3.1.3 Praticidade

De acordo com Card e Glass [12], uma métrica é prática quando ela é econômica para se coletar, é fácil de se entender e bastante informativa. Além disso, as informações que ela resulta devem ser geradas periodicamente para que o feedback que ela fornece seja útil.

Métricas para serem realmente úteis devem fazer parte de uma estratégia completa de melhoria no processo de desenvolvimento de software. Além disso, elas devem ser passíveis de serem automatizadas para que os dados relevantes para o cálculo da métrica possam ser mais rapidamente e facilmente coletados e processados [21]. É importante também que a métrica seja independente de linguagem, para que ela possa ser bem aplicada o quanto antes no processo de desenvolvimento de software. A métrica que indica o número de linhas de código, por exemplo, apesar de ser fácil de coletar e avaliar, não pode ser aplicada desde o início do projeto de desenvolvimento, pois é dependente da linguagem de programação, tendo utilidade somente a partir da implementação, o que representa uma falha na propriedade de praticidade.