Trabalho Redes Neurais

13
133 Anuário da Produção Científica dos Cursos de Pós-Graduação Vol. IV, Nº. 4, Ano 2009 Adriana Rocha Faculdade Anhanguera de Anápolis [email protected] Anibal Jukemura Faculdade Anhanguera de Anápolis [email protected] REDES NEURAIS: UM ESTUDO PRÁTICO EM TESTES DE SOFTWARE RESUMO O desenvolvimento de sistemas de software envolve uma série de atividades de produção em que as oportunidades para injetar a falibilidade humana são enormes. Nesse contexto, teste de software é um elemento crítico da garantia de software e representa a revisão final da especificação, projeto e geração de código. Assim, a crescente visibilidade do software como um elemento do sistema e os “custos” de atendimento associados a uma falha são forças motivadoras para o teste rigoroso e bem planejado (PRESSMAN, 2002). Considerando que essa atividade demanda grande esforço, esse artigo objetiva abordar um método de delimitação do escopo de testes, expondo ao testador qual o grau de cobertura de dados de testes, ou seja, se um determinado dado de teste é viável. Para a implementação dessa solução, utilizou-se o conceito de Redes Neurais Artificiais. Palavras-Chave: teste de software; redes neurais artificiais. ABSTRACT The development of software systems involves a series of activities of production in which the opportunities to inject the human fallibility are enormous. In this context, testing software is a critical element of security software and is the final revision of the specification, design and generation of code. Thus, the increasing visibility of software as a component of the system and the “cost”; of care associated with a failure are motivating forces for the rigorous testing and well planned (PRESSMAN, 2002). Whereas this activity demands great effort, this article aims to address a method of delimiting the scope of testing, the tester out what level of coverage data from testing, or whether a given test is feasible. The concept of Artificial Neural Networks was used to implement this solution. Keywords: software testing; artificial neural networks. Anhanguera Educacional Ltda. Correspondência/Contato Alameda Maria Tereza, 2000 Valinhos, São Paulo CEP 13.278-181 [email protected] Coordenação Instituto de Pesquisas Aplicadas e Desenvolvimento Educacional - IPADE Informe Técnico Recebido em: 4/3/2010 Avaliado em: 20/5/2011 Publicação: 25 de agosto de 2011

Transcript of Trabalho Redes Neurais

Page 1: Trabalho Redes Neurais

133

Anuário da Produção Científica dos Cursos de Pós-Graduação Vol. IV, Nº. 4, Ano 2009

Adriana Rocha Faculdade Anhanguera de Anápolis [email protected]

Anibal Jukemura Faculdade Anhanguera de Anápolis [email protected]

REDES NEURAIS: UM ESTUDO PRÁTICO EM TESTES DE SOFTWARE

RESUMO

O desenvolvimento de sistemas de software envolve uma série de atividades de produção em que as oportunidades para injetar a falibilidade humana são enormes. Nesse contexto, teste de software é um elemento crítico da garantia de software e representa a revisão final da especificação, projeto e geração de código. Assim, a crescente visibilidade do software como um elemento do sistema e os “custos” de atendimento associados a uma falha são forças motivadoras para o teste rigoroso e bem planejado (PRESSMAN, 2002). Considerando que essa atividade demanda grande esforço, esse artigo objetiva abordar um método de delimitação do escopo de testes, expondo ao testador qual o grau de cobertura de dados de testes, ou seja, se um determinado dado de teste é viável. Para a implementação dessa solução, utilizou-se o conceito de Redes Neurais Artificiais.

Palavras-Chave: teste de software; redes neurais artificiais.

ABSTRACT

The development of software systems involves a series of activities of production in which the opportunities to inject the human fallibility are enormous. In this context, testing software is a critical element of security software and is the final revision of the specification, design and generation of code. Thus, the increasing visibility of software as a component of the system and the “cost”; of care associated with a failure are motivating forces for the rigorous testing and well planned (PRESSMAN, 2002). Whereas this activity demands great effort, this article aims to address a method of delimiting the scope of testing, the tester out what level of coverage data from testing, or whether a given test is feasible. The concept of Artificial Neural Networks was used to implement this solution.

Keywords: software testing; artificial neural networks.

Anhanguera Educacional Ltda. Correspondência/Contato

