Page 1

Métricas de Processo e Projeto de Software

Mesmo os mais sofridos desenvolvedores de software vão concordar que software de alta qualidade é uma meta importante. Mas como definimos qualidade? Essa definição serve para enfatizar três pontos importantes no processo de desenvolvimento de software:  Normas especificadas definem um conjunto de critérios de desenvolvimento que guiam o modo pelo qual o software é construído. Se não são seguidos critérios no desenvolvimento de um software (uma MDS), quase sempre vai resultar em falta de qualidade.  Requisitos de software é a fundação a partir da qual a qualidade é medida. Falta de conformidade com os requisitos é falta de qualidade.  Há um conjunto de requisitos implícitos que frequentemente não são mencionados (p.ex. o desejo de facilidade de uso). Se o software satisfaz seus requisitos explícitos, mas deixa de satisfazer os requisitos implícitos, a qualidade do software é suspeita. (Roger Pressman – Engenharia de Software – 5ª edição – capítulo 19 – página 500)

O Teste de Software é um elemento de um aspecto mais amplo que é frequentemente referido como Verificação e Validação. Verificação se refere ao conjunto de atividades que garante que o software implementa corretamente uma função específica. Validação se refere a um conjunto de atividades diferente que garante que o software construído corresponde aos requisitos do cliente, ou seja:

Na Verificação:

“estamos construindo o produto corretamente?”

Na Validação:

“estamos construindo o produto certo?” (Roger Pressman – Engenharia de Software – 5ª edição – capítulo 18 – página 470)

A medição é fundamental para qualquer atividade de engenharia e a engenharia de software não é exceção. A medição nos permite obter entendimento nos dando um mecanismo para avaliação objetiva. Métricas de software referem-se a um amplo campo de medições de software de computador. Medição pode ser aplicada ao processo de software, com o objetivo de melhorá-lo de forma contínua. Pode ser usada ao longo de um projeto de software para auxiliar na estimativa, no controle de qualidade, na avaliação de produtividade e no controle do projeto. (Roger Pressman – Engenharia de Software – 5ª edição – capítulo 04 – página 75)


Um elemento-chave de qualquer processo de engenharia, portanto, é a medição. Usamos medidas para entender melhor os atributos dos modelos que criamos e para avaliar a qualidade dos produtos ou sistemas submetidos à engenharia que nós construímos. Mas diferentemente de outras disciplinas de engenharia, a engenharia de software não está ancorada nas leis quantitativas básicas da física. Medidas absolutas, tais como de massa, voltagem, velocidade ou temperatura são incomuns no mundo de software. Em vez disso, tentamos originar um conjunto de medidas indiretas que levam as métricas que fornecem indicação da qualidade de alguma representação do software. Como medidas de software e métricas não são absolutas, elas estão abertas a debate.

Qualitativo. Quantitativo. Por que é importante?

Sempre vai haver um elemento qualitativo na criação de software de computador. O problema é que a avaliação qualitativa pode não ser suficiente. Um engenheiro de software precisa de critérios objetivos para ajudá-lo a dirigir o projeto dos dados, arquitetura, interfaces e componentes. O testador precisa de diretrizes quantitativas que vão ajudá-lo na seleção de casos de testes e seus alvos. Métricas técnicas fornecem uma base a partir da qual a análise, projeto, codificação e testes podem ser conduzidos mais objetivamente e avaliados mais quantitativamente. (Roger Pressman – Engenharia de Software – 5ª edição – capítulo 19 – páginas 499)

De acordo com Alexandre Bartié, em seu livro Garantia da Qualidade de Software – capítulo 23, podemos criar diversos critérios de classificação de indicadores (medidas), de forma a melhorar, gerenciar todos os aspectos de um projeto de software.

Por exemplo, vamos citar dois grupos de indicadores para medir o processo de desenvolvimento de software: Indicadores de Cobertura e Indicadores de Eficiência dos Testes.

Esses dois indicadores estão diretamente associados à medição do Processo de Garantia da Qualidade do Software, que estabelece o grau de abrangência dos testes aplicados ao software como um todo, bem como o nível de eficiência da detecção de defeitos, medindo o quanto efetivo foi o processo de garantia da qualidade aplicado no projeto.


Indicadores de Cobertura Esses indicadores fornecem o quanto, percentualmente, o produto de software foi adequadamente testado. Essa medida está, na maioria das vezes, relacionada a quantos requisitos de software foram submetidos a testes ou o quanto das linhas de código foram devidamente testadas.

Esses indicadores, portanto, irão indicar o nível de planejamento e execução dos testes na fase dos Testes de Validação, ou seja, se todos os requisitos estão adequadamente documentados, uma estratégia baseada em sua cobertura pode ser suficiente para quantificar o percentual de abrangência dos testes de software. Se aplicarmos os testes baseados no código-fonte, empregaremos t estes que deverão “exercitar” as rotinas de programação e avaliar o número de linhas testadas durante o processo, estabelecendo um percentual de cobertura do códigofonte.

Indicadores de Eficiência dos Testes Aqui, o enfoque é avaliar a eficiência dos testes estáticos (Verificação) e a eficiência dos testes dinâmicos (Validação).

A Eficiência da Verificação é uma forma para medirmos o nível de eficiência dessa etapa, através do volume de erros ocorridos após o processo de verificação. Maior incidência de erros revela falta de qualidade das revisões.

A Eficiência da Validação mostra que muitos erros em produção indicam que as atividades de validação não estão sendo bem planejadas. (Alexandre Bartié – Garantia da Qualidade de Software – capítulo 23)

Se você não faz medições, o julgamento pode ser baseado somente em avaliação subjetiva. Com medições, as tendências (boas ou más) podem ser detectadas, melhores estimativas podem ser feitas e aperfeiçoamentos reais podem ser conseguidos ao longo do tempo.

Comece definindo um conjunto limitado de medições de processo, projeto e produto, que são fáceis de coletar. Essas medições são freqüentemente normalizadas, usando métricas orientadas a tamanho ou a função. O resultado é analisado e comparado com medias anteriormente obtidas para projetos semelhantes desenvolvidos dentro dar organização. Tendências são avaliadas e conclusões são geradas. (Roger Pressman – Engenharia de Software – 5ª edição – capítulo 04 – página 75)

Metricas  

sobre métricas de processo e projeto de software