CPDFW - Framework para desenvolvimento de aplicações Web

Propaganda
CPDFW - Framework para desenvolvimento de aplicações
Web/Java na Universidade Federal da Bahia
José Augusto Dias de Paiva.
([email protected])
RESUMO
A difusão crescente da utilização de frameworks de aplicação deve-se ao aumento da
percepção do reuso de software como uma técnica necessária em ambientes cada vez
mais dependentes de sistemas complexos. Os diversos frameworks de aplicação
disponíveis para a plataforma Web/Java nem sempre exploram todas as similaridades
presentes em aplicações inseridas em contextos específicos, como o de uma instituição de
ensino superior. A especialização destes é uma opção para maximizar os ganhos
decorrentes desta técnica. O objetivo do presente artigo é apresentar o CPDFW, um
framework para o desenvolvimento de aplicações Web/Java baseado no projeto Struts da
Apache Software Foundation (ASF) que foi desenvolvido no Centro de Processamento de
Dados (CPD) da Universidade Federal da Bahia (UFBA) com o objetivo de atender às
demandas desta Universidade.
Palavras-chave: Framework, Java, Web.
INTRODUÇÃO
O processo de desenvolvimento de sistemas, apesar da crescente evolução da
computação, ainda é complexo e oneroso. O reuso de artefatos de software pré-existentes
para construção de novas aplicações torna-se uma técnica indispensável na medida em
que a complexidade dos sistemas computacionais aumenta. A utilização de frameworks
de aplicação consiste em uma política de reuso que reduz o tempo de desenvolvimento e
aumenta a qualidade dos artefatos de software. (Fayad)
O CPD produz sistemas de informação na plataforma Web/Java com o objetivo de
auxiliar os diversos processos existentes no contexto da UFBA. Contexto esse que se
refere às práticas comuns em universidades e ao conjunto de usuários esperado de
aplicações para este domínio (funcionários, docentes, técnicos, alunos, etc.).
A construção de um framework projetado para o escopo de aplicações de uma
organização qualquer pode ser considerado investimento em um patrimônio de reuso que
resulta em maior produtividade e padronização. O projeto CPDFW objetiva, através do
desenvolvimento de um framework para aplicações Web na plataforma Java, aumentar a
qualidade dos sistemas de informação produzidos e reduzir o custo e o tempo de
implementação atendendo às demandas da UFBA de forma mais ágil e eficiente.
REUSO E FRAMEWORKS
Muito do esforço e do custo no desenvolvimento de software está na reinvenção de
conceitos e componentes. Generalizar soluções de forma que estas possam ser aplicadas a
novos produtos contribui para o aumento da produtividade. Além disso, a reutilização
diminui os custos de manutenção e aumenta a confiabilidade dos sistemas
computacionais desenvolvidos, uma vez que as partes reutilizadas terão sido previamente
utilizadas e testadas em projetos anteriores. (Sommerville)
A utilização de frameworks é uma medida freqüentemente adotada para o aumento do
reuso de software. Segundo Johnson "Um framework é uma aplicação reutilizável e
semicompleta que pode ser especializada para produzir aplicações personalizadas". Um
framework ajuda a definir uma arquitetura padrão de software para um determinado
domínio de aplicações definindo uma lógica de controle comum, gerando uma
padronização que trás consigo um inegável ganho de produtividade. Por outro lado, o
custo de introdução limita seu uso, uma vez que, é necessário um prévio estudo antes do
uso prático e, conseqüentemente, dos ganhos esperados. (Sommerville)
Dentre os diversos frameworks existentes para a plataforma Web/Java está o Struts que é
um projeto de código aberto mantido pela ASF. Este se baseia no modelo MVC (ModelView-Controller) e oferece uma infra-estrutura padrão de controle do fluxo navegacional
com a intenção de reduzir parte do esforço inerente à implementação. Dessa forma
acelera e facilita o processo de desenvolvimento de sistemas de informação através de
uma abordagem baseada em desenvolvimento declarativo. (Husted)
O CPDFW utiliza a arquitetura do framework da ASF como base para incorporar novas
contribuições para o processo de desenvolvimento, especializando-o para o contexto
especificado anteriormente.
ARQUITETURA
O CPDFW interage com o Struts através da especialização de classes que representam as
ações das aplicações (Actions) e de plugins. Desta forma, este é capaz de utilizar
informações do framework da ASF como base para suas ações.
A configuração do CPDFW, assim como a do Struts, é feita através de desenvolvimento
declarativo em XML o que contribui para que o posterior entendimento destes artefatos se
dê sem maiores problemas ao mesmo tempo em que confere um custo de processamento
bem reduzido. Enquanto, no Struts, esta configuração refere-se ao fluxo da aplicação, aos
formulários e às ações que serão executadas, no CPDFW, este processo define
configurações mais específicas como controle de acesso, segurança e menus do sistema.
Além disso, a camada de apresentação é baseada nas informações fornecidas nesta etapa.
Com o objetivo de permitir a posterior evolução de partes estratégicas, o CPDFW teve
duas de suas funcionalidades subdivididas em módulos. O módulo de autenticação tem a
implementação da dinâmica de acesso e foi pensado para o contexto da universidade.
Dessa forma, está preparado para autenticar e fornecer dados de alunos, servidores e
docentes, através do acesso às respectivas bases de dados. Já o módulo de acesso à banco
de dados foi desenvolvido com o propósito de criar uma camada comum entre os banco
de dados e as aplicações que utilizam o padrão Data Access Object na camada de
persistência.
As funcionalidades relativas ao controle de segurança e menus foram desenvolvidas no
módulo principal do framework.
CAMADA DE APRESENTAÇÃO
O CPDFW fornece um padrão de interface com o usuário para os sistemas desenvolvidos.
Uma parte desta camada da aplicação é gerada a partir da configuração XML (menus,
nome do sistema, etc.), enquanto as telas específicas de cada sistema são criadas
manualmente. Para isto são fornecidas classes CSS e funções Javascript que auxiliam na
tarefa de desenhar os formulários e submetê-los.
A camada de apresentação do CPDFW utiliza submissão assíncrona através de AJAX
promovendo assim uma redução dos dados transferidos do servidor para o cliente e
gerando um retorno mais rápido para o mesmo. O conceito de que o retorno de
submissões via AJAX pode ser direcionado a áreas específicas de uma página HTML é
explorado fazendo com que o programador possa desenvolver uma aplicação sem ter
contato com a estrutura básica da página, ao mesmo tempo em que o usuário tem uma
experiência mais agradável.
MÓDULO DE AUTENTICAÇÃO E AUTORIZAÇÃO
Os principais usuários dos sistemas desenvolvidos no contexto da UFBA são alunos,
servidores e docentes. Portanto, o controle de autenticação e autorização estaria
incompleto se não atendesse a esses grupos especificamente. Isto é feito no CPDFW
através do acesso às bases de dados do Sistema Integrado de Pessoal (SIP) e do Sistema
Acadêmico (SIAC). Dessa forma o framework fornece diversas informações a respeito
destes tipos de usuários evitando, algumas vezes, que sistemas precisem acessar
diretamente estas bases de dados.
Os tipos de usuários específicos das aplicações desenvolvidas deverão ser definidos no
Módulo de Controle de Acesso (MCA). O MCA é um sistema que possui as informações
básicas de usuários das principais aplicações desenvolvidas no CPD, inclusive de alunos,
servidores e docentes. Ele foi concebido sob o conceito de grupos de usuários aos quais
as funcionalidades de um software estão atreladas.
As configurações de segurança no CPDFW são descritas em arquivos XML através dos
quais é definido que ações um tipo de usuário (aluno, servidor, docente ou grupo
específico do MCA) pode executar. Configuração semelhante é feita nos arquivos que
descrevem os menus do sistema, de forma que apenas itens permitidos ao usuário
autenticado são mostrados.
Por conseqüência do módulo de autenticação não estar acoplado ao núcleo do framework
é possível a implementação de diferentes formas de controle de acesso sem que a parte
principal do CPDFW seja alterada. Esta decisão levou em conta a possibilidade da
incorporação deste software em outros contextos.
MÓDULO DE ACESSO A BANCO DE DADOS
O módulo de acesso à banco de dados do CPDFW baseia-se no padrão Data Access
Object (DAO) para prover uma interface entre a aplicação e bases de dados. A motivação
é reduzir a responsabilidade do programador em controlar conexões com banco de dados.
As configurações relativas às mesmas são feitas através de XML.
Assim como o módulo de autenticação a camada de acesso à banco de dados do CPDFW
não é acoplada de forma a permitir posterior substituição.
CONSIDERAÇÕES E TRABALHOS FUTUROS
A utilização de frameworks de aplicação é uma prática adotada pelas organizações em
busca de uma política de reuso eficiente e de um acréscimo na qualidade e velocidade de
desenvolvimento de software. O Struts, por se tratar de um software de código aberto,
permite que este seja especializado com o intuito de maximizar o aproveitamento da
tecnologia para contextos específicos.
O custo atrelado ao desenvolvimento e à introdução de um framework pode ser
considerado elevado e não trás bons resultados em curto prazo. Apesar disso, é
importante perceber que a médio e longo prazo ganhos em qualidade, confiabilidade e
custo podem ser alcançados. Além disso, um framework é um patrimônio que evolui
juntamente com sua utilização tornando-se cada vez mais preparado para novas
aplicações.
O CPDFW, por ter sido desenvolvido visando uma posterior evolução e substituição de
módulos estratégicos (autenticação, acesso a banco de dados e estilo da camada de
apresentação), pode ser adequado para atender a outros contextos, como o de outras
Instituições Federais de Ensino Superior (IFES).
Está prevista a criação de um módulo de acesso a banco de dados baseado em outros tipos
de camada de persistência (Hibernate, EJB, etc.) e novos estilos de camada de
apresentação. O desenvolvimento de utilitários que gerem código para aplicações que
utilizem o CPDFW é um dos pontos que também devem ser trabalhados futuramente.
BIBLIOGRAFIA
FAYAD, Mohamed; SCHMIDT, Douglas C.; JOHNSON, Ralph E. Building Application
Frameworks. 1. ed. New York: John Wiley & Sons, 1999.
HUSTED, Ted; DUMOULIN, Cedric; FRANCISCUS, George; WINTERFELDT, David
Struts in Action 1. ed. Connecticut: Manning, 2003.
JOHNSON, Ralph e Brian Foote, “Designing Reusable Classes”, Journal of ObjectOriented Programming, SIGS, 1, 5 (junho/julho de 1988), 22-35,
http://www.laputan.org/drc/drc.html
SOMMERVILLE, IAN Engenharia de Software. 6. ed. São Paulo: Addison Wesley,
2003.
Download