Alameda Maria Tereza, 2000 Valinhos, São Paulo CEP 13.278-181 [email protected]

Coordenação Instituto de Pesquisas Aplicadas e Desenvolvimento Educacional - IPADE

Informe Técnico Recebido em: 4/3/2010 Avaliado em: 20/5/2011

Publicação: 25 de agosto de 2011

Page 2: Trabalho Redes Neurais

134 Redes neurais: um estudo prático em testes de software

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

1. INTRODUÇÃO

A construção de um software envolve um processo composto de atividades e métodos.

Porém, mesmo seguindo tais atividades e utilizando os métodos propostos, um produto

infiel aos requisitos funcionais e não-funcionais pode ser gerado, não correspondendo às

funções esperadas. Nesse sentido, a atividade de teste visa assegurar que o produto

correto esteja sendo construído e também que a sua construção esteja adequada. Por ser

uma atividade considerada onerosa, pesquisas são realizadas objetivando reduzir os

custos da aplicação dos testes. Este trabalho se enquadra nesse contexto, utilizando uma

técnica de Inteligência Artificial – as Redes Neurais Artificiais, a fim de focar a fase de

testes em dados que sejam realmente necessários e possuam um maior nível de cobertura

do código. Ou seja, o testador terá informações sobre quais dados são realmente

relevantes para cobrir uma maior parte do código; assim, testes desnecessários ou

repetidos serão eliminados, diminuindo o custo dessa fase.

Sucintamente, Redes Neurais são sistemas não-lineares que imitam o mecanismo

de processamento do cérebro humano. Essa técnica se aplica basicamente a problemas em

que existem dados, experimentais ou gerados por meio de modelos, por meio dos quais a

rede adaptará os seus pesos, visando à execução de uma determinada tarefa. Nesse

contexto, dados de testes e seus respectivos graus de cobertura foram obtidos através da

ferramenta Cobertura (DOLINER, 2009), de modo que a Rede Neural recebeu esses dados

nas fases de treinamento e testes.

Assim, este trabalho foi desenvolvido como um estudo de caso, sendo o seu

objeto o programa Cal – desenvolvido em JAVA – que possui a funcionalidade de

apresentar um determinado calendário conforme parâmetros (mês ou ano) informados

pelo usuário.

Desse modo, a Seção 2 concentra considerações relevantes referentes a testes de

software, enquanto que, na Seção 4, serão explanados conceitos primordiais de Redes

neurais artificiais. No decorrer do artigo, será descrito o experimento realizado.

2. TESTE DE SOFTWARE

O teste de software é uma importante fase do seu ciclo de desenvolvimento, e as duas

técnicas mais comumente utilizadas nesse processo são o Teste Caixa Preta e o Teste Caixa

Branca (WILEY, 2004), que podem ser definidos da seguinte maneira:

• Testes funcionais: Também conhecidos como técnica caixa preta, pois se preocupam com a função que o programa desempenha, considerando

Page 3: Trabalho Redes Neurais

Adriana Rocha, Anibal Jukemura 135

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

irrelevante a maneira como foi implementada. Esta técnica propõe examinar as características do domínio de entrada na tentativa de descobrir formas de derivar, que podem ser classificadas em três classes: de fronteira, não de fronteira e especiais.

• Testes estruturais: São os testes conhecidos como caixa branca e, diferentemente da primeira técnica, enfocam a implementação e a estrutura interna do programa. Seu objetivo é descobrir dados que garantam cobertura suficiente de todas as estruturas presentes no código do produto em teste.

Independentemente da técnica ou critério utilizado, os principais produtos

derivados da atividade de testes são os casos de testes. Um caso de teste consiste em um

par ordenado formado por um dado de teste (valor pertencente ao domínio de entrada do

produto em avaliação) e a respectiva saída esperada (resultado que o produto deveria

gerar, de acordo com a especificação, para o dado de teste utilizado). Porém, executar o

teste caixa branca se torna inviável em projetos que envolvam grandes sistemas, pois,

além de demandar muito tempo, há uma grande dificuldade em encontrar falhas. Assim,

o teste caixa preta é fundamental para garantir a qualidade e a confiabilidade do software

(RUILIAN; SHANSHAN, 2007). A questão-chave dos testes caixa preta é como selecionar

