Você está na página 1de 16

Ferramentas para desenvolvimento web com produtividade

Adriano T. Souza1, Evando C. Pessini1, Ivonei de F. Silva1 Departamento de Informtica Universidade Estadual do Oeste do Paran (UNIOESTE) Cascavel PR Brasil
1

adrianots@gmail.com, pessini@utfpr.edu.br, ivonei@hotmail.com

Resumo. Este artigo apresenta um conjunto de frameworks e ferramentas voltadas ao desenvolvimento de software web com foco na produtividade. Os recursos escolhidos foram aplicados no ambiente da Cooperativa Agroindustrial C. Vale, uma empresa de grande porte que atua no ramo de cereais e frigorfico de aves. A proposta baseada nos seguintes recursos: persistncia de dados com Hibernate, gerenciamento de contexto da aplicao a partir do framework JBoss Seam, utilizao de RichFaces para aplicao de JSF e recursos de AJAX, e ambiente de desenvolvimento Red Hat Developer Studio.

1 . Introduo
O processo de desenvolvimento de software diz respeito a uma srie de atividades que visam a produo de programas de computador [Pedrycs e Peters 2001]. Tais atividades vo desde o levantamento das funcionalidades que o software dever apresentar at o momento em que o produto estar pronto para uso. Pedrycs e Peters (2001) elegem trs fases que consideram como principais neste processo, com base no padro IEEE 10741995, as quais so: Requisitos determinam como o sistema dever funcionar, bem como riscos e plano de testes; Projeto mostra como o sistema deve efetuar clculos e sua estrutura; Implementao a fase de codificao do software, produo de documentao e testes. O projeto e implementao do software deve ter em vista questes que podero surgir durante o desenvolvimento e o tempo de vida do mesmo, tais como: mudana de requisitos, prazos curtos e, posterior manuteno do produto. Um software de qualidade deve trazer em sua arquitetura caractersticas como: usabilidade facilidade para aprender e operar o software; manutenibilidade diminuir o esforo empenhado na reparao de erros; flexibilidade permitir que novas funcionalidades possam ser implementadas com o mnimo de impacto na estrutura do sistema; e interoperabilidade o sistema deve possibilitar sua integrao com demais sistemas existentes [Pressman 1995]. A produtividade no desenvolvimento de software essencial para qualquer organizao. Alcan-la, infelizmente, no para todas as empresas. A busca pela produtividade aliada a reduo de custos, sem perder a qualidade mnima e aceitvel, acontece h 40 anos. Diversos estudos demonstram que o uso de algumas tcnicas pode contribuir para o aumento da produtividade no desenvolvimento de software. Dentre elas, destaca-

se o reuso de software, colaborando efetivamente para o aumento da produtividade e reduo de custos sem que haja perdas qualidade no processo e no produto final [Almeida et al 2008]. Para que o reuso de software seja efetivo, necessrio utilizar tcnicas de: design patterns [Gamma et al 1994], frameworks [Fayad e Schmidt 2008], componentes [Neighbors 1980], dentre outras. Tambm importante o uso de tecnologias que promovem o reuso. Ferramentas, denominadas de frameworks, tais como, Hibernate [Bauer e King 2007] e RichFaces [JBoss 2009] contribuem para o aumento na produtividade.

