ARQUITETURA INTEGRADA DE REFATORAÇÃO DE CÓDIGO-FONTE BASEADA EM PADRÕES DE PROJETO

Categorias: Pesquisa

Início: 08/2016

Este projeto de pesquisa tem como finalidade propor uma arquitetura para detecção e inserção de pontos padrões de projeto e metapadrões em código-fonte orientado a objetos usando interação com o usuário, métricas de software, agentes e métodos da literatura capaz de identificar os possíveis padrões que podem ser usados.

Ex-Integrantes:

  • Luan Bukowitz Beluzzo
  • Rodrigo de França Miss Nairnei
  • Thyago Henrique Pacher


Coordenadores

Simone Nasser Matos

Acessar currículo

Colaboradores

Helyane Bronoski Borges

Carlos Cardoso

Produtos gerados

A REFACTORING ARCHITECTURE FOR MEASURING AND IDENTIFYING SPOTS OF DESIGN PATTERNS INSERTION IN SOURCE CODE

This work presents an architecture for detecting insertion spots of design patterns in an object-oriented source code. The proposed architecture contains a Service that implements Detection Methods (DMS) present in the literature such as identification of precursors, prolog rules and facts, among others. The DMS notifies the Metrics Service (MS) which patterns can be used. The evaluation of the application of the patterns undertaken by the MS is performed by means of quality metrics such as maintainability, flexibility, and so forth. The MS notifies the Client App (CA) of the advantages and disadvantages of using the eligible patterns. The CA interacts with the user to retrieve decisions about which changes to perform in source code according to the design pattern real benefit and notifies the Applier Service (AS), that applies the patterns in the source code. The difference between the proposed architecture and the literature is that it allows a thorough interaction with the user and it creates an extendable environment to cover several pattern detection/insertion methods. The architecture allows automated support to users engaged in the refactoring process based on design patterns.


ABORDAGEM PARA AVALIAR E DETECTAR PONTOS DE INSERÇÃO E APLICAÇÃO DE PADRÕES DE PROJETO EM CÓDIGO-FONTE

A refatoração tem a finalidade de melhorar o código-fonte em relação aos requisitos de qualidade como: manutenibilidade, flexibilidade, legibilidade, entre outros. Dentre os trabalhos encontrados na literatura voltados a refatoração de software baseada em padrões de projetos foram analisados os que abordam métodos e ferramentas. Constatou-se que estes trabalhos aplicam somente um processo de refatoração construído pelos próprios autores, as ferramentas possuem pouca ou nenhuma interação com o usuário e não existe a preocupação de se avaliar antecipadamente os benefícios de se aplicar um determinado padrão no código-fonte. Por isto, este trabalho criou uma abordagem para detecção de pontos de inserção e aplicação de padrões de projeto que reúne em um mesmo ambiente os métodos da literatura, além de fornecer informações sobre os benefícios de se usar um determinado padrão antes de sua aplicação efetiva. Estas informações são obtidas por meio de métricas de software relacionadas aos atributos de qualidade como a manutenibilidade, confiabilidade e reusabilidade. A abordagem proposta foi inicialmente avaliada aplicando cenários de testes providos pelos métodos da literatura e posteriormente foram usados cinquenta projetos open-source encontrados na web para testes. Como resultado, verificou-se que a abordagem é capaz de retornar candidatos a refatoração de mais de um método da refatoração, além de apresentar ao usuário uma avaliação do candidato a refatoração baseada em métricas e atributos de qualidade.


ABORDAGEM PARA EXTENSÃO DA FERRAMENTA REFACTORING AND MEASUREMENT TOOL DE DETECÇÃO DE PONTOS DE INSERÇÃO E APLICAÇÃO DE PADRÕES DE PROJETO EM CÓDIGO-FONTE

