Spelling suggestions: "subject:"engenharia dde software baseado em busca"" "subject:"engenharia dee software baseado em busca""
1 |
[en] IDENTIFICATION AND REFACTORING OF DESIGN PROBLEMS IN SOFTWARE SYSTEMS / [pt] IDENTIFICAÇÃO E REFATORAÇÃO DE PROBLEMAS DE PROJETO EM SISTEMAS DE SOFTWAREWILLIAN NALEPA OIZUMI 27 October 2022 (has links)
[pt] Sistemas impactados por Problemas de Projeto (PPs) podem se tornar
difíceis de manter e evoluir. A identificação de PPs pode ocorrer por
meio de múltiplos sintomas, tais como code smells. Após tal identificação,
pode-se remover os PPs por meio de refatorações. No entanto, decidir onde
e como refatorar é uma tarefa desafiadora. Assim, técnicas de recomendação
de refatoração têm sido propostas. Apesar disso, ainda há pouco consenso
sobre quais requisitos devem ser atendidos por elas. Nesta tese, estamos
propondo quatro requisitos empiricamente identificados que tais técnicas
devem seguir. Primeiro, cada PP geralmente está relacionado a vários tipos
de sintomas no código-fonte e eles devem ser considerados juntos para gerar
recomendações. Além disso, uma técnica de recomendação deve permitir a
seleção de contextos específicos para refatoração. Quarto, também deve-se
considerar as funcionalidades modificadas para criar recomendações úteis.
Finalmente, os desenvolvedores nem sempre conduzem as refatorações mais
eficazes na prática, muitas vezes inconscientemente, resultando na remoção
incompleta de PPs. Assim, eles precisam de assistência para remover
os PPs. Existem apenas técnicas que atendem parcialmente aos requisitos
mencionados. Sendo assim, nós propomos a técnica OrganicRef. OrganicRef
destina-se a ajudar os desenvolvedores na remoção de PPs em seus contextos
de interesse. OrganicRef encontra as funcionalidades dos elementos
de código usando um algoritmo de modelagem de tópicos. Em seguida, ele
coleta múltiplos tipos de sintomas que afetam os elementos do código. Para
recomendar refatorações, OrganicRef combina heurísticas baseadas em regras
e baseadas em funcionalidades. OrganicRef também aplica otimização
baseada em busca para derivar várias recomendações possíveis. Para avaliar
o OrganicRef, realizamos um estudo experimental com seis projetos de
software. Os resultados mostraram que as recomendações do OrganicRef
melhoram significativamente a qualidade dos elementos refatorados. / [en] Software projects impacted by Design Problems (DPs) may become difficult to maintain and evolve. The identification of DPs may occur through symptoms such as code smells. After such identification, developers can remove the DPs through refactorings. However, deciding where and how to refactor is a challenging task. Thus, several refactoring recommendation techniques have been proposed. Nevertheless, there is still little consensus on which requirements must be satisfied by them. In this thesis, we are proposing four empirically identified requirements that any DP removal technique should follow. First, each single DP is usually related with multiple types of symptoms in the source code and they should be considered altogether for generating recommendations. Second, a recommendation technique should
allow the selection of possible candidate contexts for refactoring. Fourth, the technique should consider the features of undergoing changes to create useful recommendations. Finally, developers do not always conduct the most effective refactorings in practice, quite often unconsciously, resulting in the incomplete removal of DPs. Thus, they need assistance to remove DPs. There are techniques partially fulfilling the aforementioned requirements, though none satisfactorily meets them all. Thus, we propose the
OrganicRef technique. OrganicRef is intended to help developers in removing DPs in their contexts of interest. OrganicRef finds the contexts by capturing the features affecting relevant code elements using a topic modeling algorithm. Then, it collects multiple symptom types affecting the code elements. To recommend effective refactorings, OrganicRef combines rulebased and feature-driven heuristics. It also uses search-based optimization to derive multiple possible recommendations. To evaluate OrganicRef, we
conducted an empirical study with six open source projects. Results showed that OrganicRef recommendations significantly improves the design of refactored elements.
|
2 |
Investigando a refatoração automática de software baseada em algoritmos de otimização multiobjetivosSilva Júnior, Leonardo Bezerra 19 September 2014 (has links)
Refactoring is a process that aims to change the code without changing the visible behavior and is used to correct structural problems in software, arising from unplanned maintenance or an unstructured development process. The mechanisms behind the refactoring process, however, are relatively complex and dangerous if done manually (for each refactoring is necessary to evaluate a number of pre and post-conditions to ensure that the behavior is not changed). Many current development tools facilitate the refactorings usage, but in a semiautomatic way, so that the programmer must detect the need for a specific refactoring. New techniques have emerged in an effort to approximate the software engineering to other engineerings with respect to process automation. In this context, the application of search algorithms arises as a means to provide support to software maintenance by automatically applying refactorings. This work fits in this context, Search-Based Software Refactoring, and investigates in detail the topic, including the proposition of a specific algorithm for the area, entitled MultiObjective Particle Swarm Optimization with Path Relinking (MOPSOPR). An open source framework which enables the search and automatic application of refactoring sequences has also been proposed. This framework allows exploration of the problem of automatic refactoring through various optimization algorithms. In particular, in this msc dissertation, the framework is used to enable comparative analysis of the proposed algorithm with the most used algorithm in the literature of this subject, the Non-Dominated Sorting Genetic Algorithm-II (NSGA-II). Several experiments were conducted, which included real-world softwares. Despite showing some positive results, the overall assessment does not indicate a unanimous superiority of the proposed algorithm compared to the NSGA-II in several experiments. However, the study revealed interesting research frontiers to be explored in future work. / Refatoração é um processo que objetiva a mudança de código sem a mudança de comportamento visível e é utilizada para corrigir problemas estruturais no software, advindos de manutenções sem planejamento ou de um processo de desenvolvimento desestruturado. Os mecanismos por trás do processo de refatoração, entretanto, são relativamente complexos e perigosos se feitos manualmente (para cada refatoração é preciso avaliar uma série de pré e pós-condições para garantir que o comportamento não seja alterado). Muitas ferramentas de desenvolvimento atuais facilitam as refatorações, mas de forma semiautomatizada, de maneira que o programador deve perceber a necessidade de uma refatoração específica. Novas técnicas tem surgido em um esforço para aproximar a engenharia de software das outras engenharias no que diz respeito à automatização de processos. Neste contexto, a aplicação de algoritmos de busca surge como uma proposta para prover suporte à manutenção de software através da aplicação automática de refatorações. Este trabalho se insere neste contexto, o de Refatoração de Software Baseada em Buscas (do inglês Search-Based Software Refactoring), e investiga detalhadamente o tema, propondo inclusive um algoritmo específico para a área, intitulado MultiObjective Particle Swarm Optimization with Path Relinking (MOPSOPR). Um framework open-source que possibilita a busca e aplicação automática de sequências de refatorações foi também proposto. Este framework permite a exploração do problema de refatoração automática através de vários algoritmos de otimização. Em particular, neste trabalho o framework foi utilizado para viabilizar análises comparativas do algoritmo proposto com o algoritmo mais utilizado na literatura deste tema, o Non-Dominated Sorting Genetic Algorithm- II (NSGA-II). Vários experimentos foram conduzidos, inclusive considerando-se softwares reais. Apesar de apresentar alguns resultados positivos, a avaliação geral não indica uma superioridade unânime do algoritmo proposto em relação ao NSGA-II nos diversos experimentos realizados. Entretanto, o estudo realizado revelou interessantes fronteiras de investigação a serem exploradas em trabalhos futuros.
|
3 |
Geração evolucionária de heurísticas para localização de defeitos de software / Evolutionary generation of heuristics for software fault localizationFreitas, Diogo Machado de 24 September 2018 (has links)
Submitted by Franciele Moreira (francielemoreyra@gmail.com) on 2018-10-30T13:30:59Z
No. of bitstreams: 2
Dissertação - Diogo Machado de Freitas - 2018.pdf: 1477764 bytes, checksum: 73759c5ece96bf48ffd4d698f14026b9 (MD5)
license_rdf: 0 bytes, checksum: d41d8cd98f00b204e9800998ecf8427e (MD5) / Approved for entry into archive by Luciana Ferreira (lucgeral@gmail.com) on 2018-10-30T13:41:38Z (GMT) No. of bitstreams: 2
Dissertação - Diogo Machado de Freitas - 2018.pdf: 1477764 bytes, checksum: 73759c5ece96bf48ffd4d698f14026b9 (MD5)
license_rdf: 0 bytes, checksum: d41d8cd98f00b204e9800998ecf8427e (MD5) / Made available in DSpace on 2018-10-30T13:41:38Z (GMT). No. of bitstreams: 2
Dissertação - Diogo Machado de Freitas - 2018.pdf: 1477764 bytes, checksum: 73759c5ece96bf48ffd4d698f14026b9 (MD5)
license_rdf: 0 bytes, checksum: d41d8cd98f00b204e9800998ecf8427e (MD5)
Previous issue date: 2018-09-24 / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPES / Fault Localization is one stage of the software life cycle, which demands important resources
such as time and effort spent on a project. There are several initiatives towards the
automation of the fault localization process and the reduction of the associated resources.
Many techniques are based on heuristics that use information obtained (spectrum) from the
execution of test cases, in order to measure the suspiciousness of each program element to
be defective. Spectrum data generally refers to code coverage and test results (positive or
negative). The present work presents two approaches based on the Genetic Programming
algorithm for the problem of Fault Localization: a method to compose a new heuristic from a
set of existing ones; and a method for constructing heuristics based on data from program
mutation analysis. The innovative aspects of both methods refer to the joint investigation of:
(i) specialization of heuristics for certain programs; (ii) application of an evolutionary
approach to the generation of heuristics with non-linear equations; (iii) creation of heuristics
based on the combination of traditional heuristics; (iv) use of coverage and mutation spectra
extracted from the test activity; (v) analyzing and comparing the efficacy of methods that use
coverage and mutation spectra for fault localization; and (vi) quality analysis of the mutation
spectra as a data source for fault localization. The results have pointed to the competitiveness
of both approaches in their contexts. / Localização de Defeitos é uma etapa do ciclo de vida de software, que demanda recursos
importantes tais como o tempo e o esforço gastos em um projeto. Existem diversas iniciativas
na direção da automação do processo de localização de defeitos e da redução dos recursos
associados. Muitas técnicas são baseadas heurísticas que utilizam informação obtida
(espectro) a partir da execução de casos de teste, visando a medir a suspeita de cada
elemento de programa para ser defeituoso. Os dados de espectro referem-se, em geral, à
cobertura de código e aos resultados dos teste (positivo ou negativo). O presente trabalho
apresenta duas abordagens baseadas no algoritmo Programação Genética para o problema de
Localização de Defeitos: um método para compor automaticamente novas heurísticas a partir
de um conjunto de heurísticas existentes; e um método para a construção de heurísticas
baseadas em dados oriundos da análise de mutação de programas. Os aspectos inovadores de
ambos os métodos referem-se à investigação conjunta de: (i) especialização de heurísticas
para determinados programas; (ii) aplicação de abordagem evolutiva para a geração de
heurísticas com equações não lineares; (iii) criação de heurísticas a partir da combinação de
heurísticas tradicionais; (iv) uso de espectro de cobertura e de mutação extraídos da
atividade de teste; (v) análise e comparação da eficácia de métodos que usam os espectros
de cobertura e de mutação para a localização de defeitos; e (vi) análise da qualidade dos
espectros de mutação como fonte de dados para a localização de defeitos. Os resultados
apontaram competitividade de ambas as abordagens em seus contextos.
|
Page generated in 0.1068 seconds