casos adequados com base na especificação do software, a fim de detectar o maior número

de falhas possível a um custo mínimo.

Desse modo, o trabalho proposto objetiva expor ao testador o grau de cobertura

de um determinado dado de teste. Ou seja, o tempo despendido na fase de testes seria

reduzido, pois seria de conhecimento do responsável quais dados de testes cobririam

maior parte do código, além de evitar a repetição de dados.

Para elaborar uma técnica que fornecesse ao testador o grau de cobertura de cada

dado de testes, foi analisado um ramo da Inteligência Artificial – Redes Neurais

Artificiais. Na Seção 4, serão denotados conceitos básicos das Redes Neurais Artificiais.

3. FONTE DE DADOS: FERRAMENTA COBERTURA

Cobertura é um software Java de código aberto que calcula a taxa de código coberto por

meio da execução de testes. Ela pode ser usada para identificar para quais partes de um

determinado programa Java não existe cobertura (DOLINER, 2009).

Segundo Doliner (2009), o Cobertura pode ser executado através de linha de

comando por meio da instrumentação do Java bytecode, depois de ser compilado. A

instrumentação cria um arquivo Cal.class, que consiste em uma preparação do bytecode do

programa Cal para a execução dos testes. Além disso, a instrumentação cria também um

Page 4: Trabalho Redes Neurais

136 Redes neurais: um estudo prático em testes de software

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

arquivo de metadados (chamado de Coverage.ser), que armazena as informações dos

testes executados.

Ainda segundo o autor, após essa instrumentação, é possível executar um

conjunto de dados de teste de forma automática e gerar um relatório em HTML ou XML a

partir da leitura do arquivo de metadados. No desenvolvimento deste trabalho, optou-se

pela geração do relatório em XML, pois, assim, seria possível a recuperação dessa

informação, para a produção de trabalhos futuros.

4. REDES NEURAIS ARTIFICIAIS (RNAS)

Conforme definido por Braga (2007), Redes Neurais Artificiais (RNAs) são sistemas

paralelos distribuídos compostos por unidades de processamento simples (neurônios

artificiais), que calculam determinadas funções matemáticas.

Redes neurais são um paradigma que difere de todos os outros modelos

computacionais, pois não faz uso dos conceitos que até então caracterizavam os demais

algoritmos e sistemas computacionais. Por exemplo, uma rede neural pode ser

integralmente implementada em hardware.

Assim, podemos definir RNAs como modelos computacionais que, através de

um conjunto de elementos de processamento (neurônios), conectados e processando em

paralelo, são capazes de:

• Gerar seu próprio conhecimento: aprendizado;

• Reconhecer e classificar padrões: percepção;

• Generalizar o conhecimento adquirido: conhecimento.

Nesse contexto, as principais tarefas nas quais podem ser aplicadas as RNAs são:

classificação, categorização, aproximação e previsão, que podem ser definidas da seguinte

maneira:

• Classificação: dentro dessa visão, envolve a atribuição de uma entre várias classes conhecidas a um padrão desconhecido. Problemas de classificação utilizam RNAs com aprendizado supervisionado. Algumas aplicações: reconhecimento de caracteres, reconhecimento de imagens, diagnósticos, análise de risco de crédito, detecção de fraudes, detecção de falhas em sistemas industriais (BRAGA, 2007).

• Categorização: envolve a descoberta de categorias nos dados de entrada. Nesse caso, inicialmente, as classes não são conhecidas. A resolução desse tipo de problema envolve aprendizado não-supervisionado. Algumas aplicações: agrupamento de sequências de DNA, mineração de dados, análise de expressão gênica, agrupamentos de clientes (BRAGA, 2007).

• Aproximação: envolve apresentação de padrões às entradas e saídas da

Page 5: Trabalho Redes Neurais

Adriana Rocha, Anibal Jukemura 137

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

rede, e a cada apresentação, os pesos são adaptados de forma a mapear as relações de entrada e saída. Caracterizada por aprendizado não-supervisionado.

• Previsão: envolve estimativa de situações futuras com base nos estados atuais e anteriores do sistema a ser modelado. Caracterizada pelo aprendizado supervisionado em que estados passados, atuais e futuros são apresentados às entradas e saídas da rede durante o treinamento. Assim, a rede deverá aprender a estimar situações futuras com base nos estados atual e anterior do sistema. Algumas aplicações: previsão de tempo, previsão financeira, modelagem de sistemas dinâmicos, previsão de sequência de DNA.