Refatoração de software é o processo de modificar um código-fonte sem alterar seu comportamento externo, visando otimizar a sua estrutura interna. A refatoração pode ser realizada por vários métodos, dentre eles os fundamentados em padrões de projeto que permitem analisar o código-fonte para detectar e inserir padrões que ajudam a melhorar a sua flexibilidade, manutenibilidade, entre outros requisitos de qualidade. O processo de aplicação de padrões de projeto pode ser realizado automaticamente por meio da ferramenta Refactoring and Measurement Tool que procura pontos de inserção e aplica os padrões de projeto de acordo com os métodos da literatura. A diferença deste processo é que contempla em um único ambiente métodos para inserção e detecção de padrões de projeto. A ferramenta possui dois métodos implementados, podendo ser estendida para contemplar outros de modo a torná-la mais completa. Este trabalho propõe a criação de uma abordagem de extensão para a Refactoring and Measurement Tool a fim de que novos métodos de detecção e inserção de padrões de projeto sejam incorporados a ela. A abordagem proposta foi utilizada para inserir o método de minipatterns e os testes usando esta nova inserção utilizou cinquenta projetos open-souce. A abordagem proposta contém um conjunto de etapas que permitem facilitar o processo de inserção de novos métodos à Refactoring and Measurement Tool.


PROPOSTA DE UM MODELO USANDO AGENTES PARA REFATORAÇÃO DE SOFTWARE

A refatoração de software tem como finalidade aumentar a qualidade do projeto em relação aos atributos de reusabilidade, manutenibilidade e legibilidade. Existem métodos de refatoração que são capazes de ler um código-fonte e detectar e inserir padrões de projeto. As ferramentas automatizadas implementam somente um método de refatoração, por isto, o desenvolvedor deve executar seu projeto em várias ferramentas para conseguir detectar e inserir todos os possíveis padrões de projeto em seu código-fonte. Este trabalho propõe a modelagem de um sistema multiagentes para unificar os métodos de refatoração em um único ambiente contemplando um modelo de agente capaz de ler um código-fonte e refatorá-lo usando padrões de projeto. A metodologia Prometheus foi utilizada na criação do modelo proposto. Como resultado, é apresentado um cenário de teste no qual o modelo criado é capaz de ler um código e aplicar padrões de projeto.


UM MÉTODO PARA A REFATORAÇÃO DE SOFTWARE BASEADO EM FRAMEWORK DE DOMÍNIO

Um framework de domínio é formado por um conjunto de classes que capturam o conhecimento e especialidade em um domínio de problema particular e são criados por grupos de desenvolvedores que muitas vezes não seguem a aplicação correta dos conceitos orientados a objeto. Para melhorar a flexibilidade, legibilidade, reusabilidade, expansibilidade e manutenibilidade dos frameworks de domínio pode-se usar a refatoração de software. O processo de refatoração é facilitado quando se usa métodos específicos para a aplicação das técnicas de refatoração o que garante um melhor resultado no produto final. Métodos de refatoração na literatura ou atende uma linguagem de programação específica ou são mais abrangentes. Este trabalho criou um método de refatoração usando como referência os métodos da literatura, capaz de ajudar os desenvolvedores na refatoração de aplicações construídas com os conceitos de frameworks de domínio. O método proposto é formado por três etapas principais: Entender o sistema, Ordenar os módulos e Refatorar Módulos. A diferença entre o método proposto e os da literatura é que prevê a aplicação de metapadrões, inversão de controle e uso de ferramenta de refatoração em suas etapas. O estudo de caso em que o método foi aplicado é o Framework de Formação de Preço de Venda (FrameMK), desenvolvido pelo Grupo de Pesquisa em Sistemas de Informação do Câmpus Ponta Grossa, que tem a finalidade de calcular o preço de venda de um produto ou serviço. Os resultados da aplicação do método no FrameMK foram: melhorou a complexidade do código, diminui a quantidade de bad smells e a duplicação de código, o código ficou mais reusável e flexível e houve um aumento na qualidade do software em relação a expectativas do seu ciclo de vida.


MAPEAMENTO SISTEMÁTICO DE PROCESSOS DE REFATORAÇÃO DE SOFTWARE

Relatório de IC (Iniciação Científica) apresenta um mapeamento sobre técnicas de refatoração de software de 1992 a 2019.


