IMPRIMIR VOLTAR
A. Ciências Exatas e da Terra - 2. Ciência da Computação - 4. Engenharia de Software
MÉTRICAS DE COMPLEXIDADE DE SOFTWARE: ESTUDO, COMPARAÇÃO E DESENVOLVIMENTO DE FERRAMENTAS
Paulo Henrique Gerage 1
Plinio Roberto Souza Vilela 1
(1. Faculdade de Ciências Exatas e da Natureza / FACEN - UNIMEP )
INTRODUÇÃO:

Com o crescimento do setor de desenvolvimento de software existe um aumento da demanda por sistemas com qualidade e baixo custo. Concorrentemente com o aumento da demanda aumenta também a complexidade (Pressman, 1995).

Para assegurar a qualidade do software, precisamos de fatores qualitativos que amparem as avaliações realizadas através do teste. A utilização de Métricas colabora para a avaliação quantitativa de qualidade de software.

O Teste de Software é a atividade fundamental para garantir e avaliar a qualidade de software. As Métricas para qualidade de software nos fornecem suporte na tomada de decisão no desenvolvimento, apresentando formas para a avaliação e redução de riscos na construção do software.

Utilizando métricas de complexidade na fase de teste, podemos, dependendo dos elementos requeridos, selecionar casos de teste utilizando como base as informações dadas pela métrica. A partir disso obtemos dados que podem nos auxiliar a priorizar os elementos requeridos a serem testados, realizando os testes primeiramente nos trechos com maior probabilidade de possuir defeitos.

O objetivo é, através do uso e comparação de resultados das métricas, fornecer informações para o melhor desenvolvimento da atividade de teste de software encontrando assim melhores formas de satisfazer os critérios e a atividade de teste com maior qualidade, num tempo menor e, consequentemente, com custos mais baixos. Outro objetivo é criar ferramentas que auxiliem e agilizem os cálculos das métricas.

METODOLOGIA:

Com o intuito de construir uma base sólida para guiar o início do trabalho, a primeira tarefa foi a realização de pesquisa sobre Metodologia Científica e a elaboração de um texto discorrendo acerca das técnicas e tipos de pesquisa e de que forma são utilizadas para auxiliar na ampliação do conhecimento científico.

O próximo passo foi a familiarização com os termos específicos e os conceitos da área de Teste de Software e a procura por experimentos propostos e/ou realizados nessa área. Após analisar alguns experimentos, tivemos a tarefa de propor um para o tema: Menor Cobertura, Mesma Eficácia, que tinha como hipótese: manter a mesma eficácia da atividade de teste mesmo reduzindo-se a cobertura do teste.

Para realizar os experimentos propostos, foi necessária a aprendizagem da ferramenta Poketool que é uma ferramenta criada para suporte à atividade de teste de programas escritos em linguagem C e fornece as informações sobre do fluxo de dados e de controle das aplicações nela testadas.

A etapa final do projeto focou a construção de uma ferramenta que implemente uma técnica de slicing, que é uma técnica que visa eliminar partes do código fonte que são irrelevantes para um dado ponto de observação, ou ponto de interesse, geralmente representado por um conjunto de variáveis do programa. Essa técnica possui várias aplicações importantes e pode ser usada, por exemplo, na depuração e teste de programas, assim como em otimização de código entre outras diversas aplicações (Reps, 1994).

RESULTADOS:

O estudo inicial sobre Metodologia Científica forneceu uma ótima base para elaboração e condução das etapas desenvolvidas na pesquisa. O aprofundamento nos fundamentos do Teste de Software, juntamente com a aprendizagem da ferramenta Poketool, forneceu recursos para a prática dos experimentos comparativos, como por exemplo, o que analisou a complexidade e chance de conter defeitos.

Os experimentos ajudaram a demonstrar a necessidade da construção de uma ferramenta que auxilie no cálculo das métricas, pois o processo se feito manualmente é muito trabalhoso e demorado. Por essa necessidade a construção da ferramenta para automatizar a coleta de dados para realizar calcular das métricas foi proposta.

Um dos principais resultados desse projeto foi um grande aprendizado de como se realizar uma pesquisa científica. O desenvolvimento do projeto forneceu uma ótima base como propor e conduzir um processo de pesquisa. Outro resultado positivo foi o grande embasamento teórico e prático obtido na área de Engenharia de Software, mais especificamente nas áreas de Teste de Software e Qualidade de Software.

Por fim, o desenvolvimento da ferramenta que realiza o isolamento dos trechos de código de programas, a partir da lista dos elementos requeridos serviu como apresentação prática dos resultados obtidos com esse projeto.

CONCLUSÕES:

O estudo sobre qualidade de software, teste, métricas de complexidade e suas aplicações dentro da Engenharia de Software, nos auxiliam a produzir softwares de melhor qualidade. Para uma melhor avaliação das técnicas de Engenharia de Software aplicadas no desenvolvimento e para a melhoria da qualidade de software, a utilização das métricas é muito importante. Na fase de teste podemos utilizar as métricas para fazer uma melhor seleção de dados de teste para garantir a eficiência dos critérios em relação ao custo de aplicação e à eficácia em detectar a presença de defeitos.

Para auxiliar o cálculo de métricas de complexidade na realização de teste estrutural para cada associação de fluxo de dados dos elementos requeridos, é necessária a extração do trecho correspondente. Utilizando uma técnica de slicing podemos extrair o trecho desejado e realizar o cálculo de métricas para cada elemento requerido.

A definição para a criação de uma ferramenta que aplique uma técnica de slicing é extremamente útil, pois a extração do código feita manualmente é algo trabalhoso e complicado, tornando-se impraticável para softwares com muitas linhas de código.

A partir dos dados obtidos com as métricas, podemos fazer melhor a seleção dos dados de teste, realizando de maneira mais eficaz a execução dessa fase da engenharia de software e, conseqüentemente, melhorando a qualidade do software aliado com a redução dos custos correspondentes ao teste de software.

Instituição de fomento: FAPIC - UNIMEP
Trabalho de Iniciação Científica  
Palavras-chave: Métricas de Complexidade; Teste de Software; Engenharia de Software.
Anais da 58ª Reunião Anual da SBPC - Florianópolis, SC - Julho/2006