4.1. Neurônios artificiais

Em 1943, o primeiro modelo de neurônio artificial foi proposto por McCulloch e Pitts.

Esse modelo consistia em uma simplificação do que se sabia na época a respeito do

neurônio biológico e era composto pelos seguintes elementos: um conjunto de valores de

entrada (dendritos), um conjunto de pesos (comportamento das sinapses), função de

ativação e uma saída (axônio). Na Figura1, estão representados esses elementos, que

podem ser mais bem definidos da seguinte maneira:

• Os Valores de Entrada Xi: ativações dos neurônios anteriores.

• O conjunto de pesos Wki: cada entrada de um neurônio terá uma influência relativa sobre a ativação de cada neurônio, determinada pelo peso Wki. Esses pesos são os elementos que possuem o conhecimento da rede, pois podem ser adaptados durante o processo de treinamento da rede.

• A Função de Ativação: utilizado para calcular o valor de ativação de cada neurônio em função dos seus pesos e dados de entrada. No modelo de McCulloch, foi considerado que os neurônios em cada camada de rede disparam sincronicamente, simplificando, assim, a abordagem do neurônio biológico.

• A Saída Yk: resultado fornecido pela RNA.

Figura 1. Exemplo de um neurônio artificial.

Page 6: Trabalho Redes Neurais

138 Redes neurais: um estudo prático em testes de software

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

4.2. Funções de ativação

Como definido anteriormente, a função de ativação representa o somatório dos estímulos

recebidos pelo neurônio, ponderados pelos respectivos pesos.

Nesse contexto, o estado de ativação (net) pode ser definido conforme a Equação (1):

Rxiiwwixinetm

i∈=∑ ,/

(1)

Em relação às funções de ativação, são inúmeras as opções existentes: onda

quadrada binária, linear, degrau bipolar e do tipo rampa (BRAGA, 2007). Assim, por

exemplo, a função de ativação do tipo degrau ou onda quadrada binária representada na

Figura 2 e na Equação (2) foi utilizada na definição do neurônio de McCulloch e Pitts.

⎭⎬⎫

⎩⎨⎧

→≤→>

=00.10

netnet

Y (1)

Figura 2. Função de ativação do tipo onda quadrada binária (degrau).

4.3. Arquitetura de Redes Neurais Artificiais

Independentemente da função de ativação escolhida, neurônios individuais possuem

capacidade computacional limitada, porém, um conjunto de neurônios artificiais

conectados na forma de uma rede é capaz de resolver problemas de complexidade

elevada.

Segundo Barone (2003), uma RNA pode ser analisada como um grafo, no qual o

conjunto de nós é denominado elemento de processamento. E cada arco pode representar:

• A entrada de um sinal em um dos elementos de processamento a partir do meio externo;

• A comunicação de um sinal entre dois elementos de processamento;

• A saída de um sinal de um elemento de processamento para o meio externo.

A arquitetura de uma rede neural pode ser classificada quanto ao número de

camadas, tipo de conexão, tipo de conectividade. Quanto ao número de camadas, pode

Page 7: Trabalho Redes Neurais

Adriana Rocha, Anibal Jukemura 139

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

ser classificada como camada única ou múltiplas camadas. Quanto à conectividade, pode

ser classificada como completamente conectada ou parcialmente conectada e, quanto ao

tipo de conexão, como feedforward (acíclica) ou feedback (cíclica).

Na Figura 3, está representado um tipo de arquitetura: note que a rede possui

várias camadas de nós, não há ligação de todos eles entre as camadas subsequentes, e não

há ciclo. Assim, tem-se uma Rede Neural do tipo múltiplas camadas, parcialmente

conectada e feedfoward.

Figura 3. Rede Neural de arquitetura de múltiplas camadas, parcialmente conectada e feedforward.

Juntamente com a arquitetura, um dos principais conceitos das RNAs é o

aprendizado. Na próxima Seção, são apresentadas considerações relevantes sobre esse

assunto.

4.4. Aprendizado

Uma das características mais importantes das RNAs é a sua capacidade de aprender por

