• Nenhum resultado encontrado

ESTIMATIVA DE ESFORÇO DE DESENVOLVIMENTO DE SOFTWARE: UMA ABORDAGEM UTILIZANDO Grammatical Evolution

N/A
N/A
Protected

Academic year: 2021

Share "ESTIMATIVA DE ESFORÇO DE DESENVOLVIMENTO DE SOFTWARE: UMA ABORDAGEM UTILIZANDO Grammatical Evolution"

Copied!
117
0
0

Texto

(1)

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DEMINAS GERAIS

PROGRAMA DEPÓS-GRADUAÇÃO EM MODELAGEMMATEMÁTICA E COMPUTACIONAL

E

STIMATIVA DE

E

SFORÇO DE

D

ESENVOLVIMENTO DE

S

OFTWARE

: U

MA

A

BORDAGEM

U

TILIZANDO

Grammatical

Evolution

D

ANIEL

F

ELICÍSSIMO

C

AMPOS

Orientador: Prof. Dr. Henrique Elias Borges

Centro Federal de Educação Tecnológica de Minas Gerais – CEFET-MG

BELOHORIZONTE OUTUBRO DE2015

(2)

D

ANIEL

F

ELICÍSSIMO

C

AMPOS

E

STIMATIVA DE

E

SFORÇO DE

D

ESENVOLVIMENTO

DE

S

OFTWARE

:

U

MA

A

BORDAGEM

U

TILIZANDO

Grammatical Evolution

Dissertação apresentada ao Programa de Pós-graduação em Modelagem Matemática e Computacional do Centro Federal de Educação Tecnológica de Minas Gerais, como requisito parcial para a obtenção do título de Mestre em Modelagem Matemática e Computacional.

Área de concentração: Modelagem Matemática e Computacional

Linha de pesquisa: Sistemas Inteligentes

Orientador: Prof. Dr. Henrique Elias Borges

Centro Federal de Educação Tecnológica de Minas Gerais – CEFET-MG

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DEMINAS GERAIS

PROGRAMA DEPÓS-GRADUAÇÃO EM MODELAGEMMATEMÁTICA E COMPUTACIONAL BELOHORIZONTE

(3)

Elaboração da ficha catalográfica pela Biblioteca-Campus II / CEFET-MG Campos, Daniel Felicíssimo

C198e Estimativa de esforço de desenvolvimento de software: uma abordagem utilizando Grammatical Evolution / Daniel Felicíssimo Campos. – 2015.

xix, 97 f.

Dissertação de mestrado apresentada ao Programa de Pós-Graduação em Modelagem Matemática e Computacional.

Orientador: Henrique Elias Borges.

Dissertação (mestrado) – Centro Federal de Educação Tecnológica de Minas Gerais.

1. Medição de software – Teses. 2. Computação evolutiva – Teses. 3. Programação evolucionária (Computação) – Teses. I. Borges, Henrique Elias. II. Centro Federal de Educação Tecnológica de Minas Gerais. III. Título.

(4)

Esta folha deverá ser substituída pela có-pia digitalizada da folha de aprovação for-necida pelo Programa de Pós-graduação.

(5)

Dedico este trabalho à toda minha família, em especial a minha mãe Mônica e meu pai De-métrius; e minha namorada Kelly pela paciên-cia, apoio e incentivo em todos os momentos.

(6)

Agradecimentos

Primeiramente à Deus e à minha família.

Ao meu orientador Dr. Henrique Elias Borges pela confiança, colaboração, disponibili-dade, suporte e, principalmente, pelo conhecimento repassado durante todas as etapas do desenvolvimento deste trabalho.

Ao professor Dr. Rogério Martins Gomes pelos ensinamentos passados nas disciplinas de Inteligência Computacional e Computação Evolucionária que foram essenciais na execução deste trabalho.

Ao professor Dr. Gray Farias Moita pelas observações e melhorias sugeridas na avaliação do projeto.

Ao meu colega de trabalho Me. Eduardo Viana Rezende pelo incentivo e por ter me apresentado este programa de mestrado.

À empresa Algar Tech pelo auxílio durante a realização deste trabalho.

À minha namorada Kelly pela compreensão e paciência, além do apoio e motivação trans-mitidos nos momentos de incertezas.

(7)

“Evoluir é sempre mudar. Mas mudar nem sem-pre é evoluir.” (Daniel Melgaço)

(8)

Resumo

Uma das atividades mais complexas e mais primordiais no contexto de desenvolvimento de software é mensurar, antecipadamente, o esforço necessário na construção de um projeto. Superestimar ou subestimar este esforço pode trazer perdas financeiras irreparáveis para a indústria. Portanto, a confiabilidade das estimativas é de extrema importância para que as empresas possam se manter competitivas diante de um mercado tão dinâmico. Assim, uma otimização na obtenção das estimativas de esforço de desenvolvimento é essencial para o sucesso de um projeto. A fim de avaliar o cenário recente das pesquisas abordando o tema, um mapeamento sistemático da literatura foi realizado. Este trabalho utiliza o algoritmo evolucionário Grammatical Evolution para modelagem de uma solução para o problema de Estimativa de Esforço de Desenvolvimento de Software. Com o propósito de avaliação da técnica proposta, é utilizado um dos maiores conjuntos de dados reais reconhecido como referência na área. Ao ser comparado a outros estudos encontrados na literatura, o modelo proposto apresenta bons resultados, além de possibilitar a utilização da técnica no dia-a-dia das empresas.

Palavras-chave: Estimativa de Esforço. Métricas de Software. Computação Evolucionária.

(9)

Abstract

One of the most complex and primordial activities in the context of software development is to measure, in the earlier stage, the effort required to build a project. Overestimate or underestimate may bring irreparable financial losses to the industry. Therefore, the reliability of estimates is extremely important for companies to remain competitive in the face of such a dynamic market. Thus, an optimization in obtaining estimates of development effort is essential to the success of a project. In order to evaluate the current scenario of studies in this particular subject, a systematic mapping was performed. This work uses an evolutionary algorithm Grammatical Evolution to model a solution to the Software Development Effort Estimation problem. With the aim of evaluating the proposed model, a well-known dataset is applied. When compared to studies found in the literature, the proposed technique presents valuable results, besides enabling the technique to be used by the industry.

Keywords: Effort Estimation. Software Metrics. Evolutionary Computation. Grammatical

(10)

Lista de Figuras

Figura 1 – Passos e saídas do mapeamento sistemático. Adaptado de (PETERSEN

et al., 2008). . . 5

Figura 2 – Distribuição de artigos por ano de publicação.. . . 18

Figura 3 – Distribuição das técnicas de IC utilizadas. . . 19

Figura 4 – Distribuição dos conjuntos de dados utilizados. . . 20

Figura 5 – Distribuição dos principais critérios de avaliação utilizados. . . 20

Figura 6 – Fluxograma de um algoritmo evolucionário genérico. . . 24

Figura 7 – Sub-áreas da Inteligência Computacional. Adaptado de (ENGELBRECHT, 2007). . . 25

Figura 8 – Comparação entre GE e o processo biológico. . . 28

Figura 9 – Mapeamento genótipo-fenótipo. . . 29

Figura 10 – Representação do indivíduo. . . 30

Figura 11 – Metodologia de pesquisa proposta. . . 35

Figura 12 – Gráfico do esforço pelo tamanho funcional após filtragem. . . 41

Figura 13 – Gráfico do esforço pelo tamanho funcional sem outliers. . . 42

Figura 14 – Gráfico do esforço pelo tamanho funcional após filtragem pelo TEP. . . . 43

Figura 15 – Operador de reprodução de um ponto. . . 51

Figura 16 – Operador de eliminação. . . 52

Figura 17 – Operador de duplicação. . . 52

Figura 18 – Operador de mutação. . . 53

Figura 19 – Distribuição de linguagens de programação no conjunto de dados final.. 56

Figura 20 – Boxplot do atributo ano de projeto para diferentes linguagens. . . 57

Figura 21 – Histograma do atributo esforço normalizado em horas. . . 58

Figura 22 – Histograma do atributo tamanho funcional. . . 58

Figura 23 – Boxplot do atributo esforço normalizado em horas. . . 59

Figura 24 – Boxplot do atributo tamanho funcional. . . 59

Figura 25 – Distribuição de projetos por setores da indústria. . . 60

Figura 26 – Efeito do valor da taxa de reprodução no resultado.. . . 62

Figura 27 – Efeito do valor da taxa de duplicação sobre o número de gerações neces-sário para a convergência para a melhor solução.. . . 63

Figura 28 – Efeito do valor da taxa de eliminação sobre o número de gerações neces-sário para a convergência para a melhor solução.. . . 64

Figura 29 – Efeito do valor da taxa de mutação sobre o número de gerações necessá-rio para a convergência para a melhor solução. . . 65

(11)

Figura 30 – Efeito da profundidade máxima no resultado. . . 66 Figura 31 – Convergência do algoritmo GE. . . 68 Figura 32 – Diferença entre os valores reais e os estimados pelo modelo. . . 72

(12)

Lista de Tabelas

