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.