Você está na página 1de 15

1

REFATORAO: APERFEIOANDO UM CDIGO


EXISTENTE

BARROZO, Graccielle Castilho VINHAS, Hingriddi Marques
REIS, Jos Cludio de Sousa

(1)
Acadmicos do 8 perodo do Curso de Bacharelado em Cincia da
Computao, UNIFENAS, Campus de Alfenas.
(2)
Orientador.

Resumo

Este projeto apresenta um estudo sobre as vrias tcnicas de refatorao
existentes, suas vantagens e desvantagens. Para isto, foi desenvolvido um
Sistema de Controle de Monografia sem o uso de nenhuma tcnica de
refatorao. O sistema foi desenvolvido utilizando duas Arquiteturas: a
Arquitetura em Camadas e a Arquitetura Orientada a Objetos. As tecnologias
utilizadas para o desenvolvimento do sistema foram a Plataforma .NET da
Microsoft, a linguagem de programada C# e o Banco de Dados utilizado foi o
SqlServer 2008. Aps o desenvolvimento do sistema, foram aplicadas diversas
refatoraes e foi comprovado que a utilizao de tais tcnicas melhora a
qualidade do cdigo, deixando-o mais limpo e de fcil manutenabilidade. Pde-
se observar tambm que com o uso de tcnicas de refatorao houve uma
reduo de aproximadamente 9% no total de linhas de cdigos do sistema.

Abstract

This project presents a study on the various techniques of refactoring existing,
its advantages and disadvantages. For this, we developed a System Control
Monograph without the use of any technique of refactoring. The system was
developed using two architectures: a Layered Architecture and Object Oriented
Architecture. The technologies used for the development of the system were the
Platform. NET Microsoft's C # language and programmed Database was used
2

SqlServer 2008. After the development of the system were implemented various
refactorings and it was proven that the use of such techniques improves code
quality, leaving it cleaner and easier maintainability. It might also be noted that
with the use of refactoring techniques decreased by approximately 9% of the
total lines of code in the system.
Palavras-chaves: refatorao, cdigo fonte, manutenabilidade,entendimento,
aperfeioamento.

1 INTRODUO

Nos tempos de hoje os projetistas de sistemas esto cada vez mais
sendo procurados para o desenvolvimento de softwares que facilitam a
realizao de tarefas dirias, pela falta de tempo que a maioria das pessoas
apresenta. Devido a esta grande demanda muitos projetistas no se
preocupam em desenvolver softwares com qualidade.
Para se atingir um software de qualidade no basta apenas ele estar
funcionando necessrio que internamente esteja bem estruturado,
compreensvel e de fcil manutenibilidade. Com a finalidade de se alcanar
esses objetivos, vrias tcnicas precisam ser aplicadas dentre elas a
refatorao.
Refatorao a alterao de um cdigo fonte, visando melhorar o
entendimento e a manutenibilidade sem alterar suas funes externas. Apesar
de trazer benefcios para um cdigo fonte existente, a refatorao pode
apresentar riscos se no aplicada da forma correta, tais como: atraso do
projeto, introduo de falhas no sistema, tornar o cdigo ilegvel e no
modificvel.

1.1 Objetivos

Este projeto tem como objetivos:
Verificar as vantagens e as desvantagens da refatorao.
3

Estudar as diversas tcnicas de refatorao aplic-las a um software e
fazer uma comparao analtica das duas verses.

2. REFERENCIAL TERICO

2.1 Engenharia de Software

Segundo Pressman (1995) devido ao crescimento eminente dos
softwares, o mesmo se tornou uma preocupao administrativa, mais tarde a
sua confiabilidade foi colocada em questionamento. Ento surgiu a Engenharia
de Software para tentar contornar a crise do software, dando um tratamento
mais controlado ao desenvolvimento de sistemas.
Na construo de sistemas, para obter um software final de alta
qualidade, preciso que seja seguido um conjunto de passos pr-definidos,
chamado de processo de software, este um esboo para as atividades que
so necessrias para construir um software de qualidade.
aplicvel grande maioria dos projetos de software independente de
seu tamanho o arcabouo de processo genrico, tal ele, Comunicao,
Planejamento, Modelagem, Construo e Implementao, respectivamente.
Nos tempos de hoje existem vrios modelos de processo de software
entre eles podemos citar os mais usados, o Modelo em Cascata e os modelos
evolucionrios: Modelo em Espiral e o Processo Unificado.

2.2 Refatorao

Quando os desenvolvedores comearam a analisar seus cdigos para
incluirem novas funcionalidades ou modificarem as j existentes, eles
observaram que os cdigos estavam em sua maioria desestruturados, de dificil
4

compreenso, manuteno e com trechos duplicados. A refatorao surgiu
atravs dessa observao.
Algumas pessoas pensam que Refatorao apenas uma limpeza de
cdigo, mas ela vai alm disso, porque fornece tcnicas especficas para cada
tipo de alterao. Ento se forem usadas da forma correta deixa-o menos
propenso a erros.
Refatorao uma alterao feita na estrutura interna do software para
torn-lo mais fcil de ser entendido e menos custoso de ser modificado sem
alterar seu comportamento observvel. (FOWLER, 2004, p. 52).