Tabela 1 – Composição dos conjuntos de dados usados e década dos projetos. . . 19 Tabela 2 – Distribuição demográfica dos projetos. Fonte: (ISBSG, 2014). . . 36 Tabela 3 – Informações estatísticas em relação ao ano dos projetos. Fonte: (ISBSG,

2014). . . 37 Tabela 4 – Distribuição de linguagens de programação por tipo. Fonte: (ISBSG, 2014). 37 Tabela 5 – Distribuição de linguagens de programação. Fonte: (ISBSG, 2014). . . . 38 Tabela 6 – Distribuição de métricas de contagem de pontos de função. Fonte: (ISBSG,

2014). . . 38 Tabela 7 – Informações estatísticas em relação ao tamanho funcional do projetos

mensurados com a métrica IFPUG. Fonte: (ISBSG, 2014). . . 39 Tabela 8 – Análise estatística dos atributos de esforço em horas. Fonte: (ISBSG,

2014). . . 39 Tabela 9 – Número de projetos por avaliação de qualidade. Fonte: (ISBSG, 2014).. 40 Tabela 10 – Processo de filtragem do conjunto de dados do ISBSG. . . 40 Tabela 11 – Processo de remoção de outliers do conjunto de dados do ISBSG. . . . 41 Tabela 12 – Informações estatísticas do tamanho funcional após filtragem. . . 42 Tabela 13 – Informações estatísticas do esforço em horas normalizado após filtragem. 42 Tabela 14 – Filtragem pelo valor de TEP. . . 43 Tabela 15 – Índice TIOBE de popularidade de linguagens de programação no mês de

Agosto de 2015.. . . 56 Tabela 16 – Configuração inicial do algoritmo GE. . . 61 Tabela 17 – Resultado médio encontrado pelo modelo para o conjunto de dados

completo. . . 67 Tabela 18 – Posicionamento dos resultados em relação à trabalhos da literatura. . . 69 Tabela 19 – Posicionamento dos resultados após transformação logarítmica. . . 70 Tabela 20 – Resultado médio obtido após agrupamento por linguagem de programação. 70 Tabela 21 – Resultado médio obtido após agrupamento pela linguagem Java,

plata-forma web e aplicação de negócio. . . 72 Tabela 22 – Resultado médio obtido após agrupamento pela linguagem Java,

(13)

Lista de Quadros

Quadro 1 – Técnicas de IC aplicadas ao modelo COCOMO. . . 10

Quadro 2 – Técnicas de IC aplicadas ao modelo UCP. . . 12

Quadro 3 – Técnicas de IC aplicadas ao modelo de EA. . . 14

Quadro 4 – Técnicas de IC aplicadas em novos modelos. . . 17

(14)

Lista de Algoritmos

(15)

Lista de Gramáticas

Gramática 1 – Gramática para geração de equações matemáticas simples. . . 23 Gramática 2 – Regra de produção de operadores matemáticos. . . 29 Gramática 3 – Gramática para geração de equações complexas utilizadas para

(16)

Lista de Abreviaturas e Siglas

ABC Artificial Bee Colony ANN Artificial Neural Network

ABES Associação Brasileira das Empresas de Software CASE Computer-Aided Software Engineering

CBR Case-Based Reasoning COCOMO COnstructive COst MOdel

DT Decision Tree

DTF Decision Tree Forest DNA deoxyribonucleic acid DE Differential Evolution ES Engenharia de Software

EEDS Estimativa de Esforço de Desenvolvimento de Software EA Estimativa por Analogia

EC Evolutionary Computation FBN Formalismo de Backus-Naur GA Genetic Algorithm GP Genetic Programming GE Grammatical Evolution IC Inteligência Computacional

ISBSG International Software Benchmarking Standards Group JAD Joint Application Design

KLOC Kilo Lines of Code

(17)

MdMRE Median Magnitude of Relative Error

MMER Mean of Magnitude of Error Relative to the Estimate MSE Mean Squared Root

MOGP Multi Objective Genetic Programming

NASA National Aeronautics and Space Administration

PC Personal Computer

PF Pontos de Função

PIB Produto Interno Bruto Pred Percentual de Predição PSO Particle Swarm Optimization

RAM Random Access Memory

RLM Regressão Linear Múltipla RLL Regressão Log-Linear RNA ribonucleic acid

RNL Regressão Não Linear SA Simulated Annealing

TS Tabu Search

TI Tecnologia da Informação UML Unified Modeling Language UCP Use Case Points

(18)

Sumário

1 – Introdução . . . . 1

1.1 Motivação . . . 2

1.2 Objetivo geral e específicos . . . 3

1.3 Organização do trabalho . . . 3

2 – Revisão de Literatura: Mapeamento Sistemático . . . . 4

2.1 Metodologia de pesquisa . . . 4

2.1.1 Definição das questões para pesquisa . . . 5

2.1.2 Condução da busca . . . 5

2.1.3 Filtragem de artigos. . . 6

2.1.4 Classificação por palavras-chave . . . 6

2.1.5 Extração dos dados e processo de mapeamento . . . 7

2.2 IC aplicada na melhoria de modelos existentes . . . 7

2.2.1 Melhorias do modelo COCOMO . . . 7

2.2.2 Melhorias do modelo UCP . . . 11

2.2.3 Melhorias do modelo de EA . . . 13

2.3 Novos modelos para EEDS . . . 14

2.4 Visão geral dos artigos selecionados . . . 17

2.5 Considerações finais . . . 20 3 – Fundamentação Teórica . . . . 22 3.1 Formalismo de Backus-Naur . . . 22 3.2 Computação Evolucionária . . . 23 3.3 Grammatical Evolution . . . 25 3.3.1 Inspiração biológica . . . 26 3.3.2 Mapeamento genótipo-fenótipo . . . 27 3.3.3 Processo de evolução . . . 30 3.3.3.1 Inicialização. . . 30 3.3.3.2 Função de fitness . . . 30 3.3.3.3 Seleção . . . 31 3.3.3.4 Operadores . . . 31 3.3.3.5 Algoritmo . . . 32 4 – Metodologia . . . . 34 4.1 Delineamento da pesquisa . . . 34

(19)

4.2.1 Caracterização do conjunto de dados ISBSG . . . 36

4.2.2 Tratamento e filtragem dos dados . . . 40

4.3 Implementação do modelo . . . 44 4.3.1 Inicialização da população . . . 44 4.3.2 Transcrição . . . 44 4.3.3 Tradução . . . 45 4.3.3.1 Gramática . . . 45 4.3.4 Avaliação de custo . . . 47 4.3.5 Seleção . . . 49 4.3.6 Operadores . . . 50 4.3.6.1 Reprodução. . . 50 4.3.6.2 Eliminação . . . 51 4.3.6.3 Duplicação . . . 52 4.3.6.4 Mutação. . . 53 4.4 Validação do modelo . . . 53 4.4.1 Método holdout . . . 54

5 – Análise e Discussão dos Resultados . . . . 55

5.1 Caracterização do conjunto de dados final . . . 55

5.2 Análise empírica dos parâmetros utilizados . . . 61

5.2.1 Taxa de reprodução . . . 61 5.2.2 Taxa de duplicação . . . 62 5.2.3 Taxa de eliminação . . . 63 5.2.4 Taxa de mutação . . . 64 5.2.5 Profundidade máxima . . . 65 5.3 Resultados . . . 66

5.3.1 Resultados do conjunto de dados final . . . 66

5.3.2 Resultados do conjunto de dados final agrupado . . . 70

5.4 Considerações finais . . . 73

6 – Conclusão . . . . 75

6.1 Trabalhos futuros . . . 77

Referências . . . . 78

Apêndices

83

APÊNDICE A – Implementação do algoritmo GE . . . . 84

(20)

Anexos

93

(21)

Capítulo 1

Introdução

O mercado de Tecnologia da Informação (TI) vem crescendo em todo mundo principalmente nos setores de software e serviços. No Brasil, de acordo com pesquisa realizada pela ABES (Associação Brasileira das Empresas de Software), estes dois setores tiveram um crescimento de 13,5% e 7,7%, respectivamente, entre 2012 e 2013. Este crescimento ficou inclusive acima do crescimento do PIB (Produto Interno Bruto), que se manteve em torno de 2,3%, e também acima do crescimento de grandes setores da economia brasileira (ABES, 2014).

Por outro lado, pesquisa recente realizada entre empresas nacionais apontou que 47,6% dos projetos de TI foram entregues fora do prazo determinado ou até mesmo cancelados (ARCHIBALD; PRADO,2013).

Um dos principais motivos para um número tão expressivo de falhas está relacionado ao processo de estimativa de esforço necessário para a construção de um projeto. Tanto a subestimativa quanto a superestimativa acarretam grandes perdas financeiras para a indústria. Ao subestimar, o prazo estipulado se torna inalcançável à medida que o projeto vai sendo desenvolvido, fazendo com que ações não planejadas sejam tomadas, como, por exemplo, a inclusão de novos profissionais na equipe ou a ampliação das horas extras, aumentando o custo total do projeto. Já a superestimativa acontece quando um projeto é finalizado muito antes do prazo inicialmente estipulado, o que faz com que a equipe alocada para um determinado tempo fique ociosa, também onerando o custo total do projeto. Com o propósito de minimizar estes problemas, algumas métricas vêm sendo adotadas desde a década de 1980. Porém, estes modelos matemáticos geralmente oferecem uma equação de regressão contendo alguns parâmetros que precisam ser ajustados empirica-mente. De tempos em tempos, estes parâmetros são ajustados e uma nova release da métrica é disponibilizada para que o esforço dos novos projetos possam ser estimados. Contudo, estes modelos foram desenvolvidos para tecnologias ultrapassadas podendo

