Page 2

determinam a melhor solução, caso exista) podem ser utilizados para a determinação da solução em problemas desse tipo de otimização. O notável Método Simplex, por exemplo, é usado em problemas onde existe apenas uma função de satisfação. Além disso, a própria função de satisfação e as funções das restrições devem ser do tipo linear e apresentar continuidade. Todavia, alguns problemas de otimização, incluindo muitos presentes na Engenharia de Software, não se enquadram nessas características. Nestes casos, a resolução pode ser realizada por meio de algoritmos especiais denominados metaheurísticas. O termo metaheurísticas, introduzido em [8], representa um conjunto de algoritmos heurísticos genéricos estudados desde a década de 1970. Estes métodos se baseiam em ideias de diversas fontes para realizar a busca da solução para problemas de otimização. Algumas metaheurísticas amplamente difundidas são: Têmpera Simulada, Algoritmos Genéticos e GRASP (Greedy Randomized Adaptive Search Procedure). Diferentemente de algoritmos clássicos como o Simplex, a solução retornada por uma metaheurística não é necessariamente a melhor solução para o problema. Contudo, o uso destes métodos mostra-se oportuno em problemas com mais de uma função de satisfação (problemas multiobjetivo) e ainda em problemas para os quais não é conhecido algum algoritmo exato que finalize a execução em tempo prático. Além disso, as metaheurísticas são métodos que apresentam maior generalidade em relação a outros algoritmos. Tal grau de generalidade ocorre pois estes algoritmos podem ser aplicados a uma quantidade maior de problemas. De fato, inúmeros trabalhos apresentam resultados da aplicação desses métodos em diversos tipos de problemas, incluindo os de Engenharia de Software. Neste trabalho a aplicação de metaheurísticas em problemas típicos da Engenharia de Software é exposta e discutida. Através disso, deseja-se atingir três objetivos principais: tornar esse ramo conhecido por empresas desenvolvedoras de software, mostrando as aplicações práticas e seus resultados; apresentar a área para engenheiros de software, que com o conhecimento especialista podem adicionar sua experiência; e servir como base de conhecimento e guia para pesquisadores interessados no campo, funcionando como um panorama geral da área e indicando os avanços que ainda podem ser feitos. Em conjunto, os objetivos pretendem apresentar e promover a integração entre a pesquisa acadêmica e a prática da Engenharia de Software. Através disso, esperase dar uma visão geral deste campo de pesquisa e de seu potencial campo de aplicação. O desenvolvimento do texto se inicia pela caracterização da aplicação de metaheurísticas em Engenharia de Software. A partir disso, são destacados os fatores que favorecem a utilização desses métodos pelas

empresas de desenvolvimento. Em seguida, uma seção apresenta o estágio recente da pesquisa no campo. Para ilustrar o estado atual da pesquisa, três áreas da Engenharia de Software são abordadas, a saber: Engenharia de Requisitos, Teste de Software, e Estimativa de Software. Ao final, trabalhos de SBSE nessas e em outras áreas da Engenharia de Software são indicados em uma tabela. Por fim, a conclusão apresenta considerações finais sobre o cenário geral de aplicações de metaheurísticas na Engenharia de Software e indica trabalhos futuros.

2 Aplicação de metaheurísticas engenharia de software

em

A Engenharia de Software, como uma disciplina de engenharia, é um campo onde existem problemas para os quais a solução pode ser determinada matematicamente [9]. Em geral, estes problemas são caracterizados pela busca da solução apropriada em um espaço de possíveis soluções. As atividades de seleção de casos de teste e seleção de requisitos são exemplos de problemas desse tipo na Engenharia de Software. Em geral, os problemas dessa forma são caracterizados por apresentarem uma elevada quantidade de possibilidades e complexidade. Assim, a resolução desses problemas (o processo de busca) deve ser feita por meio de um método automatizado e não exaustivo. Através disso, as pessoas envolvidas com o processo de desenvolvimento podem se preocupar com atividades onde a capacidade e inteligência humana são mais convenientes [10][11]. O primeiro passo nessa direção aconteceu em 1976 [12]. Neste trabalho, o objetivo era gerar dados de teste a partir de maximização numérica. Contudo, foi em um segundo momento, mais precisamente em 2001, que o trabalho [13] retomou intensamente as pesquisas nesse sentido, inclusive criando o termo “Search-based Software Engineering (SBSE)” utilizado desde então pela comunidade científica. Outras contribuições dos pesquisadores desse importante trabalho são [14] e [15]. Desde então, diversos pesquisadores em parceria com engenheiros de software estão modelando e resolvendo diversos problemas da Engenharia de Software utilizando técnicas de busca, inclusive metaheurísticas. A SBSE complementa as técnicas convencionais da Engenharia de Software. Os avanços conseguidos nas últimas décadas em teoria e prática nesta disciplina continuam válidos. No caso, o que acontece é que alguns problemas que antes não eram completamente resolvidos ou sequer tratados pelas metodologias e métodos convencionais passam a ser estudados e solucionados. Além disso, esta nova visão da Engenharia de Software apresenta resultados mais aplicáveis em diferentes empresas.

Profile for Fabricio Freitas

Aplicação de Metaheurísticas em Problemas da Engenharia de Software: Revisão de Literatura (SBSE)  

Search-based Software Engineering Otimização em Engenharia de Software http://goesuece.yolasite.com/resources/Search-based%20Software%20Eng...

Aplicação de Metaheurísticas em Problemas da Engenharia de Software: Revisão de Literatura (SBSE)  

Search-based Software Engineering Otimização em Engenharia de Software http://goesuece.yolasite.com/resources/Search-based%20Software%20Eng...

Advertisement