Refatoração para padrões de projeto

Top PDF Refatoração para padrões de projeto:

BUSCA POR OPORTUNIDADES DE REFATORAÇÃO PARA APLICAÇÃO DE PADRÕES DE PROJETO

BUSCA POR OPORTUNIDADES DE REFATORAÇÃO PARA APLICAÇÃO DE PADRÕES DE PROJETO

Manter e adaptar código mal escrito, com problemas estruturais, é uma tarefa difícil. As técnicas de refatoração são usadas para melhorar o código e a estrutura de aplicações, aumentando sua qualidade e tornando-as mais fáceis de serem modificadas. Padrões de projeto são soluções reutilizáveis usadas para resolver problemas comumente encontrados em sistemas orientados a objetos. A aplicação de padrões de projeto no contexto de refatoração usando uma abordagem corretiva torna-se uma atividade interessante no ciclo de vida de um sistema de software. Contudo, para projetos de média e larga-escala, examinar manualmente os artefatos de software na busca por problemas e oportunidades para aplicar um determinado padrão de projeto é uma tarefa árdua e difícil. Nesse contexto, apresentamos um conjunto de funções heurísticas baseadas em métricas que permitem detectar onde um padrão de projeto pode ser aplicado nos artefatos de código de um determinado projeto, mais especificamente, os padrões de projeto Strategy, Factory Method, Template Method, Creation Method e Chain Constructors. Para avaliar as funções propostas, desenvolvemos uma ferramenta que avalia código-fonte e exibe possíveis oportunidades para aplicar uma refatoração rumo a tais padrões. Essa ferramenta foi desenvolvida usando-se ASTs (Abstract Syntax Trees), procurando por oportunidades de refatoração, indicando os locais no código fonte onde o padrão é sugerido e mostrando algumas evidências usadas para a detecção.
Mostrar mais

98 Ler mais

Refatoração de sistemas Java utilizando padrões de projeto: um estudo de caso.

Refatoração de sistemas Java utilizando padrões de projeto: um estudo de caso.

Dentre os passos relacionados às três etapas do processo, a que dispende mais tempo e esforços é a de refatoração com o padrão. Esse tempo refere-se à preparação do sistema para adequá-lo às novas classes e às características dos padrões de projeto. A identificação do padrão a ser utilizado, passo 3 da etapa 1, é apoiada pela lista de indícios apresentada na seção 3.3, porém também é necessário um conhecimento prévio do engenheiro de software sobre os padrões de projeto, aplicabilidade e estrutura de classes. Este processo de refatoração não prevê métodos de aprendizagem desses padrões. Por outro lado, caso o padrão seja implementado de maneira incorreta, resultando em arquitetura final ruim ou ainda, alteração em funções do sistema, o processo também não prevê um mecanismo definido para a correção do problema. Nesse caso, o processo de refatoração deve ser reiniciado, a fim de que o erro seja detectado e corrigido.
Mostrar mais

130 Ler mais

Refatoração do jogo Bicho UFC Rampage usando SOLID e padrões de projeto

Refatoração do jogo Bicho UFC Rampage usando SOLID e padrões de projeto

16 Este trabalho está dividido da seguinte forma, a Seção 2 trata de apresentar os trabalhos com temas semelhantes relacionados. A Seção 3 e suas subseções tratam de apresentar os conceitos teóricos base deste trabalho que são refatoração, maus cheiros de design, princípios SOLID, padrões de projeto e sobre o jogo Bicho UFC Rampage. A Seção 3 apresenta os passos de execução deste trabalho apresentando o estado inicial do projeto, problemas encontrados na versão inicial, cada uma das etapas de refatoração e uma comparação entre a versão inicial e a final com medidas LOC e CC usando a ferramenta NDepend.
Mostrar mais

60 Ler mais

Refatoração da camada de persistência do FrameMK

Refatoração da camada de persistência do FrameMK