(22)

assim apresentar estimativas irreais quando aplicadas em projetos utilizando tecnologias mais atuais.

Nos últimos anos, pesquisadores têm aplicado técnicas de Inteligência Computacional (IC) no ajuste automático dos parâmetros utilizados por métricas tradicionais (AGARWAL; ALAM; SARWAR,2011) (SINGH; MISRA,2012) (MALIK; PANDEY; KAUSHIK,2013). Além disso, modelos novos e independentes também estão sendo propostos, ambos apresen-tando resultados muito significativos e promissores no contexto de estimativa de esforço (FERRUCCI et al.,2009) (OLIVEIRA et al.,2010) (SHAMS; KAMEL,2012) (PAI; MCFALL; SUBRAMANIAN,2013).

Neste contexto, esta dissertação investiga a utilização da técnica de Grammatical Evolution (GE) (O’NEIL; RYAN, 2001) para gerar, automaticamente, equações para o cálculo da estimativa, de acordo com o conjunto de dados sendo aplicado. A utilização desta técnica tem como objetivo principal obter um modelo que otimize a estimativa de esforço e que possa ser utilizado no dia-a-dia da indústria, trazendo um crescimento no índice de sucesso em projetos de TI, aumentando assim, a competitividade das organizações.

1.1

Motivação

A Engenharia de Software (ES) ainda é uma atividade relativamente recente quando comparada, por exemplo, com outras engenharias. Novos modelos e metodologias são apresentados ao mercado todo ano. Não existe um consenso no sentido de todas as empresas fazerem uso de determinada prática ou processo. Em particular, o problema de Estimativa de Esforço de Desenvolvimento de Software (EEDS) ainda é tratado de diversas formas por muitas empresas. Porém, nenhuma abordagem se mostrou genérica o suficiente a ponto de mudar este cenário. Portanto, pesquisas e propostas com finalidade prática e padronizada que proporcione o uso diário pela indústria são de extrema relevância.

O problema da EEDS é uma das atividades mais complexas dentro da Engenharia de Soft-ware e impacta diretamente no sucesso de um projeto. Esta complexidade está relacionada as diversas variáveis envolvidas neste processo, desde a tecnologia escolhida até aspectos pessoais dos integrantes da equipe. Assim, um dos objetivos deste trabalho é o estudo da relação entre estas variáveis com a estimativa de esforço, com o intuito de identificar quais variáveis, de fato, impactam na estimativa final.

Outro aspecto é a exploração científica da técnica de GE, ainda pouca explorada, que, de forma resumida, gera programas executáveis a partir de uma gramática arbitrária baseada no Formalismo de Backus-Naur (FBN). Este código-fonte gerado será avaliado por uma função de fitness. O valor retornado por ela guiará a evolução dos indivíduos de forma a se obter o mais apto de uma população, analogamente à teoria da seleção natural de Charles

(23)

Darwin (O’NEIL; RYAN,2001). Esta definição pode, de forma promissora, trazer resultados significativos quando aplicada ao problema de EEDS.

1.2

Objetivo geral e específicos

Este trabalho tem como objetivo geral a implementação de uma nova metodologia para solução do problema de Estimativa de Esforço de Desenvolvimento de Software visando sua utilização prática pela indústria.

Os objetivos específicos deste trabalho são:

• Pesquisar a literatura acerca do problema de EEDS para resolução do mesmo; • Caracterizar o conjunto de dados selecionado em relação à seus principais atributos; • Desenvolver um modelo utilizando a técnica evolucionária Grammatical Evolution; • Estudar a relação entre as variáveis que impactam o processo de estimativa; • Avaliar o desempenho do modelo proposto;

• Validar os resultados gerados em relação ao conjunto de dados aplicado; • Comparar os resultados obtidos com estudos encontrados na literatura;

1.3

Organização do trabalho

O restante desta dissertação está organizada da seguinte forma. O Capítulo 2 expõe os trabalhos mais relevantes acerca do problema de EEDS encontrados na literatura. O Capítulo 3 apresenta a fundamentação teórica onde os conceitos essenciais para o entendimento deste trabalho são descritos. A metodologia de pesquisa é apresentada no Capítulo 4. Já noCapítulo 5, os resultados são analisados e discutidos. Por fim, oCapítulo 6 conclui o trabalho proposto.

(24)

Capítulo 2

Revisão de Literatura: Mapeamento

Sistemático

Este capítulo apresenta as publicações referentes à aplicação de técnicas de Inteligência Computacional (IC), e não somente o algoritmo GE, ao problema de estimativa de esforço seguindo uma metodologia de mapeamentos sistemáticos na área de Engenharia de Software.

2.1

Metodologia de pesquisa

Este trabalho segue as diretrizes para criação de mapeamentos sistemáticos proposta por Petersen et al. (2008), particularmente na área de Engenharia de Software. Um mapea-mento sistemático possui um escopo mais reduzido em relação à revisões sistemáticas de literatura. Uma revisão sistemática abrangente da área foi publicada porWen et al.(2012) compreendendo um período de 20 anos de pesquisas que vai de 1990 até 2010. Portanto, este mapeamento sistemático irá selecionar trabalhos publicados nos últimos 5 anos, entre 2009 e 2014, e pode ser considerado um complemento à revisão apresentada porWen et al.(2012).

O processo de mapeamento sistemático é composto por cinco passos como pode ser visto naFigura 1. Vale ressaltar que ao final de cada passo, uma saída é gerada que se torna a entrada do passo seguinte até que o mapeamento esteja completo e seja possível analisar, de forma mais ampla, o conjunto de trabalhos selecionados. Através dessa análise é possível identificar as tendências que vêm sendo adotadas na área na tentativa de melhoria dos resultados conhecidos.

(25)

Figura 1 – Passos e saídas do mapeamento sistemático. Adaptado de (PETERSEN et al., 2008). Definição das questões para pesquisa Escopo da revisão Condução da busca Todos os artigos Filtragem de artigos Classificação por palavras-chave Extração dos dados e processo de mapemento Artigos relevantes Classificação Mapeamento sistemático Passos Saídas

2.1.1

Definição das questões para pesquisa

As questões (Q) a seguir foram definidas a fim de conduzir o mapeamento sistemático ao seu objetivo principal - provê uma visão geral desta área de pesquisa, principalmente em relação à técnicas de IC que têm sido adotadas, assim como os conjuntos de dados utilizados e os critérios de avaliação escolhidos pelos autores para treinamento e validação de seus modelos:

• Q1: Quais são as técnicas de IC mais aplicadas?

• Q2: Quais são os conjuntos de dados mais investigados? • Q3: Quais critérios de avaliação têm sido utilizados?

Ao selecionar as questões para busca, o escopo da revisão é então estabelecido e a busca pelos trabalhos primários pode ser conduzida.

2.1.2

Condução da busca

Neste passo, os estudos primários são identificados pela combinação de palavras-chave que são utilizadas para consulta em bancos de dados amplamente conhecidos como:

• Scopus (Elsevier); • ScienceDirect (Elsevier); • ACM Digital Library; • SpringerLink;

• Web of Science; • IEEE Xplore; • CSC Journals; • Google Scholar.

(26)

Ao definir as palavras-chave mais apropriadas para condução da busca, é importante levar em consideração que diferentes termos podem ter o mesmo significado em determinada área. Neste caso, os termos "computational intelligence", "machine learning" assim como "artificial intelligence" podem ser equivalentes e devem ser utilizados em conjunto. Após análise de similaridade de termos, a expressão utilizada na consulta foi a seguinte:

• ("computational intelligence" OR "machine learning" OR "artificial intelligence") AND "software effort estimation".

Além da expressão acima, a busca foi configurada para retornar apenas artigos publicados no intervalo de 2009 à 2014 e escritos no idioma inglês. Ao consultar os bancos de dados com os itens descritos acima, 89 artigos foram retornados.

2.1.3

Filtragem de artigos

Neste passo, critérios de inclusão e exclusão são definidos a fim de filtrar os artigos previamente selecionados de acordo com o objetivo deste mapeamento:

• Inclusão: Artigos publicados em periódicos e conferências amplamente conhecidas. • Exclusão: Livros. Revisões de literatura. Estudos que não reportam resultados em-píricos significantes. Estudos que apenas fazem referência aos termos da consulta. Estudos duplicados.

Ao utilizar os critérios acima, vários trabalhos foram excluídos do mapeamento. Porém, como será explicado na subseção seguinte, alguns estudos também foram removidos após leitura. Por fim, 32 artigos foram selecionados para fazerem parte do mapeamento sistemático.

2.1.4

Classificação por palavras-chave

Embora este passo recomende a utilização de palavras-chave presente nos resumos dos artigos para fazer a classificação dos mesmos em categorias mais significativas, este trabalho vai além e propõe a análise individual do conteúdo de cada artigo a fim de obter uma classificação ainda mais relevante. A partir desta análise, duas categorias foram identificadas:

• Estudos que aplicam técnicas de IC na melhoria de modelos existentes. • Estudos que utilizam técnicas de IC na criação de novos modelos. Esta separação será claramente evidenciada nas próximas seções.

(27)

2.1.5

Extração dos dados e processo de mapeamento

O processo de extração dos dados é o passo mais valioso e requer uma investigação mais profunda dos trabalhos selecionados com o objetivo de responder as questões definidas naSubseção 2.1.1. Uma análise abrangente dos estudos é então apresentada na seções seguintes.

2.2

IC aplicada na melhoria de modelos existentes

Em todo modelo para EEDS, um conjunto de atributos do projeto, supostamente aqueles que impactam diretamente a estimativa, são selecionados. Um modelo matemático é então construído, proporcionando muitas vezes, uma equação de regressão contendo um conjunto de parâmetros que devem ser ajustados empiricamente. Este ajuste é realizado através do uso de dados históricos de projetos. De tempos em tempos, os parâmetros da equação de regressão são atualizados e uma nova versão é lançada para que esforço possa ser estimado.

Contudo, estes modelos foram desenvolvidos para tecnologias já ultrapassadas podendo diminuir a confiabilidade quando replicados nos dias atuais pela indústria de software. Alguns dos modelos mais tradicionais e populares, que datam dos anos 1980 e 1990, estão listados abaixo:

• COnstructive COst MOdel (COCOMO) (BOEHM,1984) • Use Case Points (UCP) (KARNER,1993)

• Estimativa por Analogia (EA) (WALKERDEN; JEFFERY,1999)

Cabe ressaltar que o modelo matemático em si não muda, o que é atualizado são os parâmetros empíricos. Com isso em mente, muitos pesquisadores parecem acreditar que o real problema não está diretamente ligado ao modelo em si, mas sim à falta de um processo mais automatizado para ajustes dos parâmetros. Isto aparenta ser a principal tentativa ao aplicar técnicas de IC visando a melhoria da precisão destes modelos tradicionais de EEDS. Nas próximas subseções, as tentativas de melhoria destes modelos serão discutidas em detalhes.

2.2.1

Melhorias do modelo COCOMO

Utilizando lógica Fuzzy, Agarwal, Alam e Sarwar (2011) apresentaram um modelo que faz uso apenas de funções de pertinência Gaussiana com a ajuda da ferramenta Matlab Fuzzy Toolbox. A partir do conjunto de dados disponibilizado pela NASA, 10 projetos foram selecionados, todos eles da década de 1980. Para cada projeto, o esforço foi estimado. Como critério de avaliação, foi calculada a Magnitude Média do Erro Relativo (MMRE, do

(28)

inglês Mean Magnitude of Relative Error ), que é uma medida de performance amplamente utilizada pelos modelos de estimativa de software. Os resultados foram então comparados com algumas variantes do modelo COCOMO. Os autores afirmam que o método proposto obteve melhores resultados que todos os modelos comparados.

Outro modelo Fuzzy foi proposto porMalik, Pandey e Kaushik(2013). Desta vez, os autores utilizaram todos os 18 projetos que compõem o conjunto de dados da NASA e apresentaram uma análise mais abrangente do problema. Foram utilizados as funções de pertinência Triangular, Trapezoidal e Gaussiana para "fuzzificar" os direcionadores de custo, os fatores de escala e o tamanho do projeto em linhas de código (KLOC, do inglês Kilo Lines of Code). Como critério de avaliação também foi utilizado a MMRE. Os autores concluíram que, utilizando função de pertinência Gaussiana, os resultados foram claramente superiores aos encontrados com a aplicação do COCOMO tradicional, assim como utilizando outras funções de pertinência. A mesma conclusão já tinha sido apresentada porReddy e Raju (2009).

Outra abordagem semelhante, ainda utilizando lógica Fuzzy, foi apresentada por Kad e Chopra(2012). As principais diferenças estão no critério de avaliação e no conjunto de dados utilizado. A MMRE foi calculada usando os 63 projetos do conjunto de dados COCOMO81

1. Novamente, a modelagem que apresentou a melhor capacidade de estimativa foi a

modelagem utilizando funções de pertinência Gaussiana.

No artigo deKashyap e Misra(2013), um modelo híbrido utilizando lógica Fuzzy e Algoritmo Genético (GA, do inglês Genetic Algorithm) foi proposto. A ideia principal é "fuzzificar"os direcionadores de custo e avaliar o grau de similaridade entre os projetos. Para alcançar isto, os autores utilizaram uma composição de três equações de distância, dentre elas a distância geométrica. Os projetos mais adequados foram então selecionados e, em seguida, foi executado o GA a fim de minimizar a MMRE. O modelo proposto foi comparado com a técnica de Raciocínio Baseado em Casos (CBR, do inglês Case-Based Reasoning), um modelo Fuzzy simples, além do próprio COCOMO. Utilizando os 63 projetos do conjunto de dados COCOMO81, o modelo proposto obteve melhores resultados em relação ao valor da MMRE.

A técnica de Otimização por Enxame de Partículas (PSO, do inglês Particle Swarm Optimi-zation) foi utilizada por Reddy(2010) com a intenção de ajustar os pesos de um modelo Fuzzy. Os autores realizaram duas análises independentes, a primeira baseada no conjunto de dados da NASA 2 e outra no conjunto de dados COCOMO81. Os resultados foram comparados com outros estudos na literatura. Contudo, o modelo não apresentou uma melhoria significativa nas predições das estimativas.

1http://promise.site.uottawa.ca/SERepository/datasets/cocomo81.arff 2http://promise.site.uottawa.ca/SERepository/datasets-page.html

(29)

Uma ferramenta chamada Software Effort Estimation-PSO-Clustering (SEEPC) foi desen-volvida e apresentada porHari, Sethi e Jagadeesh.M(2011). Ela provê duas formas de estimativa, uma utilizando o modelo COCOMO tradicional e outra utilizando PSO juntamente com o algoritmo K-Means para agrupamento de dados. Através deste último, os projetos similares foram agrupados e, em seguida, o algoritmo de PSO foi aplicado no ajuste dos atributos do modelo. De acordo com os autores, o SEEPC provou ser mais preciso que o modelo COCOMO tradicional.

No trabalho de Singh e Misra(2012), é apresentada a aplicação do Algoritmo Genético Binário em comparação com o estudo proposto porSheta(2006). O modelo foi concebido com o propósito de ajuste dos parâmetros do COCOMO. Na fase de treinamento, 13 dos 18 projetos do conjunto de dados da NASA foram selecionados. Os 5 projetos restantes foram utilizados com a finalidade de teste do modelo. Como critério de avaliação, foram aplicados o MMRE e o Pred(25), que pode ser considerado um caso particular do Pred(N), onde 25 corresponde a quantidade de estimativas dentro do intervalo de 25% de erro em relação as estimativas reais (BRAGA,2008). Considerando a MMRE, o modelo mostrou uma melhoria de 40% sobre o estudo de referência.

Uma abordagem semelhante foi desenvolvida porJoseph e Ravichandran(2012). A principal diferença está no conjunto de dados utilizado: este último escolheu o conjunto de dados COCOMO81 para treinar e testar o modelo genético. Todos os resultados obtidos por este modelo apresentaram melhoras nas estimativas em relação ao método tradicional COCOMO, principalmente em relação ao MMRE que teve uma melhora de cerca de 42%. Seguindo a linha de ajuste dos parâmetros do COCOMO, vários trabalhos podem ser encontrados aplicando diferentes técnicas. Eles geralmente utilizam o conjunto de dados da NASA a fim de comparar os resultados com os encontrados por outros estudos. Portanto, as pesquisas a seguir utilizaram a mesma metodologia, alterando a principal técnica aplicada. No artigo deAljahdali e Sheta(2010), os autores adotaram o algoritmo Differential Evolution (DE) para explorar este tipo de problema. De acordo com os resultados, a técnica apresentou valores similares para a MMRE quando comparada com os estudos de referência. Já no trabalho de Shukla (2013), o algoritmo Recozimento Simulado (SA, do inglês Simulated Annealing) foi experimentado. O modelo obteve bons resultados, porém o valor da MMRE não foi tão baixo quanto a proposta utilizando DE. Além destes, Sharma e Pant (2013) propuseram duas variantes do algoritmo Colônia de Abelhas Artificiais (ABC, do inglês Artificial Bee Colony ) chamadas Intermediate-ABC e I-ABC guloso. A fim de avaliar as propostas, os autores aplicaram os algoritmos no ajuste dos parâmetros do COCOMO e compararam com o algoritmo original de ABC, além do estudo realizado porSheta(2006). Embora os autores afirmem que as propostas superaram as técnicas utilizadas nos estudos de referência, este fato não ficou tão evidente nos resultados. Claramente, o algoritmo ABC

(30)

original mostrou melhores resultados do que os outros, mesmo sem a adoção de um critério de avaliação, tal como MMRE.

