Você está na página 1de 6

Aplicação de Metaheurísticas em Problemas da Engenharia de Software:

Revisão de Literatura

Fabrício Gomes de Freitas, Camila Loiola Brito Maia, Daniel Pinto Coutinho,
Gustavo Augusto Lima de Campos, Jerffeson Teixeira de Souza
Universidade Estadual do Ceará (UECE)
Laboratório de Computação Natural e Inteligente (LACONI)
fabriciogf@uece.br, camila.maia@gmail.com, daniel.pintocoutinho@gmail.com,
gustavo@larces.uece.br, prof.jerff@gmail.com

Resumo Infelizmente, em alguns casos, as normas e


metodologias convencionais desenvolvidas pela
Diversos problemas da Engenharia de Software - comunidade científica especializada não atacam certos
incluindo a análise de requisitos, a otimização de código, tipos de problemas que acontecem durante o processo de
a geração e seleção de casos de teste, entre outros - desenvolvimento de software, ou o fazem de modo
podem ser modelados como problemas de otimização. insatisfatório. Isso acontece com problemas
Como tais, esses problemas podem ser tratados de forma intrinsecamente complexos, como aqueles envolvendo a
automática através de algoritmos de busca, seleção de uma solução em um conjunto proibitivamente
especialmente metaheurísticas. Essas aplicações têm grande de possíveis soluções. Em problemas dessa forma,
culminado na criação de uma nova e promissora área de são exigidas soluções automatizadas que possam
pesquisa na computação, chamada de Search-based eficientemente tratar os diversos aspectos relacionados ao
Software Engineering (SBSE). Este trabalho tem como problema. Dessa forma, a resolução de problemas deste
objetivo principal apresentar o estágio atual de pesquisa tipo complementa a utilização das técnicas convencionais.
em SBSE, especificamente acerca da aplicação de Como exemplo, tomemos o processo de estimativa de
metaheurísticas em problemas da Engenharia de software. O objetivo deste processo é estimar valores para
Software. Inicialmente, as características dessa aplicação diversas áreas e fases durante o desenvolvimento de
são apresentadas. Em seguida, o trabalho destaca os software. Apesar de existirem técnicas específicas para tal
resultados conseguidos em três áreas: Engenharia de propósito [6][7], valores mais aproximados de estimativa
Requisitos, Teste de Software e Estimativa de Software. só podem ser encontrados se fatores como histórico de
Ao final, é apresentada uma tabela que indica outros estimativas e outros parâmetros forem modelados e
trabalhos em diversas áreas da Engenharia de Software. analisados matematicamente. Outro exemplo de problema
não completamente resolvido pelas técnicas
convencionais é a atividade de teste de software. Na
1 Introdução literatura são definidas formas de realização de diversas
técnicas de teste, indicando fases e critérios. Uma questão
A relevância da Engenharia de Software é notável para fundamental não coberta neste cenário trata da escolha
o importante estágio atual de desenvolvimento de dos casos de teste que serão usados durante a execução
sistemas. Desde a sua criação na década de 1970, foram dos mesmos. A seleção destes casos de testes não pode
conseguidos importantes avanços na qualidade do ser facilmente descrita por meio de regras textuais ou
software produzido devido à pesquisa em modelos, passos escritos em documentos. Na verdade, a modelagem
normas e metodologias [1] de suporte ao desenvolvimento matemática de parâmetros e critérios de satisfação em
de software. Estes métodos, como [2][3][4] entre outros, relação a determinadas características se mostra mais
foram criados com base no conhecimento de especialistas adequada.
e funcionam como guias, informando o que deve ser feito Neste trabalho, os problemas da Engenharia de
durante as fases do desenvolvimento. O argumento Software discutidos são modelados como problemas de
fundamental da aplicação desse ferramental é o de que a otimização de alta complexidade. Nesta classe de
qualidade do produto final é fortemente relacionada à problema, o objetivo é otimizar (maximizar ou minimizar)
qualidade do processo de produção [5]. Dessa forma, a uma função ou grupo de funções de satisfação. As
aplicação desses métodos pode acontecer nos mais variáveis que definem a(s) função(ões) estão sujeitas a
diversos aspectos relacionados ao processo de restrições, ou seja, as variáveis devem satisfazer um
desenvolvimento, incluindo: Planejamento de Projeto, conjunto de equações definidas de acordo com cada
Análise de Requisitos, Documentação, Gerência de instância do problema. Algoritmos exatos (isto é, que
Processo e Teste de Software.
determinam a melhor solução, caso exista) podem ser empresas de desenvolvimento. Em seguida, uma seção
utilizados para a determinação da solução em problemas apresenta o estágio recente da pesquisa no campo. Para
desse tipo de otimização. O notável Método Simplex, por ilustrar o estado atual da pesquisa, três áreas da
exemplo, é usado em problemas onde existe apenas uma Engenharia de Software são abordadas, a saber:
função de satisfação. Além disso, a própria função de Engenharia de Requisitos, Teste de Software, e Estimativa
satisfação e as funções das restrições devem ser do tipo de Software. Ao final, trabalhos de SBSE nessas e em
linear e apresentar continuidade. Todavia, alguns outras áreas da Engenharia de Software são indicados em
problemas de otimização, incluindo muitos presentes na uma tabela. Por fim, a conclusão apresenta considerações
Engenharia de Software, não se enquadram nessas finais sobre o cenário geral de aplicações de
características. Nestes casos, a resolução pode ser metaheurísticas na Engenharia de Software e indica
realizada por meio de algoritmos especiais denominados trabalhos futuros.
metaheurísticas.
O termo metaheurísticas, introduzido em [8], 2 Aplicação de metaheurísticas em
representa um conjunto de algoritmos heurísticos engenharia de software
genéricos estudados desde a década de 1970. Estes
métodos se baseiam em ideias de diversas fontes para A Engenharia de Software, como uma disciplina de
realizar a busca da solução para problemas de otimização. engenharia, é um campo onde existem problemas para os
Algumas metaheurísticas amplamente difundidas são: quais a solução pode ser determinada matematicamente
Têmpera Simulada, Algoritmos Genéticos e GRASP [9]. Em geral, estes problemas são caracterizados pela
(Greedy Randomized Adaptive Search Procedure). busca da solução apropriada em um espaço de possíveis
Diferentemente de algoritmos clássicos como o Simplex, a soluções. As atividades de seleção de casos de teste e
solução retornada por uma metaheurística não é seleção de requisitos são exemplos de problemas desse
necessariamente a melhor solução para o problema. tipo na Engenharia de Software. Em geral, os problemas
Contudo, o uso destes métodos mostra-se oportuno em dessa forma são caracterizados por apresentarem uma
problemas com mais de uma função de satisfação elevada quantidade de possibilidades e complexidade.
(problemas multiobjetivo) e ainda em problemas para os Assim, a resolução desses problemas (o processo de
quais não é conhecido algum algoritmo exato que finalize busca) deve ser feita por meio de um método
a execução em tempo prático. Além disso, as automatizado e não exaustivo. Através disso, as pessoas
metaheurísticas são métodos que apresentam maior envolvidas com o processo de desenvolvimento podem se
generalidade em relação a outros algoritmos. Tal grau de preocupar com atividades onde a capacidade e
generalidade ocorre pois estes algoritmos podem ser inteligência humana são mais convenientes [10][11].
aplicados a uma quantidade maior de problemas. De fato, O primeiro passo nessa direção aconteceu em 1976
inúmeros trabalhos apresentam resultados da aplicação [12]. Neste trabalho, o objetivo era gerar dados de teste a
desses métodos em diversos tipos de problemas, incluindo partir de maximização numérica. Contudo, foi em um
os de Engenharia de Software. segundo momento, mais precisamente em 2001, que o
Neste trabalho a aplicação de metaheurísticas em trabalho [13] retomou intensamente as pesquisas nesse
problemas típicos da Engenharia de Software é exposta e sentido, inclusive criando o termo “Search-based Software
discutida. Através disso, deseja-se atingir três objetivos Engineering (SBSE)” utilizado desde então pela
principais: tornar esse ramo conhecido por empresas comunidade científica. Outras contribuições dos
desenvolvedoras de software, mostrando as aplicações pesquisadores desse importante trabalho são [14] e [15].
práticas e seus resultados; apresentar a área para Desde então, diversos pesquisadores em parceria com
engenheiros de software, que com o conhecimento engenheiros de software estão modelando e resolvendo
especialista podem adicionar sua experiência; e servir diversos problemas da Engenharia de Software utilizando
como base de conhecimento e guia para pesquisadores técnicas de busca, inclusive metaheurísticas.
interessados no campo, funcionando como um panorama A SBSE complementa as técnicas convencionais da
geral da área e indicando os avanços que ainda podem ser Engenharia de Software. Os avanços conseguidos nas
feitos. Em conjunto, os objetivos pretendem apresentar e últimas décadas em teoria e prática nesta disciplina
promover a integração entre a pesquisa acadêmica e a continuam válidos. No caso, o que acontece é que alguns
prática da Engenharia de Software. Através disso, espera- problemas que antes não eram completamente resolvidos
se dar uma visão geral deste campo de pesquisa e de seu ou sequer tratados pelas metodologias e métodos
potencial campo de aplicação. convencionais passam a ser estudados e solucionados.
O desenvolvimento do texto se inicia pela Além disso, esta nova visão da Engenharia de Software
caracterização da aplicação de metaheurísticas em apresenta resultados mais aplicáveis em diferentes
Engenharia de Software. A partir disso, são destacados os empresas.
fatores que favorecem a utilização desses métodos pelas
Freitas, F. G.; Maia, C. L. B.; Coutinho, D. P.; Campos, G. A. L.; Souza, J. T.; Aplicação de Metaheurísticas em
Problemas
da Engenharia de Software: Revisão de Literatura. II Congresso Tecnológico Infobrasil (Infobrasil 2009), Fortaleza,
2009.
3 Exemplos de aplicação de metaheurísticas 3.2 Teste de software
em engenharia de software
A aplicação de metaheurísticas na área de Teste de
Esta seção apresenta o estado atual de aplicação de Software tem tentado solucionar os seguintes problemas:
metaheurísticas em problemas da Engenharia de Software. priorização de casos de teste, seleção de casos de teste e
Três áreas dessa disciplina são destacadas: Engenharia de geração de dados de teste para teste unitário. Este último
Requisitos, Teste de Software e Estimativa de Software. problema é o que apresenta maior número de trabalhos.
Após a apresentação dos resultados conseguidos nessas Os dois primeiros problemas são mais comuns em
áreas, uma tabela final referencia trabalhos em algumas testes de regressão. Esta situação acontece após a
das áreas da Engenharia de Software atacadas pela SBSE. realização de uma manutenção no sistema que gere
alterações em funcionalidades que já estavam em uso pelo
3.1 Engenharia de requisitos cliente. O ideal neste cenário é testar todo o sistema
novamente, visto que algum impacto gerado no sistema
A Engenharia de Requisitos é definida como a área pela manutenção pode não ser identificado a princípio. No
que trata da definição dos requisitos, incluindo a entanto, como geralmente não há tempo ou recursos
satisfação do cliente e também seu entendimento. O suficientes para re-testar todo o sistema, é necessário
objetivo da Engenharia de Requisitos é entender as selecionar os casos de teste que serão executados. Cinco
necessidades dos clientes e possibilitar a implementação algoritmos de seleção de casos de teste são comparados
dessas necessidades no software desenvolvido. em [19]: Têmpera Simulada, Reduction [20], Slicing
Um problema bastante difundido trata da seleção do [21], Dataflow [22], e Firewall [19], tendo como função
conjunto de requisitos que deve estar presente para a de satisfação a cobertura de código obtida pelos casos de
próxima iteração do desenvolvimento. A modelagem teste. Em [23], é introduzido o conceito de Pareto para
matemática de tal problema foi inicialmente proposta por resolução deste problema, onde duas versões do problema
Bagnalli [16] em 2001, sendo denominado 'The Next são usadas: uma combina duas funções de satisfação
Release Problem' (Problema do Próximo Release, em uma (cobertura de código e custo) e a outra com três funções
tradução livre). No artigo, o problema foi caracterizado de satisfação (cobertura de código, custo e histórico de
por uma busca de quais características devem ser falhas). A eficiência das técnicas metaheurísticas foi
selecionadas em relação a variáveis, dependência entre comprovada na resolução desse problema.
requisitos e prioridade de requisitos, entre outros. A figura A atividade de priorização de casos de teste significa
1 ilustra esta situação, onde cada ‘r’ corresponde a um ordenar os casos de teste de modo que a cobertura
requisito e as caixas com ‘customer’ representam clientes: atingida seja máxima quando for necessário parar a
execução de testes, sem executar todos que estavam
previstos. Assim, os conjuntos de casos de teste que
oferecem maior cobertura são executados primeiro.
Algoritmos gulosos estão sendo utilizados para encontrar
uma ordenação ótima [24], bem como técnicas
metaheurísticas, já que esses algoritmos encontram
soluções ótimas ou próximas da ótima [25]. Os trabalhos
[26] e [23] demonstram a efetividade da metaheurística
Algoritmos Genéticos na priorização de casos de teste.
Em [27] foi demonstrada a efetividade da metaheurística
GRASP neste problema.
A geração de dados de teste é o processo de
Figura 1. “The Next Release Problem” [16] identificação de dados de entrada válidos para um
programa de acordo com os critérios de teste. Quanto
Diversos outros trabalhos apresentam resultados para maior e mais complexo um programa, mais difícil é gerar
este problema. Em [16] foram utilizadas as tais dados de entrada. Em [28] é proposto um gerador de
metaheurísticas Têmpera Simulada, GRASP, entre outros, dados de teste para o qual o programa a ser testado é a
sendo que a Têmpera Simulada se mostrou mais eficiente. entrada. O gráfico de controle de fluxo do programa é
Em [17], a metaheurística Algoritmos Genéticos foi gerado, os caminhos possíveis são percorridos, e então os
utilizada. Em [18] uma abordagem multiobjetivo (mais de dados necessários para percorrer os caminhos possíveis
uma função de satisfação) do problema é também são gerados. Em [29][30][31] a aplicação de algoritmos
resolvida com essa metaheurística. Nesses estudos foi genéticos na geração de casos de teste é apresentada. O
possível perceber que metaheurísticas indicam soluções survey [32] cita vários trabalhos realizados em geração de
adequadas aos problemas. dados de teste.
Freitas, F. G.; Maia, C. L. B.; Coutinho, D. P.; Campos, G. A. L.; Souza, J. T.; Aplicação de Metaheurísticas em
Problemas
da Engenharia de Software: Revisão de Literatura. II Congresso Tecnológico Infobrasil (Infobrasil 2009), Fortaleza,
2009.
3.3 Estimativa de software 3.4 Tabela final