meio de exemplos. Diferentemente da abordagem utilizada na Inteligência artificial, em

Redes Neurais, o conhecimento não é adquirido através de regras explícitas, mas através

do ajuste das intensidades das conexões entre os neurônios (BRAGA, 2007). Podem ser

citados como tipos de aprendizado:

• Aprendizado supervisionado: implica a existência de um supervisor, ou professor externo, o qual é responsável por estimular as entradas da rede por meio de padrões de entrada e observar a saída calculada, comparando-a com a saída desejada. O exemplo mais típico de aprendizado supervisionado é o aprendizado por correção de erros, em que se procura minimizar o erro da resposta atual da rede em relação à saída desejada.

• Aprendizado por reforço: Muitas vezes considerado na literatura uma

Page 8: Trabalho Redes Neurais

140 Redes neurais: um estudo prático em testes de software

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

forma particular de aprendizado supervisionado. Assim, enquanto neste o supervisor externo fornece informações para a atualização dos pesos baseado em um critério de desempenho como o erro, no aprendizado por reforço, o supervisor externo procura maximizar o reforço das ações boas executadas pela rede. O aprendizado por reforço se caracteriza como um processo de tentativa e erro que visa maximizar o índice de desempenho escalar (sinal de reforço).

• Aprendizado não-supervisionado: somente os padrões de entrada estão disponíveis para a rede, ao contrário do aprendizado supervisionado, cujo conjunto de treinamento possui pares de entrada e saída. Durante o processo, os padrões de entrada são apresentados continuamente à rede, e a existência de regularidades possibilita assim, o aprendizado.

4.5. Modelos de Redes Neurais Artificiais

Nesta Seção, serão apresentados alguns modelos de RNAs.

Perceptron Considerada a primeira versão de RNAs aplicadas com o conceito de aprendizado, o

Perceptron foi o modelo proposto por Rosenblatt em 1958 [2]. É composto por uma

estrutura de rede, tendo como unidades básicas neurônios de McCulloch e Pitts e uma

regra de aprendizado.

Adaline O modelo Adaline (ADAptive LINEar) surgiu quase que simultaneamente com o

Perceptron, ao final da década de 1950. Ambos os modelos são baseados em elementos de

processamento que executam operações sobre a soma ponderada de suas entradas. Essas

operações podem ser não-lineares, do tipo degrau para o Perceptron, ou puramente

lineares para o Adaline.

Assim, o Adaline pode ser visto como um Perceptron com algoritmo de

treinamento baseado em minimização de erros.

Sistemas auto-organizáveis Sistemas auto-organizáveis estão relacionados com aprendizagem não-supervisionada. O

objetivo de um algoritmo de aprendizado auto-organizável é extrair características

significativas dos dados de entrada, sem supervisão. Esse tipo de aprendizado baseia-se

no princípio de que interações locais podem causar organização global. A organização da

rede se dá em dois níveis distintos, que interagem na forma de um laço realimentado

(BARONE, 2003):

• Atividade: certos padrões de atividade são produzidos por uma determinada rede em resposta a sinais de entrada;

Page 9: Trabalho Redes Neurais

Adriana Rocha, Anibal Jukemura 141

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

• Conectividade: os pesos sinápticos são produzidos por uma determinada rede em resposta a sinais neuronais nos padrões de atividades.

Memórias associativas A memória pode ser definida como alterações neurais induzidas pela interação de um

organismo com o seu ambiente. A memória associativa mapeia um padrão de saída sobre

um padrão de entrada de atividade neural. Assim, durante o processo de aprendizado,

padrões-chave são apresentados como estímulos, e a memória os transforma em padrões

armazenados (memorizados).

Redes Neurais sem peso A principal diferença entre as RNAs convencionais e as Redes Neurais Sem Peso (RNSPs)

é a forma de armazenar a informação. No modelo com pesos, a informação fica

armazenada nos pesos das ligações entre os diversos neurônios da rede, enquanto que nas

RNSPs a informação fica armazenada na memória dos dispositivos, em tabelas-verdade.

Em vez de ajuste de pesos, o aprendizado em uma RNSP geralmente consiste em

modificar o conteúdo das memórias das tabelas-verdade, o que resulta em algoritmos de

aprendizado rápidos e flexíveis.

Nas Seções anteriores, foram abordadas as principais características e definições