Uma análise gráfica peculiar dos direcionadores de custo e fatores de escala do modelo COCOMO foi apresentada porSuresh, Dhavachelvan e Saleem(2014). Os autores agru-param os 17 direcionadores de custo em duas categorias: Otimista e Pessimista. Estas relações resultaram em uma equação que se tornou a função objetivo a ser minimizada por um GA. O indivíduo foi composto pelos 17 direcionadores de custo e os operadores convencionais foram utilizados no processo de evolução da população. Como conjunto de dados, 96 projetos sem detalhes adicionais foram selecionados para treinar e validar o modelo. A proposta foi comparada com o modelo tradicional do COCOMO, e, em termos da MMRE, os resultados obtidos foram superiores.

O Quadro 1 exibe os principais dados em relação aos trabalhos apresentados nesta subseção.

Quadro 1 – Técnicas de IC aplicadas ao modelo COCOMO.

Técnica Referência Dados Avaliação Comparação

Fuzzy (REDDY; RAJU,2009) COCOMO81 MMRE COCOMO Fuzzy e

PSO

(REDDY,2010) NASA e CO-COMO81

MMRE Outros estudos DE (ALJAHDALI; SHETA,

2010)

NASA MMRE PSO e Fuzzy

Fuzzy (AGARWAL; ALAM; SARWAR,2011)

NASA MMRE COCOMO

PSO e

Cluste-ring

(Hari; SETHI; JAGA-DEESH.M,2011)

COCOMO81 Esforço

predito

COCOMO

Fuzzy (KAD; CHOPRA, 2012)

COCOMO81 MMRE COCOMO II

GA (SINGH; MISRA, 2012) NASA MMRE e Pred(25) (SHETA,2006) GA (JOSEPH; RAVICHAN-DRAN,2012)

COCOMO81 MMRE COCOMO

Fuzzy (MALIK; PANDEY; KAUSHIK,2013)

NASA MMRE COCOMO II

Fuzzy e GA

(KASHYAP; MISRA, 2013)

COCOMO81 MMRE COCOMO II

SA (SHUKLA,2013) NASA MMRE RNL

I-ABC (SHARMA; PANT, 2013) NASA Esforço predito (SHETA,2006) GA (SURESH; DHAVA-CHELVAN; SALEEM, 2014)

(31)

2.2.2

Melhorias do modelo UCP

Um estudo realizado porNassif, Capretz e Ho(2010) apresentou duas propostas visando a melhoria da precisão do modelo UCP (Use Case Points). O primeiro utiliza lógica Fuzzy e o outro é baseado numa Rede Neural Artificial (ANN, do inglês Artificial Neural Network ). Na abordagem Fuzzy, os autores afirmam que o principal problema do modelo UCP é a falta de graduação ao classificar os fatores de complexidade dos casos de uso. Esta questão foi abordada aplicando uma função de pertinência Triangular.

A validação do modelo foi realizada em 3 estágios. O primeiro estágio foi composto por 7 projetos, o segundo por 5 e o terceiro por 8 projetos. Tanto a MMRE quanto a Magnitude Média do Erro Relativo à Estimativa (MMER, do inglês Mean of Magnitude of Error Relative to the Estimate), foram avaliadas para comparar o modelo em relação ao UCP tradicional, em todos os estágios. Em se tratando da MMRE, os estágios 1 e 2 apresentaram uma melhoria de 22% e 4%, respectivamente. Por outro lado, o estágio 3 obteve uma piora de 7%.

A abordagem neural foi implementada utilizando o algoritmo Multilayer Perceptron para lidar com a não linearidade do problema. A arquitetura da rede foi composta por 13 elementos na camada de entrada, sendo 10 representando os casos de uso e 3 representando os atores. Vários experimentos foram conduzidos para determinar empiricamente o número de neurônios presentes na camada oculta, e o melhor resultado foi obtido com 20 neurônios. Como saída, os pontos do caso de uso eram obtidos. O algoritmo de treinamento escolhido foi o bem conhecido Levenberg-Marquardt backpropagation. Nesta fase, 7 projetos foram randomicamente selecionados. Já na fase de validação do modelo, outros 13 projetos foram selecionados. Todos eles são projetos acadêmicos e pouca informação foi fornecida. Os autores concluem que os resultados obtidos na fase de treinamento foram bons. O erro médio foi de 2,15% e o desvio padrão 6,16%. Além disso, os resultados mostraram uma melhora de 20% em relação ao MMRE. Porém, quando comparado de fato com a métrica UCP tradicional, o modelo apresentou piora de 35%.

Seguindo a mesma linha,Nassif, Capretz e Ho(2012) propuseram outra implementação Multilayer Perceptron. Desta vez, os autores utilizaram um conjunto de dados composto por 240 projetos vindos de três fontes industriais e uma acadêmica. Entre estes projetos, 70% (168) foram randomicamente selecionados e os 30% (72) restantes foram utilizados na avaliação da proposta dos autores. Na fase de treinamento, o algoritmo escolhido foi o conjugate gradient. A fim de comparar a técnica proposta, um modelo de regressão linear múltipla foi também desenvolvido. Os resultados apontam que o modelo ANN superou a regressão linear múltipla e o tradicional UCP em 8% e 50%, respectivamente, se tratando da MMRE. Por fim, uma análise estatística mais abrangente foi apresentada. Outro estudo, ainda envolvendo a utilização de Multilayer Perceptron foi realizado porNassif, Ho e Capretz

(32)

(2013). O mesmo grupo de pesquisa, desta vez, desenvolveu uma regressão log-linear para comparar com o método proposto. Contudo, os resultados apresentados não foram conclusivos pois o modelo de ANN não se mostrou estável.

Novamente, o mesmo grupo de pesquisa, Nassif et al. (2012) experimentou uma outra abordagem. Eles aplicaram um derivado do algoritmo de Árvore de Decisão (DT, do inglês Decision Tree) chamado treeboost na tentativa de melhoria da precisão do modelo UCP. Em poucas palavras, um modelo treeboost é composto por muitas DTs, onde a saída de cada árvore se torna a entrada para a próxima. Foram coletados 84 projetos, sendo 58 provenientes da indústria e 26 de caráter educacional. Deste conjunto de dados, 59 projetos foram selecionados para treinamento e os outros 25 para validação do modelo. Os experimentos, de acordo com os autores, mostraram uma superioridade em relação ao modelo de regressão linear múltipla assim como em relação ao tradicional UCP em todos os seguintes critérios de avaliação: MMRE, Pred(25), Pred(50), Magnitude Mediana do Erro Relativo (MdMRE do inglês Median Magnitude of Relative Error ) e a Média do Quadrado do Erro (MSE, do inglês Mean Squared Root). A diferença principal entre os critérios MMRE e MdMRE está no fato da MMRE utilizar a média em seu cálculo e a MdMRE utilizar a mediana, removendo assim, possíveis outliers. Já o critério MSE é a média do quadrado das diferenças entre os esforços atuais e os preditos.

Em geral, os estudos propondo a melhoria do modelo UCP dependem, fortemente, de dia-gramas utilizando a Linguagem de Modelagem Unificada (UML, do inglês Unified Modeling Language) que, muitas vezes, são difíceis de serem encontrados ou disponibilizados pelas empresas.

O Quadro 2 exibe os principais dados em relação aos trabalhos apresentados nesta subseção.

Quadro 2 – Técnicas de IC aplicadas ao modelo UCP.

Técnica Referência Dados Avaliação Comparação

Fuzzy e ANN (NASSIF; CAPRETZ; HO,2010) Privado MMRE e MMER UCP ANN (NASSIF; CAPRETZ;

HO,2012)

Privado MMRE RLM e UCP

ANN (NASSIF; HO; CA-PRETZ,2013)

ISBSG e Privado MMRE, Pred(25)

RLL e UCP Treeboost (NASSIF et al.,2012) Privado MMRE,

Pred(25) e MdMRE

(33)

2.2.3

Melhorias do modelo de EA

A Estimativa por Analogia consiste no agrupamento de projetos com características similares com o intuito de auxiliar a predição de um novo projeto nos estágios iniciais. Sabe-se que estimar projetos tomando por base projetos relacionados leva a resultados mais precisos. De fato, quando existem projetos com atributos equivalentes ou semelhantes, a estimativa se torna mais assertiva (ISBSG,2011). Porém, quando não há claramente projetos similares no conjunto de dados, esta técnica não se torna mais tão precisa. Na tentativa de superar isto, algumas técnicas de Clustering têm sido aplicadas, juntamente com outras técnicas, para melhorar a seleção de projetos relacionados. Na maioria das vezes, esta seleção se baseia na utilização de funções de distância, onde uma das mais comum é a distância Euclidiana.

Em seu trabalho, Bakır, Turhan e Bener(2010) propôs uma abordagem incomum que, ao invés de resultar em um único número representando a estimativa de esforço, resulta em um intervalo mais adequado para o tipo de projeto alvo. Isto é realizado em três fases:

1. Agrupamento de projetos similares;

2. Determinação dos intervalos de esforço para cada grupo, além de especificar as classes de esforço;

3. Classificação do novo projeto em uma das classes de esforço.

Na última fase, os autores utilizaram três diferentes algoritmos para classificação: Discri-minante Linear, K-nearest Neighbor e DT. Obviamente, a estimativa usando intervalos aumenta a precisão das predições e apresenta resultados promissores quando comparados com outros estudos.