CODICE-UNIO: UMA ABORDAGEM INTEGRADA DE MÉTODOS PARA DETECÇÃO E INSERÇÃO DE PADRÕES DE PROJETO EM CÓDIGO-FONTE USANDO AGENTES

O processo de refatoração garante uma qualidade maior no código-fonte aumentando a sua manutenibilidade, confiabilidade e flexibilidade. De acordo com a literatura cerca de 70% do custo do software é para manutenção e isto pode ser diminuído usando técnicas que permitem aumentar a qualidade do código-fonte tal como a refatoração baseada em padrões de projetos. Constatou-se por meio de um mapeamento sistemático que os trabalhos na literatura de detecção e inserção de padrões de projeto não são realizados de forma autônoma. Este trabalho criou a abordagem Codice-Unio para detectar pontos de inserção e aplicar padrões de projeto com agentes usando a arquitetura de Belief-Desire-Intention (BDI). A abordagem contempla em um mesmo ambiente três métodos da literatura capazes de detectar e aplicar padrões de projeto em código-fonte escrito em linguagem Java. A fim de comparar o processo de refatoração antes e depois da aplicação do padrão de projeto foi contemplado na abordagem a avaliação de métricas relacionadas aos atributos de qualidade tais como manutenibilidade, reusabilidade e confiabilidade. A Codice-Unio foi implementada em um framework para agentes que suporta a arquitetura BDI e usou ferramentas específicas para leitura de código e avaliação dos atributos de qualidade. A abordagem foi avaliada com cenários de testes providos pelos métodos da literatura e posteriormente por projetos open-source encontrados na web via GitHub. Como resultado, a Codice-Unio é capaz de identificar e aplicar padrões de projeto em classes candidatas automaticamente em cerca de aproximadamente 97% dos projetos que foram submetidos ao experimento.


REFATORAÇÃO BASEADA EM PADRÕES DE PROJETO USANDO AGENTES

Este trabalho propõe um agente para detectar pontos de inserção e aplicar padrões em código-fonte orientado a objetos em linguagem de programação Java. O agente tem as seguintes funcionalidades: escanear o projeto; interpretar o código; analisar o código requisitando as suas crenças para verificar se por meio de algum método é possível aplicar algum padrão usando uma lista contendo os passos para seu uso. O agente foi implementado usando Jadex e a Eclipse Oxygen 3a IDE. Os testes foram aplicados em 25 projetos que estavam disponíveis no GitHub e a quantidade de classes destes variaram de 1 a 359. Os resultados mostram que o agente conseguiu detectar de 1 a 149 classes candidatas a inserção de padrões de projeto. Conclui-se que o uso de agentes na refatoração pode trazer contribuição para profissionais menos experiente que tem a possibilidade de aplicar padrões de projeto em seu projeto para deixá-lo mais flexível e reusável.


MAPEAMENTO SISTEMÁTICO DE PROCESSOS DE REFATORAÇÃO DE SOFTWARE

Este artigo relata um mapeamento sistemático para encontrar trabalhos relacionados a técnicas de refatoração de software e técnicas de detecção de bad smells. Dos trabalhos encontrados, foram selecionados 24 para análise. Estes trabalhos ajudaram a responder as questões criadas como guia para o mapeamento, as respostas foram respondidas após a leitura de todos os artigos e armazenado-os em um protocolo para ser consultado. Os resultados demonstram pontos importantes sobre a refatoração de software como a linguagem mais usada, autores mais influentes e ferramentas.


FERRAMENTA RMT: MELHORIAS EM SUA ARQUITETURA

Este artigo aborda características presentes na ferramenta REFACTORING AND MEASUREMENT TOOL (RMT) que podem sofrer mudanças visando melhorias em seus atributos de qualidade.


PROPOSTA DE MELHORIAS PARA A FERRAMENTA RMT

Este trabalho é a versão final do relatório de Iniciação Científica, que apresenta um estudo sobre Refatoração de código-fonte e Padrões de projeto visando melhorias na ferramenta RMT.


Laboratório de Engenharia de Software e Inteligência Computacional

Siga-nos