GERADOR DE ARTEFATOS PARA APLICAÇÕES WEB GENERATOR ARTIFACTS FOR WEB APPLICATIONS Juliane Rosário – [email protected] Murillo da Silva Casa Grande – [email protected] Prof. M. Sc. Anderson Pazin – [email protected] RESUMO A utilização de geradores de artefatos ajuda as organizações a desenvolverem múltiplos produtos de uma família de software com mais facilidades do que pelo modo de implementação tradicional. Além de códigos, os geradores podem produzir a documentação do usuário e do software, diagramas, casos de testes e figuras. Geradores aceleraram e automatizam o processo de desenvolvimento de software através do reuso de códigos pré-escritos, conhecidos como templates, que definem parte de processos rotineiros de um determinado domínio, reduzindo assim o tempo no desenvolvimento e os custos para sua disponibilização e utilização. Esse gerador de artefatos tem como objetivo diminuir as atividades repetitivas de copiar, colar e alterar. Palavras-chave: AlphaWEB. Gerador de Artefatos. Aplicações. Software. ABSTRACT The use of generators of artifacts helps organizations develop multiple products in a family of software with more features than the traditional method of implementation. Besides codes, the generators can produce user documentation and the software, diagrams, test cases and figures. Generators accelerated and automate the process of software development through the reuse of pre-written code, known as templates, which define part of routine processes of a particular domain, thus reducing development time and the costs for the availability and use. This generator of artifacts has as aims to reduce the repetitive activities of copy, paste and change. Keywords: AlphaWEB. Generator of Artifacts. Applications. Software. INTRODUÇÃO O desenvolvimento de softwares é um processo complexo e de difícil realização, devido às mudanças de tecnologia e às alterações nos requisitos que surgem no decorrer do processo de desenvolvimento (PAZIN, 2004). Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 Para facilitar esse processo, algumas técnicas podem ser utilizadas. O reuso de software, visa diminuir a possibilidade de inserção de erros e com isso o produto final pode ser gerado com maior qualidade (JUNIOR, 2006). A técnica de reuso pode ser automatizada por softwares específicos chamados de geradores ou wizards (PAZIN, 2004). Geradores de Artefatos são ferramentas que têm a capacidade de automatizar e acelerar o processo de desenvolvimento de softwares, por meio de reuso de código pré-escrito, chamados de templates. Os geradores permitem ao desenvolvedor inserir especificações do programa em alto nível e a ferramenta gera um produto de software (PAZIN, 2004). Os geradores de artefatos trazem benefícios em termos de produtividade para o software, pelo fato de gerarem classes de alto nível com base em suas especificações (JUNIOR, 2006). O gerador proposto neste trabalho cria as classes Java Beans com as regras de negócios da aplicação, os scripts SQL de criação do banco de dados e as interfaces HTML para a aplicação. Esses artefatos são gerados a partir das tabelas existentes em um banco de dados. A utilização deste gerador de aplicação pode ser justificada pela diminuição de tarefas repetitivas e pelos benefícios oferecidos como a alta qualidade do produto gerado. 1 A LINGUAGEM JAVA Java é uma linguagem de programação, desenvolvida pela empresa Sun Microsystems voltada para a programação Orientada a Objetos (OO) (JAVA, 2009). Ela foi criada com base nos elementos das linguagens C e C++ com finalidade de adicionar conteúdo dinâmico a páginas da Web, como interatividade e animações, atendendo as necessidades crescentes dos usuários e desenvolvedores (DEITEL e DEITEL, 2005). Java é utilizada em todos os principais setores corporativos de médio e grande porte no mundo inteiro e está presente em uma ampla gama de dispositivos programáveis como computadores, celulares, PDA, e redes (DEITEL e DEITEL, 2005). Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 A linguagem foi projetada com os seguintes objetivos: orientação a objetos, portabilidade, recursos de rede e segurança, e oferece diversas vantagens em relação ao uso de outras tecnologias de servidor como: flexibilidade, e benefícios como escalabilidade de distribuir o processamento de aplicações desenvolvidas em diversos servidores (GONÇALVES, 2007). Ela possui uma tecnologia que permite maior velocidade, flexibilidade e um conjunto completo de classes base, nas seguintes plataformas (SUN, 2009): a) JSE (Java Standard Edition): é um ambiente básico destinado ao desenvolvimento e execução das aplicações para desktops e estações de trabalho; b) JEE (Java Enterprise Edition): plataforma voltada para desenvolvimento de aplicações de grande porte, onde a execução é realizada em servidores, como aplicações para Web; c) JME (Java Micro Edition): é destinada para desenvolvimento de programas e aplicações para dispositivos móveis ou de pequeno porte, como celulares. As diferentes tecnologias existentes para a linguagem, possibilita variações nas formas de desenvolvimento de sistemas, oferecendo aos desenvolvedores opções de desenvolvimento com: servidores web, banco de dados relacionais, computadores de grande porte, telefones móveis, sistemas de cartão de crédito, entre outros (BODOFF, 2005). 2 GERADORES DE ARTEFATOS Geradores de artefatos têm como finalidade acelerar o processo de implementação no desenvolvimento de software, pois ajudam automatizar parte de um processo rotineiro para um determinado domínio, traduzindo especificações de uma linguagem de programação de alto nível para uma linguagem de baixo nível, validando essas especificações e transformando-as automaticamente em artefatos de software da aplicação (PAZIN, 2004). Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 Geradores de artefatos podem ter diferentes significados, podendo ser considerados como compiladores, wizards e gerador de códigos (JUNIOR, 2006). Sua pode trazer benefícios como o aumento de produtividade, redução do tempo para desenvolvimento de um novo produto, prototipação e qualidade no produto gerado (PAZIN, 2004). Um gerador de artefatos tem como finalidade realizar as seguintes funções (JUNIOR, 2006): a) validar das especificações de entrada e relatar erros ou avisos de inconsistências; b) completar a especificação utilizando as configurações padrão, caso seja necessário; c) realizar otimização; d) gerar implementação. Um artefato é um produto qualquer criado como parte da definição, manutenção ou utilização de um processo de software (PAZIN, 2004). Dentre os artefatos incluem descrições de processos, especificações, componentes, códigos, aplicação, documentação para o usuário, etc. (ARTEFATO, 2010). Por essa definição, todos os produtos criados por um gerador, desde scripts do banco de dados à aplicação final são considerados artefatos (PAZIN, 2004). Assim sendo, os geradores de artefatos ajudam uma organização a construir múltiplos produtos de uma família com mais facilidades do que pelo modo de implementação tradicional (PAZIN, 2004). Além dos códigos, os geradores podem produzir documentação do usuário e do software, casos de teste, diagramas e figuras, porém, um dos problemas dos geradores de aplicação é o seu alto custo de desenvolvimento e manutenção (JUNIOR, 2006). 3 TEMPLATES Template (Gabarito) é um documento sem conteúdo, é um modelo de página que contém conjuntos de instruções de formatação visual, e instruções sobre onde e qual tipo de conteúdo deve ser inserido a cada elemento da apresentação do modelo (TEMPLATE, 2010). Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 Os templates são estruturas pré-existentes de código que são utilizadas para definir os produtos que se deseja gerar por meio de um gerador de aplicação ou artefatos (PAZIN, 2004). Esses templates possuem partes fixas, que estão presentes em todos os artefatos gerados, e partes variáveis que permitem a criação de diferentes artefatos de software utilizando o mesmo template (PAZIN, 2004). De modo geral templates são modelos que servem de matriz para a produção em escala de um produto ou serviço, possuem conjuntos de configuração padrão de acordo com que as novas páginas vão sendo criadas, são utilizados para a produção massiva de conteúdo e documentos e para separar o conteúdo da apresentação, conteúdo de texto e web design e layouts da página (TEMPLATE, 2010). A utilização de templates permite a redução de custos e de prazos de produção, pelo fato de servir como referência para a criação de novos arquivos e diminuir casos de soluções isoladas (AVELLAR E DUARTE, 2010). 4 GERADOR DE ARTEFATOS DESENVOLVIDO ‘AlphaWEB’ Para melhor entender o gerador de artefatos e suas funcionalidades, é necessário entender seu fluxo de execução durante sua utilização e criação dos artefatos através da utilização de templates. O processo utilizado para a definição dos templates do gerador foi seguindo os padrões dos scripts SQL, das classes Beans e das páginas HMTL. Esses templates foram elaborados através da análise de modelos de artefatos já existentes. Fonte: Elaborado pelos Autores, 2010. Figura 1. Utilização de templates durante a geração dos artefatos. Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 A Figura 1 ilustra a utilização do gerador no momento em que o usuário for solicitar a geração do artefato, o gerador deve processar um conjunto de especificações que são definidas em seu código fonte, utilizando seus templates para transformá-los no artefato final. O gerador processa essas especificações e as informações fornecidas a ele pelo usuário e cria os artefatos SQL, Bean e/ou HTML da aplicação de acordo com as definições estabelecidas em seus templates. Analisando os artefatos foram identificadas em seus modelos partes fixas e variáveis. Para que o gerador possa criar os artefatos às partes fixas são previamente definidas em seu código fonte e as partes variáveis são substituídas pelas informações que são fornecidas ao gerador pelo usuário através da utilização de esquemas do banco de dados. A Figura 2 apresenta o template definindo para os scripts Bens, sendo que os itens em negrito representam as partes fixas do template e as partes variáveis são colocadas entre tags. public class <NomeTabela> { private <tipo> <nome>; public <NomeTabela> ( ){ } public <tipo> get<Atributo> ( ) { return <atributo>; } public void set<Atributo> (<tipo> <atributo>) { this.<atributo> = <atributo>; } } Fonte: Elaborado pelos Autores, 2010. Figura 2. Template definido para criação das classes Beans. Todos os artefatos produzidos pelo gerador (SQL, Bean e HTML) passaram pela mesma forma de identificação das partes variáveis e fixas, definindo-se os templates para cada artefato desejado. Após a definição dos templates, eles foram embutidos no código da classe Java responsável pela geração dos artefatos no gerador. A Figura 3 ilustra o esquema completo de funcionamento do gerador de artefatos e os artefatos SQL, Bean e HTML gerados por ele. Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 ... Templates modelo = new Templates(); AtributosDAO obj = new AtributosDAO(); modelo.getScriptSQL(tabela, esquema); modelo.getScriptHTML(obj.getAtribut os ObjAtributo(esquema, tabela), esquema, tabela); modelo.getScriptBean(obj.getAtribut osObjAtributo(esquema, tabela), esquema, tabela); response.getWriter().close(); ... CREATE TABLE OFICINA.TIPOAPARELHO ( CODIGO NUMBER(22), DESCRICAO VARCHAR2(50) ); Script SQL de criação da tabela public class TipoAparelho { Gerador de scripts SQL Lê as definições Java para geração dos artefatos private int codigo; private String descricao; public TipoAparelho(){} public int getCodigo(){ return codigo; } Gerador AlphaWEB public void setCodigo(int codigo){ this.codigo = codigo; } Gerador de classes Beans public String getDescricao(){ return descricao; } Templates Recupera dados das especificações do Gerador public void setDescricao(String descricao){ this.descricao = descricao; } } Gerador de interfaces HTML Classe Bean Base de Dados do Gerador Interface HTML Fonte: Elaborado pelos Autores, 2010. Figura 3. Funcionamento do gerador de artefatos. Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 O gerador cria seus artefatos em arquivos distintos no sistema operacional do usuário e esses artefatos são gerados em um diretório padrão que está definido no código fonte da aplicação. Após a geração do artefato o usuário poderá alterar seu conteúdo de acordo com suas necessidades e de sua aplicação que está sendo desenvolvida. A Figura 4 apresenta a interface de geração dos artefatos. O usuário para gerar o artefato, deverá informar os dados do respectivo artefato que deseja criar, primeiro ele deve selecionar na lista de esquemas existentes no banco de dados, em seguida deverá informar qual a tabela com seus atributos que deseja gerar o artefato, e por fim deve escolher qual tipo de artefato ele deseja gerar, sendo eles três tipos: SQL, Java Bean e HTML. O usuário poderá gerar quantos artefatos for necessário para sua aplicação, sendo que ele poderá utilizar um esquema e tabela por vez. O sistema cria os artefatos com todos os atributos cadastrados nas tabelas dos esquemas, e após a criação do artefato o usuário poderá deletar os atributos que não lhe são úteis e até mesmo adicionar ou alterar algum atributo da tabela. Fonte: Elaborado pelos Autores, 2010. Figura 4. Tela de Gerar Artefatos. Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 As Figuras 5, 6 e 7 apresentam exemplos artefatos gerados pelo AlphaWEB, esses artefatos foram criados através da utilização do esquema de estudo de caso, Oficina Eletrônica. Os artefatos SQL, Bean e HTML gerados são referentes à tabela de Comissão e todos seus atributos. CREATE TABLE OFICINA.COMISSAO ( CODIGO NUMBER(22), DATAPAGAMENTO DATE(7), VALOR NUMBER(22) ); Fonte: Elaborado pelos Autores, 2010. Figura 5. Artefato de scripts SQL da Tabela Comissão. public class Comissao { private int codigo; private DATE datapagamento; private int valor; public Comissao(){} public int getCodigo(){ return codigo; } public void setCodigo(int codigo){ this.codigo = codigo; } public DATE getDatapagamento(){ return datapagamento; } public void setDatapagamento(DATE datapagamento){ this.datapagamento = datapagamento; } public int getValor(){ return valor; } public void setValor(int valor){ this.valor = valor; } } Fonte: Elaborado pelos Autores, 2010. Figura 6. Artefato Bean da Tabela Comissão. Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 <html> <head> <title> Página HTML da Tabela Comissao </title> </head> <body> <form id="idComissao"> codigo: <input type="text" id="codigo" /><br/> datapagamento: <input type="text" id= "datapagamento" /> <br/> valor: <input type="text" id="valor" /> <br/><br/> <input type="button" value="Salvar" /> <input type="button" value="Limpar" /> </form> </body> </html> Scripts HMTL e Interface Fonte: Elaborado pelos Autores, 2010. Figura 7. Artefato HTML da Tabela Comissão. CONCLUSÃO Com a pesquisa realizada, foi possível compreender as funcionalidades e utilização de um gerador de artefatos. O gerador de artefatos AlphaWEB, apresentado neste trabalho, gera artefatos em arquivos distintos no sistema operacional, de acordo com os templates definidos no código fonte. Os artefatos criados podem ser utilizados por aplicações de plataforma web ou desktop. O gerador desenvolvido trabalha na plataforma web através de um browser (navegador) de internet, sem precisar ser instalado na máquina do usuário. O gerador realiza uma análise da estrutura de banco de dados e utiliza o resultado dessa análise para formatar os arquivos SQL, Beans e HTML/JSP. Inicialmente o gerador funciona apenas para o banco de dados Oracle. O gerador poderá receber atualizações de sua recente versão, tendo como objetivo adaptar o sistema às necessidades dos usuários. Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010 Com o desenvolvimento desse sistema, concluiu-se que a utilização de um gerador de artefatos pode auxiliar o desenvolvimento de uma aplicação de software, pois o sistema pode ser utilizado por qualquer tipo de desenvolvedor que tenha como objetivo desenvolver uma aplicação em menor tempo, mas com maior produtividade. REFERÊNCIAS ARTEFATO. Artefato: Desenvolvimento de Software, Brasil, 16 mai. 2010. Disponível em: < http://pt.wikipedia.org/wiki/Artefato>. Acesso em: 01 jun. 2010. AVELLAR E DUARTE. Glossario: Template, Brasil, [s.d.]. Disponível em: <http://www.avellareduarte.com.br/glossario/glossario.htm>. Acesso em: 12 mai. 2010. BODOFF, S.; et al. Tutorial do J2EE. Tradução Cláudio Rodrigues Pistilli Rio Janeiro: Editora Ciência Moderna, 2005. DEITEL, H.M.; DEITEL, P.J. Java: como programar. 6. ed. São Paulo: Pearson Prentice Hall, 2005. GONÇALVES, E. Desenvolvendo Aplicações Web com JSP, Servlets, JavaServer Faces, Hibernate, EJB 3 Persistence e Ajax. Rio de Janeiro: Ciência Moderna, 2007. JAVA. Saiba mais sobre a tecnologia Java, Brasil, [s.d.]. Disponível em: <http://www.java.com/pt_BR/about/>. Acesso em: 26 ago. 2009. JUNIOR, E. K. S. Um de Gerador de Aplicações Configurável. 2006. Dissertação (Mestrado em Ciências de Computação e Matemática Computacional) – Instituto de Ciências Matemáticas e de Computação, USP de São Carlos, São Paulo. PAZIN, A. GAwCRe: Um de Gerador de Aplicações baseadas na Web para o Domínio de Gestão de Clínicas de Reabilitação. 2004. Dissertação (PósGraduação em Ciência da Computação) – Centro de Ciências Exatas e de Tecnologia, Universidade Federal de São Carlos, São Paulo. SUN. 1995: Começa a Grande Revolução da Tecnologia Java, Brasil, [s.d.]. Disponível em: <http://br.sun.com/aboutsun/historia.jsp>. Acesso em: 27 ago. 2009. TEMPLATE. Template, Brasil, 02 mar. 2010. Disponível <http://pt.wikipedia.org/wiki/Templates>. Acesso em: 10 mai. 2010. em: Universitári@ - Revista Científica do Unisalesiano – Lins – SP, ano 1., n.2, jul/dez de 2010