2 . Ferramentas
Com base nos requisitos no funcionais citados, foi proposto um conjunto de ferramentas e frameworks visando o desenvolvimento de software web de forma mais produtiva que a plataforma legada da Cooperativa Agroindustrial C.Vale, a qual baseava-se apenas em um container web Tomcat executando pginas Java Server Pages (JSP) com todas as regras de negcio. Foi observado que neste ambiente todos os sistemas da intranet estavam acoplados em um nico projeto Java Web Application. Tendo em vista estas questes, foi elaborado uma estrutura para desenvolvimento de software com caractersticas que do maior flexibilidade que o ambiente atual e que permita maior facilidade para manuteno nas aplicaes da C. Vale. Os recursos selecionados para a elaborao da estrutura proposta so baseados nos frameworks: Hibernate - para persistncia e mapeamento objeto-relacional; RichFaces e Ajax4JSF para desenvolvimento de interfaces ricas; JBoss Seam para gerenciamento de contexto da aplicao; e Red Hat Developer Studio como ambiente de desenvolvimento. 2.1 . Hibernate Segundo Gradeck e Pugh (2004), o Hibernate um middleware Java projetado para prover um completo mapeamento objeto-relacional, simplificando significativamente o trabalho de persistncia de objetos em banco de dados relacional. Para utilizao do Hibernate necessrio descrever o mapeamento do objeto Java tendo em vista o banco de dados relacional. O mapeamento deve dizer qual a entidade do banco de dados que a classe Java ir representar, e as referentes colunas atravs dos atributos. Tambm necessrio parametrizar um identificador da classe que ser utilizado para representar a singularidade do objeto quando do seu armazenamento no banco de dados. Neste caso, o Hibernate permite que sejam utilizados geradores para compor um identificador nico, os quais so vinculados a elementos como identify e sequence, recursos providos pela maior parte dos bancos de dados disponveis [Gradeck e Pugh 2004]. O Hibernate suporta uma variedade de servidores de banco de dados comerciais e de cdigo aberto, bastando apenas que haja um driver JDBC (Java Database Connectivity). Este framework trabalha por padro com o SQL (Structured Query Language) bsico, e permite que seja feita alterao na configurao para se trabalhar com o dialeto especfico de algum banco de dados [Gradeck & Pugh 2004]. A figura 1 mostra como o Hibernate est posicionado na arquitetura de software:

Figura 1. Hibernate na arquitetura de software [adaptado de Hibernate 2009]

2.2 . RichFaces O RichFaces um framework que permite adicionar recursos de Asynchronous JavaScript And XML (AJAX) em aplicaes Java Server Faces (JSF). Este framework integrado ao ciclo de vida JSF e permite invocar, via JavaScript, validadores e conversores JSF bem como os demais JavaBeans inseridos no contexto JSF. O RichFaces tambm disponibiliza um conjunto de diversos componentes (com AJAX nativo) que podem ser utilizados para o desenvolvimento de interfaces ricas, inclusive com suporte a temas (skins) [JBoss 2009]. 2.3 . JBoss Seam O JBoss Seam define um modelo de componentes uniformes para as regras de negcio da aplicao. Este framework tem componentes statefull, ou seja, que guardam seu estado durante a execuo da aplicao de acordo com o contexto associado aos mesmos. Existem vrios contextos definidos nesta ferramenta, tais como: event (requisio), session, business process, application e conversation. Dentre estes, o contexto conversation, se mostra como diferencial deste framework, pois nele o estado do componente mantido durante uma srie de requisies web em uma interao com do usurio [Seamframework 2009]. Com o Seam possvel fazer uma integrao consistente de JSF, um modelo de componentes para camada de apresentao, com Enterprise Java Bean 3 (EJB3) que est presente no JEE a partir da verso 5 e pode ser utilizado para implementar regras de negcio no lado do servidor, bem como para desenvolver recursos de persistncia [Seamframework 2009]. Este framework integra-se com duas timas ferramentas para AJAX e JSF disponveis no mercado, o RichFaces e o ICEfaces. Estas solues possibilitam a adio de recursos de AJAX em pginas web sem a necessidade de se escrever cdigos JavaScript [Seamframework 2009] O Seam ainda possui uma srie de recursos relevantes, dentre os quais pode-se citar: implementao de workflows em jBPM (soluo JBoss para Business Process

Management), injeo de dependncia, inverso de controle e configuraes a partir de annotations. A figura 2 mostra a organizao do conjunto de recurso da arquitetura proposta.

Figura 2. Arquitetura proposta [adaptado de Seamframework 2009]

2.4 . Red Hat Developer Studio O Red Hat Developer Studio 1.0 CR1, a verso release candidate do produto JBoss Developer Studio, a qual foi distribuda gratuitamente. Esta verso se mostra estvel e com uma gama de recursos relevantes para o desenvolvimento de aplicaes web. Esta ferramenta uma Integrated Development Environment (IDE) baseada no Eclipse Europa 3.3 com Web Tools Project (WTP), que possui o Visual Page Editor, um recurso que permite o desenvolvimento a partir de uma interface WYSIWYG (What You See Is What You Get) com a renderizao do contedo de pginas web em tempo de desenvolvimento, incluindo os componentes JSF e RichFaces [Red Hat 2008]. Esta IDE disponibiliza vrias paletas de componentes que vo desde os elementos bsicos da API (Application Programming Interface) JSF aos componentes com AJAX que esto disponveis no framework RichFaces.

3 . A seleo das Ferramentas