A atividade de estimativa de software é uma A tabela a seguir indica trabalhos de aplicação de


importante atividade que ocorre ainda na fase de metaheurísticas em diversas áreas da Engenharia de
planejamento do projeto. Sua importância se dá devido ao Software. Como é possível perceber, tal aplicação pode
fato de os dados (as estimativas) conseguidos a partir acontecer em diversos momentos durante o
desta atividade serem aplicados durante todo o desenvolvimento de software. De fato, diversos trabalhos
desenvolvimento, desde o próprio planejamento até o documentam a utilização de metaheurísticas em
acompanhamento do projeto. Dada a sua relevância, Engenharia de Software (consultar [37]). Na Tabela 1, a
vários trabalhos são feitos nessa área na tentativa de primeira coluna traz áreas da Engenharia de Software. A
encontrar técnicas eficazes de estimativas de software segunda coluna informa os principais problemas que são
[6][7]. atacados. Na terceira coluna estão indicadas as referências
O primeiro parâmetro a ser definido trata do tamanho para os trabalhos.
do software. A partir desta variável é que se torna possível
realizar outras estimativas importantes, como esforço Tabela 1. Trabalhos de SBSE em diversas áreas
necessário e tempo de projeto, por exemplo. Em [33] é da engenharia de software
realizada uma aplicação de programação genética (uma
extensão sobre algoritmos genéticos) na definição de Análise de Requisitos [44]
Engenharia de
estimativa de tamanho de software. Neste estudo, foram Requisitos [16]
derivadas equações ajustáveis aos dados de projetos Seleção de Requisitos
[17]
anteriores, processo denominado “regressão simbólica”.
Dessa forma, tais equações representariam o Seleção de Casos de [19]
comportamento do sistema, permitindo a estimativa sobre Teste [23]
seu tamanho. A idéia seguida foi: gerar equações iniciais Priorização de Casos [26]
que relacionem as variáveis de entrada do projeto ao Teste de de Teste [27]
tamanho do software, e a partir da seleção entre elas de Software
acordo com uma função de satisfação, escolher a mais [28]
adequada. O estudo foi realizado em 46 projetos, Geração de Dados de [29]
totalizando mais de 100 mil linhas de código. Como Teste [30]
resultado, o autor indica que as equações derivadas a [31]
partir da programação genética apresentaram ótimos Estimativa de tamanho [33]
resultados com os dados utilizados no estudo, gerando
valores de estimativa similares ou mesmo melhores que Estimativa de [34]
uma clássica técnica denominada regressão linear Software Estimativa de custo de [35]
múltipla. software [36]
Técnicas de busca também foram utilizadas na [38]
estimativa de custo. Em [34] a estratégia foi utilizar
Planejamento [39]
atributos conhecidos de projetos anteriores semelhantes na Alocação de Recursos
de Projeto [40]
tentativa de encontrar atributos desconhecidos do projeto
sob processo de estimativa. Assim, a atividade tenta Otimização de
definir quais projetos são semelhantes, a partir da seleção Paralelização [41]
Código-fonte
de atributos. O estudo foi realizado no conjunto de dados
Re-engenharia de
‘Finnish’, que contém dados de 407 projetos descritos em [42]
Manutenção Software
90 atributos. A técnica de busca utilizada foi a Hill-
de Software Automated
climbing que nesse estudo apresentou o melhor resultado [42]
em comparação com uma técnica puramente randômica Maintenance
também avaliada. Engenharia de
Outros exemplos são [35] onde é utilizada Software Desenvolvimento de
[45]
programação genética para a definição de funções que orientada a Software
representem o custo de software e [36] onde é mostrado Serviço
que a função gerada pela programação genética apresenta Alocação em heap [46]
melhoria em relação a outras técnicas (o estudo foi feito Otimização de
com uma base de dados Desharnais com dados de 81 Compilador Tamanho de código [47]
projetos de software).
Freitas, F. G.; Maia, C. L. B.; Coutinho, D. P.; Campos, G. A. L.; Souza, J. T.; Aplicação de Metaheurísticas em
Problemas
da Engenharia de Software: Revisão de Literatura. II Congresso Tecnológico Infobrasil (Infobrasil 2009), Fortaleza,
2009.
4 Conclusão e trabalhos futuros [11] M. Harman e B.F Jones, “The SEMINAL workshop:
reformulating software engineering as a metaheuristic search
problem”, ACM SIGSOFT Software Engineering Notes,
A aplicação de metaheurísticas em problemas da Volume 26, Issue 6, Novembro de 2001, PP. 62-66.
Engenharia de Software faz parte do campo relativamente
[12] W., Miller, D.L., Spooner, “Automatic generation of
novo denominado Search-based Software Engineering floating-point test data”, IEEE Transactions on Software
(SBSE). Os recentes avanços neste campo indicam que Engineering, IEEE, 1976, pp. 223-226.
existe grande potencial de muitos problemas da [13] M., Harman, B.F., Jones, “Search-based software
Engenharia de Software serem resolvidos de forma engineering”, Information and Software Technology, 2001, pp.
racional e automatizada. Nesse sentido, essa nova forma 833-839.
de visualização dos problemas da Engenharia de Software [14] M. Harman, R.M. Hierons, and M. Proctor, “A new
permite a resolução de problemas antes sem solução. representation and crossover operator for search-based
Os trabalhos apresentados neste artigo mostram uma optimization of software modularization”, GECCO ’02:
parcela da grande quantidade de pesquisa que foi e está Proceedings of the Genetic and Evolutionary Computation
sendo desenvolvida na SBSE. Estes trabalhos indicam que Conference, Morgan Kaufmann Publishers Inc., San Francisco,
essa abordagem pode ser utilizada em diversas fases do CA, USA, 2002, pp. 1351–1358.
desenvolvimento do software. De fato, problemas de [15] B. Jones, H.-H. Sthamer, and D. Eyres, “Automatic
outras áreas da Engenharia de Software podem ser structural testing using genetic algorithms”, Software
Engineering Journal, 1996, pp. 299–306.
modelados e solucionados com o uso de metaheurísticas.
A partir desse estudo de revisão da literatura pretende- [16] A. Bagnall, V. Rayward-Smith, and L. Whittley, “The next
release problem”, Information and Software Technology, pp.
se indicar o estágio atual da área. Como trabalhos futuros,
883–890.
as seguintes atividades se apresentam: modelagem de
[17] D. Greer, and G. Ruhe, “Software release planning: an
problemas de diversas áreas da Engenharia de Software e evolutionary and iterative approach”, Information and Software
aplicação de metaheurísticas especificamente em algumas Technology, 2004, pp. 243–253.
dessas áreas, em especial na área de Teste de Software. [18] F.C. Torres, “Uma Nova Abordagem Baseada em
Otimização Multi-Objetivo para o Planejamento de Releases em
Referências Projetos de Software”, Monografia de Conclusão de Curso,
Universidade Estadual do Ceará, 2008.
[1] T. Dyba, "An empirical investigation of the key factors for [19] N. Mansour, R. Bahsoon, and G. Baradhi, “Empirical
success in software process improvement", IEEE Transactions Comparison of Regression Test Selection Algorithms”, The
on Software Engineering, IEEE, May 2005, pp. 410-424. Journal of Systems and Software 57, 2001, pp. 79-90.
[2] Software Engineering Institute, Capability Maturity Model [20] M.J. Harrold, R. Gupta, and M.L. Soffa, “A Methodology
Integration - CMMI, 2005. for Controlling the Size of a Test Suite”, ACM Transactions on
[3] SOFTEX, Melhoria do Processo de Software Brasileiro – Software Engineering and Methodology, Vol. 2, Issue 3, 1993,
Guia geral – MPS.BR, 2006. pp. 270-285
[4] Project Management Institute, A Guide to the Project [21] H. Agrawal, J.R. Horgan, E.W. Krauser and S.A. London,
Management Body of Knowledge – PMBOK Guide, 2000. “Incremental Regression Testing”, Conference on Software
Maintenance, 1993, pp. 348-357.
[5] A. Fuggetta, “Software process: a roadmap”, The Future of
Software Engineering, A. Finkelstein (ed), 2000. [22] R. Gupta, M.J. Harrold, and M.L. Soffa, “Program Slicing-
Based Regression Testing Techniques”, Software Testing,
[6] Laird, L.M., M.C. Brennan, Software Measurement and
Verification and Reliability, Vol 6, Number 2, 1996, pp. 83-
Estimation, Wiley-Interscience, 2006.
111.
[7] Pfleeger, S.L., F. Wu, e R. Lewis, Software Cost Estimation
[23] S. Yoo, and M. Harman, “Pareto Efficient Multi-Objective
and Sizing Methods: Issues, and Guidelines, Rand Corporation,
Test Case Selection”, Proceedings of the International
Location, 2005.
Symposium on Software Testing and Analysis, 2007, pp. 140-
[8] F. Glover, “Future paths for integer programming and links 150.
to artificial intelligence”, Computer Operational Research 13,
[24] G. Rothermel, R. Untch, C. Chu, and M.J. Harrold,
pp. 533-549.
“Prioritizing Test Cases for Regression Test”, IEEE
[9] M. Harman, “Search Based Software Engineering”, Transactions on Software Engineering, vol. 7, no. 10, 2001, pp.
Workshop on Computational Science in Software Engineering, 929-948.
2006.
[25] Glover, F., and G. Kochenberger, Handbook of
[10] J. Clarke, J.J. Dolado, M. Harman, R. Hierons, B. Jones, Metaheuristics, Springer, 1st edition, 2003.
M. Lumkin, B. Mitchell, S. Mancoridis, K. Rees, M. Roper
[26] K. Walcott, M.L. Soffa, G. Kapfhammer, and R. Roos,
and M. Shepperd, “Reformulating software engineering as a
“Time-Aware Test Suite Prioritization”, Proceedings of the
search problem”, IEE Proceedings Software, Vol. 150, No. 3,
International Symposium on Software Testing and Analysis,
June 2003, PP. 161-175.
2006, pp. 1-12.
Freitas, F. G.; Maia, C. L. B.; Coutinho, D. P.; Campos, G. A. L.; Souza, J. T.; Aplicação de Metaheurísticas em
Problemas
da Engenharia de Software: Revisão de Literatura. II Congresso Tecnológico Infobrasil (Infobrasil 2009), Fortaleza,
2009.
[27] C. Maia, R. Carmo, G. Campos, and J. Souza, “A Reactive [39] G. Antoniol, M. Di Penta, and M. Harman, “A robust
GRASP Approach for Regression Test Case Prioritization”, XL search–based approach to project management in the presence
Simpósio Brasileiro de Pesquisa Operacional, 2008. of abandonment, rework, error and uncertainty”, 10th
[28] B. Korel, “Automated Software Test Data Generation”, International Software Metrics Symposium (METRICS 2004),
Proceedings of IEEE Transactions on Software Engineering, IEEE Computer Society Press, Los Alamitos, California, USA,
Vol. 16, Number 8, 1990, pp. 870-879. Sept. 2004, pp. 172–183.
[29] C.C. Michael, G. McGraw, and M. Schatz, “Generating [40] G. Antoniol, M.D. Penta, and M. Harman. “Search-based
Software Test Data by Evolution”, Proceedings of IEEE techniques applied to optimization of project planning for a
Transactions on Software Engineering, Vol. 27, Number 12, massive maintenance project”, ICSM ’05: Proceedings of the
2001, pp. 1085-1110. 21st IEEE International Conference on Software Maintenance,
[30] I. Hermadi, and M.A. Ahmed, “Genetic Algorithm Based IEEE Computer Society, Washington, DC, USA, 2005, pages
Test Data Generator”, CEC’03 - The 2003 Congress on 240–249.
Evolutionary Computation, 2003. [41] K.P. Williams, “Evolutionary Algorithms for Automatic
[31] S. Khor, and P. Grogono, “Using a Genetic Algorithm and Parallelization”, PhD thesis, University of Reading, UK,
Formal Concept Analysis to Generate Branch Coverage Test Department of Computer Science, Sept. 1998.
Data Automatically”, 19th International Conference on [42] C. Ryan, “Automatic re-engineering of software using
Automated Software Engineering, 2004, pp. 346-349. genetic programming”, Kluwer Academic Publishers, 2000.
[32] P. McMinn, “Search-based Software Test Data Generation: [43] M. O’Keeffe and M. O’Cinneide, “Search-based software
A Survey”, Software Testing, Verification and Reliability, 2004, maintenance”, Conference on Software Maintenance and
pp. 105-156. Reengineering (CSMR’06), Mar. 2006, pp. 249–260.
[33] J. Dolado, “A validation of the component-based method [44] Y. Zhang, A.Finkelstein, and M. Harman, “Search based
for software size estimation”, IEEE Transactions on Software requirements optimisation: Existing work and challenges”,
Engineering, 2000, pp. 1006–1021. RefsQ’08 – International Working Conference on Requirements
[34] C. Kirsopp, M.J. Shepperd, and J. Hart, “Search heuristics, Engineering: Foundation for Software Quality, 2008.
case-based reasoning and software project effort prediction”, [45] G. Canfora, M.D. Penta, R. Esposito, and M.L. Villani,
GECCO ’02: Proceedings of the Genetic and Evolutionary “An approach for qoS-aware service composition based on
Computation Conference, Morgan Kaufmann Publishers Inc, genetic algorithms”, Genetic and Evolutionary Computation
San Francisco, CA, USA, 2002, pp. 1367-1374. Conference, GECCO 2005, ACM 2005, H.-G. Beyer and U.-M.
[35] J.J. Dolado, “On the problem of the software cost O’Reilly, editors, Washington DC, USA, June 25- 29, pp. 1069–
function”, Information and Software Technology, Jan. 2001, pp. 1075, 2005.
61–72. [46] M. Cohen, S.B. Kooi, and W. Srisa-an, “Clustering the
[36] C.J. Burgess and M.Lefley, “Can genetic programming heap in multi-threaded applications for improved garbage
improve software effort estimation? A comparative evaluation”, collection”, GECCO 2006: Proceedings of the 8th annual
Information and Software Technology, Dec. 2001, pp. 863–873. conference on Genetic and evolutionary computation, volume 2,
ACM Press, Seattle, Washington, USA, 8-12 July 2006, pp.
[37] M. Harman, “The Current State and Future of Search Based 1901–1908.
Software Engineering”, International Conference on Software [47] D. Fatiregun, M. Harman, and R. Hierons, “Search-based
Engineering - Future of Software Engineering, IEEE Computer amorphous slicing”, 12th International Working Conference on
Society Washington, DC, USA, 2007, pp. 342-357. Reverse Engineering (WCRE 05), Carnegie Mellon University,
[38] J. Aguilar-Ruiz, I. Ramos, J.C. Riquelme, and M. Toro, Pittsburgh, Pennsylvania, USA, Nov. 2005, pp. 3–12.
“An evolutionary approach to estimating software development
projects”, Information and Software Technology, Dec. 2001, pp.
875–882.