O FrameMK é um framework de domínio que tem como objetivo estabelecer o preço de venda de um produto ou serviço. Como o software vem sendo desenvolvido por acadêmicos desta instituição ao longo dos anos, diferentes grupos de desenvolvedores acabam trabalhando no projeto o que pode gerar um sistema com o código de difícil entendimento, dificultando a manutenção e evolução do software. As técnicas de refatoração de software catalogadas por especialistas da área surgem como um meio de amenizar esse tipo de problema, tornando o software mais legível, flexível e de manutenção menos custosa. Para auxiliar no processo de refatoração surgem na literatura os métodos de refatoração, que são constituídos por uma sequência de passos definidos que envolvem em sua maioria, análise de projeto e aplicação de técnicas de refatoração. Na literatura existem métodos de refatoração que tratam de diferentes aspectos, podendo ser voltado para uma determinada linguagem de programação, diferentes domínios ou mesmo os que podem ser utilizados de forma geral. Este trabalho realizou um estudo de três métodos de refatoração: baseado em padrões de projeto para sistemas desenvolvidos em linguagem Java, usado de forma geral e o voltado para frameworks de domínio, que é baseado nos dois métodos citados anteriormente e foi utilizado neste trabalho. O método fundamentado em framework de domínio foi adaptado para melhor atender as necessidades encontradas durante a análise da camada de persistência do framework, visando aproveitar o processo já definido. A adaptação do método se mostrou eficiente para os objetivos deste trabalho, tendo em vista que o mesmo auxiliou na detecção de códigos com sintomas de má concepção ou implementação de escolhas, os bad smells em todas as classes da camada trabalhada. A aplicação da refatoração gerou dados quantitativos que possibilitaram analisar o impacto causado pelas técnicas aplicadas em cada uma das classes da camada de persistência do framework. Ao final do processo de refatoração foram aplicadas seis técnicas diferentes, separadas em 5 categorias distintas. As classes refatoradas apresentaram mudanças referentes a quantidade de métodos e linhas de códigos, porém, os resultados relevantes foram as melhorias implementadas na camada trabalhada, reduzindo a complexidade e aumentaram a manutenibilidade do código.
Mostrar mais

65 Ler mais

Proposta de um modelo usando agentes para refatoração de software

Proposta de um modelo usando agentes para refatoração de software

Os padrões de projetos representam estruturas que permitem atingir os requisitos de qualidade durante o processo de refatoração de software (TSANTALIS et al., 2006). Um padrão de projeto nomeia, abstrai e identifica os aspectos-chave de uma estrutura de projeto comum para torná-la útil na criação de um projeto orientado a objetos reutilizável. Cada padrão de projeto foca em um problema ou tópico particular e descreve em que situação pode ser aplicado, quais restrições e suas consequências, custos e benefícios de sua utilização (GAMMA et al., 2000). Existem 24 (vinte e quadro) padrões de projetos, divididos em três categorias: criacionais, estruturais e comportamentais (GAMMA et al., 2000).
Mostrar mais

62 Ler mais

Refatorar sistema, utilizar e avaliar padrões de projeto e codificação

Refatorar sistema, utilizar e avaliar padrões de projeto e codificação

Nesta atividade, os principais problemas de reuso e modularidade encontrados nas atividades anteriores serão estudados de modo a construir uma solução que reduza seus efeitos negativos. Para construir estas soluções serão aplicadas técnicas de refatoração, que utilizam padrões de projeto e de codificação, e também técnicas de parametrização e componentes.

66 Ler mais

Um método para a refatoração de software baseado em frameworks de domínio

Um método para a refatoração de software baseado em frameworks de domínio

Após a análise do projeto a partir da ferramenta, é verificado os bad smells existentes, e tem-se uma condição de verificação. Se há bad smells no sistema, o próximo passo é aplicar as técnicas de refatoração, essas focadas em frameworks. Tais técnicas são: as técnicas de refatoração apresentadas por Fowler (1999) (conforme apresentadas na seção 2.2), aplicação de padrões de projeto (anexo A), aplicação de metapadrões e aplicação de inversão de controle (IC). A escolha de qual técnica deve ser realizada inicialmente fica a critério do desenvolvedor a medida que ele analisa o código e consegue identificar a aplicação de alguma técnica.
Mostrar mais