Na linha dos Algoritmos Evolutivos, a técnica de GA foi proposta por Vahid e Dayang (2011). O objetivo do método é prover os melhores pesos para serem aplicados na função de similaridade euclidiana. Os resultados foram comparados com vários outros métodos encontrados na literatura e mostraram uma melhora significativa usando o conjunto de dados de Maxwell3, composto de 62 projetos, em relação à MMRE e Pred(25).

Utilizando lógica Fuzzy, Malathi e Sridhar (2012) avaliaram a similaridade entre os 93 projetos do conjunto de dados NASA934. Os autores afirmaram que o modelo proposto superou os resultados de outro estudo aplicando Fuzzy clássico.

No estudo deKhatibi et al.(2012), a utilização de PSO na melhoria do modelo de EA foi apresentada. Algum tempo depois, os mesmos autores conduziram outro estudo (KHATIBI et al.,2013), em que eles propuseram um processo de dois passos onde o primeiro agrupa

3https://terapromise.csc.ncsu.edu:8443/!/#repo/view/head/effort/other-effort/maxwell/maxwell.arff 4http://promise.site.uottawa.ca/SERepository/datasets/cocomonasa_2.arff

(34)

os projetos baseando-se em atributos chave enquanto o segundo enfatiza a otimização dos pesos usando o algoritmo PSO. De acordo com os resultados reportados, a técnica proposta se sobressaiu perante outros estudos tanto em relação à MMRE quanto ao Pred(25). O conjunto de dados utilizado foi o disponibilizado pelo ISBSG (The International Software Benchmarking Standards Group), que é uma organização referência na coleta de dados históricos (ISBSG,2014).

O Quadro 3 exibe os principais dados em relação aos trabalhos apresentados nesta subseção.

Quadro 3 – Técnicas de IC aplicadas ao modelo de EA.

Técnica Referência Dados Avaliação Comparação

Discriminante Linear, K-nearest Neighbor e DT

(BAKıR; TURHAN; BE-NER,2010) NASA93, CO-COMO81, Desharnais e Privado MMRE, MdMRE e Pred(25) Técnicas de-senvolvidas GA (VAHID; DAYANG, 2011) Maxwell MMRE e Pred(25) Outros estu-dos

Fuzzy (MALATHI; SRIDHAR, 2012)

NASA93 Esforço

predito

Fuzzy PSO (KHATIBI et al.,2012) ISBSG MMRE e

Pred(25)

Outros estu-dos

PSO (KHATIBI et al.,2013) COCOMO81,

Maxwell e ISBSG MMRE e Pred(25) Outros estu-dos

2.3

Novos modelos para EEDS

Trabalhos propondo modelos completamente novos, que não buscam a melhoria de métricas existentes, têm ganhado força nos últimos anos. Estes modelos, em sua grande maioria, utilizam o conceito de tamanho funcional do software que tem o Ponto de Função (PF) como medida mais utilizada (ALBRECHT,1979).

No artigo deFerrucci et al.(2009), os autores utilizaram a técnica Busca Tabu (TS, do inglês Tabu Search) para explorar o conjunto de dados Deshrnais, composto por 81 projetos da década de 1980. O espaço de busca consiste de todas as equações factíveis que podem ser geradas alterando os valores de fatores, coeficientes, constantes e operadores durante cada movimentação. Os resultados apontam que o modelo TS obteve resultados equivalentes quando comparado a um modelo CBR e regressão stepwise.

Um modelo ANN foi proposto porNassif, Capretz e Hill(2012). O objetivo era analisar os impactos dos requisitos não-funcionais na estimativa de um projeto. Esta análise foi feita

(35)

também utilizando o conjunto de dados Deshrnais. De acordo com os autores, quando estes requisitos são ignorados pelo modelo, e apenas o tamanho do projeto é usado, pode levar a um aumento de até 100% no valor da MMRE. Portanto, os autores enfatizam que os requisitos não-funcionais são de suma importância e devem ser levados em consideração em todo modelo para EEDS.

Pai, McFALL e Subramanian (2013), em seu estudo, investigaram o relacionamento dos atributos que afetam diretamente a estimativa de esforço, através da aplicação de um modelo ANN em um conjunto de dados composto por 163 projetos de uma empresa privada. Ao contrário do que se espera, o estudo mostrou que variáveis além do tamanho em Pontos de Função não parecem impactar de forma significante as predições. Esta conclusão, no entanto, parece não retratar a realidade e é mais provável que a análise realizada esteja tratando os atributos de forma inadequada.

Shams e Kamel(2012) propuseram um estudo para selecionar o algoritmo de ANN mais adequado para o conjunto de dados ISBSG. Primeiramente, algumas melhorias foram feitas no conjunto de dados para aumentar sua qualidade. Um destes ajustes, foi a remoção dos outliers. A redefinição das variáveis categóricas como, por exemplo, a principal linguagem de programação usada, também foi realizada. Em seguida, uma análise via regressão Fuzzy envolvendo algumas variáveis resultou em uma equação que foi utilizada na seleção do algoritmo mais apropriado para o conjunto de dados ISBSG. A quantidade de projetos selecionados não foi divulgada. Contudo, vários testes foram conduzidos e os resultados devidamente expostos. Em termos da MMRE, os autores afirmam que o algoritmo Radial Basis foi o que obteve melhores resultados.

As técnicas DT e uma variante denominada Floresta de Árvores de Decisão (DTF, do inglês Decision Tree Forest) foram aplicadas porNassif et al. (2013) no contexto de EEDS. Uma análise estatística extensiva foi apresentada para sustentar a conclusão de que o modelo DTF superou as técnicas DT e regressão linear, baseados nos critérios de avaliação MMRE, MdMRE e Pred(25) em ambos conjuntos de dados, ISBSG e Desharnais5.

Minku e Yao(2013) concluem em seu artigo que modelos aplicando várias técnicas de IC melhoram, sensivelmente, modelos que utilizam apenas uma única técnica no contexto de EEDS. O estudo fornece diferentes insights que podem ser úteis para pesquisas futuras. Na linha dos Algoritmos Evolutivos, um modelo aplicando GA foi desenvolvido porOliveira et al. (2010) para seleção de atributos e otimização dos parâmetros de três técnicas bem estabelecidas: Support Vector Regression, Multilayer Perceptron e Decision Tree. Estas técnicas foram testadas sobre vários conjuntos de dados, dentre eles pode-se citar

(36)

os conjuntos Albrecht 6 e Kemerer 7. De acordo com os autores, embora populares e

amplamente utilizados, os critérios de avaliação MMRE e Pred não são suficientes para uma análise estatística satisfatória. Mesmo assim, com a finalidade de comparação, ambos critérios foram apresentados.

Ainda seguindo a mesma linha evolucionária, um estudo comparativo entre Programação Genética (GP, do inglês Genetic Programming) e Programação Genética Multiobjetivo (MOGP, do inglês Multiobjective Genetic Programming) foi realizado por Singh e Misra (2012). O modelo GP foi executado com 5 diferentes funções objetivo, separadamente, enquanto o modelo MOGP considerou todas no mesmo processo evolutivo. Por fim, os autores concluíram que, por mais que o modelo MOGP tenha mostrado bons resultados, o mesmo não apresenta um bom custo benefício, pois requer mais processamento e tempo de modelagem e os resultados não são muito superiores à uma implementação simples utilizando GP para o problema de EEDS.

Outro modelo evolutivo, desta vez utilizando Grammatical Evolution (GE), foi desenvolvido por Barros et al.(2013). O modelo foi testado em diversos conjuntos de dados públicos. Mesmo a maioria deles sendo datados da década de 1980 e 1990, uma análise estatística bastante abrangente e relevante destes conjuntos de dados foi devidamente exposta. A técnica foi comparada com algoritmos tradicionais da literatura como: Regressão Linear, ANN e Support Vector Machine. Como resultado, a proposta apresentou melhores resultados em alguns critérios de avaliação e piores em outros como, por exemplo, a MMRE, onde o modelo utilizando Support Vector Machine se sobressaiu. Contudo, a técnica GE, objetivo desta dissertação, ou até mesmo um modelo híbrido, quando aplicada em conjuntos de dados mais recentes e com agrupamento de projetos, precisa ser profundamente analisada para o contexto de EEDS.

Por fim, Minku e Yao (2013) investigaram a utilização de modelos híbridos no contexto de EEDS em comparação à modelos utilizando apenas uma técnica de IC. Os autores afirmaram ter obtido resultados superiores com alguns modelos híbridos, porém não há evidência da superioridade destes modelos em relação à modelos individuais em todos os casos. De toda forma, este trabalho fornece diversos insights que podem ser de extrema utilidade em pesquisas futuras.

O Quadro 4 exibe os principais dados em relação aos trabalhos apresentados nesta subseção.

6https://terapromise.csc.ncsu.edu:8443/svn/repo/effort/function-points/albrecht/albrecht.arff 7https://terapromise.csc.ncsu.edu:8443/svn/repo/effort/function-points/kemerer/kemerer.arff

(37)

Quadro 4 – Técnicas de IC aplicadas em novos modelos.

Técnica Referência Dados Avaliação Comparação

TS (FERRUCCI et al., 2009) Desharnais MMRE e Pred(25) CBR e regressão stepwise

ANN (IDRI; ZAKRANI; ZAHI, 2010)

