trabalho redes neurais
TRANSCRIPT
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
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
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
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
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.
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
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
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;
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.
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.
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%.
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.
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.