99 Ler mais

Refatoração e incrementação de ferramenta web para a elaboração de revisão sistemática

Refatoração e incrementação de ferramenta web para a elaboração de revisão sistemática

Todo padrão deve apresentar um nome que irá identificá-lo, seguido pelo problema que o padrão é proposto a solucionar (neste caso, o objetivo, intenção ou motivação). A aplicabilidade do padrão para identificar as situações em que pode ser empregada a solução frente o problema encontrado, a representação estrutural das classes do padrão apresentando o método de solução do problema, seus participantes (classes, objetos) e a interação entre os elementos que compõem o padrão e suas responsabilidades, consequências de sua aplicação em um projeto, detalhes e aspectos de sua implementação, exemplo de código e em aplicações de diferentes áreas o qual foi aplicado o padrão e quais padrões podem ser utilizados de forma conjunta ou ainda quais são padrões similares e suas diferenças.
Mostrar mais

75 Ler mais

Refatoração do aplicativo gerenciador de menus dinâmicos do sítio ArcaboMK

Refatoração do aplicativo gerenciador de menus dinâmicos do sítio ArcaboMK

A principal diferença entre as abordagens é encontrada em suas fases iniciais. Na metodologia Mens, o nível de abstração é mais flexível permitindo ao programador definir a sua vontade o nível de refatoração, enquanto na metodologia de Rapeli (2006) este enfoque é obrigatoriamente uma abstração de alto nível, visto que uma etapa básica é gerar o diagrama de classes para que sejam identificados os possíveis padrões de projeto existentes ou que possam ser aplicados.

101 Ler mais

Mecanismos de busca por oportunidades de refatoração para padrões

Mecanismos de busca por oportunidades de refatoração para padrões

Na segunda parte da função heurística estão os indícios que contribuem negativamente para a oportunidade candidata ser uma oportunidade de refatoração real. Quanto maior for a quantidade de métodos que são públicos das subclasses, menor a chance dessa hierarquia poder ser refatorada. Assim, foi dado o valor seis para o parâmetro do número de modificadores públicos, pois podem existir métodos públicos que ocultados não prejudicam as demais classes do projeto. No caso do projeto Apache-Ant, verificou-se que os métodos públicos prejudicavam os resultados. Foi então colocado o valor três para o parâmetro, que trouxe resultados melhores que os anteriores, como apresenta a Tabela 4.2. Um valor do intervalo de um a dez pode ser utilizado para o valor desse parâmetro. O peso de sua relevância para o cálculo não é tão grande, recebendo o valor 0,7.
Mostrar mais

127 Ler mais

Aplicação de padrões de projeto no desenvolvimento de frameworks: um estudo de caso

Aplicação de padrões de projeto no desenvolvimento de frameworks: um estudo de caso

Um dos principais problemas a ser resolvido pelo projeto é a representação de expressões em objetos de software. Uma maneira de fazer isso é converter as expressões na sua forma concreta – sintaxe concreta – na forma de uma árvore – sintaxe abstrata. A representação em árvore de uma expressão considera dois tipos de elementos: nós e folhas. Nós são elementos compostos de uma ou mais expressões, as ramificações do nó. É o caso, por exemplo, da adição e multiplicação. As folhas são simplesmente nós sem ramificações, portanto, representam valores. Assim, a expressão E3 acima pode ser abstratamente representada como mostra a Fig. 4.1.a. Podemos notar que a expressão 5 * (3 + 4) possui como esperado uma representação em árvore, Fig. 4.1.b, diferente da expressão E3.
Mostrar mais

75 Ler mais

Padrões de projeto para desenvolver aplicações distribuídas com CORBA e JAVA

Padrões de projeto para desenvolver aplicações distribuídas com CORBA e JAVA

