• Nenhum resultado encontrado

2.2 DESCOBERTA DE CONHECIMENTO EM BANCOS DE DADOS

2.2.3 Algoritmos de regressão

A Regressão consiste em aprender uma função que mapeia um item de dado para uma variável de predição real estimada (FAYYAD et al., 1996, p. 13). É uma técnica bem conhecida da estatística que a comunidade de mineração de dados uti- liza. A regressão pressupõe a existência de um conjunto de dados numéricos e de-

senvolve uma fórmula matemática que se ajusta aos dados. Quando se têm dados prontos para usar e para prever o comportamento futuro, simplesmente pega-se os dados, aplica-se na fórmula desenvolvida e tem-se uma previsão. A principal limita- ção desta técnica é que ela só funciona bem com dados quantitativos (como veloci- dade, peso ou idade). Se os dados são categóricos, onde a ordem não é significativa (como nome, cor ou sexo), é mais indicada a escolha de outra técnica.

Regressão Linear

Os algoritmos para regressão linear ajustam um conjunto de dados a uma re- ta tendo por parâmetros as variáveis independentes. É claro que eventualmente os dados podem se apresentar de forma linear, mas mesmo nesses casos usamos ou- tras técnicas de regressão linear onde um dos eixos é achatado por meio de poten- ciação, logaritmização ou exponenciação, então temos regressão por potência, re- gressão logarítmica e regressão exponencial.

A regressão linear consiste em representar um conjunto de dados cartesianos (xi, yi) da seguinte forma (FAYYAD et al, 1996):

i

i xi

y   (1)

onde yi é a ordenada (por ex., percentagem de uso da CPU), xi é a abscissa (por ex.,

data/hora da coleta de percentagem), α é o coeficiente linear calculado, β é o coefi-

ciente angular calculado e εi é o erro ou desvio, utilizado como fator de correção. Es-

se desvio é a diferença entre a ordenada estimada e o valor real:

i

i

i y  x

    (2)

A ideia por traz da regressão linear é bastante simples: encontrar os valores para α e β tais que o somatório dos quadrados dos desvios para os valores conheci-

dos seja o menor possível. Isso pode ser calculado usando-se o produto de matri- zes, mais especificamente, um sistema sub-determinado de equações normais. Nesse sistema, criou-se uma matriz normal 2×2, um vetor

 

de coeficientes de ajuste e a matriz direita padrão, chegando-se à seguinte equação:

 

                      

          1 0 1 0 1 0 2 1 0 1 0 n i i i n i i n i i n i i n i i y x y x x x n   (4) RBFNetwork

Uma Radial Basis Function Network (RBF) é um outro tipo de rede neural três camadas: a de entrada, oculta e camada de saída. Uma rede RBF pode construir dois modelos, de regressão e de classificação.

Em uma rede RBF, as entradas são mapeadas para cada uma das unidades escondidas. A rede RBF do WEKA utiliza a função gaussiana para cálculo do valor de ativação dos neurônios, sendo que a ativação h(x) de um neurônio escondido, para uma dada entrada x, diminui monotonicamente com a distância entre o centro

C da gaussiana.

A camada de saída efetua uma combinação linear das saídas das unidades escondidas e é semelhante a um modelo de regressão. Na Figura 3, é apresentado um exemplo de rede RBF para um modelo de previsão de temperatura a partir do histórico de temperaturas.