COCOMO81 MMRE e

Pred(25)

Outros estudos ANN (SHAMS; KAMEL,

2012)

ISBSG MMRE Regrassão fuzzy

ANN (NASSIF; CAPRETZ; HILL,2012)

Desharnais MMRE e

Pred(25)

RLM ANN (PAI; MCFALL;

SU-BRAMANIAN,2013)

Privado MMRE RLM

DT e DTF (NASSIF et al.,2013) ISBSG e Deshar-nais MMRE, MdMRE e Pred(25) RLM GA (OLIVEIRA et al., 2010) Desharnais, NASA, CO-COMO81, Albre-cht e Kemerer MMRE e Pred(25) Outros estudos GP (SARRO; FERRUCCI; GRAVINO,2012) Desharnais MMRE, MdMRE e Pred(25) MOGP

GE (BARROS et al.,2013) Albrecht, CO-COMO81,

Desharnais, Ke-merer, Maxwell e NASA93

MMRE Regressão linear, ANN e Support Vector Machine

Modelos hí-bridos

(MINKU; YAO,2013) COCOMO81, Desharnais, NASA, NASA93 e ISBSG MMRE e Pred(25) Técnicas desen-volvidas

2.4

Visão geral dos artigos selecionados

Nesta seção, os estudos selecionados são analisados em relação às técnicas de IC, aos conjuntos de dados e aos critérios de avaliação que foram utilizados. Como dito anteriormente, o período de publicação dos estudos é de 2009 a 2014 e a distribuição dos artigos por ano de publicação pode ser vista naFigura 2.

(38)

Figura 2 – Distribuição de artigos por ano de publicação.

Em relação as técnicas de IC utilizadas, os seguintes algoritmos foram identificados: • Lógica Fuzzy ;

• Artificial Neural Network (ANN); • Genetic Algorithm (GA);

• Particle Swarm Optimization (PSO); • Decision Tree (DT);

• Genetic Programming (GP); • Differential Evolution (DE); • Grammatical Evolution (GE); • Artificial Bee Colony (ABC); • Simulated Annealing (SA); • Tabu Search (TS).

Como pode ser observado através da Figura 3, a maioria dos trabalhos, cerca de 60%, aplicaram Fuzzy (26%), ANN (20%) e GA (14%), individualmente ou em modelos híbridos.

(39)

Figura 3 – Distribuição das técnicas de IC utilizadas.

Diversos conjuntos de dados contendo diferentes atributos têm sido utilizados pelas pesqui-sas com intuito de treinar e validar os modelos propostos. A Tabela 1exibe os principais conjuntos de dados encontrados na literatura juntamente com o número de projetos que cada um possui e a década em que os dados dos projetos foram coletados.

Tabela 1 – Composição dos conjuntos de dados usados e década dos projetos. Nome # de Projetos Década

COCOMO81 63 1980 NASA 18 1980 Desharnais 81 1980 ISBSG > 6.000 > 1990 NASA93 93 1970-1980 Maxwell 62 2000 Albrecht 24 1980 Kemerer 15 1980

Além disso, a distribuição dos trabalhos selecionados em relação aos principais conjuntos de dados é mostrada naFigura 4. Como pode ser observado, atualmente, ainda há diversos estudos utilizando conjuntos de dados com projetos bem antigos, principalmente da década de 1980.

(40)

Figura 4 – Distribuição dos conjuntos de dados utilizados.

Em termos de validação dos modelos, vários critérios de avaliação foram utilizados sendo MMRE, Pred, MdMRE e MMER os mais utilizados - em cerca de 90%, 44%, 13% e 9% dos trabalhos, respectivamente. A frequência de utilização destes critérios pode ser melhor observada naFigura 5.

Figura 5 – Distribuição dos principais critérios de avaliação utilizados.

2.5

Considerações finais

Diante do mapeamento apresentado anteriormente, é possível identificar algumas tendên-cias e padrões recorrentes entre os trabalhos. Um deles é a grande utilização de conjuntos de dados com projetos datados das décadas de 1980 e 1990, mesmo esta sendo uma área onde as tecnologias evoluem constantemente apresentando novos desafios a medida que

(41)

os anos passam. Este fato é de extrema relevância pois, em se tratando de estimativas de esforço, os resultados apresentados por estes modelos podem não ser confiáveis nos dias atuais. Como evidência, a maioria das pesquisas, 31,25%, utilizaram o conjunto de dados da década de 1980 COCOMO81, com 63 projetos. Em seguida aparece o conjunto de dados da NASA, também da década de 1980, presente em cerca de 22% das pesquisas. Dentre todos, o único conjunto de dados que é constantemente atualizado e por isso pode ser considerado o mais adequado ao problema de EEDS é o ISBSG, ainda assim, ele foi utilizado somente por 12% das pesquisas. O motivo da baixa adoção pode estar relacionada ao fato dele ser o único conjunto de dados pago dentre os mais aplicados.

A partir da adoção de bases de dados de décadas passadas, é possível afirmar que a maioria dos trabalhos foram focados na metodologia de desenvolvimento de software em cascata, onde todos os requisitos do projeto são conhecidos e especificados antes de sua construção (PRESSMAN,2001).

A maioria das pesquisas, cerca de 60%, estão concentradas na utilização de três técnicas de IC, são elas: Fuzzy (26%), ANN (20%) e GA (14%), tanto de forma individual quanto parte de modelos híbridos. Por um lado, este fato permite uma fácil comparação dos resultados alcançados por pesquisas equivalentes. Por outro, a literatura fica saturada por trabalhos similares sem melhorias significantes dos resultados. Desta forma, pesquisas que utilizam algoritmos ainda pouco investigados são fundamentais para o desenvolvimento da área. Uma das questões respondidas na revisão sistemática realizada porWen et al. (2012) é justamente em relação as técnicas de IC. Dentre os 84 estudos selecionados, 80% deles utilizaram CBR (37%), ANN (26%) ou DT (17%). Os algoritmos GA e GP aparecem com 5% e 3% dos trabalhos, respectivamente. Apesar de citar a utilização de lógica Fuzzy ao detalhar os artigos, os autores não consideraram esta uma técnica de IC.

Por estes motivos, o presente trabalho analisa de forma aprofundada a utilização do conjunto de dados do ISBSG juntamente com a técnica evolucionária denominada Grammatical Evolution, ainda pouco explorada no contexto de EEDS.

(42)

Capítulo 3

Fundamentação Teórica

Neste capítulo são apresentados os conceitos essenciais para o completo entendimento do presente trabalho. Primeiramente, será introduzida a definição de gramática segundo o Formalismo de Backus-Naur. Em seguida, o conceito de Computação Evolucionária será descrito destacando, principalmente, sua relação com o processo biológico de seleção natural. Por fim, os principais tópicos relativos a técnica Grammatical Evolution serão abordados.

3.1

Formalismo de Backus-Naur

O Formalismo de Backus-Naur (FBN) foi originalmente criado por John Backus e Peter Naur no final da década de 1950 na definição da linguagem ALGOL 60 (NAUR,1963). O FBN se tornou uma notação amplamente utilizada na especificação de gramáticas para outras linguagens de programação. A notação formal de uma gramática hipotética G pode ser definida como uma quádrupla G = (N, T, P, S).Furtado(2014) definiu estes elementos como:

• Símbolos não-terminais (N): Símbolos que podem gerar outros não-terminais ou terminais, e representam a definição da linguagem.

• Símbolos terminais (T): Símbolos finais da linguagem como, por exemplo, dígitos de 0 à 9 ou operadores matemáticos (+, -, / e *).

• Regras de produção (P): Regras que fazem o mapeamento dos não-terminais aos terminais ou outros não-terminais.

• Símbolo inicial (S): Não-terminal a partir do qual a gramática será gerada.

AGramática 1corresponde a uma linguagem de exemplo com a capacidade de geração de equações matemáticas simples, de acordo com suas regras de produção, onde:

(43)

Gramática 1 – Gramática para geração de equações matemáticas simples. hexpr i ::= hexpr ihopihexpr i

| (hexpr ihopihexpr i) | hpre-opi (hexpr i) | hvar i hopi ::= + | -| / | * hpre-opi ::= Sin hvar i ::= X | 1.0 • T = {Sin, +, -, /, *, X, 1.0} • S = {expr}

Esta gramática foi utilizada por O’Neil e Ryan(2001) ao exemplicar o funcionamento da técnica Grammatical Evolution, que será abordada de forma mais profunda nas próximas seções.

3.2

Computação Evolucionária

A Computação Evolucionária (EC, do inglês Evolutionary Computation) é uma sub-área dentro da Inteligência Computacional que tem como objetivo simular processos decorrentes da evolução natural, onde o conceito principal é a sobrevivência do indivíduo mais apto. Na evolução natural, a sobrevivência é alcançada através da reprodução. Nesta etapa, os descendentes herdam material genético dos pais. Aqueles indivíduos que herdam caracte-rísticas ruins se tornam fracos e, consequentemente, perdem a batalha pela sobrevivência. Como exemplo, pode-se citar algumas espécies de pássaros onde um filhote em parti-cular consegue mais comida, se torna mais forte, e expulsa os irmãos do ninho, e estes, eventualmente, acabam não sobrevivendo (ENGELBRECHT,2007).

