Baixar este arquivo PDF

Propaganda
Utilização do framework “Ruby On Rails” no desenvolvimento de um módulo Aweb
RTIGO
para
ORIGINAL
sistema
/ ORIGINAL
de biblioteca
ARTICLE
Utilização do framework “Ruby On Rails” no desenvolvimento de um módulo web para
sistema de biblioteca
Use of “Ruby On Rails” framework in the development of a web module for library system
Felipe Pierre Conter*
Fabiana Frata Furlan Peres*
* Universidade Estadual do Oeste do
Paraná (UNIOESTE).
Resumo
O framework Ruby on Rails tem ganhado destaque como ferramenta para desenvolvimento web. Ele promete ser mais produtivo que outras abordagens. O seguinte
trabalho, ainda em desenvolvimento, propõe utilizar o framework para o desenvolvimento de um módulo web para o Sistema de Biblioteca da UNIOESTE. Essa aplicação
terá um banco de dados próprio, porém também irá manipular informações do banco
de dados já em utilização do sistema atual da biblioteca. Isso nos permite explorar e
analisar duas abordagens com o framework: o desenvolvimento a partir de um
banco de dados vazio, que irá evoluir juntamente com a aplicação e o acesso a um
banco de dados já existente. Pretende-se encontrar os pontos fracos e fortes do
desenvolvimento em ambas as abordagens.
Palavras-chave: Engenharia de software. Web. Frameworks. Desenvolvimento
ágil.
Abstract
The Ruby on Rails framework has been in evidence as a web development tool. It
promises to be more productive than other approaches. The following work, still
under development, proposes to use the framework for the development of a web
module for the Library System at the State University West of Paraná (UNIOESTE).
This application will have its own database, but it will also use information from the
database in use by the current library system. This allows us to explore and
analyze two approaches with the framework: the development from an empty database, which will evolve together with the application and access to an already
existing database. This work intends to find out the weak and strong points of the
development in both approaches.
Keywords: Software engineering. Web. Frameworks. Agile development.
1 Introdução
O framework Ruby on Rails, também chamado de
Rails ou RoR, propõe maior facilidade e rapidez no
desenvolvimento e manutenção de aplicações web.
Outra importante característica deste framework é que
ele disponibiliza suporte às novas tecnologias existentes na rede, como Ajax e interfaces RESTful, favorecendo sua popularização e destaque como uma das
principais ferramentas de desenvolvimento web. Existe uma gama de sistemas altamente complexos e funcionais que necessitam de manutenção evolutiva que
podem ser feitas utilizando tecnologias mais fáceis de
se utilizar (FULTON, 2005).
Segundo Rangel, um desenvolvedor que utiliza este
framework, com Ruby on Rails, a produtividade é maior porque se escreve menos códigos, mais eficientes.
Afirma ainda que um projeto que em Java levaria 120
dias para ser produzido, com Rails é reduzido para 5
dias (SPOSITO, 2006).
Neste contexto, este estudo propõe o desenvolvimento de um módulo web para um sistema de biblioteca, estendendo o acesso a informações sobre a disponibilidade do acervo, que poderão ser acessadas por
meio de um website.
Desta forma é possível analisar e identificar pontos
fortes e fracos no desenvolvimento com essa ferramenta,
com enfoque especial no acesso aos bancos de dados.
2 Fundamentação Teórica
2.1 Desenvolvimento Web
A Internet evoluiu de uma rede de troca de trabalhos acadêmicos a uma rede mundial que conecta qualquer parte do mundo. Quando os aplicativos web começaram a ser desenvolvidos, existiam muitas limitações
que foram sendo resolvidas. O grande diferencial da web
atual, consiste na dinamicidade de aplicações, que estão em um patamar talvez até mais avançado que as
aplicações desktop (ASLESON; SCHUTTA 2006).
Há alguns anos, se uma aplicação cliente/servidor
em desktop necessitasse de atualização, seria necessário atualizar cliente por cliente. Havendo muita dificuldade na instalação e na distribuição do software.
Com os softwares na internet, em forma de sites,
não é mais necessário a instalação na máquina cliente. Porém, ainda existiam alguns problemas relacionados com a “pobre” interatividade com o usuário.
Muitos elementos de interatividade das aplicações
CONTER, F. P.; PERES, F. F. F. / UNOPAR Cient., Ciênc. Exatas. Tecnol., Londrina, v. 6, p. 9-13, nov. 2007
9
Utilização do framework “Ruby On Rails” no desenvolvimento de um módulo web para sistema de biblioteca
desktop tiveram que ser sacrificados para que fossem
formatados como código HTML.
A cada interação do usuário com o servidor, era
preciso que o cliente aguardasse a atualização da
página por inteiro. O tempo “perdido” na atualização e
o tráfego desnecessário gerado pela retransmissão de
elementos requisitados eram as principais barreiras
que impediam o avanço das aplicações web. Muitas
abordagens tentaram modificar estes entraves, como
a CGI1 , os Applets e Servlets da Sun2 , o JavaScript, o
Flash da Macromedia, dentre outras. Porém, poucas
conseguiram se manter até hoje (ASLESON; SCHUTTA
2006).
A necessidade por páginas cada vez mais dinâmicas fez com que várias tecnologias surgissem prometendo serem mais produtivas e modernas. Dentre essas tecnologias, os frameworks de aplicações web
surgiram para suportar o desenvolvimento de websites
dinâmicos, aplicações web e web services (interfaces
para interação de aplicação a aplicação na web,
intermediada normalmente por arquivos XML).
Um framework web elimina algumas dificuldades
associadas com atividades comuns no desenvolvimento web, por exemplo, disponibilizando recursos para
facilitar o acesso ao banco de dados, criação de
templates, controle de sessões e freqüentemente promovem o reuso de código em sua aplicação.
2.2 O Framework Ruby on Rails
O Framework Ruby on Rails chamado simplesmente de Rails, torna mais fácil o desenvolvimento e manutenção de aplicações web. Permite ao programador
menor preocupação com a configuração e com a coesão entre os elementos da aplicação, como comunicação entre as regras de negócio, o banco de dados e
a página que irá para o browser do cliente. Assim o
programador pode concentrar seu foco na aplicação
em si (THOMAS et al., 2007).
Para Walton e Hibbs (2006) o Rails mantém a curva de aprendizado baixa, permitindo facilidade e rapidez no desenvolvimento no Rails. Criado em 2004 por
David Heinemeier Hansson, um desenvolvedor da empresa 37Signals3 , o Rails surgiu como a base para o
desenvolvimento de uma aplicação de controle de projetos, ou seja, surgiu de um problema real na
37Signals. Foi escrito totalmente na linguagem Ruby,
sendo que a linguagem padrão de desenvolvimento no
framework também é o Ruby.
A seguir são apresentados alguns conceitos relacionados ao Rails:
- Convenção ao invés da configuração: Certos padrões de inferência entre os elementos da aplicação
fazem que seja desnecessário fazer arquivos externos
de configuração, como no Struts (CUNHA NETO, 2007),
sendo necessário apenas definir as configurações que
fogem do padrão.
1
2
3
- KISS: “Keep it simple, stupid”, ou na tradução,
“deixe simples, estúpido” (CUNHA NETO, 2007). O
conceito se resume em manter tudo simples de uma
forma geral. Ou seja, não “reinventar a roda”. Dessa
forma, é muito mais fácil identificar o que cada parte
do código faz em específico.
- DRY: “Don`t repeat yourself”, ou na tradução, “não
se repita”. Todo o conhecimento em um sistema deve
ser expresso em apenas um lugar, evitando repetição
de código. O Rails leva o programador a seguir esse
conceito, sendo que mudanças futuras nos requisitos
de um sistema acabam tendo impacto reduzido, pois
o tempo gasto nessas mudanças é menor (THOMAS
et al., 2007).
- Desenvolvimento Ágil: É mais importante satisfazer o cliente com a entrega mais rápida e contínua de
software, de preferência numa escala de tempo pequena. Isso o encoraja a pedir mudanças no software
e os problemas de identificação errônea de requisitos
são identificados mais cedo. O desenvolvimento Ágil
favorece “indivíduos e interações” sobre processos e
ferramentas, “software funcionando” sobre documentação compreensiva, “colaboração do cliente” sobre
negociação de contrato, e “responder a mudanças”
sobre seguir um plano. O Rails é relacionado fortemente com o desenvolvimento Ágil, pois a empresa
onde o seu desenvolvimento se iniciou é adepta dessa
abordagem (HIGHSMITH, 2001).
2.3 A Arquitetura MVC – Model, View e Controller
Em 1979, Trygve Reenskaug especificou uma nova
arquitetura de desenvolvimento de aplicações interativas,
chamada MVC. Nesta abordagem, uma aplicação é
dividida em três tipos de componentes: models, views
e controllers ou modelos, visões/interfaces e
controladores (THOMAS et al., 2007).
No Rails, as aplicações seguem a arquitetura MVC.
Existe um lugar específico para cada parte de código
desenvolvido. Devido ao princípio da convenção ao invés de configuração, o model, view e controller funcionam de maneira que tipicamente não é necessário
definir as configurações de relacionamento entre eles.
O Rails possui padrões inteligentes que fazem com
que todos esses elementos se encaixem (THOMAS
et al., 2007).
O model é responsável por manter o estado da aplicação. O estado pode estar em transição, aguardando
uma resposta do usuário ou de outras aplicações e pode
ser permanente, sendo nesses casos armazenado fora
da aplicação, normalmente em um banco de dados.
Apesar do foco do model ser nos dados, ele também força o cumprimento de todas as regras de negócio que se aplicam àqueles dados. Por exemplo, para
excluir da aplicação os usuários cadastrados que não
tenham emprestado nenhum livro de uma biblioteca
em 5 anos, é responsabilidade do model forçar essa
(http://www.w3.org/CGI/)
(http://java.sun.com/developer/onlineTraining/new2java/programming/learn/apps.html).
Empresa de desenvolvimento e venda de serviços na web.
10
CONTER, F. P.; PERES, F. F. F. / UNOPAR Cient., Ciênc. Exatas. Tecnol., Londrina, v. 6, p. 9-13, nov. 2007
Utilização do framework “Ruby On Rails” no desenvolvimento de um módulo web para sistema de biblioteca
restrição. Isso mantém a integridade dos dados no
banco, fazendo com que nenhuma outra parte da aplicação invalide-os (THOMAS et al., 2007).
O conceito de model no Rails é desempenhado pelo
Active Record, um componente responsável pela persistência (normalmente feita em um banco de dados).
O Rails utiliza aqui o conceito de ORM - “Objectrelational mapping” ou mapeamento objeto-relacional.
Bibliotecas ORM mapeiam tabelas para classes, sendo que as linhas dessa tabela armazenam os objetos
dessa classe, com seus respectivos atributos e associações. O Active Record facilita a busca por uma informação no banco. A consulta é transparente, não
sendo necessário descrever detalhes do código de
acesso específico do banco de dados que se está utilizando. A aplicação fica desacoplada de um banco de
dados específico, pois a lógica de acesso ao banco
fica isolada da lógica de negócio.
Outra facilidade provida pelo ORM do Rails é o save.
Quando se deseja salvar um objeto “livro” no banco, por
exemplo, basta chamar livro.save e a persistência no banco de dados é realizada (THOMAS et al., 2007).
Em alguns momentos, os padrões do Active Record
não são adequados ao desenvolvimento, como quando se lida com uma base de dados com um esquema
legado (não compatível com a estrutura padrão do
Rails). Nesses casos, o desenvolvimento com Rails
pode se tornar um pouco mais custoso com relação
ao tempo gasto no desenvolvimento. Nesse sentido, o
acesso ao banco pode ser feito de maneira “manual”,
ou seja, informando diretamente o SQL a ser executado. Outra alternativa mais inteligente, porém que demandaria um nível de conhecimento mais aprofundado
sobre o framework, seria manipular as diretivas do
Active Record para que ele execute exatamente aquilo que se deseja (MARSHALL; PYTEL; JON, 2007).
O Rails não é uma “caixa fechada”. Todas as classes e elementos do framework estão disponíveis e
escritos em Ruby. Ao executar algo, o framework interpreta não somente o código do usuário, mas também o código das classes do framework. Caso o
desenvolvedor deseje alterar o código do framework,
as mudanças serão interpretadas corretamente na próxima execução.
O view gera a interface de usuário, normalmente
baseada em dados do model. Por exemplo, deseja-se
mostrar ao usuário uma lista de livros disponíveis para
empréstimo no momento. A lista dos livros estará disponível no model, porém é o view quem receberá esses dados e os formatará para mostrar ao usuário.
Contudo, o view apenas é responsável por colocar a
lista de livros em uma interface amigável, de preferência no browser do usuário, depois o responsável por
receber algum pedido de reserva do usuário por certo
livro é o controller (THOMAS et al., 2007).
O controller faz o papel de administrar a execução
da aplicação. É ele que recebe os pedidos e as entradas de dados vindas de fora da aplicação, incluindo os
dados do browser e cliente, interage com o model e
disponibiliza um determinado view para o usuário
(THOMAS et al., 2007).
4
Seguindo o exemplo apresentado no item anterior,
quando o usuário escolhe um livro para reserva, o
controller é quem recebe esse pedido. Ele “pede” o
livro para o model e depois invoca um view passando
os dados do livro requisitado.
3 Materiais e Métodos
Foi desenvolvida uma aplicação CRUD4 em Rails
com objetivo de realizar o controle de acesso dos usuários ao módulo. Estão ainda em desenvolvimento duas
outras partes deste módulo: a primeira visa acessar
um banco de dados já existente no sistema de controle de biblioteca da UNIOESTE com objetivo de consultar e realizar reservas ao acervo físico disponível; e a
segunda tem por objetivo cadastrar e manipular o acervo
digital da biblioteca.
O controle de acesso por usuários tem como
objetivo restringir o acesso a algumas funcionalidades
da aplicação web, disponíveis apenas para o administrador da biblioteca, como o cadastro de usuários do
módulo web. É também função desse módulo associar reservas de livros aos usuários cadastrados no sistema atual da biblioteca.
Há um banco de dados próprio do sistema administrativo atual na biblioteca, no qual são registrados
empréstimos de livros, nomes de usuários, entre outros dados pertinentes ao funcionamento da biblioteca. De fato, este módulo web irá acessar o banco de
dados, somente para realização de consultas no acervo sendo que as informações geradas pelo módulo são
persistidas num banco de dados definido para este
módulo. Dados de empréstimos continuarão sendo responsabilidade do sistema de controle da biblioteca.
A funcionalidade de consulta on-line e reservas têm
por objetivo aproximar o aluno da biblioteca, por meio
de uma interface web. O usuário poderá saber se o
livro que ele deseja emprestar está disponível ou não,
quando estará disponível e poderá inclusive reservar um
livro que se encontre disponível. O módulo de reservas
somente estará disponível para usuários autenticados
no sistema, com conta on-line devidamente relacionada a conta no sistema de controle de bibliotecas.
Dados sobre reservas serão armazenados no novo
banco, podendo ser consultados pelo administrador.
O sistema irá emitir um e-mail ao operador da biblioteca no surgimento de uma nova reserva, para que este
efetue a mesma no sistema atual da biblioteca. Esta
abordagem é adotada, num primeiro momento, com
objetivo de manter a integridade da aplicação, deixando para que seja definido o serviço de comunicação
entre a aplicação e o módulo web numa próxima
iteração do desenvolvimento.
A terceira funcionalidade do módulo tem por objetivo
disponibilizar o acervo digital da biblioteca. Existem
muitos trabalhos de conclusão de curso, monografias
e dissertações em formato digital tendo como suporte
CD’s. Sendo mais conveniente o acesso direto aos
documentos digitais pela web. Atualmente a UNIOESTE
possui um sistema nesse modelo, porém voltado ape-
Create, Read, Update and Delete.
CONTER, F. P.; PERES, F. F. F. / UNOPAR Cient., Ciênc. Exatas. Tecnol., Londrina, v. 6, p. 9-13, nov. 2007
11
Utilização do framework “Ruby On Rails” no desenvolvimento de um módulo web para sistema de biblioteca
nas para teses e dissertações dos cursos de pós-graduação/mestrado oferecidos pela universidade.
Para o desenvolvimento da parte de controle de
acesso e cadastro ao acervo digital, foi possível utilizar várias facilidades oferecidas pelo Rails, tornando o
processo de integração da aplicação com o banco de
dados e a interface, uma tarefa muito simples e transparente para o desenvolvedor.
No que diz respeito ao acervo físico, como os dados já se encontram cadastrados em uma base de
dados ativa, o acesso será de forma diferenciada, adaptada ao esquema em que se encontram organizados
os dados, sem tirar proveito de muitas das facilidades
de mapeamento ao banco de dados do Rails.
4 Resultados
Como resultados parciais, é perceptível maior facilidade em desenvolver com o framework, principalmente nos módulos de controle de acesso do módulo web
e cadastro e acesso ao acervo digital. Eles foram feitos
independentes do sistema da biblioteca, dando maior
flexibilidade e possibilitando ao framework lidar com versões do esquema do banco e persistência de dados.
A única exceção diz respeito ao cadastro de usuários, no qual o acesso ao banco de dados do sistema
de bibliotecas se fez necessário para associar o login
do usuário da rede com o código de usuário da biblioteca. Assim, será possível direcionar corretamente as
reservas de livros feitas pelo módulo web.
O desenvolvimento fugiu do padrão no momento em
que se pensou no acesso a dados de livros e de empréstimos. No desenvolvimento desse módulo que
manipula uma estrutura de dados já existente, está
sendo necessário definir de forma usual a estrutura
para o funcionamento correto do módulo, não permitindo o uso de algumas praticidades.
Uma alternativa que está sendo estudada é a manipulação do Active Record, para adaptar os padrões de
acesso a banco de dados para a realidade do esquema apresentado no banco de dados da aplicação já existente na biblioteca. O Rails permite que o desenvolvedor
modifique os padrões de acesso ao banco, definindo-os
de acordo com o esquema utilizado em seu banco de
dados (MARSHALL; PYTEL; JON, 2007).
Como resultados futuros é possível comparar o acesso utilizando declarações SQL diretamente no código
Ruby, com a modificação dos padrões do Active Record.
5 Discussão
O Rails cumpriu seu papel como framework de desenvolvimento web muito bem referente ao desenvolvimento de um banco de dados vazio que evoluía juntamente com a aplicação. O Rails leva o programador a uma
abordagem de desenvolvimento Ágil, seguindo os princípios apresentados anteriormente, fazendo com que o processo de desenvolvimento responda mais rapidamente a
mudanças e gere resultados mais cedo no processo.
Porém ao utilizar o framework sobre um banco de
dados já existente, ou para migrar uma aplicação já
12
implantada para o framework, o trabalho gerado com
configurações extras pode ofuscaR esse ganho de produtividade e os princípios do desenvolvimento Ágil e
da convenção sobre configuração. Depende da familiaridade do desenvolvedor com o Active Record ou com
o SQL do banco.
Em algumas situações, utilizar SQL pode ser mais
fácil que customizar o Active Record, podendo ocorrer
também casos onde a vantagem de se trabalhar com
o Active Record compensa o tempo gasto na configuração do mesmo.
6 Conclusão
O Rails é um framework relativamente novo, porém
mostrou destaque em torno dele. Para o desenvolvimento de um módulo web guiado pelos princípios Ágeis,
sobre os quais o framework foi criado, ele é uma ótima
ferramenta, demonstrando ser fator de peso para a produtividade em projetos web.
O caso pode alterar quando se trata de acesso a
banco de dados já existentes. Os padrões de desenvolvimento e mapeamento do Rails não foram
projetados para este tipo de situação, apesar de o
framework possibilitar esta alternativa, ela é mais custosa em termos de tempo com a configuração do acesso ao banco.
Outros resultados ainda serão gerados, com a continuidade deste estudo, mas é perceptível que o Rails é
uma ferramenta muito segura para desenvolvimento Ágil.
Referências
ASLESON, R.; SCHUTTA, N. T. Foundations of ajax.
Berkeley, USA: Apress, 2006.
CUNHA NETO, S. M. da. Rails versus struts: um comparativo de Frameworks. 2007. 56f. Monografia (Bacharelado
em Ciência da Computação) – UNIRIO-Universidade Federal do Estado do Rio de Janeiro, Rio de Janeiro-RJ, 2007.
FULTON, H. Ruby: whatisruby. 2005. Disponível em:
<http://www.rubygarden.org/Ruby/page/show/WhatIs
Ruby>. Acesso em: 14 jun. 2007.
HIGHSMITH, J. History: the agile manifesto. 2001. Disponível em: <http://agilemanifesto.org/history.html>.
Acesso em: 14 jun. 2007.
MARSHALL, K.; PYTEL C.; JON, Y. Pro active record
for ruby: databases with ruby on rails. Berkeley, USA:
Apress, 2007.
SPOSITO, R. Rub on Rails no browser. InfoExame,
São Paulo, n. 248, p. 124-5, nov. 2006.
THOMAS, D. et al. Agile web development with rails.
nd
2 ed. Raleigh, USA: The Pragmatic Bookshelf, 2007.
WALTON, B.; HIBBS, C. Rolling with ruby on rails revisited. 2006. Disponível em: <http://www.onlamp.com/
pub/a/onlamp/2006/12/14/revisiting-ruby-on-rails
revisited.html>. Acesso em: 14 jun. 2007.
CONTER, F. P.; PERES, F. F. F. / UNOPAR Cient., Ciênc. Exatas. Tecnol., Londrina, v. 6, p. 9-13, nov. 2007
Utilização do framework “Ruby On Rails” no desenvolvimento de um módulo web para sistema de biblioteca
Felipe Pierre Conter*
Discente da Universidade Estadual do Oeste do Paraná – Campus
Foz do Iguaçu (UNIOESTE).
e-mail: <[email protected]>
Fabiana Frata Furlan Peres
Mestranda em Ciência da Computação. Docente da Universidade
Estadual do Oeste do Paraná – Campus Foz do Iguaçu (UNIOESTE).
e-mail: <[email protected]>
* Endereço para correspondência:
Rua Edmundo de Barros, 557, apto 44 – CEP 85851-120 – Foz
do Iguaçu, Paraná, Brasil.
CONTER, F. P.; PERES, F. F. F. / UNOPAR Cient., Ciênc. Exatas. Tecnol., Londrina, v. 6, p. 9-13, nov. 2007
13
Download