3 MATERIAL E MTODOS

3.1 Tecnologias utilizadas

No desenvolvimento deste projeto utilizaram-se as seguintes
tecnologias: C#, ASP. NET, SQL Server 2008, Visual Studio. NET.
No desenvolvimento do sistema aplicaram-se os seguintes mtodos: PU,
UML, Arquitetura Orientada a Objetos e Camadas, Modelagem Relacional para
o banco de dados.

3.2 Etapas de Desenvolvimento do projeto

Primeira etapa: Pesquisa para que se pudesse entender a refatorao, suas
principais tcnicas e como aplic-las;
Segunda etapa: Desenvolvimento de um sistema sem utilizar nenhuma
tcnica de refatorao;
Terceira etapa: Refatorao de grande porte, gerando assim uma nova
verso do sistema;
5

Quarta etapa: Anlise comparativa entre as verses do sistema.

4 REFATORAO: ANLISE PRTICA

4.1 Definio do Sistema

O Sistema de Controle de Monografias SCM tem por objetivo facilitar
efetivamente o controle de entrada e emprstimos de monografias.
Espera-se que com o uso desse sistema, as atividades bsicas do controle
de monografias sejam realizadas de forma gil, tornando o trabalho do
secretrio mais prtico. As atividades de cadastro, edio e excluso de
alunos, professores, monografias e emprstimos sero controlados pelo
Sistema de Controle de Monografias.

4.2 Sistema sem Classe

Na primeira etapa do projeto foi desenvolvido o Sistema de Controle de
Monografia sem a utilizao de classes. Apesar de estar utilizando uma
plataforma totalmente orientada a objetos o cdigo estava escrito de forma
procedural, ou seja, todas as funes, tais como consultas, inseres e
atualizaes no banco de dados, foram desenvolvidas nos prprios forms, no
aproveitando assim alguns benefcios da orientao a objetos, como a
reutilizao de cdigos.
O sistema contm vrios Maus Cheiros, mas com certeza o cdigo
duplicado ocorre com maior frequncia, podendo ser encontrado com facilidade
nessa verso do sistema. Na sequncia um exemplo de cdigo duplicado no
SCM.
6

Temos dois Subsistemas, o Subsistema Aluno e o Subsistema
Emprstimo, em ambos h uma necessidade de utilizar uma funo que
selecione o aluno pela sua matrcula.
No Subsistema Aluno, essa funo utilizada na pgina de alterao de
Alunos, onde existe a opo de consulta pela matrcula do aluno.


FIGURA 1 Procedimento Consulta da pgina Alterar Alunos.

J no Subsistema Emprstimo, na pgina de incluso de Emprstimo,
necessria a utilizao da mesma funo para selecionar o aluno que ir fazer
o emprstimo.

7


FIGURA 2 Procedimento Consulta da pgina Incluir Emprstimo.
Como se pode observar, lugares diferentes do sistema necessitam utilizar
uma mesma funo (procedimento). Para diminuir esse problema foi observada
a necessidade de remodelar o sistema com uma estrutura de classes, capaz de
unir esses trechos de cdigos.

4.3 Sistema com Classe

Devido aos vrios problemas apresentados pela verso sem classe do
SCM, a primeira refatorao realizada no sistema foi a Converter Projeto
Procedural em Objetos, pois alm de ser uma refatorao considerada de
grande porte, ela deixou o sistema de SCM com uma estrutura de classes
capaz de unificar a maioria dos problemas de cdigos duplicados do sistema.
Os passos para executar essa refatorao, so:
Analisar cada tabela do banco de dados, e verificar quais podem ser
transformadas em classes.
Percorre-se o cdigo e movem-se as devidas funes para uma classe
de acordo com sua funcionalidade.

Tomando o exemplo dado de cdigo duplicado no sistema sem classe, depois
de criada a Classe Aluno, o prximo passo criar um mtodo que retorne uma
8

consulta pela matrcula do aluno. Na sequncia o cdigo da estrutura da classe
Aluno j com o mtodo ConsultaAlunoPorMatricula:

FIGURA 3 Classe Aluno

A grande vantagem que este mtodo(ConsultaAlunoPorMatricula) ser
chamado de vrios lugares no sistema, acabando com o grande problema de
cdigo duplicado para essa funo, reduzindo o trabalho em futuras
manutenes do sistema e economizando linhas de cdigo.
Com o mtodo ConsultaAlunoPorMatricula criado, apenas troca-se o
cdigo que estava no form e chama-se o novo mtodo criado na classe Aluno.
O cdigo do form, ficou assim:

FIGURA 4 Utilizando o mtodo ConsultaAlunoPorMatricula da classe Aluno.


9

4.4 Sistema Refatorado

Mesmo aplicando a refatorao Converter Projeto Procedural em
Objetos, o sistema ainda apresentava alguns Maus Cheiros, ento foram
aplicadas algumas tcnicas de refatorao para melhorar a estrutura interna do
cdigo. Na sequncia, a descrio de cada uma das tcnicas aplicadas:
Renomear Mtodos:
Essa refatorao utilizada quando o nome de um mtodo no revela seu
propsito, deve-se ento alterar o nome deste mtodo.
O SCM apresentava esse problema, ento foi aplicada esta refatorao. Na
sequncia, como era a declarao do mtodo e como ficou aps a refatorao:

FIGURA 5 Declarao do mtodo sem refatorao


FIGURA 6 Declarao do mtodo aps a refatorao

Extrair Mtodo:
Essa refatorao utilizada quando um mtodo est muito longo ou
necessrio coment-lo para ter seu propsito compreendido, esse trecho
precisa ser extrado para um novo mtodo.
O SCM apresentava esse problema, ento foi aplicada esta refatorao. Na
sequncia, como era o mtodo e como ficou aps a refatorao:
10


FIGURA 7 Procedimento que pesquisa um Professor e habilita os campos
para edio antes da refatorao.

FIGURA 8 Procedimento que pesquisa um Professor e habilita os campos
para edio aps a refatorao.

Reverter Condicional:
Essa refatorao utilizada quando se tem uma condicional que seria mais
fcil de entender se o seu sentido estivesse invertido. Ento inverta o sentido
da condicional e reordene as clusulas.
O SCM apresentava esse problema, ento foi aplicada esta refatorao. Na
sequncia, como era a condicional e como ficou aps a refatorao:
11


FIGURA 9 Procedimento que realiza a devoluo da Monografia antes da
refatorao


FIGURA 10 Procedimento que realiza a devoluo da Monografia aps a
refatorao
Todas essas refatoraes utilizadas no SCM contribuiro para a
diminuio de linhas de cdigo, bem como a facilitao no entendimento do
cdigo e manutenes futuras.


12

5 RESULTADOS E DISCUSSES

As vrias refatoraes aplicadas ao SCM possibilitaram uma anlise efetiva
na melhoria da qualidade do software, alm de uma reduo considervel no
nmero de linhas de cdigo.
Na sequncia, o grfico demonstra a reduo das linhas de cdigo da
verso sem refatorao do SCM para a verso refatorada do SCM.

FIGURA 11 Grfico comparativo entre as verses sem Refatorao e com
Refatorao do SCM.

As melhorias que foram identificadas referem-se fatores de qualidade, tais
como: Eficincia, Manutenabilidade, Reutilizao, Conciso, Modularidade e
Simplicidade.
6 CONCLUSO

Com base nos resultados adquiridos, pde-se verificar que possvel o uso
de tcnicas que orientem a refatorao, pois possuem passos simples que se
seguidos corretamente, levam ao sucesso da refatorao. Observou-se que o
cdigo quando refatorado torna-se mais legvel e eficiente, facilitando a
840
860
880
900
920
940
960
980
1000
Quantidade de Linhas
SCM Sem Refatorao
SCM Com Refatorao
13

manutenabilidade do software. Pde-se verificar tambm que o uso da
refatorao contribui grandiosamente para a reutilizao de cdigo, o que
colabora para um processo de desenvolvimento de software mais gil e eficaz.
A refatorao no pode ser aplicada em todo cdigo fonte, necessrio
analisar cada trecho separadamente e verificar a possibilidade de refator-lo,
pois aplicar a refatorao de forma equivocada poder trazer problemas ao
software.
Como indicao para trabalhos futuros, seria interessante a realizao de
um estudo sobre Tcnicas de Refatorao para Banco de Dados, e aplicao
de novas tcnicas ligadas a refatorao.


14

REFERNCIAS

ABREU, Luiz. Asp.Net 4.0: Curso Completo. So Paulo: Editora de
Informtica FCA, 2011.

BATTISTI, Jlio. ASP. NET: Uma nova revoluo da construo de sites e
aplicaes web. Rio de Janeiro: Axcel Books, 2001.

BOOCH, Grandy; RUMBAUGH, James; JACOBSON, Ivar.UML GUIA DO
USURIO.So Paulo:Editora Campos, 2000.

FOWLER, Martin. Refatorao: Aperfeioando o projeto de cdigo
existente. Porto Alegre: Bookman, 2004.

FURLAN, Jos Davi. Modelagem de Objetos atravs da UML. So Paulo:
Makron Books, 1998.

HOTEK, Mike. SQL Server 2008 Passo a Passo. So Paulo: Bookman,
2010.

MARQUES, Davi Azevedo, Refatorao: Aperfeioando um software
existente. Trabalho de Concluso de Curso (Graduao em Cincia da
Computao) Universidade Jos do Rosrio Vellano, Alfenas MG, 2006.

PRESSMAN, Roger. Engenharia de Software. So Paulo: Makron Books,
1995.

PRESSMAN, Roger. Engenharia de Software. So Paulo: Makron Books,
2006.

15

REFACTORING. Disponvel em: <www.refactoring.com>. Acesso em: 14 Nov.
2012.

SCOTT, Kendall. Processo Unificado Explicado. Porto Alegre: Bookman,
2003.

SHARP, John. Microsoft Visual C# 2010 Passo a Passo. So Paulo:
Bookman, 2008.

Você também pode gostar