Tendo-se como enfoque fundamental o paradigma orientado a objetos distribuídos, existe a necessidade de se trabalhar com especificações de requisitos complexos para a construção destes sistemas [ORFA99] e assim questões críticas no projeto de um sistema surgem precisando serem solucionadas. Algumas soluções boas e testadas para os problemas de projeto podem ser expressas como um conjunto de princípios e padrões. Esses padrões constituem fórmulas nomeadas de soluções de problemas que codificam o conhecimento, os idiomas e os princípios existentes de projetos exemplares e quanto mais apurado e amplamente usado, melhor [LARM99]. Esta dissertação, ao trabalhar com padrões, pretende favorecer o uso, com habilidade, destes, para o projeto orientado a objetos.
Mostrar mais

125 Ler mais

Padrões de Projeto GOF aplicados ao Desenvolvimento de Jogos Eletrônicos

Padrões de Projeto GOF aplicados ao Desenvolvimento de Jogos Eletrônicos

32 Apesar de não falar diretamente sobre a forma de aplicação dos padrões de projeto GoF em jogos, o trabalho desenvolvido por Björk e Holopainen (2005) investiga a correlação entre a aplicação do padrão de projeto e bugs encontrados em softwares. Para atingir seu objetivo, foi realizado um estudo empírico sobre jogos desenvolvidos em Java. Esta pesquisa identificou o número de defeitos, a taxa de depuração e os padrões utilizados nos jogos. Os resultados obtidos mostram que o número total de utilização de padrões não está correlacionado diretamente com a depuração. No entanto, alguns padrões de projeto mostram ter um impacto significativo sobre o número de bugs reportados. Entre os padrões GoF discutidos estão o singleton, composite, adapter, observer, state,
Mostrar mais

130 Ler mais

Investigando a refatoração automática de software baseada em algoritmos de otimização multiobjetivos

Investigando a refatoração automática de software baseada em algoritmos de otimização multiobjetivos

O’Keeffe e Cinnéide (2006), investigaram experimentalmente um modelo de refato- ração automática guiado por algoritmos de busca, que tem como função-objetivo um conjunto de métricas, baseadas no trabalho de Harman e Clark (2004). A função-objetivo é definida como uma soma com pesos de algumas funções de avaliação propostas em Bansiya e Davis (2002). São utilizados três algoritmos: duas versões do algoritmo Hill Climbing e Simulated Annaeling (SA). No que diz respeito às refatorações utilizadas, elas somam seis, definidas em três pares: [Push Down,Pull Up] Field, [Push Down,Pull Up] Method e [Extract, Collapse] Hierarchy. Pares de refatoração e contra-refatoração são utilizados para permitir a livre movimentação dos algoritmos pelo espaço de busca. O trabalho propõe ainda uma ferramenta chamada Code-Imp (Combinatorial Optimisation Design-Improvement), que implementa o método investigado. Os resultados obtidos indicam uma melhora geral da arquitetura das aplicações experimentadas, observadas através do aumento geral das métricas. Todos os algoritmos utilizados resultaram em melhora.
Mostrar mais

118 Ler mais

Linguagem de padrões para apoiar o projeto de material instrucional para EAD

Linguagem de padrões para apoiar o projeto de material instrucional para EAD

Linguagem de padrões para apoiar o projeto de material instrucional para EAD / Américo Talarico Neto. Dissertação (Mestrado) -- Universidade Federal de São Carlos, 2005[r]

148 Ler mais

Exemplo de aplicação dos padrões de projeto GOF para a especificação de SIGAD

Exemplo de aplicação dos padrões de projeto GOF para a especificação de SIGAD

Pessoas que trabalham com o desenvolvimento de software devem se preocupar em não apenas escrever código que funciona e resolva o problema, mas também deve se preocupar em escrever código seja entendido, mantido e reutilizável, principalmente por outras pessoas. Para contribuir com essa intenção, existem os padrões de projeto, que são, basicamente, o resultado da experiência de outros programadores compilada em catálogos. Este trabalho tem como principal objetivo exemplificar de maneira prática os 23 padrões de projeto de desenvolvimento de software presentes no catálogo publicado no livro Design Patterns:Elements of Reusable Object-Oriented Software. Para contextualizar e utilizar uma especificação real foi selecionada a especificação do Conselho Nacional de Arquivos (CONARQ) para sistemas informatizados de gestão arquivística de documentos (SIGAD). Devido a grande quantidade de requisitos presentes na especificação, foram utilizados na produção dos exemplos, apenas os requisitos dados como obrigatórios pela especificação.
Mostrar mais