A seleo das ferramentas citadas se deu a partir da anlise de alguns fatores, tais como: desempenho, estabilidade, performance de desenvolvimento, integrao com outras tecnologias e frameworks, maturidade da ferramenta no mercado, custo e possibilidade de agregar suporte empresarial. Foram analisadas ferramentas para framework de persistncia, framework Model View Control (MVC), framework Java Server Faces (JSF) com AJAX integrado, e ambiente de desenvolvimento. 3.1 . Framework de persistncia No quesito persistncia e mapeamento objeto-relacional (ORM) foi analisado os recursos da especificao Java Persistence API (JPA) e do framework Hibernate sendo utilizado a partir da sua implementao core com annotations. Neste contexto foi analisado os detalhes dos recursos para decidir qual destes utilizar. O JPA uma especificao, e como tal proporciona a independncia de

implementao, e o Hibernate pode ser utilizado como uma implementao de JPA. Este ltimo apresentou alguns recursos adicionais importantes no mapeamento das classes persistentes que trazem grande impacto na manipulao de dados em larga escala, os quais so apresentados a seguir. A anotao @Fetch pode ser utilizada com parmetro FetchMode.JOIN em conjunto com FetchType.EAGER para que a entidade relacionada no atributo seja associada busca com join na consulta SQL (Structured Query Language) do objeto mapeado. Esta anotao tambm pode ser utilizada com parmetro FetchMode.SUBSELECT em conjunto com FetchType.LAZZY. Desta forma os dados de atributos com colees em uma entidade A so carregados de uma s vez para todas as instncias de A em uma lista consultada previamente no banco de dados, ao contrrio do modo padro, onde feita uma consulta a separada para os atributos com colees em cada instncia de A [Bauer e King 2007]. Outro pronto interessante a anotao @GenericGenerator que pode ser utilizada para gerao de valor para chave-primria de uma entidade que baseada em relacionamento (chave estrangeira um-para-um com mesmo valor de chave primria) [Bauer e King 2007]. O Hibernate apresenta tambm o recurso de deleo em cascata a partir da anotao @Cascade(value=CascadeType.DELETE_ORPHAN), em que a lista de objetos filhos persistidos ir refletir o ltimo estado desta aps uma gravao do objeto pai, considerando que os elementos filhos no contidos na lista no momento da gravao sero eliminados do banco de dados [Bauer e King 2007]. 3.2 . Framework MVC (Model View Control) No quesito framework MVC, a avaliao foi feita em torno do Spring e JBoss Seam, ambos j amadurecidos no mercado com plena capacidade de serem utilizados. Outro framework tambm analisado foi o brasileiro Mentawai, embora este tenha como uma de suas primcias a simplicidade, e contemple uma variedade de funcionalidades, o mesmo ainda tem uma pequena base de usurios e literatura, consequentemente a resoluo de problemas no mbito de desenvolvimento poderia se tornar mais improdutiva [Mentawai 2009]. Tanto Spring quanto Seam surgiram com objetivo de serem alternativas leves especificao EJB antes de sua verso 3.0. Ambos possuem recursos de inverso de controle, injeo de dependncia, gerenciamento de transaes e gerenciamento de estado de um componente. Todavia, o framework Spring no pretende ser uma soluo completa para o desenvolvimento de aplicaes web, esperando-se do desenvolvedor a escolha de seu mecanismo de segurana, framework da camada de visualizao da aplicao e AJAX. Por outro lado, o Seam trs um conjunto completo de recursos fortemente integrados para o desenvolvimento de aplicaes, dentre os quais podem ser citados: iText - para gerao de documentos PDF; RichFaces e Ajax4JSF - para implementao da camada de apresentao; Seam-gen - para gerao inicial de aplicaes web; Identificao; Arquivo de configurao pages.xml - para adicionar comportamento na aplicao em tempo de navegao; e utilizao de Facelets para elaborao de templates [Gibson 2009].