Os algoritmos evolutivos trabalham com uma população de indivíduos, onde cada indivíduo é uma possível solução para um dado problema. Eles são representados por alguma forma codificada, conhecida como cromossomo. Um cromossomo define as características de um indivíduo na população, ou seja, seu genótipo. Cada característica é conhecida como gene e os valores associados ao gene são chamados de alelos. Em cada geração, os indivíduos competem para gerarem descendentes através da combinação de suas características -processo conhecido como cruzamento ou crossover. Aqueles indivíduos mais adaptados ao

(44)

ambiente têm maiores chances de reprodução. Além disso, cada indivíduo pode sofrer algum tipo de mutação genética que alterará o valor de um ou mais alelos de seu cromossomo. A capacidade de sobrevivência e aptidão de um indivíduo da população é medida através de uma função de fitness que reflete os objetivos e restrições do problema a ser solucionado. A cada geração, as características dos indivíduos mais aptos tendem a ser passadas para seus descendentes. Este processo se repete até que alguma condição de parada seja satisfeita, como, por exemplo, que um número total de gerações seja atingido. Ao final do processo, espera-se obter uma população com os melhores indivíduos, que serão também as melhores soluções possíveis para o problema em questão (RUTKOWSKI,2008). Este processo é melhor observado através daFigura 6onde as principais etapas e o fluxo de execução de um algoritmo evolucionário genérico são apresentados.

Figura 6 – Fluxograma de um algoritmo evolucionário genérico.

Início

Geração randômica da população de soluções candidatas

Avaliação da população

Condição de parada

satisfeita? Fim Seleção dos indivíduos para

reprodução

Geração dos descendentes

Mutação

Geração da nova população

Não Sim

(45)

exemplificado acima. Algumas delas são técnicas já estabelecidas na literatura, como: • Algoritmos Genéticos (GA, do inglês Genetic Algorithm): modela a evolução

gené-tica;

• Programação Genética (GP, do inglês Genetic Programming): baseada em GA, porém os indivíduos são programas representados por árvores;

• Differential Evolution (DE): semelhante ao GA, porém utilizando um mecanismo de reprodução diferente.

A técnica Grammatical Evolution (GE), objeto de estudo desta dissertação, está englobada dentro da sub-área de EC ao lado das técnicas mencionadas acima. Estas divisões podem ser entendidas pelaFigura 7.

Figura 7 – Sub-áreas da Inteligência Computacional. Adaptado de (ENGELBRECHT,2007).

Inteligência Computacional

Computação

Evolucionária

Redes Neurais Artificiais Lógica Fuzzy Swarm Intelligence Sistemas Imunológicos Artificiais Algoritmos Genéticos Programação Genética Differential

Evolution Grammatical Evolution

3.3

Grammatical Evolution

Grammatical Evolution é uma técnica evolucionária estocástica que tem como principal objetivo evoluir programas computacionais especificados em qualquer linguagem arbitrária,

(46)

segundo o FBN.

Este algoritmo foi apresentado no início da década de 2000 por Michael O’Neill e Conor Ryan. A intenção dos autores era propor um modelo que conseguisse aplicar, de forma flexível e de simples configuração, gramáticas livre de contexto ao algoritmo de GP (O’NEIL; RYAN,2001).

No entanto, GE não é a primeira abordagem a utilizar gramáticas na evolução automática de programas. Durante a década de 1990, diversos algoritmos de GP baseados em gramáticas foram apresentados. A principal diferença entre eles e o tradicional algoritmo de GP está na representação e evolução dos programas. Em GP, programas são representados como árvores e o processo evolucionário afeta diretamente os nós desta árvore. Com isso, há um esforço excessivo para garantir que programas válidos sejam produzidos a cada geração. Visando suprir este problema, GE adota uma representação em cadeia de tamanho va-riável composta por números binários. Esta cadeia, em termos biológicos, refere-se ao genótipo de um indivíduo. Os números binários são então transcritos em números inteiros onde cada número representa uma regra de produção de uma determinada gramática, ou seja, parte de um programa executável. Este processo é conhecido como mapeamento genótipo-fenótipo. Com esta separação clara entre genótipo e fenótipo, é possível aplicar, por exemplo, operadores tradicionais como reprodução e mutação sem a preocupação de gerar programas executáveis válidos. O mapeamento, ao utilizar uma gramática seguindo o FBN, garante que apenas programas sintaticamente corretos sejam produzidos (O’NEILL; BRABAZON,2006).

Esta garantia permite que o processo evolucionário dos indivíduos seja análogo ao pro-cesso aplicado em qualquer algoritmo evolucionário. Desta forma, a avaliação e seleção dos melhores indivíduos, assim como a utilização de operadores evolucionários como repro-dução, mutação, eliminação, duplicação, entre outros, são facilmente inseridos no processo evolucionário do algoritmo GE.

3.3.1

Inspiração biológica

O mapeamento genótipo-fenótipo do algoritmo GE foi fortemente inspirado no processo bio-lógico de geração de proteínas a partir do material genético de um organismo. Proteínas são fundamentais para o desenvolvimento e funcionamento dos seres vivos e são responsáveis por características tais como a coloração dos olhos e a altura (O’NEIL; RYAN,2003). O material genético, usualmente conhecido como ácido desoxirribonucleico (DNA, do inglês deoxyribonucleic acid ), possui moléculas responsáveis pela transmissão das características hereditárias, pela coordenação do desenvolvimento e funcionamento de todos os seres

(47)

vivos, além de alguns vírus. De forma simplificada, o DNA é composto por uma sequência de quatro blocos chamados nucleotídeos. Grupos de três nucleotídeos, responsáveis pela codificação de aminoácidos, são chamados de códons. As proteínas são formadas através da combinação aleatória de diferentes tipos de aminoácidos. A sequência dos aminoácidos na fita de DNA tem um papel importante na definição da estrutura tri-dimensional da proteína, que influencia diretamente nas propriedades funcionais da mesma (O’NEIL; RYAN,2003). Na geração de uma proteína, a sequência de nucleotídeos do DNA é, primeiramente, transcrita em um formato ligeiramente diferente, sendo uma sequência de elementos em uma molécula conhecida como ácido ribonucleico (RNA, do inglês ribonucleic acid ) mensageiro.

Após a transcrição, o RNA mensageiro deixa o núcleo da célula e vai em direção ao citoplasma. Dentro do citoplasma, o RNA mensageiro é envolvido por um ribossomo e o processo de tradução se inicia. Códons presentes no RNA mensageiro são então lidos pelo ribossomo e se interagem com outro tipo de RNA, o RNA transportador contendo anticódons. As interações entre códons e anticódons, quando bem sucedidas, determinam a sequência de aminoácidos contidas na proteína sendo produzida.

Portanto, em suma, este processo juntamente com fatores ambientais definem o fenótipo de um organismo a partir de seu genótipo. De forma elementar, o genótipo é a composição genética de um organismo enquanto o fenótipo pode ser entendido como sua aparência física (O’NEIL; RYAN,2003).

Na GE, o fenótipo corresponde ao código-fonte de um programa executável gerado a partir de uma representação de seu material genético (genótipo). Esta transformação é chamada de mapeamento genótipo-fenótipo e será detalhada na próxima seção.

3.3.2

Mapeamento genótipo-fenótipo

O mapeamento genótipo-fenótipo é um dos pontos principais do algoritmo GE e que o diferencia das demais técnicas evolucionárias. Sua comparação com o processo biológico pode ser observada naFigura 8.

(48)

Figura 8 – Comparação entre GE e o processo biológico. Sequência binária Sequência de inteiros Programa executável Regras de produção Código-fonte Grammatical Evolution DNA RNA Fenótipo Aminoácidos Proteína Processo Biológico Transcrição Tradução

Ambos processos são guiados para a formação dos fenótipos. Na GE, o fluxo se inicia com a transcrição do indivíduo que é representado por uma sequência binária aleatória, geralmente de 8 bits cada, em seu número inteiro correspondente. Em seguida, após esta conversão, o processo de tradução relacionará cada número inteiro, chamados de códons, a uma regra de produção da gramática sendo aplicada. AFigura 9exemplifica este fluxo.

Referências

Documentos relacionados

Sendo assim, ao (re)pensar a prática do professor em uma sala de aceleração, dispõe-se sobre ações que envolvem o contexto gerencial e pedagógico do programa, bem como

O fortalecimento da escola pública requer a criação de uma cultura de participação para todos os seus segmentos, e a melhoria das condições efetivas para

O Plano de Metas Compromisso Todos pela Educação, de 2007, e a Política Nacional de Formação de Profissionais do Magistério da Educação Básica, instituída em 2009 foram a base

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

Quando os dados são analisados categorizando as respostas por tempo de trabalho no SERPRO, é possível observar que os respondentes com menor tempo de trabalho concordam menos que

Nesse contexto, quando o indivíduo age de acordo com o princípio da utilidade, ele cuida de si mesmo através do cultivo da sua natureza humana esse cultivo é a expressão do amor

Em 2003, entrou em vigor o atual Plano de Manejo do Parque Estadual de Campinhos, propondo e executando modificações em sua infra-estrutura de visitação,