das RNAs. Assim, na próxima Seção, serão apresentadas algumas técnicas para sua

implementação.

4.6. Como implementar Redes Neurais Artificiais

Para construir a rede neural, foram avaliados diversos aplicativos, dentre eles: Matlab

(1994), Joone (2004), Weka (2009). O JOONE (Java Object Oriented Neural Engine) é um

framework que tem o objetivo de criar, treinar e testar RNAs. É uma ferramenta livre,

desenvolvida em Java, que proporciona ao usuário a transparência necessária para a

elaboração de aplicações que tenham como base a Inteligência Artificial. O MATLAB

(MATrix LABoratory) é um software interativo de alta performance voltado para o cálculo

numérico, assim, destina-se a cálculos com matrizes. E o Weka (Waikato Environment for

Knowledge Analysis) tem como objetivo agregar algoritmos provenientes de diferentes

abordagens na subárea da Inteligência Artificial dedicada ao estudo da aprendizagem por

parte de máquinas. Essa subárea pretende desenvolver algoritmos e técnicas que

permitam a um computador “aprender”.

Na Seção 5, será discutido como foi implementada a rede neural para prover o

grau de cobertura de dados de testes específicos.

Page 10: Trabalho Redes Neurais

142 Redes neurais: um estudo prático em testes de software

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

5. REDES NEURAIS: APLICAÇÃO PRÁTICA

Delimitando o problema, consideraram-se como escopo os requisitos funcionais do

aplicativo Cal (STEWART, CRAIG). Sucintamente, esse programa recebe dados de

entrada e gera um calendário concernente ao respectivo dado. Assim, Cal recebe os dados

de entrada de três formas:

• Sem parâmetros – gera o calendário do mês e ano atuais;

• Com apenas um parâmetro – gera o calendário do respectivo ano passado como entrada;

• Com dois parâmetros – gera o calendário do mês e ano recebidos como entrada.

Assim, através da ferramenta Cobertura (DOLINER, 2009), foram analisados

vários tipos de dados de entrada e seus respectivos graus de cobertura. O conjunto dessas

informações foi utilizado para a criação da rede neural em questão. Desse modo, os dados

obtidos estão representados na Tabela 1.

Tabela 1. Cobertura dos dados de entrada gerados pela ferramenta Cobertura (DOLINER, 2009).

Dados de entrada Grau de cobertura

Cal (Sem parâmetros) 0.5631067961165048

Cal (Ano correto) 0.7766990291262136

Cal (Ano incorreto) 0.7961165048543689

Cal (Mês e ano corretos) 0.8737864077669902

Cal (Mês incorreto e ano correto) 0.8932038834951457

Cal (Mês e ano incorretos) 0.8932038834951457

Cal 1752 (Ano especial) 0.9320388349514563

Para a criação da rede neural, essas informações foram codificadas da seguinte

forma:

• Quando o dado não está presente – as variáveis recebem o valor 2.

• Quando o dado está presente e incorreto – a variável recebe o valor 0.

• Quando o dado está presente e correto – a variável recebe o valor 1.

• Quando o dado é o ano especial – ano que o papa retirou 10 dias do mês de setembro (1752) – a variável recebe o valor 3.

Dessa forma, a Tabela 1 foi representada da forma definida na Tabela 2.

Page 11: Trabalho Redes Neurais

Adriana Rocha, Anibal Jukemura 143

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

Tabela 2. Dados codificados para a rede neural.

Ano Mês Grau de cobertura

2 2 0.5631067961165048

1 2 0.7766990291262136

0 2 0.7961165048543689

1 1 0.8737864077669902

1 0 0.8932038834951457

0 0 0.8932038834951457

3 2 0.9320388349514563

Diversos testes foram realizados nessas aplicações, porém, por questões de

praticidade, utilizou-se a ferramenta MATLAB. Essa ferramenta possui um toolbox

específico para redes neurais, não sendo, portanto, necessária a implementação dos

neurônios ou da rede, pois esta é construída apenas com o fornecimento dos dados.

Assim, foi possível executar inúmeros testes com diversos tipos de redes, com um número

variado de camadas de neurônios e com diversas funções de ativação. Na Figura 4, está

representada a rede feedforward backpropagation com múltiplas camadas gerada no