3.3 . Framework Java Server Faces com AJAX Para composio dos recursos de interfaces ricas (RIA - Rich Internet Applications) baseados na especificao Java Server Faces (JSF) foram analisados os frameworks MyFaces, desenvolvido pela Fundao Apache; e RichFaces, que foi desenvolvido inicialmente pela Exadel e posteriormente se tornou parte do portflio Red Hat/JBoss. O MyFaces faz referncia a implementao base para especificao JSF e engloba vrios subprojetos, dentre os quais esto: Tomahawk que possui uma grande variedade de componentes visuais; Trinidad baseado no ADF Faces, framework inicialmente desenvolvido pela Oracle e doado ao projeto Myfaces o qual trs o suporte a AJAX; e o Tobago que apresenta como principal destaque o gerenciador de layout [Apache 2009]. O RichFaces disponibiliza ao desenvolvedor uma gama de componentes visuais que podem ser utilizados no desenvolvimento de interfaces e tem integrado nativamente o Ajax4JSF que adiciona recursos de AJAX aplicao JSF. Este framework se integra facilmente com Google Map, JQuery e Microsoft Virtual Earth [JBoss 2009] Avaliando-se o volume de tpicos em fruns como GUJ(http://www.guj.com.br) e JavaFree (http://www.javafree.org), observa-se que tanto MyFaces como RichFaces so bem aceitos pela comunidade de desenvolvedores Java. Conforme JBoss[2009] estes dois frameworks tambm podem ser utilizados em conjunto. 3.4 . Ambiente de desenvolvimento Para o ambiente de desenvolvimento foram analisadas duas ferramentas, sendo elas: Netbeans 6.5 e Red Hat Developer Studio 1.0 CR1. Foram verificadas questes como: suporte a tags Java Server Faces - JSF (auto-completation); suporte a desenvolvimento por editor visual; assistente de criao de classes entidades de persistncia a partir do banco de dados e suporte a edio das mesmas; e estabilidade da ferramenta. O Netbeans proporciona um ambiente com variedade de recursos para o ambiente de desenvolvimento na plataforma Java Enterprise Edition. Dentre estes, podem ser citados: suporte pleno ao desenvolvimento com Hibernate e Java Persistence API, com assistente para gerao e customizao das classes entidades a partir do banco de dados; suporte a edio de cdigo de pginas web com tags JSF, e um ambiente de desenvolvimento visual restrito a seu framework Visual Web JavaServer Faces; com relao a questo da estabilidade, foi verificado problemas de performance na inicializao da IDE, onde a ferramenta ficava inoperante em um tempo acima de 30 segundos; e na questo de estabilidade, foi verificado o travamento da ferramenta em vrias situaes onde se fazia a utilizao das teclas [ctrl]+[space] para invocar o recurso de assistente de cdigo [Netbeans 2009]. Tal como o Netbeans, a ferramenta Red Hat Developer Studio possui grande quantidade de recursos para o desenvolvimento na plataforma Java Enterprise Edition. Esta ferramenta possui suporte ao desenvolvimento com JPA e framework Hibernate. Contudo, a gerao de classes entidades a partir do banco de dados deve ser feita em um projeto JPA fora do projeto web onde est se desenvolvendo uma aplicao. Com relao ao desenvolvimento a partir do JSF, o Red Hat Developer Studio trs

caractersticas que representam um ganho de produtividade significativa, dentre as quais podem ser citados o editor visual de pginas, com suporte nativo ao frameworks RichFaces, paleta de componentes desta biblioteca bem como do JSF padro e JBoss Seam. Esta ferramenta tambm possui o suporte pleno a edio de tags JSF [Red Hat 2008]. 3.5 . Consideraes sobre a seleo das ferramentas A deciso pelo conjunto de ferramentas a serem utilizadas se baseou em seis fatores, os quais so: a riqueza de recursos; facilidade de aprendizagem e desenvolvimento; estabilidade de cada ferramenta no contexto do conjunto de recursos; possibilidade de agregar suporte do fornecedor; e principalmente, a estabilidade e performance. A partir das observaes anteriormente citadas, verificou-se que o conjunto de ferramentas desenvolvido pela Red Hat/JBoss se adequaria melhor ao ambiente da agroindstria C.Vale, tendo em vista que seu conjunto de frameworks bem aceito pelo mercado, bem documentado, possui integrao nativa entre todos elementos do conjunto, e ainda pode-se agregar suporte empresarial s ferramentas por meio do desenvolvedor. A partir da seleo da ferramenta, iniciou-se a construo do prottipo, com objetivo demonstrar a utilizao dos frameworks selecionados.

4 . Aplicao das ferramentas


O prottipo para aplicao das ferramentas foi desenvolvido a partir de uma arquitetura Model View Control (MVC), com a camada de viso baseada no framework RichFaces, recursos de AJAX implementados com framework Ajax4JSF, e recursos de templates com framework Facelets em eXtensible Hypertext Markup Language (XHTML) . Foi utilizado o JBoss Seam na implementao da camada de controle, com abordagem da injeo de dependncia, conversores, gerenciamento de transao, tratamento de excees e navegao. Na camada de modelo e persistncia foi utilizado o mapeamento objeto-relacional com o Hibernate fazendo uso de conexo ao banco de dados por meio de um datasource configurado no container JEE. abordada questes de tunning no mapeamento de relacionamentos entre objetos, e cache em segundo nvel. O sistema utilizado como prottipo demonstra as tecnologias citadas a partir de uma tela de pedidos de venda e seus cadastros correlatos, conforme especificao a seguir. A figura 3 apresenta o diagrama das classes Plain Old Java Objects (POJOs) a ser utilizadas no desenvolvimento do prottipo.

Figura 3. Diagrama de classes do sistema de pedidos de venda

Este sistema teve apenas um caso de uso que representa o lanamento de pedidos de venda. conforme figura 4.

Figura 4. Diagrama de classes do sistema de pedidos de venda

A figura 5 trs o diagrama de sequncia que demonstra o fluxo de aes e respostas do sistema.

Figura 5. Diagrama de classes do sistema de pedidos de venda

4.1 . Configurao dos arquivos XML para funcionamento da aplicao Aplicaes desenvolvidas sobre o conjunto de framework apresentados neste trabalho devem ser configuradas a partir de alguns arquivos em XML (eXtensible Markup Language), de acordo com Allen [2009] e Gradecki, Pugh [2004]: web.xml - onde feita a configurao inicial para delegar ao JBoss Seam, RichFaces e Facelets o processamento das requisies a aplicao; components.xml neste arquivo so configurados os recursos que a aplicao ir conter (gerenciamento de conversao, transao, persistncia, conversores, etc); faces-config.xml onde delegado ao Facelets o processamento das requisies JSF e idioma padro da aplicao; pages.xml - utilizado para configurar o comportamento da aplicao com relao a navegao e tratamento de exceo no processamento feito pelo Seam; hibernate.cfg.xml neste arquivo configurado como o Hibernate dever fazer o gerenciamento da persistncia de dados; ehcache.xml configurao para o funcionamento do mecanismo de cache para o Hibernate; Ainda devem estar presentes na aplicao os arquivos de propriedades log4j.properties definio do comportamento do sistema de log do Hibernate e Seam; seam.properties aquivo vazio, apenas exigido pelo framework; e messages_pt_BR.properties traduo das mensagens JSF e do framework JBoss Seam.

4.2 . Otimizao do Hibernate A m utilizao do Hibernate em um ambiente de produo pode resultar no fracasso da aplicao devido a seu excessivo consumo de recursos do banco de dados, processamento e trafego de rede. Para que esse tipo de situao no venha a ocorrer necessrio a utilizao de recursos que otimizem o acesso ao banco de dados e faa o cache de objetos. Deve-se avaliar as entidades onde se tm atributos encapsulados de outra entidade, o qual constantemente acessado para se possa utilizar a combinao de FetchType.EAGER com @Fetch(FetchMode.JOIN) de forma a reduzir a quantidade de consultas ao banco de dados para busca de informaes originados de chaves estrangeiras [Bauer e King 2007]. Tambm deve ser analisados objetos que possuem colees de entidades filhas, sendo que h uma frequncia de consultas da listagem de objetos pai com iterao desta listagem tendo acesso s colees filhas. Neste caso pode ser utilizado a combinao de FetchType.LAZZY com @Fetch(FetchMode.SUBSELECT) para que todas as colees filhas sejam obtidas em uma nica consulta ao banco de dados, no momento do primeiro acesso coleo filha [Bauer e King 2007]. Outra questo de suma importncia para a performance da aplicao a utilizao do cache de dados, conhecido como Second Level Cache. O Hibernate pode trabalhar com diversos mecanismos de cache, dentre eles podem ser citados: EHCache, OSCache e Jboss Cache [Bauer e King 2007]. Para este trabalho foi utilizado EHCache. A utilizao de mecanismo de cache deve ocorrer principalmente para as entidades com maior quantidade de acessos e menor taxa de atualizao concorrente (acesso de outras aplicaes ao banco de dados). 4.3 . Integrao do Seam com Hibernate A integrao do JBoss Seam com o Hibernate facilita o trabalho de desenvolvimento, tendo em vista que no necessidade de se fazer classes java para o gerenciamento de transao e controle de sesso. O Seam se encarrega de efetuar este controle e disponibilizar a sesso do Hibernate por meio de injeo de dependncia na classe definida como componente de negcio da aplicao. Poucas configuraes so necessrias para usufruir deste recurso [Seamframework 2009]. O quadro hibernate.cfg.xml. 1 apresenta as configuraes adicionadas no arquivo

<property name="transaction.manager_lookup_class"> org.hibernate.transaction.JBossTransactionManagerLookup </property> <property name="transaction.factory_class"> org.hibernate.transaction.JTATransactionFactory </property> <property name="transaction.flush_before_completion">true</property> Quadro 1: Configuraes do arquivo hibernate.cfg.xml

O quadro 2 apresenta as configuraes adicionadas ao arquivo components.xml.

<persistence:hibernate-session-factory name="hibernateSessionFactory" cfg-resource-name="hibernate.cfg.xml"/> <persistence:managed-hibernate-session name="seamDataBase" session-factory="#{hibernateSessionFactory}" scope="session" auto-create="true"/> <transaction:hibernate-transaction session="#{seamDataBase}" /> Quadro 2: Configuraes do arquivo components.xml

Aps estas configuraes possvel acessar uma sesso do Hibernate a partir de um atributo injetado na classe de negcio com @In private Session seamDataBase; possvel utilizar-se do gerenciamento do Hibernate pelo JBoss Sean para a converso de listas de entidades em SelectItem utilizados pelo JSF. Para utilizao desse recurso, deve ser adicionado no arquivo components.xml os parmetros contidos no quadro 3.

<ui:hibernate-entity-loader session="#{seamDataBase}"/> <ui:entity-converter name="entityConverter" /> Quadro 3: Configuraes do arquivo components.xml para entity converter

Aps esta parametrizao a apresentao da lista de objetos persistentes pode ser adicionado interface web partir da tag apresentada no quadro 4. Neste momento, a entidade selecionada estar disponvel de forma integra, podendo ser acessado a partir do componente de negcio.

<h:selectOneMenu value="#{component.targetValueObject}" > <s:selectItems value="#{component.listPersistentObjects}" var="myObject" label="#{myObject.labelAttribute}" /> <s:convertEntity /> </h:selectOneMenu> Quadro 4: Utilizao do entity converter em paginas JSF

4.4 . Caractersticas do Seam na arquitetura MVC O framework JBoss Seam apresenta alguns recursos sofisticados que do maior produtividade ao desenvolvedor. Dentre elas esto [Seamframework 2009]: Contexto de conversao para o componente JSF o Seam oferece, alm dos contextos padres do JSF (page, request, session e application) o contexto de conversao (conversation), que possui a caracterstica de manter o estado dos objetos na regra de negcio durante a navegao por uma serie de pginas ou mesmo por diferentes janelas do browser. Este recurso tem seu escopo maior que uma requisio e menor que uma sesso; Declarao do componente JSF a partir de anotaes (no sendo necessrio o arquivo faces-config.xml); Injeo de dependncia caracteriza-se pela possibilidade de se permitir ao desenvolvedor a insero de uma instncia de um objeto ou componente por meio de uma anotao @In na declarao do um atributo em classes de negcio; Arquivo pages.xml onde podem ser descritas regras ou comportamento de navegao da aplicao, bem como tratamento de excees no processamento pelo Seam.

4.5 . Aspectos relevantes no desenvolvimento da interface da aplicao. O desenvolvimento da interface da aplicao foi baseado no framework RichFaces com uso de templates em Facelets. A seguir, sero apresentadas algumas questes que devem ser consideradas para que se tenha estabilidade da aplicao e a produtividade no desenvolvimento. O conjunto JBoss Seam e RichFaces tem por caracterstica o fato de trabalhar nativamente com o framework Facelet e documentos escritos em XHTML. Desda forma possvel se fazer o uso de templates(layout mestre) de pginas, onde o formato padro da interface pode ser descrito em um arquivo XHTML contendo especificao de todos estilos CSS (Cascading Style Sheet), rotinas em JavaScript e sees de contedo a serem utilizadas em toda a aplicao [JBoss 2009]. A partir dessa especificao, o desenvolvimento da interface da aplicao pode ser feito adicionado a referncia ao arquivo de layout em cada pgina e descrio do contedo das sees definidas neste. Pode-se utilizar uma fila de requisies AJAX (queue) para o Ajax4JSF para eliminar a possibilidade de colises de requisies durante o tempo de vida de uma solicitaco ao JSF. Pode-se tambm reduzir a carga do servidor, tendo em vista que a fila pode controlar o envio de requisies ao servidor descartando pedidos duplicados [JBoss 2009].

5 . Comparativo com a arquitetura de desenvolvimento legado


A partir do desenvolvimento de uma aplicao piloto, foram avaliados alguns aspectos do formato de desenvolvimento de software que havia na empresa antes deste trabalho e

da estrutura de desenvolvimento proposta neste documento. No quesito de complexidade no desenvolvimento, foram avaliados aspectos relacionados a diviso de competncias em camadas da aplicao, facilitando assim a adio de novas funcionalidades, definio e localizao de pontos de manuteno, e minimizao do entrelaamento de cdigos com diferentes responsabilidades na aplicao a exemplo de: composio de interface juntamente com persistncia de dados. Com relao quantidade de cdigo escrito foram avaliados no nvel de autonomia das API e frameworks utilizados com relao apresentao dos recursos programados a partir de um conjunto mnimo de comandos e parmetros. A aplicao da componentizao diz respeito a possibilidade de desenvolvimento de bibliotecas de funcionalidades que podero ser reutilizadas em sistemas posteriormente desenvolvidos ou demais sistemas existentes. Na questo do reuso de rotinas desenvolvidas avaliado a possibilidade de reutilizao de trechos de cdigos desenvolvidos na aplicao a partir de diferentes pontos de execuo na mesma aplicao. No quesito de integrao com a plataforma existente foi verificado a possibilidade de convivncia de sistemas desenvolvidos a partir da estrutura proposta neste trabalho com as aplicaes anteriormente existentes. Foram observados aspectos como: autenticao em um sistema comum a todas aplicaes web, utilizao do mesmo servidor de aplicao, transferncia de parmetros e dados de sesso do servidor entre as aplicaes. Com relao robustez dos frameworks, foram avaliados a capacidade da aplicao trabalhar tabelas de banco de dados acima de 25 mil registros e consumo de recursos do servidor (memria e processamento). A possibilidade de integrao com sistemas co-existentes trata da questo de comunicao com demais sistemas existentes na empresa, tais como: mainframe e aplicaes em diferentes linguagens. Na avaliao da consolidao da tecnologia no mercado foi verificado a aceitao dos recursos de desenvolvimento pela comunidade de desenvolvedores, documentao disponvel e servidores de aplicao disponveis para execuo das mesmas. No quesito da possibilidade de agregar suporte empresarial a partir dos desenvolvedores da tecnologia, foi avaliado a prestao de servios e homologao da plataforma pelo desenvolvedor da ferramenta, bem como a disponibilidade de suporte tcnico pelo mesmo. A partir da avaliao destes tpicos foram obtidos os resultados apresentados na Tabela 1. Os tpicos foram classificados em: Atende a ferramenta apresenta todos os recursos para que o item seja atendido; Atende parcialmente a ferramenta no possui algum requisito necessrio para que o item seja atendido, conforme definio anterior; e No atende a ferramenta no fornece suporte ao recurso desejado.

Table 1. Comparativo com a plataforma legada

Caracterstica Baixa complexidade de desenvolvimento Baixa quantidade de cdigo escrito Aplicao da componentizao Reuso de rotinas desenvolvidas Integrao com a plataforma j existente

Ambiente Legado No atende No atende No atende Atende -

Ambiente proposto Atende Atende Atende Atende Atende Parcialmente

Robustez dos frameworks quando do aumento do volume de dados e acesso simultneo Possibilidade de integrao com outros sistemas coexistentes Consolidao da tecnologia no mercado Possibilidade de agregar suporte empresarial a partir dos desenvolvedores das tecnologias escolhidas

Atende Atende parcialmente Atende No Atende

Atende Atende Atende Atende

6 . Consideraes finais
A aplicao das ferramentas citadas neste trabalho podem trazer um aumento significativo da produtividade no processo de desenvolvimento de software, visto que abstrai aspectos complexos do processo de desenvolvimento na plataforma Java. O desenvolvimento de rotinas de persistncia de dados desde o tratamento de instrues SQL ao gerenciamento das transaes, a comunicao da camada de interface com regras de negcio com recursos de AJAX e a implementao de componentes da interface podem ser aplicados com um nvel de programao que mantm o profissional mais prximo da lgica de sua regra de negcio. Os recursos disponibilizados pelo conjunto de ferramentas apresentadas viabilizam a construo de aplicaes com interfaces ricas, e trazem uma implementao consistente de Java Server Faces. A estabilidade, performance e confiabilidade destas ferramentas trazem um conforto ao desenvolvedor, visto que as no precisa abrir mo de recurso algum a fim de ter estes aspectos em sua aplicao. Dentre os frameworks apresentados, o Hibernate e o RichFaces se mostraram de fcil aprendizado e utilizao. Em contrapartida, o JBoss Seam exige um maior esforo para entendimento de seu funcionamento e aproveitamento pleno dos recursos oferecidos. Contudo, aps o entendimento da forma como o framework trabalha, sua

utilizao se torna produtiva. Recursos como gerenciamento de transao, conversores de entidades, injeo de dependncia e contexto de conversao proporcionam flexibilidade e agilidade ao processo de desenvolvimento de aplicaes. Trabalhos futuros podem ser feitos no intuito de explorar a ferramenta seam-gen, a qual disponibilizada no mesmo pacote em que obtido framework JBoss Seam. Esta ferramenta possibilita a gerao de um sistema web funcional baseado em um banco de dados existente, tendo insero, leitura, atualizao e deleo de dados (CRUD - Create, Retrieve, Update e Delete) e recursos de identificao. Tal ferramenta no foi utilizada neste estudo devido ao fato de o sistema pr-configurado por ela se apresentar com arquitetura relativamente complexa em vista da estrutura de sistema desejada pela empresa no momento. Outra questo que pode ser explorada em trabalhos posteriores o desenvolvimento de bibliotecas (.jar) de tags e componentes Seam, bem como arquivos em JavaScript e CSS (Cascading Style Sheet). Tal ponto no foi abordado neste estudo pelo fato de que este trabalho pelo fato de no ser suportado pelo editor visual de pginas do Red Had Developer Studio CR1.

7 . Referncias
Allen, D. (2009) Seam in Action, Greenwich, Manning Publications Co. Almeida, E. S. et al. (2008) CRUISE Component Reuse In Software Engineering, http://cruise.cesar.org.br/ , Outubro. Apache. (2009) Apache MyFaces. http://wiki.apache.org/myfaces/ . Abril. Bauer, C.; King, A. G. (2007). Java Persistence with Hibernate, Greenwich, Manning Publications Co. Fayad, M.; Schmidt, D. C. (2008) Object-Oriented Application Frameworks, http://www.cs.wustl.edu/~schmidt/CACM-frameworks.html/, Outubro. Gamma, E. et al. (1994) Design Patterns: Elements of Reusable Object-Oriented Software, Hardcover, Addison-Wesley Professional Gibson, A. (2009) Seam and Spring Comparasion, http://www.andygibson.net/articles/seam_spring_comparison/html_single/, Abril Gradecki, J.D.; Pugh, E. (2004) Professional Hibernate, Indianapolis, Wiley Pulishing Inc. Hibernate. (2009) Hibernate - relational persistence for idiomatic Java, http://www.hibernate.org/hib_docs/v3/reference/en-US/pdf/hibernate_reference.pdf, Maio. Jboss. (2009) RichFaces Developer Guide, http://www.jboss.org/fileaccess/default/members/jbossrichfaces/freezone/docs/devguide/en/pdf/richfaces_user sguide.pdf, Maio. Mentawai. (2009) Mentawai Web Framework. http://www.mentaframework.org/. Abril

Neighbors, J. M. (1980) Software Construction Using Components, PhD Thesis, California, University of California. NetBeans. (2009) NetBeans IDE 6.5 Features. http://www.netbeans.org/features/web/index_pt_BR.html. Abril. Pressman, R. S. (1995) Engenharia de software, So Paulo, Makron Books. Red Hat. (2008) JBoss Developer Studio 1.0. http://www.br.redhat.com/pdf/developers/JBoss_Developer_Studio.pdf, Setembro. Seamframework. (2009) Seam contextual components. http://docs.jboss.com/seam/2.1.1.GA/reference/en-US/pdf/seam_reference.pdf, Setembro.

Você também pode gostar