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.
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.