Figura 3 – Exemplo de rede RBF [Uma rede RBF com n unidades escondidas

para prever temperatura.

Fonte: FAYYAD et al, 1996. X é o vetor de entrada dada à rede e de saída e temp_Ct é a

soma dos produtos das ativações das unidades ocultas e os pesos associados a elas. Cada unidade oculta tem seu próprio centro aprendido.

Uma rede RBF tem as entradas e as unidades escondidas como pontos no espaço. A ativação de uma unidade escondida depende da distância entre o ponto no espaço que representa os valores de entrada e o ponto de partida para a unidade oculta. A distância é convertida em uma medida de similaridade pela função gaussi-

ana. O ponto do espaço para a unidade escondida é obtido a partir do centro da gaussiana para essa unidade oculta. A largura da Gaussiana é um parâmetro de aprendizagem.

Uma rede RBF é treinada para aprender os centros e as larguras das funções Gaussianas para as unidades escondidas e, em seguida, ajustar os pesos no mode- lo de regressão que é usado na unidade de saída. Depois que os parâmetros para a função Gaussiana nas unidades ocultas forem encontrados, os pesos destas unida- des para a unidade de produção são ajustados utilizando Regressão Linear. O pro- cesso pode ser repetido para aprender de uma forma de aprendizado de máquina.

LeastMedSq

O LeastMedSquare WEKA ou algoritmo dos Mínimos Quadrados de Regres- são mediana é um método de regressão linear que minimiza a mediana dos quadra- dos das diferenças a partir da linha de regressão (WITTEN, 2005). O algoritmo re- quer atributos de entrada e de saída contínuos, e não permite que hajam valores fal- tantes de atributo. Um modelo de regressão linear é aplicada a atributos de entrada para prever a saída. A produção prevista x é obtida como

     k j j j k ka w a w a w w 0 ) 1 ( ) 1 ( ) 1 ( 1 1 0 ... (5)

onde ai são atributos de entrada e wi são os pesos associados a eles.

Os pesos podem ser inicialmente definidos para valores aleatórios ou é atribu- ído um valor escalar. O objetivo do processo de atualização de peso é determinar novos pesos para minimizar

      

k j i j j i i a x w a median 0 ) ( ) ( (6)

onde i varia de 1 até o número de casos nos dados de treinamento que está sendo usado e x(i) é a saída real para o i-ésimo exemplo. O resultado previsto para essa instância de formação é obtida a partir da equação de regressão.

Redes MLP

Uma das redes neurais artificiais mais populares para regressão são as redes

Perceptron Multi-Camadas (MLP), treinadas com o algoritmo backpropagation. Este

é um algoritmo de aprendizado supervisionado, que utiliza pares (entrada, saída de- sejada) para ajustar os pesos da rede, através de um mecanismo de correção de er- ros. O treinamento ocorre em duas fases:

 Forward: utilizada para definir a saída da rede para um dado padrão de entra- da.

 Backward: utiliza a saída desejada e a saída fornecida pela rede para atualizar os pesos de suas conexões.

O algoritmo backpropagation, demonstrado no Quadro 3 é baseado na regra delta proposta por Widrow e Hoff. As redes que utilizam backpropagation trabalham com uma variação da regra delta, apropriada para redes multi-camadas: a regra del- ta generalizada. A regra delta generalizada funciona, quando são utilizadas na rede unidades com uma função de ativação semi-linear, que é uma função diferenciável e não decrescente. Uma função de ativação amplamente utilizada, nestes casos, é a função sigmóide. Essa variação foi a característica que permitiu a este e outros mo- delos fazer representações complexas. Os ajustes dos pesos serão realizados utili- zando o método do gradiente descendente.

O treinamento das redes MLP com backpropagation pode demandar muitos passos no conjunto de treinamento, resultando um tempo de treinamento considera- velmente longo. Uma forma de amenizar este tipo de problema é considerar efeitos de segunda ordem para o gradiente decrescente. Também não é raro o algoritmo convergir para mínimos locais.

Mínimos locais são pontos na superfície de erro que apresentam uma solução estável, embora não seja a melhor solução. Algumas técnicas são utilizadas tanto para acelerar o algoritmo, como para reduzir a incidência de mínimos locais.

A adição do termo momentum é uma das técnicas mais frequentes para re- solver estes tipos de problemas. A inclusão deste termo na fórmula de ajuste de pe- sos aumenta a velocidade de aprendizado, reduzindo o perigo de instabilidade, ele pode acelerar o treinamento em regiões muito planas, assim como suprimir a oscila- ção de pesos em vales.

As redes neurais que utilizam backpropagation (Quadro 3), assim como mui- tos outros tipos de redes neurais artificiais, podem ser vistas como "caixas pretas", na qual quase não se sabe porque a rede chega a um determinado resultado, uma vez que os modelos não apresentam justificativas para suas respostas.

Quadro 3 – Algoritmo de backpropagation Algoritmo Backpropagation

1. Iniciar pesos e parâmetros

2. Repetir até o erro ser mínimo ou a realização de um dado número de ciclos 2.1 Para cada padrão de treinamento X.

2.1.1 Definir a saída de rede através da fase foward

2.1.2 Comparar saídas produzidas com as saídas desejadas 2.1.3 Atualizar pesos dos nodos através da fase backward Fase Forward

1. A entrada é apresentada à primeira camada da rede C0

2. Para cada camada (Ci) a partir da camada de entrada

2.1 Após os nodos da camada Ci (i > 0) calcularem seus sinais de saída, estes servirão como

entrada para a definição das saídas produzidas pelos nodos da camada (Ci+1)

3. As saídas produzidas pelos nodos da última camada são comparadas às saídas desejadas. Fase Backward

1. A partir da última camada, até chegar na camada de entrada:

1.1 Os nodos da camada atual ajustam seus pesos de forma a reduzir seus erros

1.2 O erro de um nodo das camadas intermediárias é calculado utilizando o erro do nodos da camada seguinte conectados a ele, ponderados pelos pesos das conexões entre eles.

Fonte: WITTEN, 2005.

Estudos vêm sendo realizadas visando a extração de conhecimento de redes neurais artificiais, e na criação de procedimentos explicativos, onde se tenta justificar o comportamento da rede em determinadas situações.

SMOREG

SMOReg é uma implementação do algoritmo de otimização sequencial mí- nima (SMO) para treinamento de um modelo de regressão de vetor de suporte (SVM – Máquinas de Vetor de Suporte). Esta implementação substitui globalmente todos os valores faltantes e transforma atributos nominais em atributos binários (WITTEN, 2005).

Basicamente o funcionamento de uma SVM pode ser descrito da seguinte forma: dadas duas classes e um conjunto de pontos que pertencem a essas classes, uma SVM determina o hiperplano que separa os pontos de forma a colocar o maior numero de pontos da mesma classe do mesmo lado, enquanto maximiza a distancia

de cada classe a esse hiperplano. A distancia de uma classe a um hiperplano e a menor distancia entre ele e os pontos dessa classe é chamada de margem de sepa- ração. O hiperplano gerado pela SVM é determinado pelo subconjunto dos pontos das duas classes, chamado vetores de suporte.

O algoritmo Otimização Sequencial Mínima ou SMOReg é apresentado por Platt (1998). Sua idéia básica é dividir uma programação quadrática complexa em uma série de pequenos programas quadráticos. O SMOReg inclui dois ciclos: um interno e outro externo. O ciclo externo seleciona os dados ótimos de todo o conjun- to de dados baseado na condição ideal. O objetivo do ciclo interno é calcular os dois multiplicadores de Lagrange de amostras ideais. A programação sempre alterna en- tre os ciclos interno e externo até que todos os dados da amostra satisfaçam as condições ótimas.

3 METODOLOGIA

3.1 CLASSIFICAÇÃO DA PESQUISA

Para Silva e Menezes (2005), uma pesquisa científica pode ser classificada quanto à natureza, abordagem, fins e meios. Assim, esta pesquisa é: (i) aplicada, quanto à natureza, pois gera produtos ou processos com finalidades imediatas na empresa alvo; (ii) quantitativa, quanto à abordagem, por se fundamentar em uma co- leta e análise de dados que permitem medir, analisar e modelar um fenômeno; (iii)

exploratória, quanto aos fins, uma vez que visa proporcionar maior familiaridade com

o problema com vistas a torná-lo explícito ou a construir hipóteses; (iv) quanto aos meios, é um estudo de caso, visto que envolve o estudo profundo e exaustivo de um ou poucos objetos de maneira que se permita ampliar e detalhar o conhecimento.

3.2 POPULAÇÃO E AMOSTRA

Para a realização deste trabalho, foram utilizados dados dos projetos de de- senvolvimento e manutenção de software de uma empresa de desenvolvimento de soluções em Tecnologia da Informação, para se aferir a qualidade dos produtos de- senvolvidos por esta empresa. O universo considerado para o estudo de caso é constituído de três bases de dados em SQL, uma de cada sistema envolvido: (i) o Sistema Gerencial de Informações (SGI), (ii) o Sistema de Rastreamento de Defeitos (Mantis) e (ii) o Sistema de Controle de Revisões de Qualidade (Revisa). Essas ba- ses vêem sendo atualizadas pelas equipes de desenvolvimento e manutenção de software da empresa alvo desde 2004.

Dentre as diversas fontes de informação, este trabalho se restringiu ao estudo apenas das 12 variáveis referidas na seção anterior. Os valores das variáveis esco- lhidas referem-se ao período de 2007 a 2010. Para esse período, foram contados 183 projetos, dos quais 13 não foram considerados devido à baixa qualidade de seus dados. Dos 170 projetos considerados, 150 eram de desenvolvimento e 20 de manutenção evolutiva de grande porte. Aqueles projetos que, por algum motivo não estavam cadastrados em alguma dessas bases, tais como projetos de manutenção

corretiva ou adaptativa ou extrações de relatórios especiais, não estão aí incluídos. Na Tabela 1 é apresentado um resumo dessa quantificação.

Tabela 1 – Quantificação dos projetos considerados Tipo de projeto Quantidade de projetos %

Desenvolvimento 150 82,1 Manutenções perfectivas 20 10,9 Não identificados 13 7,0

Total 183 100,0

Entre as diversas variáveis coletadas, considerou-se para este trabalho aque- las que supostamente poderiam influenciar a qualidade de um produto.

3.3 COLETA DE DADOS

O sistema SGI é o sistema de gerenciamento de projetos da empresa conce- bido para o gestor de projeto controlar o projeto de software e recursos durante to- das as suas fases. Esse sistema foi desenvolvido em Asp.net, com banco de dados SQL Server.

O Sistema Mantis é um sistema multiplataforma baseado em web, de código aberto e livre (licença GNU), para rastreamento de bugs. Foi desenvolvido em PHP e funciona com MySQL, MS SQL, e PostgreSQL. Quase todos os navegadores da Web são capazes de funcionar como um cliente desse sistema.

Revisa é um sistema que permite a gestão, registro, formalização e acompa- nhamento de informações das revisões de qualidade referentes aos projetos de sof- tware. Essas atividades são executadas pelos consultores de garantia da qualidade de software (GQS) da Empresa. Foi desenvolvido em plataforma Web, em Asp e com SQL Server, na forma de workflow, enviando mensagens aos envolvidos ao término de operações ou transações executadas durante o processo de revisão. Desta forma, assegura uma comunicação eficiente entre o consultor de GQS e o lí- der de projeto (gerente do projeto). Esse sistema efetua o controle automático dos prazos estabelecidos para o tratamento de não-conformidades, acionando os níveis superiores de gerência quando expirado o prazo acordado. Possibilita ainda a con- solidação de estatísticas e métricas de GQS em todos os níveis da organização.

de infraestrutura. Foram feitas apurações e extrações sistematizadas em arquivos texto, nos três sistemas de gestão da Empresa citados. Houve negociações com as áreas internas da Empresa no sentido de se obter as permissões de utilização das bases de dados.

Após a extração, foi feita uma análise de dados, de acordo com o CRISP-DM. Os dados foram, então, unificados e tabulados em uma planilha eletrônica, e expor- tados para o formato compatível com o WEKA (http://www.cs.waikato.ac.nz/ml/ weka), ferramenta de mineração de dados utilizada. Com o apoio de seus recursos estatísticos e gráficos e seguindo o CRISP-DM, foram feitas uma analise e uma dis- cussão dos resultados.

3.4 O ESTUDO REALIZADO

O processo de descoberta de conhecimento realizado serviu-se de dados re- lativos à execução do processo de ES nos projetos de desenvolvimento da Empre- sa. Partiu-se do pressuposto de que a qualidade intrínseca de um produto pode ser aferida pela densidade de defeito do software nas suas diversas fases – testes, ho- mologação e pós-implantação (KRIESER, 2010).

Neste estudo, buscou-se construir modelos2 de qualidade com base em in-

formações previamente cadastradas. Para isso, foram estudadas 3 variáveis esco- lhidas previamente como variáveis dependentes, as quais materializam os atributos de alto nível representantes da qualidade do produto: a qualidade intrínseca de um software. Estas variáveis foram: (i) a densidade de defeitos na fase de testes, (ii) a densidade de defeitos na fase de homologação e (iii) a quantidade de manutenções

2 Segundo Quintela (2005 apud CORTEZ, 2004), um modelo é definido como uma função que atribui

a cada exemplo possível no domínio definido pelos atributos de entrada, um valor contido no domínio do atributo de saída, contendo cada modelo um conjunto de parâmetros que têm de ser ajustados (ou estimados) a partir de um conjunto de dados, através de um algoritmo, na fase de aprendizagem. Após a aprendizagem, é possível extrapolar novas saídas, alimentando o modelo com novas entradas. Na construção de um modelo definem-se as principais características do sistema, que devem representar o mais fielmente possível a realidade, recolhem-se os dados necessários para a construção do modelo e para a consequente validação, sendo necessária uma divisão do conjunto de dados em dois subconjuntos, um para geração do modelo, chamado de conjunto de treino, e outro para validação do modelo, chamado de conjunto de teste. Em regra geral, o maior número de exemplos da amostra é colocado no conjunto de treino, contudo em proporções variáveis dependente de vários fatores (e.g., natureza do problema, número de casos da amostra, técnica a utilizar). Ao modelo são aplicados algoritmos para a identificação de padrões e relacionamentos.

corretivas por ponto de função (PF)3 após o sistema ter entrado em produção. Os

dados para estas variáveis foram obtidos das três bases dos sistemas de gestão ci- tados no item 3.2.

As variáveis independentes utilizadas para a construção dos modelos foram os atributos com formatação padrão ou considerados relevantes ao processo, pela área de qualidade da empresa. Os 12 atributos eleitos para isso foram: TIPO DO PRO- JETO, MÉDIA PERCENTUAL DE ADERÊNCIA DO PROJETO AO PROCESSO, NÚMERO DE OU- TROS SISTEMAS IMPACTADOS, PRODUTIVIDADE, TREINAMENTO DA EQUIPE, LINGUAGEM DE PROGRAMAÇÃO, BANCO DE DADOS, CICLO DE VIDA ADOTADO, MÉTODOS, PERCENTUAL DE VOLATILIDADE DOS REQUISITOS DO PROJETO, TAMANHO EM PF e ESFORÇO RELATIVO POR PF. Desses atributos, apenas o primeiro vem da base Revisa. Os demais vêm do SGI. No Quadro 2 são mostradas as características de cada um dessas variáveis.

Quadro 2 – Detalhamento das variáveis de entrada

3 Conforme o International Function Point Users Group (IFPUG, 2009), um ponto de função é uma

medida funcional de tamanho de software, introduzida em 1979 por Alan Albrecht da IBM. Nome da Variável Tipo Descrição

Média percentual de aderência do projeto ao

processo Numérico Média (100 – Σ Pontos das ocorrências e desvios) Tipo do projeto Texto O tipo do projeto. Pode ser de desenvolvimento (NS) ou de manutenção evolutiva (ME) Número de outros

sistemas impactados Numérico Quantidade de software que dependem do projeto de desenvolvimento em referência

Produtividade Numérico Produtividade do desenvolvedor dada em quantidade de horas gastas para implementar 1 PF (Ponto de Função) na linguagem em referência.

Treinamento da equipe Texto Escala de treinamento da equipe para o projeto Linguagem de

programação Texto Descrição da linguagem de programação utilizada para o desenvolvimento do sistema Banco de dados Texto Descrição do sistema de banco de dados utilizado para o desenvolvimento do sistema Ciclo de vida adotado Texto Descrição do ciclo de vida utilizado para o desenvolvimento do sistema

Métodos Texto Descrição da abordagem de engenharia utilizada para o desenvolvimento do sistema Percentual de

volatilidade dos

requisitos do projeto Numérico

Percentual de mudança dos requisitos aprovados pelo cliente, dado pela seguinte fórmula: [(Ri + Ra + Re) / Ro]*100

Tamanho em PF Numérico Medida do tamanho realizado do sistema em pontos por função Esforço relativo por PF Numérico Corresponde à divisão do Esforço gasto em teste pelo PF

A avaliação dos modelos produzidos foi feita baseada nas métricas MSE (Erro Quadrático Médio), Coeficiente de Correlação e RRSE (Raiz do Erro Quadrático Re- lativo), de uso comum em problemas de previsão, além da análise dos coeficientes dos modelos gerados pelas técnicas escolhidas (WITTEN, 2005). Após a avaliação dos resultados, identificou-se as limitações dos resultados e foram feitas reconside- rações que levaram à reexecução da fase de modelagem, resultando em modelos mais precisos, para contextos mais específicos: modelos para projetos de manuten- ção evolutiva e outros modelos para projetos de desenvolvimento de software.

3.5 DELIMITAÇÃO DO ESTUDO

Este estudo está limitado pelo escasso volume de dados relevantes disponí- veis para análise. Foram considerados relevantes os dados de 183 projetos referen- tes ao período entre 2007 e 2010, já que projetos anteriores a este período já não apresentavam falhas como as aqui analisadas. Assim, os resultados da MD refletem o comportamento das variáveis de desenvolvimento apenas desses projetos.

4 ESTUDO DE CASO

Os resultados obtidos nesta dissertação basearam-se em um estudo de caso realizado no escritório de projetos da empresa alvo, o qual responde pela coordena- ção e controle de todos os projetos de software para clientes do Distrito Federal. O estudo de caso foi desenvolvido com base na metodologia CRISP-DM, conforme de- talhado neste capítulo.

4.1 COMPREENSÃO DO NEGÓCIO

4.1.1 Objetivos do negócio

Documentos relacionados