115 Ler mais

Projeto de  de padrões baseados em protótipos usando evolução diferencial

Projeto de de padrões baseados em protótipos usando evolução diferencial

N esta dissertação é apresentada uma abordagem evolucionária para o projeto eciente de classicadores baseados em protótipos utilizando Evolução Diferencial. Para esta nalidade foram reunidos conceitos presentes na família de redes neurais LVQ (Learning Vector Quantization, introduzida por Kohonen (KOHONEN, 2001) para classicação supervisionada, juntamente com conceitos extraídos da técnica de clusterização automática proposta por Das et al. (DAS; ABRAHAM; KONAR, 2008) baseada na metaheurística Evolução Diferencial. A abordagem proposta visa determinar tanto o número ótimo de protótipos por classe, quanto as posições correspondentes de cada protótipo no espaço de cobertura do problema. Através de simulações computacionais abrangentes realizadas sobre vários conjuntos de dados comumente utilizados em estudos de comparação de desempenho, foi demonstrado que o classicador resultante, denominado LVQ-DE, alcança resultados equivalentes (ou muitas vezes até melhores) que o estado da arte em classicadores baseados em protótipos, com um número muito menor de protótipos.
Mostrar mais

134 Ler mais

O uso dos padrões de projeto GoF na análise e desenvolvimento de sistemas

O uso dos padrões de projeto GoF na análise e desenvolvimento de sistemas

O uso dos padrões de projeto como referência (nome do padrão) para soluções de problemas identifica o seu comportamento e propósito permitindo o seu entendimento no processo de desenvolvimento de sistemas. Utilizar o nome do padrão facilita no entendimento de sua funcionalidade do que detalhar como uma implementação deveria trabalhar.

13 Ler mais

A Dimensão temporal no projeto de  de padrões para navegação de robôs móveis: um estudo de caso

A Dimensão temporal no projeto de de padrões para navegação de robôs móveis: um estudo de caso

Em muitos problemas do mundo real, sejam em sistemas reais ou artificiais (e.g. robôs mó- veis), a maior parte da informação a ser processada não possui natureza estática, mas depende também da relação temporal entre os dados que compõem a informação. Esse conjunto de da- dos ordenado temporalmente é chamado de sequência espaço-temporal (BARRETO, 1999). Por exemplo, em Robótica, observa-se que durante a navegação de um robô móvel em um determi- nado ambiente, é gerada uma rica quantidade de informação espaço-temporal a partir de seus sensores e atuadores (BASHIR et al., 2006). A partir dos dados coletados durante a execução de uma trajetória, percebe-se que determinadas sequências de padrões espaciais podem indicar pontos de referência, como a existência de uma canto entre duas paredes ou obstáculos.
Mostrar mais

189 Ler mais

DETECÇÃO DE OPORTUNIDADES DE REFATORAÇÃO EM BASES DE DADOS RELACIONAIS

DETECÇÃO DE OPORTUNIDADES DE REFATORAÇÃO EM BASES DE DADOS RELACIONAIS

Durante a execução deste experimento, observou-se a necessidade de adicionar ao conjunto de regras da heurística uma verificação sobre a quantidade de registros mínimos que as tabelas que contém as colunas alvo deste processo devem ter. Isso evita, por exemplo, a indicação de valores padrões que possam não ser adequados, futuramente, por uma tabela que possui poucos registros atualmente, mas que, se utilizada em larga escala, pode apresentar uma diversidade de valores bem diferente para suas colunas. Um exemplo disso é o caso da tabela evt_email_account, utilizada para armazenar as contas de e-mail para envio de mensagens via SMTP que a aplicação possa necessitar. Certamente, poderia modificar, ou até mesmo anular, a indicação de valor padrão para a coluna ema_hostname.
Mostrar mais

107 Ler mais

Show all 10000 documents...