2 research outputs found
The role of Artificial Intelligence in Software Engineering
There has been a recent surge in interest in the application of Artificial Intelligence (AI) techniques to Software Engineering (SE) problems. The work is typified by recent advances in Search Based Software Engineering, but also by long established work in Probabilistic reasoning and machine learning for Software Engineering. This paper explores some of the relationships between these strands of closely related work, arguing that they have much in common and sets out some future challenges in the area of AI for SE. © 2012 IEEE
Algoritmos baseados em estimadores de distribuição e técnicas da otimização com muitos objetivos aplicados na refatoração automática de software
Search Based Software Engineering (SBSE) is a research area in which optimization algorithms
are applied to solve Software Engineering problems. SBSE area comprises several sub-areas,
among them, Search Based Software Refactoring (SBSR), which deals with automatic software
refactoring processes. One of the problems investigated in SBSR is the determination of a
sequence of refactorings that provides code improvement, according to predetermined criteria.
To model this problem as an optimization problem, it is necessary to define objective functions.
In this case, the objective functions are quality metrics used in Software Engineering. Since
there are many metrics to consider, the problem of determining sequences of refactorings is a
Many-Objective Combinatorial Optimization Problem. Many-Objective optimization comprises
a set of algorithms and techniques used to solve problems that take into account more than three
objectives. In order to solve problems of this nature, new methods are proposed to reduce the
deterioration of the search as the number of objectives increases, among them, the multi-objective
evolutionary algorithms, which include the Estimation of Distribution Algorithms (EDA). However,
despite having good results in combinatorial optimization problems the investigation of
EDA in the context of optimization with many objectives are still incipient. The goal of this work
is to investigate the use of EDA in the automatic selection of a sequence of refactorings. In order
to achieve this goal, a new EDA is proposed, which incorporates many-objective optimization
techniques existing in literature. The proposed algorithm was validated and added to a previously
implemented automatic software refactoring framework. Furthermore, a set of experiments was
conducted to evaluate the proposed algorithm. The results obtained by the proposed algorithm
were compared to the results obtained by algorithms existing in the literature.A Engenharia de Software Baseada em Busca, conhecida como SBSE (do inglês, Search Based
Software Engineering), é uma área que usa algoritmos de otimização para solucionar problemas
da Engenharia de Software. A área de SBSE compreende diversas subáreas, dentre estas,
encontra-se a Refatoração de Software Baseada em Busca (SBSR, do inglês Search Based
Software Refactoring), que trata de processos de refatoração automática de software utilizando
algoritmos de otimização. Um dos problemas encontrados na SBSR é a determinação de sequências
de refatorações com o objetivo da melhoria do código, de acordo com critérios previamente
determinados. Para modelar este problema como um problema de otimização é necessário que
sejam definidas funções objetivo. Nesse caso, as funções objetivo são métricas de qualidade
utilizadas na Engenharia de Software. Como são muitas as métricas a se considerar, o problema
de determinação de sequências de refatorações é naturalmente um Problema de Otimização
combinatório com Muitos Objetivos. A otimização com muitos objetivos compreende um conjunto
de algoritmos e técnicas que buscam resolver problemas de otimização com mais de três
funções objetivo. Para resolver problemas dessa natureza, são propostos novos métodos que
visam reduzir a deterioração da busca à medida que o número de objetivos aumenta. Dentre
eles, destacam-se os algoritmos evolucionários multiobjetivo, que incluem os Estimation of
Distribution Algorithms (EDA). No entanto, apesar de ter bons resultados em problemas de
otimização combinatória, os EDA ainda são pouco explorados no contexto da otimização com
muitos objetivos. O objetivo deste trabalho é investigar o uso dos EDA na seleção automática de
uma sequência de refatorações. Para que esse objetivo seja atingido, propõe-se um novo EDA,
no qual são incorporadas técnicas de otimização de muitos objetivos existentes na literatura.
O algoritmo proposto foi validado e adicionado a um framework de refatoração automática
de software previamente implementado. Após a condução de um conjunto de experimentos,
os resultados obtidos pelo algoritmo proposto foram comparados aos resultados obtidos pelos
algoritmos encontrados na literatura aplicados no contexto de SBSR.São Cristóvão, S