MATLAB. Uma peculiaridade do MATLAB é que, independentemente do número de

camadas de neurônios utilizadas para construir uma rede, são apresentadas somente duas

camadas. Por exemplo, na representação da Figura 4, a rede possuía dez camadas de

neurônios, mas somente duas foram apresentadas. Essa ferramenta também permite que

seja realizado o treinamento, a simulação, a adaptação da rede e a reinicialização e edição

dos pesos da rede, o que favorece que um número maior de possibilidades seja testado.

Figura 4. Rede Neural do tipo feedforward backpropagation gerada no MATLAB.

Assim, a rede que melhor se adaptou à solução do problema foi a do tipo

feedforward backpropagation, com quatro camadas de neurônios e com dez neurônios em

cada uma. O resultado obtido após diversas iterações de treinamento foi satisfatório, com

uma margem de erro de 34.0619%.

Page 12: Trabalho Redes Neurais

144 Redes neurais: um estudo prático em testes de software

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

6. CONSIDERAÇÕES FINAIS

Conforme explanado no decorrer do artigo, o teste é de suma importância no ciclo de

desenvolvimento de um software. Atualmente, diversas técnicas são utilizadas para apoiar

essa atividade, por exemplo, os testes caixa preta e caixa branca. No escopo deste

trabalho, focaram-se os testes caixa preta, objetivando delimitar o escopo dos dados de

testes, agregando à atividade informações importantes – quanto cada dado de teste cobria

do código. Nesse contexto, a Rede Neural foi a técnica implementada para conduzir essa

análise.

Para o estudo de caso, os resultados obtidos foram satisfatórios, porém, para

outros tipos de softwares (softwares críticos, por exemplo), a divergência obtida com o

resultado esperado é inaceitável. Assim, como forma de evolução deste trabalho, é

necessário um maior estudo na forma de representação dos dados de entrada, bem como

no tipo de rede a ser escolhido.

Outro ponto de evolução é a integração da rede neural do MATLAB com uma

interface. Durante a execução deste trabalho, foi avaliada a integração com uma interface

em Java ou com uma possível interface gerada pelo MATLAB, porém, atualmente, são

questões pouco difundidas, mas que, talvez num futuro próximo, sejam de fácil solução.

REFERÊNCIAS

BARONE, D. Sociedades Artificiais: a nova fronteira da inteligência nas máquinas. Porto Alegre: Bookman, 2003.

BRAGA, A.P.; LUDERMIR, T.B.; PONCE, A.L.F.C. Redes neurais artificiais: teoria e aplicações. Rio de Janeiro: LTC, 2007.

DOLINER, M. What is Cobertura? Disponível em: <http://cobertura.sourceforge.net/index. html>. Acesso em: abr. 2009.

MARRONE, P.J. Java Object Oriented Neural Engine. Disponível em <http://www.jooneworld.com/>. Acesso em: 24 abr. 2009.

MATHWORKS. Disponível em: <http://www.mathworks.com/>. Acesso em: 24 abr. 2009.

MYERS, G.J. The art of software testing. [S.l.]: John Wiley & Sons inc., 2004.

PRESSMAN, R.S. Engenharia de software. Rio de Janeiro: McGraw-Hill, 2002.

RUILIAN, Z.; SHANSHAN, L. Neural-network test cases generation using genetic algorithm. In: 13th IEEE Internacional Symposium on Pacific Rim Dependable Computing. 2007.

STEWART, C. The Cal. Disponível em: <http://www.indiana.edu/~statmath/support/byos/unix/gettingstarted/5.html>. Acesso em: 24 abr. 2009.

WEKA. The Weka Softwares. Disponível em: <http://www.cs.waikato.ac.nz/ml/weka/>. Acesso em: 24 abr. 2009.

Page 13: Trabalho Redes Neurais

Adriana Rocha, Anibal Jukemura 145

Anuário da Produção Científica dos Cursos de Pós-Graduação • Vol. IV, Nº. 4, Ano 2009 • p. 133-145

Adriana Rocha

Bacharel em Ciências da Computação pela Universidade Federal de Goiás. Pós-graduanda pela Anhanguera Educacional. Mestranda pela Universidade Federal de Goiás.

Anibal Jukemura

Mestre pela Universidade Federal de Goiás.