gerador de artefatos para aplicações web

Propaganda
UNISALESIANO
Centro Universitário Católico Salesiano Auxilium
Curso de Tecnologia em Sistemas para Internet
Juliane Rosário
Murillo da Silva Casa Grande
GERADOR DE ARTEFATOS PARA APLICAÇÕES
WEB - ALPHAWEB
LINS – SP
2010
JULIANE ROSÁRIO
MURILLO DA SILVA CASA GRANDE
GERADOR DE ARTEFATOS PARA APLICAÇÕES WEB
Trabalho de Conclusão de Curso
apresentado à Banca Examinadora do
Centro Universitário Católico Salesiano
Auxilium, curso de Tecnologia em
Sistemas para Internet, sob a orientação
do Prof. M.Sc Anderson Pazin.
LINS – SP
2010
R713g
Rosário, Juliane; Grande, Murillo da Silva Casa.
Gerador de Artefatos para Aplicações Web - AlphaWEB / Juliane
Rosário ; Murillo da Silva Casa Grande. – – Lins, 2010.
90p. il. 31cm.
Monografia apresentada ao Centro Universitário Católico
Salesiano Auxilium – UNISALESIANO, Lins-SP, para graduação em
Tecnologia em Sistemas para Internet, 2010.
Orientador: Anderson Pazin
1. AlphaWEB. 2. Gerador de Artefatos. 3. Aplicações. 4. Software.
I. Título.
CDU 004
JULIANE ROSÁRIO
MURILLO DA SILVA CASA GRANDE
GERADOR DE ARTEFATOS PARA APLICAÇÕES WEB
Monografia apresentada ao Centro Universitário Católico Salesiano Auxilium,
para obtenção do título de Tecnólogo em Sistemas para Internet.
Aprovada em: 29 / 06 / 2010
Banca Examinadora:
Prof Orientador: Prof. M. Sc. Anderson Pazin
Titulação: Mestre em Ciência da Computação pela Universidade Federal de
São Carlos (UFSCar).
Assinatura: _________________________________
1º Prof(a): Prof. M.Sc. Luiz Eduardo Cortes Bergamo
Titulação: Mestre em Ciência da Computação pela Universidade Federal de
São Carlos (UFSCar).
Assinatura: _________________________________
2º Prof(a): Prof. M.Sc. André Ricardo Ponce do Santos
Titulação: Mestre em Administração pela Universidade Metodista de
Piracicaba (UNIMEP).
Assinatura: _________________________________
DEDICATÓRIA
Dedico este trabalho primeiramente à minha família, em especial aos meus pais
e minha irmã, pelo incentivo, apoio e esforços para me ajudar sempre. Ao meu
namorado Paulo, pelo apoio, paciência e compreensão durante a realização deste
trabalho. As minhas grandes amigas Mariana e Débora pela ajuda constante, incentivo,
carinho e amizade. Dedico ao meu grande amigo e companheiro de grupo Murillo por
conseguirmos realizar este trabalho.
Juliane
Dedico este trabalho á minha família, ao meu pai Sebastião, minha mãe Inês e
minha irmã Carolláine, que sempre me incentivaram e apoiaram. Aos amigos sempre
prestativos em diversos momentos de colaboração. Dedico a minha companheira de
grupo Juliane, grande amiga.
Murillo
AGRADECIMENTOS
Agradeço primeiramente a Deus pela fé e sabedoria.
A toda minha família, especialmente aos meus pais Valdecir e Rosangela e
minha irmã Viviane, pelo carinho, amor, incentivo, dedicação e principalmente pelo
grande esforço e me ajudar em mais esta etapa de minha vida.
Ao meu namorado e grande amigo Paulo, pela sua ajuda, incentivo,
compreensão, paciência e principalmente pelo seu grande apoio e incentivo em todos os
momentos na minha vida e durante a realização deste trabalho.
A minha amiga Mariana, pela sua grande amizade e apoio, por me incentivar
constantemente no dia-dia, obrigada pela sua grande ajuda sempre que preciso e por
estar ao meu lado nos momentos em que precisei.
A minha amiga de turma Débora, pelo grande incentivo a sempre buscar
resultados positivos, pelo seu grande carinho e amizade, e por sempre estar ao meu lado
constantemente no dia-dia, muito obrigada.
Ao orientador e professor Anderson Pazin, por sempre nos ajudar da melhor
forma possível e nos conduzir a conseguir os melhores resultados e objetivos durante
todo o curso, pelo seu apoio e incentivo a sempre fazermos o nosso melhor com
dedicação para a realização deste trabalho.
Ao companheiro e amigo de monografia Murillo pela amizade, ajuda, apoio,
incentivo, prestatividade e confiança durante todas as dificuldades do dia a dia que
tivemos para realizar este trabalho.
A todos os amigos e colegas de Faculdade que nos ajudaram de alguma forma
durante este trabalho e a todos que estiveram presentes e me ajudaram a alcançar mais
essa conquista.
A todos minha gratidão e muito obrigada!
Juliane
AGRADECIMENTOS
Agradeço a Deus.
A toda minha família, meus pais, pelo incentivo, colaboração e principalmente
pela presença positiva em minha vida.
Aos amigos que fiz no decorrer desta etapa da minha vida e que durante o
desenvolvimento do trabalho se mostraram prestativos, e sempre entre uma risada e
outra colaboraram com o que fosse necessário, especialmente Bruno, Débora, Maria
Eliza, Leandro e Pedro.
Ao orientador e professor Anderson Pazin, por sempre nos conduzir e incentivar
a buscar as melhores maneiras alcançar os objetivos no projeto. Por ser paciente e nos
transmitir tranquilidade e confiança.
A Juliane, pela amizade, prestatividade e imenso incentivo no decorrer deste
trabalho. Pela confiança depositada em mim e na capacidade de nossa dupla.
A todos, muito obrigado!
Murillo
RESUMO
Este trabalho refere-se a um gerador de artefatos para aplicações, que é
um software que produz automaticamente sub produtos de software para
aplicações a partir de suas especificações, oferecendo aos desenvolvedores
benefícios em termos de produtividade, pois reduz o tempo de
desenvolvimento da aplicação. 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. Nota-se que eles têm como
principal objetivo acelerar e automatizar 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. Este trabalho apresenta um Gerador de Artefatos
para Aplicações (AlphaWEB) que utiliza a plataforma Web e que não precisa
ser instalado na máquina do usuário. Foi desenvolvido para criar artefatos de
softwares a partir das tabelas existentes no banco de dados do desenvolvedor,
gerando automaticamente as classes javaBeans com as regras de negócio da
aplicação, javaDAO com as conexões com o banco de dados, os Servlets que
são os controladores da aplicação, scripts SQL do banco de dados e interfaces
HTML/JSP para a interação do usuário com o sistema. Esses artefatos são
criados em arquivos distintos do sistema operacional e são gerados de acordo
com as especificações fornecidas ao gerador. 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
This work refers to a generator for artifacts about to applications, that that
is a software that automatically produces sub of software products for
applications from your specifications, giving developers the benefits in terms of
productivity, because reduces the development time of the application. The use
of generators of artifacts helps organizations develop several products from a
family of software with more ease than the traditional mode of implementation.
Beyond of code, the generators can produce user documentation and of the
software, diagrams, tests cases and figures. It is noted that they have as main
objective to accelerate 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 given domain, thus reducing development time and costs
for its availability and use. This paper presents a Artifacts Generator for
Applications (AlphaWEB) that uses the Web interface and which need not be
installed on the user's machine, was developed to create software artifacts from
existing tables in the database developer, automatically generating the
JavaBeans classes with the rules of application business, javaDAO with
connections to the database, the Servlets that are the controllers of the
application, SQL Scripts Database interfaces and HTML / JSP to the user's
interaction with the system. These artifacts are created in distinct files of the
operating system and are generated according to the specifications provided to
generator. This generator artifacts aims to reduce the repetitive activities of
copy, paste and change.
Keywords: AlphaWEB. Generator of Artifacts. Applications. Software.
LISTA DE FIGURAS
Figura 1. Diagramas definidos pela UML. ......................................................17
Figura 2. Diagrama de Classes. .....................................................................18
Figura 3. Diagrama de Objetos. .....................................................................19
Figura 4. Diagrama de Pacotes......................................................................19
Figura 5. Diagrama de Estrutura Composta...................................................20
Figura 6. Diagrama de Caso de Uso. .............................................................21
Figura 7. Diagrama de Componentes.............................................................21
Figura 8. Diagrama de Implantação. ..............................................................22
Figura 9. Diagrama de Sequência..................................................................23
Figura 10. Diagrama de Transição de Estado................................................23
Figura 11. Diagrama de Atividades. ...............................................................24
Figura 12. Diagrama de Colaboração ou Comunicação.................................25
Figura 13. Diagrama de Temporização. .........................................................25
Figura 14. Diagrama de Interatividade. ..........................................................26
Figura 15. Arquitetura de uma aplicação web utilizando Servlet. ...................29
Figura 16. Ciclo de vida do Servlet.................................................................30
Figura 17. Estrutura do padrão DAO..............................................................35
Figura 18. Modelo Tradicional de requisição Web versus o modelo AJAX. ...45
Figura 19. Interface de Definição de uma Aplicação – GawCRe....................51
Figura 20. Cadastro de Guias de Convênios de Pacientes – GawCRe..........51
Figura 21. Interface de Controle de Estoque de Produtos - GAS 2007..........52
Figura 22. Funcionamento de um Domínio do Sistema - DRACO-PUC.........53
Figura 23. Interface de Geração de Arquivo de Configuração - Captor. ........54
Figura 24. Interface de Armazenamento do Modelo da Aplicação - Captor. ..54
Figura 25. Diagrama de Classes e Objetos....................................................57
Figura 26. Diagrama de Use Case – Gerar Artefatos.....................................59
Figura 27. Diagrama de Classes a ser implementado....................................60
Figura 28. Diagrama de Classes para a Oficina Eletrônica. ...........................62
Figura 29. Diagrama de Sequência – Gerar Artefato. ....................................66
Figura 30. Utilização de templates durante a geração dos artefatos..............67
Figura 31. Conjunto de scripts de criação de tabelas utilizando SQL. ...........68
Figura 32. Template definido para scripts de criação das tabelas SQL. ........68
Figura 33. Template para construção de scripts de tabelas SQL...................69
Figura 34. Funcionamento do gerador e os artefatos por ele gerados...........70
Figura 35. Tela Inicial do Gerador. .................................................................71
Figura 36. Tela de Gerar Artefatos.................................................................72
Figura 37. Artefato de scripts SQL da Tabela Comissão................................73
Figura 38. Artefato Bean da Tabela Comissão...............................................73
Figura 39. Artefato HTML da Tabela Comissão. ............................................74
Figura 40. Conjunto de scripts de criação das classes Beans. ......................87
Figura 41. Template definido para criação das classes Beans. .....................87
Figura 42. Template para construção das Beans...........................................88
Figura 43. Template para construção das páginas HTML..............................89
Figura 44. Conjunto de scripts de criação das páginas HTML. ......................90
Figura 45. Template definido para criação das páginas HTML. .....................90
LISTA DE QUADROS
Quadro 1. Regras de trabalho com JavaBeans..............................................33
Quadro 2. Lista de Use Case. ........................................................................58
Quadro 3. Caso de Uso – Gerar Artefatos. ....................................................59
Quadro 4. Estrutura da Tabela Conserto de Aparelho. ..................................62
Quadro 5. Estrutura da Tabela Execução de Conserto..................................63
Quadro 6. Estrutura da Tabela Cliente...........................................................63
Quadro 7. Estrutura da Tabela Aparelho........................................................63
Quadro 8. Estrutura da Tabela Tipo de Aparelho...........................................64
Quadro 9. Estrutura da Tabela Técnico..........................................................64
Quadro 10. Regras de Validação da Tabela de Técnico................................64
Quadro 11. Estrutura da Tabela Comissão. ...................................................64
Quadro 12. Regras de Validação da Tabela Comissão..................................65
Quadro 13. Termos utilizados no trabalho......................................................83
LISTA DE SIGLAS E ABREVIATURAS
AJAX: Asynchrous JavaScript and XML
API: Interface de Programação de Aplicativos
ANSI: Instituto Nacional Americano de Padronização
ASP: Active Server Pages
CSS: Cascading Style Sheets
CAPTOR: Configurable Application Generator
DAO: Data Access Object
DBMS: Database Management System
DCL: Linguagem de Controle de Dados
DDL: Linguagem de Definição de Dados
DML: Linguagem de Manipulação de Dados
DOM: Document Object Model
DQL: Linguagem de Consulta de Dados
DTL: Linguagem de Transação de Dados
EE: Enterprise Edition
GB: Giga Bytes
GAwCRe: Gerador de Aplicações Web para Clínicas de Reabilitação
HTML: Linguagem de Marcação de Hipertexto
HTTP: Protocolo de Transferência de Hipertexto
ISO: Organização Internacional para Padronização
JEE: Java Enterprise Edition
JME: Java Micro Edition
JSE: Java Standard Edition
JDBC: Java DataBase Connectivity
JS: Java Script
JSP: Java Server Pages
LMA: Linguagem de Modelagem da Aplicação
MB: Mega Bytes
OMG: Object Management Group
OO: Orientada a Objetos
PDA: Assistente Pessoal Digital
PHP: Personal Home Page
RAC: Real Application Clusters
SE: Standard Edition
SGBD: Sistema Gerenciador de Banco de Dados
SGBDR: Sistema Gerenciador de Banco de Dados Relacional
SiGCli: Sistemas de Gestão de Clínicas
SO: Sistema Operacional
SQL: Linguagem de Consulta Estrutural
UML: Unified Modeling Language
URL: Localizador Padrão de Recursos
WML: Wireless Markup Language
XE: Express Edition
XHTML: eXtensible Hypertext Markup Language
XML: eXtensible Markup Language
SUMÁRIO
INTRODUÇÃO..................................................................................................14
1 FUNDAMENTOS CONCEITUAIS ...............................................................16
1.1
UML – UNIFIED MODELING LANGUAGE .......................................................16
1.2
PLATAFORMAS TECNOLÓGICAS ..................................................................27
1.2.1 A LINGUAGEM JAVA ..................................................................................27
1.2.2 SISTEMA GERENCIADOR DE BANCO DE DADOS ............................................37
1.2.3 AJAX.......................................................................................................42
2 GERADORES DE ARTEFATOS DE SOFTWARE .....................................46
2.1
ENGENHARIA DE SOFTWARE ......................................................................46
2.2
DEFINIÇÃO DE GERADORES DE ARTEFATOS ................................................47
2.3
DEFINIÇÃO DE TEMPLATES ........................................................................48
3 LEVANTAMENTO DE REQUISITOS..........................................................50
3.1
ANÁLISE DE MERCADO ..............................................................................50
3.2
DOCUMENTOS DE REQUISITOS...................................................................55
4 ANÁLISE ORIENTADA A OBJETOS.........................................................57
4.1
DIAGRAMA DE CLASSES – COMPLETO ........................................................57
4.2
JUSTIFICATIVA PARA IMPLEMENTAÇÃO ........................................................57
4.3
LISTA DE CASOS DE USO ...........................................................................58
4.4
DIAGRAMA DE CASOS DE USO ...................................................................58
4.5
DIAGRAMA DE CLASSES A SER IMPLEMENTADO............................................60
5 PROJETO DE BANCO DE DADOS ...........................................................61
5.1
DESCRIÇÃO DO SISTEMA DE OFICINA ELETRÔNICA ......................................61
5.2
TABELAS ..................................................................................................62
6 PROJETO ORIENTADO A OBJETOS .......................................................66
6.1
DIAGRAMA DE SEQUÊNCIA .........................................................................66
7 IMPLEMENTAÇÃO DO GERADOR DE ARTEFATOS ..............................67
7.1
LAYOUT DE TELAS ....................................................................................71
6.2.1 TELA INICIAL DO SISTEMA...........................................................................71
6.2.2 TELA DE GERAR ARTEFATOS ......................................................................71
7.2
ARTEFATOS GERADOS ..............................................................................72
CONCLUSÃO...................................................................................................75
REFERÊNCIAS ................................................................................................77
GLOSSÁRIO ....................................................................................................80
APÊNDICES .....................................................................................................84
14
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).
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 Aplicações 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).
Com a utilização de geradores de aplicação, o desenvolvedor deve
inserir apenas as informações sobre “o que” deve ser feito, e a
ferramenta deve decidir “como” essas informações são transformadas
em código fonte (CLEAVELAND, 2001).
Os
geradores
de
aplicação
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. Um dos problemas dos geradores de aplicação é
o elevado custo em seu desenvolvimento, utilização e manutenção (JUNIOR,
2006).
O objetivo deste trabalho é desenvolver um gerador de artefatos para
aplicações web. Artefatos são produtos de uma ou mais atividades dentro do
contexto de desenvolvimento de um software ou sistema. Esse gerador deve
criar as classes Java Beans da aplicação, as classes Java DAO para a
manipulação dos dados armazenados em um banco de dados, os
controladores da aplicação (Servlets), os scripts SQL de criação e manipulação
do banco de dados e as interfaces HTML e JSP para a aplicação. Esses
artefatos são gerados a partir das tabelas existentes em um banco de dados. O
objetivo principal do gerador é diminuir as tarefas repetitivas de copiar, colar e
alterar.
15
O processo de codificação que os geradores utilizam durante a
engenharia de aplicação pode ser mais rápido e menos suscetível a
erros humanos do que o processo tradicional de codificação, ou seja,
os geradores podem produzir códigos de forma sistemática e mais
segura em relação aos métodos tradicionais de programação
(CZARNECKI E EISENERCKER, 2000).
O desenvolvimento e 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, pois esses produtos gerados são
alterados de acordo com as informações que são fornecidas ao gerador, e que
assim facilita o desenvolvimento de uma nova versão do software.
16
1 FUNDAMENTOS CONCEITUAIS
1.1 UML – Unified Modeling Language
A Unified Modeling Language (UML) é uma linguagem de modelagem
gráfica e visual, designada para especificar, construir e documentar um
sistema, permitindo a visualização de softwares e aplicações em diagramas
padronizados (FOWLER, 2005).
Ela nasceu da unificação das linguagens de modelagem orientadas a
objetos existentes desde o final dos anos oitenta e início dos anos noventa. Em
1997, a UML foi aprovada como padrão pela OMG, tendo desde então grande
aceitação e utilização pela comunidade de desenvolvedores de sistemas.
Desde seu surgimento foram sendo criadas atualizações para tornar a
linguagem mais clara e útil (PENDER, 2004).
A UML é uma linguagem visual para modelar sistemas orientados a
objetos. Isso quer dizer que a UML é uma linguagem que define
elementos gráficos (visuais) que podem ser utilizadas na modelagem
de sistemas. Esses elementos permitem representar os conceitos do
paradigma da orientação a objetos. Através dos elementos gráficos
definidos nesta linguagem pode-se construir diagramas que
representam diversas perspectivas de um sistema (BEZERRA, 2007,
p. 15).
A linguagem de modelagem é uma notação utilizada para expressar e
indicar quais os passos a serem seguidos para o desenvolvimento de um
projeto. A especificação da UML consiste de duas partes (BEZERRA, 2007):
a) semântica: especifica a sintaxe abstrata e a semântica dos conceitos
de modelagem estática e dinâmica de objetos;
b) notação: especifica a notação gráfica para a representação visual da
semântica.
A UML suporta o desenvolvimento iterativo e incremental, que é um
processo de desenvolvimento de sistemas em pequenos passos. Uma iteração
é um laço de desenvolvimento que resulta na liberação de um subconjunto de
produtos que evolui até o produto final percorrendo as seguintes atividades:
análise de requisitos, análise, projeto, implementação e teste (PENDER, 2004).
17
A UML é projetada especificamente para representar sistemas
orientados a objetos (OO). As técnicas de desenvolvimento
orientadas a objetos descrevem o software como um conjunto de
blocos cooperativos de informações e comportamentos (PENDER,
2004, p. 5).
A UML permite ao desenvolvedor especificar, documentar e estruturar os
diagramas para uma maior visualização lógica do desenvolvimento completo
de um sistema de informação. (FOWLER, 2005). A UML foi projetada para
atender a algumas especificações, para que possa verdadeiramente ser um
padrão
que
resolva
as
necessidades
práticas
da
comunidade
de
desenvolvimento de software. A UML auxilia os desenvolvedores para
(PENDER, 2004):
a) oferecer aos desenvolvedores uma linguagem de modelagem pronta
para usar, expressiva e visual, para o desenvolvimento e a troca de
modelos significativos;
b) fornecer mecanismos de extensibilidade e especialização para
estender os principais conceitos;
c) admitir
especificações
independentes
das
linguagens
de
programação e dos processos de desenvolvimento específicos;
d) oferecer uma base formal para entender a linguagem de modelagem;
e) encorajar o crescimento do mercado de ferramentas de objetos;
f) admitir conceitos de desenvolvimento de nível mais alto, como
componentes, colaborações, frameworks e padrões.
Fonte: Bezerra, 2007 p. 18
Figura 1. Diagramas definidos pela UML.
18
A Figura 1 ilustra o modelo oficial da UML que se compõe de 13 tipos de
diagramas: classes, objetos, componentes, instalação, pacotes, estrutura, caso
de uso, transição de estado, atividade, sequência, interatividade, colaboração
ou comunicação e tempo (BEZERRA, 2007).
a) Diagrama de Classes: descreve os tipos de objetos presentes no
sistema e os tipos de relacionamentos existentes entre eles, é uma
representação da estrutura e relações entre as classes, que servem
de modelo para os objetos e seus comportamentos. Esse diagrama
pode ser observado na Figura 2.
Fonte: Fowler, 2005 p. 53
Figura 2. Diagrama de Classes.
b) Diagrama de Objetos: é uma varição do diagrama de classes
utilizando praticamente a mesma notação, e é tão importante quanto
ele. Normalmente permite desvendar as regras que precisam fazer
parte das definições dos recursos e seus relacionamentos. Tem
19
como objetivo admitir a investigação de requisitos e modelar os
casos de testes para validar o diagrama de classes. Exibe os objetos
instanciados em um sistema e a configuração de instâncias. A Figura
3 apresenta esse diagrama.
Fonte: Fowler, 2005 p. 95
Figura 3. Diagrama de Objetos.
c) Diagrama de Pacotes: mostra os pacotes e exibe suas respectivas
dependências. Um pacote é a representação de um grupo de classes
ou outros elementos que se relacionam com outros pacotes através
de uma relação de dependência. A Figura 4 representa um diagrama
de pacotes.
Fonte: Fowler, 2005 p. 98
Figura 4. Diagrama de Pacotes.
20
d) Diagrama de Estrutura Composta: é utilizado para descrever
relacionamentos entre os elementos do sistema e a colaboração
interna das classes, interfaces e componentes para e especificação
de uma funcionalidade. Os recursos estáticos influenciam classes e
associações, objetos, ligações e colaborações, oferecendo ao
framework no qual os elementos dinâmicos do modelo são
executados. Esse diagrama funciona de modo semelhante a uma
planta para a construção de um equipamento, mostra as partes e
como elas podem ser montadas, mas não pode mostrar como o
produto final se comportará. A Figura 5 apresenta um exemplo desse
diagrama.
Fonte: Fowler, 2005 p. 133
Figura 5. Diagrama de Estrutura Composta.
e) Diagrama de Caso de Uso: modela as expectativas dos usuários
para utilização do sistema, descrevendo a funcionalidade proposta
para um novo sistema que será projetado. É normalmente utilizado
como parte da abordagem de caso de uso, que inclui uma descrição
textual dos casos de uso individuais e a extração de cenários. Pode
ser escrito de maneiras diferentes, mas a mais comum é representar
a visão de fora do sistema. Diagramas de caso de uso identificam os
recursos específicos do sistema, comportamento compartilhado entre
21
os recursos e oferece modo simples e fácil de entendimento para os
clientes visualizarem os requisitos. A Figura 6 apresenta um exemplo
de diagrama de caso de uso.
Fonte: Fowler, 2005 p. 107
Figura 6. Diagrama de Caso de Uso.
f) Diagrama de Componentes: modela a visão da implementação
representando partes do software no ambiente de implementação,
ilustra como deverá ficar a organização das classes através de
componentes de trabalho. Sua finalidade é definir os modelos físicos
do software e seus relacionamentos entre si, os componentes podem
representar qualquer coisa desde uma classe até aplicações,
subsistemas e sistemas. Esse diagrama pode ser utilizado para
representação do relacionamento entre classes que especificam os
requisitos para os componentes. A Figura 7 apresenta esse
diagrama.
Fonte: Fowler, 2005 p. 135
Figura 7. Diagrama de Componentes.
22
g) Diagrama de Implantação: descreve os componentes de uma
arquitetura de execução, ou seja, a configuração do hardware e do
software, exibindo o layout físico do sistema revelando quais partes
do hardware e do software são executados. É consistido em nós
representando um tipo de recurso de processamento e associações
que define o tipo de relacionamento que dá suporte à comunicação
entre os nós. A Figura 8 é um exemplo de diagrama de implantação.
Fonte: Fowler, 2005 p. 103
Figura 8. Diagrama de Implantação.
h) Diagrama de Sequência: utilizado para representar informações de
forma simples e lógica de sequências de processos em um sistema,
tendo como foco a identificação da interação e comportamento entre
os grupos de objetos ao longo do tempo. Seu maior beneficio é a
ajuda na identificação de mensagens trocadas entre os objetos que
fazem perguntas e os que respondem. Normalmente isso ocorre em
cenários para caso de uso, capturando os comportamentos de um
único cenário e exibindo os objetos e as mensagens passadas entre
eles no caso de uso. São modelados em nível de objeto e não no
nível de classe, admitindo que vários objetos de uma mesma classe
23
possam trabalhar juntos. A Figura 9 representa um diagrama de
sequência.
Fonte: Fowler, 2005 p. 69
Figura 9. Diagrama de Sequência.
i) Diagrama de Transição de Estado: são técnicas para conhecer o
comportamento do sistema, é uma representação do estado ou
situação em que o objeto pode se encontrar no decorrer da execução
de processos de um sistema, passando assim o objeto de um estado
inicial para o estado final através de uma transição. Inclui notações
que explicam o comportamento do objeto enquanto ele muda de um
estado para outro e enquanto está em um estado específico. É
designado para mostrar o comportamento do ciclo de vida de um
único objeto. Esse diagrama pode ser observado na Figura 10.
Fonte: Fowler, 2005 p. 111
Figura 10. Diagrama de Transição de Estado.
24
j) Diagrama de Atividades: é uma técnica que descreve a lógica de
procedimento, representa processo de negócio e fluxo de trabalho
conduzido por processamento, desempenha papel semelhante aos
fluxogramas, e suportam comportamento paralelo. São importantes
somente para a modelagem de aspectos dinâmicos de um sistema e
para construção de sistemas executáveis por meio de engenharia
reversa. Diz o que acontece, mas não diz quem faz o que, este
diagrama não comunica qual classe é responsável por cada ação. A
Figura 11 é um exemplo de diagrama de atividades.
Fonte: Fowler, 2005 p. 119
Figura 11. Diagrama de Atividades.
k) Diagrama de Colaboração ou Comunicação: exibe interação entre
conjuntos de objetos e seus relacionamentos, incluindo mensagens
trocadas entre eles. Dá ênfase à ordenação estrutural em que as
mensagens são trocadas entre os objetos de um sistema. Oferecem
visão de alto nível da progressão lógica através das interações. Esse
diagrama é utilizado para dar ênfase no contexto do sistema, é
25
desenhado como um diagrama de objetos, onde os objetos são
exibidos juntamente com seus relacionamentos. A Figura 12 exibe
esse diagrama.
Fonte: Fowler, 2005 p. 130
Figura 12. Diagrama de Colaboração ou Comunicação.
l) Diagrama de Temporização: apresenta comportamento dos objetos
durante seu ciclo de vida e sua interação em uma escala de tempo,
focando as condições que mudam no decorrer desse período. É uma
outra forma de diagrama de interação, no qual o foco está nas
restrições de temporização para um ou vários objetos. Oferece visão
da mudança de estado do objeto enfatizando a importância do tempo
e da temporização. Seu layout é uma grade com eixos de tempo e
estado, utiliza duas formas de representação, uma linha de tempo de
estado (timeline) e uma linha de tempo de valor geral. Esse diagrama
é representado pela Figura 13.
Fonte: Fowler, 2005 p. 141
Figura 13. Diagrama de Temporização.
26
m) Diagrama de Interatividade: é uma mistura e variações de diagramas
de atividades e sequência, faz utilização do layout do diagrama de
atividades para modelar o fluxo da lógica em diversos eventos. Faz
modelagem de uma série de comportamentos discretos (atividades)
utilizando blocos de ocorrência de interação e realiza interação
individual que se expressa nos diagramas de sequência. Esse
diagrama é representado na Figura 14.
Fonte: Fowler, 2005 p. 140
Figura 14. Diagrama de Interatividade.
Um software ou aplicação que utiliza a UML como linguagem de suporte
à modelagem envolve a criação de diversos documentos, podendo ser textos
ou gráficos. Esses documentos são denominados artefatos de software que
compõem as visões do sistema. Os artefatos gráficos produzidos durante o
desenvolvimento de uma aplicação de software orientado a objetos são
definidos pela utilização dos diagramas da UML (BEZERRA, 2007).
27
1.2 Plataformas Tecnológicas
1.2.1 A Linguagem Java
Java é uma linguagem de programação, desenvolvida pela empresa Sun
Microsystems voltada para a programação Orientada a Objetos (OO). É
portável para diferentes plataformas e diferente das outras linguagens de
programação. A linguagem Java é compilada para um bytecode que é
executado e compilado por uma máquina virtual (JAVA, 2009).
A Sun lança a primeira plataforma universal de software, desenhada
a partir das tecnologias utilizadas na Internet e intranets corporativas.
A tecnologia Java possibilita aos desenvolvedores escrever
aplicativos uma vez, para rodar em qualquer computador (SUN,
2009).
Java 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).
A linguagem teve sua idéia principal amadurecida pelas mudanças
ocorridas no mundo da tecnologia, e foi implementada com o intuito de
abranger essas mudanças. A linguagem Java 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).
Segundo o site da Sun Microsystems, em 1998, foi introduzida uma nova
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;
28
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.
A linguagem Java possui variações nas formas de desenvolvimento de
sistemas, devido às diferentes tecnologias existentes, oferecendo aos
desenvolvedores opções como: servidores web, banco de dados relacionais,
computadores de grande porte, telefones móveis, sistemas de cartão de
crédito, entre outros (BODOFF, 2005).
A linguagem Java nos dias de hoje é utilizada por grandes bancos,
pois fornece extrema segurança. Também é utilizada por grandes
empresas que necessitam de estabilidade, portabilidade e que
desejam trafegar uma grande quantidade de dados entre suas filiais
(GONÇALVES, 2007, p. 7).
Os programas Java consistem na criação de classes. As classes
possuem variáveis de instância (atributos) e métodos (ações do objeto) que
têm a função de realizar as tarefas e enviar informações ao concluí-las. Java
possui coleções de bibliotecas de classes que são conhecidas como API’s
(Application Programming Interfaces ou Interface de Programação de
Aplicativos) que ajudam aos programadores desenvolver suas classes ou
partes delas, e uma vez criadas as classes podem ser reutilizadas facilitando a
implementação e o desenvolvimento do software (DEITEL e DEITEL, 2005).
1.2.1.1 Servlets
Servlets são classes Java que dinamicamente processam requisição e
respostas, proporcionando novos recursos aos servidores (SERVLET, 2009).
São à base do desenvolvimento de qualquer aplicação escrita em Java para
Web (GONÇALVES, 2007).
Servlets são classes Java, desenvolvidas com uma estrutura bem
definida, e que quando instalada junto a um servidor que implemente
um Container Servlet (um servidor que permita a execução de
Servlets, muitas vezes chamado de Servidor de Aplicações Java),
29
podem tratar requisições recebidas de clientes (GONÇALVES, 2007,
p. 29).
Fonte: Deitel; Deitel, 2005 p. 931
Figura 15. Arquitetura de uma aplicação web utilizando Servlet.
Aplicações que utilizam arquitetura Servlets possibilitam a comunicação
entre clientes e servidores por meio do protocolo HTTP. A Figura 15 representa
os requerimentos e respostas a partir do momento em que o cliente envia uma
solicitação HTTP ao servidor. O container de Servlets recebe a solicitação e a
direciona para ser processada pelo Servlet apropriado. O Servlet realiza seu
processamento, podendo incluir e interagir com um banco de dados ou outros
componentes do servidor como outros Servlets e JSP. O Servlet retorna seus
resultados ao cliente geralmente na forma de um documento HTML, XHTML,
XML, ou em formatos de dados como imagens e dados binários (DEITEL e
DEITEL, 2005).
Alguns Servlets não produzem conteúdo, ao invés disso realizam tarefas
em favor do cliente e então invocam outros Servlets ou JSP para fornecer uma
resposta. Geralmente as tecnologias de Servlets e JSP são interligadas.
Todas as classes Servlets pertencem direta ou indiretamente à classe
GenericServlet, que trata dos métodos relacionados aos Servlets. A classe
HttpServlet estende-se da classe GenericServlet e é utilizada pelo protocolo
HTTP implementando métodos específicos como: get, post, head, trace, put,
delete, options e connect. Os mais comuns e utilizados são (GONÇALVES,
2007):
a) doGet: método que envia solicitação ao servidor, para que este
consiga um recurso e possa enviá-lo de volta;
b) doPost: envia solicitação e ao mesmo tempo dados ao servidor.
30
Os Servlets possuem ciclo de vida composto por três etapas:
inicialização, atendimento às requisições e finalização. O ciclo de vida do
Servlet é controlado pelo contêiner em que o Servlet foi implementado
(BODOFF, 2005).
Fonte: Gonçalves, 2007 p. 32
Figura 16. Ciclo de vida do Servlet.
A Figura 16 descreve os passos realizados quando uma requisição é
mapeada para um Servlet. O contêiner efetua as seguintes etapas de
funcionamento: carrega a classe de Servlet; cria uma instância da classe de
Servlet; inicializa a instância de Servlet chamando o método init; invoca
métodos de serviços (service), passa os objetos de requisição e resposta; e
finaliza o Servlet removendo-o com o comando destroy (BODOFF, 2005).
O método chave em cada Servlet é o método service(), que recebe tanto
um objetivo ServletRequest como um objetivo ServletResponse, fornecendo
acesso a fluxos de entrada e saída, permitindo o Servlet ler o dados do cliente
e enviar dados ao cliente. Comumente esse método não deve ser sobrescrito
(DEITEL e DEITEL, 2005).
1.2.1.2 JSP
Java
Server
Pages
(JSP)
é
uma
tecnologia voltada
para
o
desenvolvimento de aplicações para Web, que permite a criação de
componentes tanto estáticos como dinâmicos. É similar às tecnologias ASP
31
(Active Server Pages) e PHP (Personal Home Page), e por ser baseada na
linguagem de Java tem a portabilidade da plataforma, permitindo sua execução
em diversos sistemas operacionais (GONÇALVES, 2007).
Uma página JSP é um documento baseado em texto, que contém dois
tipos de textos: os dados estáticos que podem ser expressos por qualquer
formato baseado em texto tais como HTML, WML e XML, e os elementos JSP
que determinam como a página construirá seu conteúdo dinâmico (BODOFF,
2005).
A tecnologia JSP torna disponível todas as capacidades dinâmicas da
tecnologia Java Servlet, oferecendo uma abordagem mais natural para o
conteúdo estático (BODOFF, 2005). Uma página JSP, após ser hospedada em
um servidor de aplicações compatível a tecnologia JEE, é transformada em um
Servlet. O Tomcat e o GlassFish são exemplos de servidores compatíveis a
tecnologia JEE.
O JSP permite que o desenvolvedor de páginas para Internet possa criar
aplicações com acesso a banco de dados, manipular arquivos no formato de
texto, capturar informações de formulários e obter informações sobre o
servidor.
As bibliotecas de tag personalizadas são um recurso poderoso do
JSP que permite aos desenvolvedores em Java ocultar códigos
complexos para acesso de banco de dados e outros serviços úteis
para páginas da Web dinâmicas em tags personalizadas. Os sites
utilizam essas tags personalizadas como qualquer outro elemento de
página da Web para tirar proveito das funcionalidades mais
complexas ocultas pela tag. (DEITEL; DEITEL, 2005, p. 960).
Scripts JSP possibilitam a geração de conteúdo dinâmico como parte de
um documento HTML. Parte desse conteúdo depende da interação do usuário
por meio de solicitação de uma atualização da página feita ao servidor
(GONÇALVES, 2007).
Há quatro componentes-chaves para a criação de JSP: diretivas, ações,
scriptlets e bibliotecas de tags. Para o desenvolvimento de uma página JSP é
preciso conhecer as funcionalidades de cada elemento chave de JSP (DEITEL
e DEITEL, 2005, p. 960):
a) diretivas: são as mensagens que são enviadas ao contêiner
possibilitando o desenvolvedor configurar a página, incluir recursos e
32
especificar a utilização de bibliotecas. As principais diretivas são:
page, include e taglib;
b) ações: encapsula funcionalidades em tags predefinidas que são
incorporadas em uma página JSP. São frequentemente realizadas
com base em informações enviadas ao servidor como parte de uma
solicitação do cliente e permitem a instanciação de objetos Java para
uso em scriptlets JSP;
c) scriptlets ou elementos de script: permite a inserção de código Java
que tenha interatividade com componentes em um JSP e outros
componentes de aplicativos Web, para realização de algum tipo de
processamento mediante a solicitação do cliente e permite respostas
configuráveis às ações do usuário;
d) bibliotecas de tags: permite a criação de tags personalizadas ou a
utilização de tags preexistentes, facilitando o uso de código Java
para
projetistas
manipularem
conteúdo
JSP
com
pouco
conhecimento da linguagem.
A tecnologia Java Server Pages suporta diretamente o uso de
componentes JavaBeans com elementos de linguagem JSP padrão, podendo
facilmente criar e inicializar beans, e obter e definir os valores de suas
propriedades (BODOFF, 2005).
1.2.1.3 JavaBeans
JavaBeans são componentes feitos em Java, que são projetados para
ser independentes, reusáveis e modulares. As classes JavaBeans podem ser
objetos visíveis e empacotados, podendo assim ser distribuídos e utilizados
(BODOFF, 2005).
Uma classe para ser considerada JavaBean precisa seguir determinadas
convenções, que permitem a criação das ferramentas que poderão utilizar e
manipular os JavaBeans como: nomenclatura de métodos, construtores e
métodos (BODOFF, 2005).
As classes JavaBeans possuem o construtor sem argumentos e
métodos de acesso get e set. São classes amplamente utilizadas em conjunto
33
com páginas JSP, tendo a principal característica de separar a lógica do visual
(GONÇALVES, 2007). Essas classes podem realizar qualquer tipo de tarefa
dentro de uma aplicação Java e, se utilizadas corretamente, podem reduzir
beneficamente a quantia de código (GONÇALVES, 2007).
O JavaBeans não existe apenas para o desenvolvimento Web, como
é largamente usado. Sua concepção inicial era a reutilização de
programação visual, os famosos “Beans” do Swing. Tecnicamente
JavaBeans é o termo correto para a reutilização de partes de
programas visuais, com certas funcionalidades, mas que passou a
ser conhecida popularmente como componentes, na programação
visual para desktop (GONÇALVES, 2007, p. 171).
Os JavaBeans existem tanto para modelar sistemas gráficos criados
para desktop ou também para aplicações Web em conjunto com páginas JSP
(GONÇALVES, 2007).
Regra
Descrição da Regra
Se o JavaBean não contiver nenhum construtor declarado
Construtor
explicitamente, o interpretador Java considerará, que já faz parte da
definição da linguagem, a existência de um construtor implícito sem
argumentos e sem implementação de código no corpo do método.
O JavaBens pode implementar interfaces que possibilitem a
persistência e restauração do estado do objeto da classe, mas essa
Persistência
regra não precisa ser obedecida. A não existência dessa
implementação o impossibilita de ser salvo em arquivo ou ser
enviado de um computador para outro em uma aplicação
distribuída.
O JavaBean criado deve conter qualquer método para tratamento
de eventos, possuir um atributo que deseja obter seu valor, ele
deve ser acessível por um método público que de preferência, deve
ter mesmo nome, com o prefixo get. Para alterar o valor do atributo,
Atributos
o mesmo deve ser feito por outro método, também público, void,
com prefixo set, tendo um parâmetro de mesmo tipo para a
mudança.
Executando
essa
normativa
têm-se
os
atributos
encapsulados. Portanto esses mesmos atributos devem ser
qualificados como protected ou private.
Fonte: Gonçalves, 2007, p. 182.
Quadro 1. Regras de trabalho com JavaBeans.
34
As convenções de projeto de componente JavaBean governam as
propriedades da classe e os métodos públicos que fornecem acesso para as
propriedades. Uma propriedade de um componente JavaBeans pode ser
(BODOFF, 2005):
a) leitura/escrita, somente leitura ou somente escrita;
b) simples, o que significa que ela contém valor único, ou indexada que
significa que ela representa um array de valores.
1.2.1.4 JavaDAO
Data Access Object (DAO) é um modelo para persistência de dados em
aplicações de banco de dados relacional (BEZERRA, 2007). É um padrão que
permite separar regras de negócios das regras de acesso, garantindo a
independência dos mecanismos de persistências (BEZERRA, 2007).
A função da classe DAO é abstrair e encapsular o acesso às fontes de
dados e realizar a gerência de conexão com a fonte e saber como obter os
dados, tendo como finalidade definir uma arquitetura para o mapeamento
objeto relacional, diminuir dependência com a fonte de dados e reduzir
redundância. Sua utilização possui vantagens
e desvantagens
como
(BEZERRA, 2007):
a) vantagens: transparência quanto ao mecanismo de persistência,
facilita migração para outras implementações, reduz complexidade
do código nos objetos de negócio, não possui dependência entre a
classe de domínio e a classe de negócio, possui dependência da
fonte de dados em único ponto;
b) desvantagens: escrita de código de mapeamento básico.
Embora o padrão DAO traga maior flexibilidade para a aplicação, uma
desvantagem é que ele aumenta a complexidade de implementação,
pelo simples fato de a quantidade de classes aumentar. Portanto,
uma questão que deve ser avaliada é com relação aos aspectos de
complexidade e flexibilidade quando o uso do padrão estiver sendo
cogitado (BEZERRA, 2007, p. 355).
A utilização do padrão DAO permite uma aplicação obter acesso a
objetos de negócio que estão associados às informações persistentes, a
interação da aplicação com o objeto ocorre por meio de uma interface, a
35
chamada interface DAO (BEZERRA, 2007). Seu conceito é separar a relação
do cliente de um recurso dos dados de seu mecanismo de acesso aos dados.
Classes que fazem implementação da classe DAO se comprometem a
transformar as informações provenientes do mecanismo de armazenamento
em objetos de negócios e a armazenar informações de um objeto de negócio
no mecanismo de armazenamento em uso. A Figura 17 exibe a estrutura do
padrão DAO (BEZERRA, 2007).
Fonte: Bezerra, 2007 p. 354
Figura 17. Estrutura do padrão DAO.
O padrão DAO é uma forma de desacoplar as classes do negócio dos
aspectos relativos ao acesso aos mecanismos de armazenamento persistente.
Esse padrão controla a conexão com a fonte de dados para obter e armazenar
dados (BEZERRA, 2007).
Geralmente tem-se um DAO para cada objeto do domínio do sistema ou
então para cada módulo ou conjunto de entidades fortemente relacionadas.
Cada DAO deve possuir uma interface que contenha os métodos de
manipulação de dados (BEZERRA, 2007).
Pode ser que uma aplicação tenha a necessidade de armazenar
informações não somente em diferentes SGBDR, mas também em
outros tipos de mecanismos de armazenamento persistentes, tais
como arquivos no sistema operacional, sistemas legados, serviços
externos, etc. O padrão DAO é uma solução para esse dilema
(BEZERRA, 2007, p. 353).
Um aspecto importante do padrão DAO é que ele pode ser aplicado não
somente em caso de mapeamento de um objeto para uma tabela, mas também
para casos mais complexos envolvendo junções entre objetos e procedimentos
armazenados no SGBD (BEZERRA, 2007).
36
1.2.1.5 JDBC
Java DataBase Connectivity (JDBC) é uma API completa que consiste
em um conjunto de classes e interfaces incluídas dentro da linguagem Java
para programação com acesso a banco de dados, faz o envio das instruções
SQL para o banco de dados relacional (GONÇALVES, 2007).
Pelo fato de JDBC ser escrito em Java, ele possui a vantagem de ser
independente de plataforma. Uma aplicação escrita utilizando JDBC poderá
trabalhar com diversos bancos de dados como: Oracle, MySQL, SQL Server,
PostegreSQL, e etc (GONÇALVES, 2007).
Os programas Java comunicam-se com banco de dados e manipulam
TM
seus dados utilizando a API do JDBC . Um driver JDBC permite aos
aplicativos Java conectar-se a um banco de dados em um DBMS
particular e permite aos programadores manipular esse banco de
dados utilizando a API do JDBC. O JDBC é quase sempre utilizado
com um banco de dados relacional, entretanto ele pode ser utilizado
com qualquer origem de dados baseada em tabela (DEITEL; DEITEL,
2005, p. 895).
As APIs JDBC são divididas em duas partes que possibilitam ao
desenvolvedor de aplicativos utilizarem vários serviços e são consistidas em
pacotes como (GONÇALVES, 2007):
a) java.sql: contém classes e interfaces em nível de aplicativos, são
utilizadas pelos componentes do aplicativo e são necessárias para
acessar e lidar com o banco de dados;
b) javax.sql: contém classes e interfaces que são usadas pelo servidor
de fonte de dados, sua principal inclusão é o DataSource que
possibilita uma alternativa para DriverManager, inclui pool de
conexão, transações distribuídas e a implementação de RowSet.
Cada banco de dados possui um driver JDBC, esses drivers são
divididos em quatro categorias: Ponte JDBC-ODBC, Driver API-Nativo, Driver
de Protocolo de Rede e Driver Nativo (JDBC, 2009).
Tecnologias como JDBC (Java DataBase Connectivity) e ADO.NET
são uma tentativa de blindar as aplicações das particularidades de
cada SGBDR. Essas tecnologias fornecem APIs que podem ser
utilizadas para acesso padronizado a SGBDR. Com o uso de uma
dessas tecnologias, uma mesma API é utilizada pelo programador
para ter acesso a informações em um SGBDR, não importando qual é
37
o SGBDR especifico em uso no momento. Se os dados da aplicação
tiverem que ser movidos para outro SGBDR, essa aplicação não
precisa ser alterada, por conta de estar utilizando uma API
padronizada (BEZERRA, 2007, p. 353).
O JDBC para aperfeiçoar e melhorar suas funcionalidades utiliza as
propriedades de recuperação de metadados, garantindo que quando o modelo
relacional for alterado a aplicação não precise sofrer nenhuma manutenção
(MARCANDALI, 2002).
Os metadados ou dicionários de dados são dados sobre outros dados,
são dados de alto nível que descrevem um dado de nível inferior
(MARCANDALI, 2002). Um item de um metadado diz do que aquele dado se
trata, na maioria das vezes são informações ilegíveis por um sistema de
computador (METADADOS, 2009). Através dos metadados, as informações
podem ser consultadas, atualizadas e processadas, eles facilitam o
entendimento dos relacionamentos e a utilidade das informações de dados
(MARCANDALI, 2002).
A utilização de metadados permite que uma aplicação recupere dados
de um banco de dados sem conhecer previamente os dados que vai coletar,
sendo de qualquer tabela ou suas características (MARCANDALI, 2002).
1.2.2
Sistema Gerenciador de Banco de Dados
Um banco de dados ou base de dados é uma coleção organizada de
dados que oferece mecanismos para armazenar, organizar, recuperar e
modificar dados (DEITEL; DEITEL, 2005). Pode ser considerado como um
repositório
ou
recipiente
para
coleções
de
arquivos
de
dados
computadorizados (DATE, 2004). Um sistema de gerenciamento de banco de
dados
(DBMS
–
Database Management
System)
permite
acesso e
armazenamento de dados sem envolver a representação interna dos dados
(DATE, 2004).
A utilização de banco de dados implica em diversas vantagens para o
usuário como: poder obter e atualizar os dados com rapidez e velocidade,
redução de trabalho manual monótono, as informações são precisas e
atualizadas e estão disponíveis a qualquer momento para consulta, os dados
são mais protegidos contra perda e acesso ilegal (DATE, 2004).
38
A tecnologia dos bancos de dados tem provocado grande impacto na
utilização de computadores. É viável afirmar que os bancos de dados
representam um papel crítico em quase todas as áreas em que os
computadores são utilizados, incluindo negócios, comércio eletrônico,
engenharia, medicina, direito, educação, as ciências da informação,
etc. (ELMASRI; NAVATHE, 2005 p. 4).
A definição de um banco de dados implica em definição e especificação
de seus tipos de dados, em estruturas e as restrições para os dados serem
armazenados em um banco de dados (ELMASRI e NAVATHE, 2005).
Os bancos de dados podem ser de qualquer tamanho e de
complexidade variada, pode ser gerado e mantido por um grupo de aplicativos
escritos para desempenhar a tarefa de sistema gerenciador de banco de dados
(SGBD). Os bancos de dados oferecem diversas operações como (ELMASRI e
NAVATHE, 2005):
a) acrescentar novos arquivos ao banco de dados;
b) inserir, alterar e excluir dados em arquivos existentes;
c) buscar dados de arquivos existentes;
d) remover arquivos existentes do banco de dados.
Essas operações, disponíveis por meio de um SGBD, funcionam como
um mecanismo de inter-relação entre arquivos e programas para manter um
banco de dados (ELMASRI e NAVATHE, 2005). Para facilitar a interação dos
usuários com o sistema, o desenvolvedor deve omitir as complexidades da
estrutura de dados por meio dos diversos níveis de abstração (ELMASRI e
NAVATHE, 2005).
Os SGBD’s são projetados para administrar uma grande quantidade de
informações, proporcionando um ambiente conveniente e eficiente para facilitar
esta gestão (DATE, 2004).
Os principais bancos de dados existentes no mercado trabalham com o
modelo relacional. Esse nome representa o banco de dados como uma coleção
de relações, sendo que cada relação se parece com uma tabela de valores
(ELMASRI e NAVATHE, 2005). Esse modelo tem como finalidade organizar os
dados em forma de tabelas, cada tabela é chamada de relação, as colunas são
os atributos e as linhas são chamadas de tupla (ELMASRI e NAVATHE, 2005).
Um banco de dados relacional consiste de uma coleção de tabelas com
estrutura similar, do qual cada tabela possui um nome único (DATE, 2004).
39
Uma linha em uma tabela representa um relacionamento entre um determinado
conjunto de valores, uma vez que uma tabela é uma coleção desses
relacionamentos, há uma correspondência entre o conceito de tabela e o
conceito matemático de relação (DATE, 2004).
Todo banco de dados precisa ter uma forma de inserir e extrair dados,
de preferência utilizando uma linguagem que seja entendida por todos os
bancos de dados (DATE, 2004). Os SGBD implementam uma linguagem
padrão conhecida como Structured Query Language (SQL) que permite
recuperar, adicionar, modificar e excluir informações em um banco de dados
(DATE, 2004).
Os sistemas mais populares de hoje são os banco de dados
relacionais. Uma linguagem chamada SQL é a linguagem padrão
internacional utilizada quase universalmente com banco de dados
relacionais para realizar consultas (isto é, solicitar informações que
satisfazem os critérios dados) e manipular dados (DEITEL; DEITEL,
2005, p. 895).
Os SGBD’s mais conhecidos e utilizados no mercado atualmente são os
seguintes: Oracle, MySQL, PostgreSQL, SQL Server (DEITEL e DEITEL,
2005).
1.2.2.1 A Linguagem SQL
SQL (Linguagem de Consulta Estrutural) é a linguagem padrão para
banco de dados. Originalmente chamada de Sequel, foi desenvolvida pela IBM
Research no início dos anos 70, com sua evolução, seu nome foi mudado para
SQL (DATE, 2004). Apesar do nome, a linguagem tem muitas funções além de
consultar o banco de dados, como definir estruturas de dados, modificar dados
no banco ou especificar restrições de segurança (DATE, 2004).
Essa linguagem é aceita por quase todos os produtos existentes no
mercado, possibilita a criação e manipulação de tabelas, inclui operações de
definições e manipulação dos dados nelas armazenados e é a linguagem para
banco de dados mais utilizada no mercado nos dias de hoje (DATE, 2004).
Em sua forma original, a SQL pretendia ser especificamente uma
“sublinguagem de dados”. Porém, com a incorporação do recurso de
Módulos Armazenados Persistentes (SQL/PSM, ou PSM – Persistent
Stored Modules) ao padrão em 1996, o padrão se tornou completo
40
em termos computacionais, ele agora inclui instruções como CALL,
RETURN, SET, CASE, IF, LOOP, LEAVE, WHILE e REPEAT, bem
como características relacionadas à capacidade de declarar variáveis
e tratadores de exceções (DATE, 2004, p. 72).
A SQL é dividida em partes, devido à grande quantidade de comandos
em sua estrutura (DATE, 2004):
a) DML (Linguagem de Manipulação de Dados): é um subconjunto da
linguagem utilizada para inserir, atualizar e apagar dados;
b) DDL (Linguagem de Definição de Dados): permite durante a
atualização a definição de novas tabelas e elementos associados;
c) DCL (Linguagem de Controle de Dados): controla os respectivos
aspectos da autorização de dados e licenças de usuários para
controlar quem tem acesso para ver ou manipular os dados em um
banco de dados;
d) DTL (Linguagem de Transação de Dados): utilizado para marcar o
início de uma transação no banco de dados, podendo ser uma
transação completa ou não;
e) DQL (Linguagem de Consulta de Dados): possui apenas um
comando “select”, é a parte mais utilizada na SQL, pois esse
comando permite o usuário especificar uma consulta com a
descrição do resultado desejado, é composto de cláusulas e opções
que possibilitam a elaboração de consultas simples e complexas.
A linguagem SQL é a linguagem padrão de banco de dados devido a
sua simplicidade e facilidade de uso, sua maior diferença das outras linguagens
de consulta é que suas consultas especificam a forma do resultado e não o
caminho para chegar até ele (DATE, 2004). É uma linguagem padronizada pela
ANSI e pela ISO, possui diferentes variações e extensões devido à produção
de diferentes SGBD’s, pode ser migrada de plataforma sem necessitar de
mudanças estruturais (DATE, 2004).
1.2.2.2 Oracle
O Oracle surgiu no fim dos anos 70, foi desenvolvido por Larry Ellison,
Bob Miner e Ed Oates, que perceberam a partir de uma descrição de um
41
protótipo do modelo de banco de dados relacional, o grande potencial de
negócio deste modelo de banco de dados e descobriram que nenhuma
empresa havia comercializado essa tecnologia (ORACLE, 2009). Quase trinta
anos depois de seu desenvolvimento, a Oracle Corporation mudou a face da
computação empresarial e sua tecnologia está presente mundialmente em
quase todos os setores (ORACLE, 2009).
A Oracle Corporation possui diferentes versões do software de
gerenciamento de banco de dados. Essas versões estão subdivididas em
"edições" por razões de marketing e controle de licenças (ORACLE, 2009):
a) Enterprise Edition (EE): inclui diversas funcionalidades, mas seu foco
principal é nas áreas de desempenho e segurança, é licenciado para
usuários ou núcleos de processamento de servidor para quatro ou
mais computadores, não possui limite de memória e faz atualizações
utilizando o software Oracle RAC;
b) Standard Edition (SE): possui as funcionalidades básicas de banco
de dados, é licenciado para usuários ou de sockets, para servidores
com um a quatro computadores, não possui limite de memória e
pode fazer atualização com o Oracle RAC sem custo adicional;
c) Standard Edition One: introduzido com o Oracle 10g, possui
restrições de funcionalidades adicionais, é comercializado para
sistemas com um ou dois computadores e não possui restrições de
memória;
d) Express Edition (XE): oferece o Oracle 10g livre para a distribuição
nas plataformas Windows e Linux, possui limite de memória de 1GB
e no máximo 4GB de dados de usuário, é restrita para utilização em
apenas um computador, o suporte é feito em fóruns on-line sem o
suporte da Oracle;
e) Oracle Personal Edition: oferece funcionalidade da EE mais é
comercializada para desenvolvedores específicos que utilizam
estações de trabalho pessoais;
f) Oracle Database Lite: destinada para rodar em dispositivos móveis, o
banco de dados é localizado no próprio dispositivo móvel, pode ser
sincronizado com uma instalação baseada em servidor.
42
O SGBD da Oracle é líder de mercado, o Oracle 9i foi pioneiro no
suporte ao modelo web. O Oracle 10g, mais recente, se baseia na
tecnologia de grid. Recentemente fora lançado o Oracle 11g que veio
com melhorias em relação ao Oracle 10g (ORACLE, 2009).
A Oracle também criou a linguagem de programação PL/SQL, que é
utilizada no processamento de transações (ORACLE, 2009).
Escolheu-se utilizar a tecnologia Oracle no Gerador de Artefatos porque
julga-se ser ela a mais confiável do que as demais tecnologias de SGBD’s
disponíveis no mercado e sabe-se de sua grande aceitação na maior parte das
empresas.
1.2.3
AJAX
O termo AJAX (Asynchrous JavaScript and XML) foi criado por Jesse
James Garrett, quando apresentava a tecnologia até então sem nome a um
cliente (DEITEL e DEITEL, 2008). As tecnologias que compõem o AJAX já
existiam havia muitos anos antes de sua criação e são brevemente descritas a
seguir (GONÇALVES, 2006):
a) XHTML (eXtensible Hypertext Markup Language): é a reformulação
da linguagem de marcação HTML, é baseada em XML e combina
tags de marcação HTML com regras XML, pode ser exibido em
páginas da Web através de diversos dispositivos independente da
plataforma utilizada, como: celular, PDAs, palm, televisão, etc,
visando melhorar a acessibilidade, pois suas marcações possuem
sentido semântico para as máquinas;
b) CSS (Cascading Style Sheets): é uma linguagem de estilo em
cascata, padrões para definir a formatação em páginas da Web. O
CSS, ao invés de ser criado dentro do próprio documento, é criado
separado e possui um link de ligação com a página do documento,
tendo assim benefícios como: a separação entre o conteúdo de
formatação e o conteúdo da página escrito na linguagem de
marcação, possui reutilização de um estilo em diversas páginas e
oferece facilidade na padronização de um layout;
c) JavaScript (JS): é uma linguagem de programação de scripts, criada
para ser uma forma de controle do navegador, é utilizada para
43
acrescentar interesses e aumentar a interatividade entre as páginas
da Web, modifica dinamicamente os estilos dos elementos de
páginas em HTML. É uma linguagem interpretada ao invés de ser
compilada. Tem sintaxe semelhante à linguagem Java, mais é
diferente em conceito e utilização;
d) DOM (Document Object Model): é API e plataforma de interfaces que
permite de forma padrão programas e scripts acessar e atualizar o
conteúdo, estrutura e estilo de documentos, permitindo assim que o
conteúdo seja processado e os resultados desse processamento
sejam incorporados no próprio documento. Os elementos de um
documento DOM podem ser trabalhados separadamente e por esse
motivo facilitarem a criação de páginas altamente dinâmicas. DOM
pode ser agrupado em cinco categorias: DOM Core, DOM HTML,
DOM CSS, DOM Events e DOM XML. Possui um modelo de eventos
que permite a associação de eventos do usuário a scripts
programados em uma página da Web;
e) XML (eXtensible Markup Language): é uma linguagem de marcação
que descreve dados, tendo foco na descrição de dados, permite o
armazenamento de informações de uma forma estruturada, possui a
portabilidade e características de tags e atributos semelhantes ao
HTML, porém não contém tags pré-definidas. Os documentos XML
são formados inteiramente por elementos. Essa linguagem de
marcação tem como propósito a facilidade de compartilhamento de
informações através da internet e sua principal característica é criar
infraestrutura única para diversas linguagens;
f) XMLHttpRequest: é um objeto da linguagem JavaScript utilizado para
realizar a comunicação assíncrona entre as páginas da Web e o
servidor de aplicações, não é necessário carregar páginas completas
carrega apenas partes necessárias delas. Esse objeto possibilita a
portabilidade
para
outros
sistemas
operacionais
e
trata
as
requisições e respostas do servidor com o documento XML ou DOM.
Contém métodos que possibilitam ao browser realizar as requisições
e receber respostas do servidor sem necessitar atualizar a tela.
44
O AJAX desempenha um papel vital na Web 2.0, particularmente na
criação de aplicações e melhorias das experiências geral dos usuários (DEITEL
e DEITEL, 2008). É uma tecnologia funcional, pois a maior parte dos browsers
estão habilitados para suportar as tecnologias que o incorporam (DEITEL e
DEITEL, 2008).
Em vez do modelo de aplicação Web tradicional, onde o próprio
browser é responsável por iniciar os pedidos e processar os pedidos
do servidor Web, o modelo AJAX provê uma camada intermediária
para controlar esta comunicação (GONÇALVES, 2007 p. 590).
AJAX permite atualizações parciais de páginas, atualizando partes
individuais de uma página da Web sem necessitar recarregar a página inteira
(DEITEL e DEITEL, 2008). Isso gera uma interface sensitiva, possibilitando que
os usuários interajam com a página enquanto o servidor processa as
requisições (DEITEL e DEITEL, 2008).
O AJAX possui um conjunto de funções que são escritas em JavaScript
que são chamadas quando uma informação é solicitada ou enviada ao servidor
(OLSON, 2007). O AJAX oferece dois recursos para a captura de respostas em
uma aplicação Web dinâmica: responseText e responseXML (OLSON, 2007).
Quando a estrutura de mecanismo do AJAX recebe a resposta do
servidor, começa executar a ação da análise dos dados, onde eles sofrem
mudanças para trazer a informação de forma agradável e entendível ao usuário
(CRANE; PASCARELLO; JAMES, 2007). Os recursos utilizados durante esse
processo são menores que o do modelo tradicional, pois a única requisição
solicitada é somente do conteúdo e não da página em si, que já está carregada
no cliente e pronta para receber os dados (CRANE; PASCARELLO; JAMES,
2007).
O AJAX é o elo que os desenvolvedores precisavam para entender o
que o JavaScript é capaz de fazer, e principalmente a possibilidade
de trazer dados vindos do servidor sem causar maiores tráfegos,
dando assim à aplicação Web as características de uma aplicação
Desktop (GONÇALVES, 2006 p. 08).
A Figura 18 demonstra o modelo de uma aplicação web tradicional e faz
uma comparação de suas funcionalidades com o modelo de uma aplicação
web que faz utilização de AJAX.
45
Fonte: Gonçalves, 2006, p. 06
Figura 18. Modelo Tradicional de requisição Web versus o modelo AJAX.
De acordo com a Figura 18, quando uma página que contém AJAX é
inicializada, o tráfego de informações tem maior intensidade no início, devido à
parte lógica da aplicação ser movida para o navegador, pois as informações de
interatividade para o navegador e o servidor devem ser previamente
carregadas (GONÇALVES, 2006). Quando o usuário acessa a página, um
documento complexo é enviado ao navegador, onde as informações são scripts
em JavaScript, e enquanto o browser não for fechado, a parte lógica
permanecerá por toda sessão (GONÇALVES, 2006). Após o carregamento
inicial da página, as chamadas ao servidor são mais eficientes, pois o tráfego é
menor já que os dados carregados serão em menor quantidade do que em
uma aplicação Web comum (GONÇALVES, 2006).
46
2 GERADORES DE ARTEFATOS DE SOFTWARE
2.1 Engenharia de Software
O processo de software ou engenharia de software é uma sequência
estruturada de conjuntos de práticas e atividades que são utilizadas para o
desenvolvimento ou manutenção de um software (MACORATTI, 2010). Essas
práticas são caracterizadas pela interação de ferramentas, pessoas e métodos,
elas englobam as atividades de especificação, projeto, implementação e testes
(MACORATTI, 2010).
Um processo de software pode ser entendido como um conjunto
estruturado de atividades exigidas para desenvolver um sistema de
software. Assim tem-se a seguinte definição: O processo de software
é um conjunto de atividades e resultados associados que produzem
um produto de software (MACORATTI, 2010).
O processo de software é divido em fases que devem ser realizadas
durante o desenvolvimento de um software ou aplicação, essas fases podem
ser realizadas simultaneamente de acordo com as necessidades de cada
desenvolvedor, isto é, sem possuir uma ordem obrigatória de desenvolvimento
(MACORATTI, 2010). Dentre as fases que devem ser realizadas em um
processo de desenvolvimento de software destacam-se as quatro principais
fases a seguir (MACORATTI, 2010):
a) especificação dos requisitos: tradução das necessidades e requisitos
operacionais para uma descrição detalhada das funcionalidades a
serem executadas;
b) projeto do sistema: tradução destes requisitos em uma descrição de
todos os componentes que são necessários para codificar o sistema;
c) programação: produção dos códigos e scripts que controlam o
sistema e realizam a computação lógica envolvida;
d) verificação e integração: verificação da satisfação dos requisitos
iniciais e a integração com produto produzido.
Pode-se considerar, que de uma forma geral o processo de software
pode ser visto como um conjunto de padrões voltados para a construção de um
47
produto de software (MACORATTI, 2010). Para a definição e utilização de um
processo de software o desenvolvedor deve levar em consideração algumas
informações como: as atividades a serem realizadas, os recursos necessários,
os artefatos requeridos e produzidos, os procedimentos adotados e o modelo
de ciclo de vida utilizado (MACORATTI, 2010).
O processo de software pode ser definido como um conjunto de
atividades uniformizadas a serem aplicadas sistematicamente que se
encontram agrupadas em fases, cada uma das quais com os seus
intervenientes com responsabilidades, que possui diversas entradas e
produz diversas saídas. Isto é, define quem faz o quê, quando e
como para atingir um certo objetivo (MACORATTI, 2010).
A definição e utilização de um processo para construção de um software
são realizadas pelo desenvolvedor pelas principais razões descritas a seguir
(MACORATTI, 2010):
a) redução dos problemas relacionados a treinamentos, revisões e
suporte à ferramentas da aplicação;
b) as experiências adquiridas nos projetos são incorporadas ao
processo padrão e contribuem para melhorias em todos os
processos definidos;
c) economia de tempo e esforço na definição de novos processos
adequados à outros projetos.
2.2 Definição de Geradores de Artefatos
Geradores de artefatos têm como finalidade acelerar o processo de
implementação no desenvolvimento de softwares, 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).
Geradores de artefatos podem ter diferentes significados, podendo ser
considerados como compiladores, wizards e gerador de códigos (JUNIOR,
2006).
A utilização de um gerador de artefatos pode trazer benefícios como o
aumento de produtividade, redução do tempo para desenvolvimento de um
48
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) realiza a validação da especificação de entrada e relata erros ou
avisos de inconsistências;
b) completa a especificação utilizando as configurações padrão, caso
seja necessário;
c) realiza otimização;
d) gera 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).
2.3 Definição de 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).
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,
49
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).
Template é uma régua ou gabarito de símbolos muito usado no
preparo de fluxogramas e organogramas. Nos programas aplicativos,
um documento ou planilha que contém os textos ou as formulas
necessárias a algumas aplicações genéricas, e que fica
permanentemente disponível ao usuário para que seja adaptado às
necessidades de cada situação (SAWAYA, 2005, p. 465).
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).
50
3 LEVANTAMENTO DE REQUISITOS
O levantamento de requisitos é o estudo das características que o
sistema deverá ter para atender às necessidades e expectativas do cliente
(BEZERRA, 2007). Define as informações necessárias para a modelagem e
especificação do software, corresponde à etapa de compreensão do problema
aplicado ao desenvolvimento do software (BEZERRA, 2007).
É a etapa inicial do desenvolvimento de software, mostra as
funcionalidades do sistema que será desenvolvido, descreve a forma como
será feito e não a forma como será implementado, é o processo de aquisição,
refinamento e verificação das necessidades do sistema, e compreende as
necessidades dos usuários (BEZERRA, 2007).
A fase de concepção deve fornecer a visão do todo para poder ver o
que é mais importante e depois dividir o todo em partes para analisar
os detalhes. Na fase de concepção a análise de requisitos é rápida e
genérica. O analista deve entender a extensão do que o sistema deve
fazer, mas sem detalhar como vai fazer (WAZLAWICK, 2004, p. 33).
O objetivo do levantamento de requisitos é sistematizar o processo de
definição dos requisitos, obtendo uma especificação correta e completa do
mesmo para elaboração do Documento de Requisitos (WAZLAWICK, 2004). O
documento de requisitos declara os diversos tipos de requisitos do sistema,
normalmente é escrito em uma linguagem natural para o usuário entendê-lo
(BEZERRA, 2007).
3.1 Análise de Mercado
A análise de mercado foi realizada com o intuito de comparar os
sistemas geradores de aplicação e suas principais funcionalidades.
a) GAwCRe: é um gerador de aplicações baseado na web para domínio
de sistemas de clínicas de reabilitação, realiza a instanciação de
aplicações utilizando uma linguagem de modelagem da aplicação
(LMA) que deve representar os modelos das aplicações, é definida
com base na linguagem de padrões para Sistemas de Gestão de
Clínicas (SiGCli), as informações são representadas por um meta-
51
modelo utilizando a linguagem XML, assim apresenta as informações
na interface de instanciação da aplicação, que são criadas
dinamicamente (PAZIN, 2004). A Figura 19 representa a interface de
instanciação do sistema para clínica de fisioterapia (ClinicaFisio) que
será gerado pelo GAwCRe, essa tela define o código, o nome da
aplicação e o diretório da aplicação, e a Figura 20 ilustra a tela
gerada para cadastro de guias de convênios médicos dos pacientes.
Fonte: Pazin, 2004, p. 104
Figura 19. Interface de Definição de uma Aplicação – GawCRe.
Fonte: Pazin, 2004, p. 105
Figura 20. Cadastro de Guias de Convênios de Pacientes – GawCRe.
52
b) GAS 2007: é um software que gera sofisticadas aplicações para
manipulação com banco de dados e com interface simplificada,
contém um conjunto de funções e recursos que podem ser
compilados e utilizados sem necessitar de esforços de programação.
É uma aplicação voltada para desenvolvedores e para usuários
finais, sua utilização proporciona agilidade de produtividade,
padronização
e
redução
de
custos
em
desenvolvimento
e
manutenção de aplicações. Possui recursos para desenvolvimento
de aplicações com alto grau de complexidade e alto nível, consolida
a combinação entre desempenho e funcionalidade, tem eficiência,
rapidez e as necessidades de aplicações de banco de dados (GAS
TECNOLOGIA, 2009). A Figura 21 exibe uma tela de um sistema de
controle de estoque gerado pelo GAS 2007.
Fonte: GAS Tecnologia, 2009.
Figura 21. Interface de Controle de Estoque de Produtos - GAS 2007.
c) Draco-PUC: é uma implementação parcial do paradigma Draco no
desenvolvimento de software, é um projeto que investiga a
construção de softwares baseado na reutilização de abstrações de
alto nível escritas em linguagens de domínio. A máquina Draco
53
possui tecnologias que permitem a construção e utilização de
domínios, estes são classificados em domínios de aplicação,
modelagem e executáveis. Um aspecto importante do paradigma
Draco é a distinção entre transformações horizontais e verticais. Esse
software produz semi-automaticamente um programa executável, a
aplicação é definida como um programa Draco e então é traduzida
para um programa executável (PUC-RIO, 2009). A Figura 22
representa o funcionamento de um domínio do sistema Draco.
Fonte: PUC-RIO, 2009.
Figura 22. Funcionamento de um Domínio do Sistema - DRACO-PUC.
d) Gerador de Aplicações Configurável Captor: é um software gerado
para ser um gerador configurável por linguagens de padrões e
linguagens de modelagem, pode ser configurado para vários
domínios e fornece apoio no desenvolvimento de aplicações em um
mesmo domínio. A configuração da aplicação é realizada por
especificações em formulários ou pela criação de linguagens de
modelagem baseadas em formulários, representando assim os
elementos gráficos das interfaces. O Captor oferece apoio na criação
de gabaritos com zona de segurança pré e pós processamento dos
artefatos
gerados,
mecanismos
de
depuração
de
erros
na
especificação. Para a utilização do Captor, deve ser criado um
54
projeto representando o conjunto de arquivos com as informações do
domínio, assim o captor poderá realizar o gerenciamento dos
projetos, ou seja, criação, salvamento, fechamento, abertura e
remoção (JUNIOR, 2006). A Figura 23 ilustra a utilização do Captor
para a geração de um arquivo de configuração e a Figura 24 ilustra o
Captor sendo utilizado para armazenar o modelo de uma aplicação.
Fonte: Junior, 2006, p. 78
Figura 23. Interface de Geração de Arquivo de Configuração - Captor.
Fonte: Junior, 2006, p. 105
Figura 24. Interface de Armazenamento do Modelo da Aplicação - Captor.
55
3.2 Documentos de Requisitos
Visão Geral do Sistema
O Gerador de Artefatos de Software para Aplicações Web deve, a partir
das tabelas existentes em um banco de dados de um sistema completo, criar
as classes Java Beans da aplicação, as classes Java DAO para manipulação
dos dados armazenados em um banco de dados; os controladores da
aplicação (Servlet), os scripts SQL de criação e manipulação do banco de
dados e as interfaces HTML e JSP para a aplicação. O objetivo principal desse
gerador é diminuir as tarefas repetitivas de copiar, colar e alterar, existentes
durante o processo de desenvolvimento de software.
Requisitos Funcionais
a) O gerador deve ser capaz de permitir ao desenvolvedor acessar os
esquemas cadastrados em seu banco de dados por url, nome de usuário e
senha que são inseridos no código fonte do gerador;
b) O gerador deve ser capaz de permitir ao desenvolvedor escolher o
esquema de banco de dados que se pretende gerar o novo artefato;
c) Um esquema pode possuir uma ou mais tabelas;
d) O gerador deve ser capaz de identificar individualmente cada tabela com os
seus respectivos atributos, chaves primárias e chaves estrangeiras exibindo
essas informações ao usuário desenvolvedor;
e) O gerador deverá ter módulos distintos para a criação de artefatos de
software que são:
i. scripts no padrão SQL DDL (script de criação de tabelas);
ii. scripts no padrão SQL DML (scripts para a manipulação dos dados
das tabelas);
iii. as classes JavaBeans;
iv. as classes JavaDAO;
v. os controladores da aplicação (Servlets Java);
vi. as interfaces HTML/JSP.
56
f) Todos os artefatos gerados através dos templates devem ser criados em
arquivos distintos no Sistema Operacional.
Requisitos Não Funcionais
a) O gerador deve utilizar a plataforma web, sem a necessidade de ser
instalado na máquina do cliente;
b) O banco de dados utilizado pelo gerador de artefatos será o Oracle.
57
4 ANÁLISE ORIENTADA A OBJETOS
4.1 Diagrama de Classes – Completo
Fonte: Elaborado pelos Autores, 2009.
Figura 25. Diagrama de Classes e Objetos.
4.2 Justificativa para Implementação
No presente trabalho são implementados apenas as funções de criação
dos artefatos SQL, Bean e HTML. As demais funcionalidades de criação do
58
gerador como: gerarDML, gerarServlets, gerarWebXML, gerarDAO, gerarJSP,
gerarJS, gerarCSS e gerarAjax podem ser implementadas em trabalhos
futuros.
4.3 Lista de Casos de Uso
Objetivo
Gerar Artefatos:
a) Permitir acesso ao gerador por conexão no banco de dados
b) Selecionar o esquema do banco
c) Selecionar tabelas do esquema escolhido
d) Gerar artefatos
e) Exibir artefatos gerados
Descrição
Evento
Use Case
Resposta
Usuário solicita gerar
artefato e realizar conexão
com o banco de dados, em
seguida informa os dados
para a criação do artefato,
escolhe o esquema
desejado, seleciona tabela,
escolhe o tipo de artefato a
ser gerado e gera o artefato.
dadosArtefato
gerarArtefato
MSG
exibirArtefato
Fonte: Elaborado pelos autores, 2009.
Quadro 2. Lista de Use Case.
4.4 Diagrama de Casos de Uso
O diagrama de caso de uso deste gerador de artefatos representa as
seguintes ações:
a) conexão com Banco de Dados;
b) seleção de Esquema;
c) seleção de Tabelas;
d) gerar Artefatos.
59
Fonte: Elaborado pelos Autores, 2009.
Figura 26. Diagrama de Use Case – Gerar Artefatos.
Use Case: Gerar Artefato
Ator: Usuário
Descrição: Este use case é referente à geração dos artefatos SQL, Bean
e/ou HTML.
Curso Normal:
1. Usuário deseja utilizar gerador e gerador se conecta ao banco de dados
do usuário.
2. Após efetuar a conexão, o gerador exibe os esquemas cadastrados no
banco de dados e o usuário escolhe o esquema que deseja utilizar.
3. O sistema exibe para o usuário as tabelas existentes no esquema
escolhido.
4. Em seguida o usuário deverá selecionar qual a tabela do esquema ele
deseja gerar os respectivos artefatos.
5. Depois de escolher a tabela o usuário deverá informar qual tipo de
artefato ele deseja gerar: SQL, Bean e/ou HTML.
6. O gerador verifica todas as informações selecionadas pelo usuário e
gera os artefatos em arquivos distintos.
7. O sistema emite uma mensagem de confirmação de criação dos
artefatos, e exibe os artefatos gerados (MSG exibirArtefato).
Curso Alternativo:
6.1 – Caso não consiga gerar o artefato com os dados selecionados, o
gerador apresenta uma mensagem de erro.
6.2 – Caso ocorra algum erro durante a geração de um artefato o
gerador reinicia o processo de geração.
Fonte: Elaborado pelos Autores, 2009.
Quadro 3. Caso de Uso – Gerar Artefatos.
60
4.5 Diagrama de Classes a ser Implementado
Fonte: Elaborado pelos Autores, 2009.
Figura 27. Diagrama de Classes a ser implementado.
61
5 PROJETO DE BANCO DE DADOS
O gerador de artefatos não possui um sistema de banco de dados
próprio, ele utiliza o banco de dados do usuário para a realização de suas
funcionalidades, isso permite que o gerador se adéque as características do
banco de dados dos diversos usuários possíveis para sua utilização e geração
dos artefatos. O gerador cria seus artefatos de acordo com os esquemas
disponíveis no banco de dados do usuário, sendo que o banco de dados já
possui seus esquemas próprios e outros esquemas podem ser adicionados,
alterados ou excluídos. Para estudo de caso das funcionalidades do gerador de
artefatos foram cadastrados três esquemas no banco de dados: Oficina
Eletrônica, Help Desk e Venda Web. O sistema de Oficina Eletrônica descrito
abaixo foi um dos esquemas utilizados para estudo de caso do gerador de
artefatos, esse esquema demonstra as funcionalidades e utilização da
ferramenta.
5.1 Descrição do Sistema de Oficina Eletrônica
A Oficina Eletrônica Apolo efetua consertos em eletrônicos de diversos
tipos, como televisores, DVD, fornos de microondas, etc. Possui técnicos
eletrônicos que recebem comissão referente aos consertos efetuados. O
aparelho chega, é cadastrado, juntamente como o proprietário, e atribuído a um
técnico. O cliente recebe um comprovante de entrada do aparelho. Quando o
técnico termina o serviço, preenche os serviços executados e peças trocadas e
avisa-se o cliente para vir buscar o aparelho. O pagamento é somente à vista
(dinheiro ou cheque). Semanalmente deve ser impresso relatório contendo
todos os aparelhos que ainda não foram consertados. Os técnicos recebem
percentuais de comissão sobre o serviço de mão-de-obra executado, conforme
acordo com o proprietário da oficina. Pode haver diferenciação entre os
percentuais dos diversos funcionários, conforme a experiência e especialidade
de cada um. Além disso, possuem um salário fixo mensal. O sistema deve
emitir um relatório quinzenal dos serviços realizados por cada funcionário,
juntamente com o subtotal que eles devem receber de comissão.
62
Fonte: Elaborado pelos Autores, 2010.
Figura 28. Diagrama de Classes para a Oficina Eletrônica.
5.2 Tabelas
Tabela: Conserto de Aparelho
Chave-Primária (PK): código
Chave-Estrangeira (FK): codigoCliente (Cliente.codigo), numeroAparelho
(Aparelho.numero)
Nome do Campo
Tipo de Dado
Tamanho
Permite Nulo?
Numero
6
Não
data entrada
Data
8
Não
data saída
Data
8
Sim
defeitos apresentados
Texto
50
Não
peças trocas
Texto
50
Sim
serviços executados
Texto
50
Sim
codigoCliente
Numero
6
Não
numeroAparelho
Numero
6
Não
codigo
Fonte: Elaborado pelos Autores, 2010.
Quadro 4. Estrutura da Tabela Conserto de Aparelho.
63
Tabela: Execução de Conserto
Chave-Primária (PK): codigoConserto
Chave-Estrangeira (FK): codigoTecnico (Tecnico.codigo), numrroAparelho
(Aparelho.numero)
Nome do Campo
Tipo de Dado
Tamanho
Permite Nulo?
Numero
6
Não
Texto
50
Não
códigoTecnico
Numero
6
Não
numeroAparelho
Numero
6
Não
codigoConserto
descrição
Fonte: Elaborado pelos Autores, 2010.
Quadro 5. Estrutura da Tabela Execução de Conserto.
Tabela: Cliente
Chave-Primária (PK): código
Nome do Campo
Tipo de Dado
Tamanho
Permite Nulo?
código
Numero
6
Não
nome
Texto
30
Não
endereço
Texto
45
Não
telefone
Texto
12
Não
email
Texto
40
Não
cidade
Texto
25
Não
Fonte: Elaborado pelos Autores, 2010.
Quadro 6. Estrutura da Tabela Cliente.
Tabela: Aparelho
Chave-Primária (PK): numero
Chave-Estrangeira (FK): codigoTipoAparelho (TipoAparelho.codigo)
Nome do Campo
Tipo de Dado
Tamanho
Permite Nulo?
numero
Numero
6
Não
modelo
Texto
15
Não
situação
Texto
50
Não
fabricante
Texto
25
Não
Numero
6
Não
códigoTipoAparelho
Fonte: Elaborado pelos Autores, 2010.
Quadro 7. Estrutura da Tabela Aparelho.
64
Tabela: Tipo de Aparelho
Chave-Primária (PK): código
Nome do Campo
Tipo de Dado
Tamanho
Permite Nulo?
Numero
6
Não
Texto
50
Não
Tipo de Dado
Tamanho
Permite Nulo?
código
Numero
6
Não
nome
Texto
30
Não
percentualComissão
Numero
5,2
Sim
salário
Numero
10
Não
Texto
15
Não
código
descrição
Fonte: Elaborado pelos Autores, 2010.
Quadro 8. Estrutura da Tabela Tipo de Aparelho.
Tabela: Técnico
Chave-Primária (PK): código
Nome do Campo
especialidade
Fonte: Elaborado pelos Autores, 2010.
Quadro 9. Estrutura da Tabela Técnico.
Outras Regras de Validação de Campo:
Nome do Campo:
Restrição:
salário
Valor tem que ser maior que 0
percentualComissão
Valor tem que ser maior que 0
Fonte: Elaborado pelos Autores, 2010.
Quadro 10. Regras de Validação da Tabela de Técnico.
Tabela: Comissão
Chave-Primária (PK): código
Chave-Estrangeira (FK): codigoTecnico (Tecnico.codigo)
Nome do Campo
Tipo de Dado
Tamanho
Permite Nulo?
códigoComissao
Numero
6
Não
data pagamento
Data
8
Sim
valor
Numero
10
Sim
códigoTécnico
Numero
6
Não
Fonte: Elaborado pelos Autores, 2010.
Quadro 11. Estrutura da Tabela Comissão.
65
Outras Regras de Validação de Campo:
Nome do Campo:
Restrição:
valor
Valor tem que ser maior que 0
Fonte: Elaborado pelos Autores, 2010.
Quadro 12. Regras de Validação da Tabela Comissão.
66
6 PROJETO ORIENTADO A OBJETOS
6.1 Diagrama de Sequência
Fonte: Elaborado pelos Autores, 2010.
Figura 29. Diagrama de Sequência – Gerar Artefato.
67
7 IMPLEMENTAÇÃO DO GERADOR DE ARTEFATOS
Para melhor entender o gerador de artefatos proposto 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 30. Utilização de templates durante a geração dos artefatos.
A Figura 30 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 seu modelo 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.
68
A Figura 31 apresenta um artefato que é um script de criação de tabela
utilizando SQL, sendo que os itens em negrito representam as partes fixas do
template. A Figura 32 apresenta o template definindo esses scripts, sendo que
as partes fixas estão definidas de acordo com a identificação na Figura 31 e as
partes variáveis são colocadas entre tags.
CREATE TABLE OFICINA.CLIENTES (
CODIGO NUMBER (6),
NOME VARCHAR2 (40),
ENDERECO VARCHAR2 (45),
TELEFONE VARCHAR2 (12),
EMAIL VARCHAR2 (40),
CIDADE VARCHAR2 (45)
);
Fonte: Elaborado pelos Autores, 2010.
Figura 31. Conjunto de scripts de criação de tabelas utilizando SQL.
CREATE TABLE <ESQUEMA>.<NOME_TABELA> (
<ATRIBUTO> <TIPO> (<TAMANHO>)
);
Fonte: Elaborado pelos Autores, 2010.
Figura 32. Template definido para scripts de criação das tabelas SQL.
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 33 exibe o código Java do template da construção dos artefatos
de scripts SQL, onde a classe executa um comando SQL de seleção utilizando
o nome do esquema e nome da tabela selecionada pelo usuário, para obter os
dados da tabela desejada. Os atributos das tabelas para serem utilizados pelo
template do gerador são armazenados em uma lista de objetos, com seus
nomes, tipos e tamanhos, pois esses atributos são recuperados através de um
laço e são chamados através de variáveis encaixadas no código do template
formando o artefato completo.
69
//template para gerar o script SQL da tabela escolhida
public void getScriptSQL(String tabela, String esquema) throws
IOException{
FileWriter saida = null;
try {
File dir = new
File("c:/"+padrao.fCase(esquema)+"."+padrao.fCase(tabela));
if (!dir.exists()){
dir.mkdir();
}
File arquivo = new File(dir,padrao.fCase(tabela)+ "(sql).sql");
// criando file se ele não existir file.createNewFile();
conexao = ConexaoDB.getInstance().getConnection();
statement = conexao.createStatement(ResultSet.TYPE_SCROLL_
INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
resultados = statement.executeQuery("select * from
"+esquema+"."+tabela);
metaTabela = resultados.getMetaData();
String virgula="";
saida = new FileWriter(arquivo,true);
saida.write("\nCREATE TABLE "+esquema+"."+tabela +" (");
for(int i=1; i <=metaTabela.getColumnCount(); i++){
saida.write(virgula+"\n\t"+metaTabela.getColumnName(i) + " " +
metaTabela.getColumnTypeName(i) + "(" +
metaTabela.getColumnDisplaySize(i)+ ")");
virgula=",";
}
saida.write(");");
saida.close();
statement.close();
} catch (IOException e) {
System.out.print(e.getMessage());
} catch (SQLException excecao){
JOptionPane.showMessageDialog( null,
excecao.getMessage(),"Erro de SQL",
JOptionPane.ERROR_MESSAGE );
} catch (Exception e) {
System.out.print(e.getMessage());
} finally {
try {
if (resultados != null)
resultados.close();
if (statement != null)
statement.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog( null,
e.getMessage(),"Erro de SQL",
JOptionPane.ERROR_MESSAGE );
}
}
}
Fonte: Elaborado pelos Autores, 2010.
Figura 33. Template para construção de scripts de tabelas SQL.
A Figura 34 ilustra o esquema completo de funcionamento do gerador de
artefatos e os artefatos SQL, Bean e HTML gerados por ele.
70
...
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 34. Funcionamento do gerador e os artefatos por ele gerados.
O gerador cria seus artefatos em arquivos distintos do sistema
operacional do usuário e esses artefatos são gerados em um diretório padrão
71
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.
7.1 Layout de Telas
Nesta seção são apresentadas as telas que compõem o layout do
sistema e uma explicação sobre suas funcionalidades.
6.2.1 Tela Inicial do Sistema
A Figura 35 representa a tela inicial do sistema, sendo possível a
visualização dos ícones e do menu de navegação.
Fonte: Elaborado pelos Autores, 2010.
Figura 35. Tela Inicial do Gerador.
6.2.2 Tela de Gerar Artefatos
A Figura 36 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 o esquema do
72
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 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. Os artefatos serão criados
em uma pasta no diretório que estiver definido no código fonte da aplicação.
Fonte: Elaborado pelos Autores, 2010.
Figura 36. Tela de Gerar Artefatos.
7.2 Artefatos Gerados
Nesta seção são apresentados os artefatos gerados pelo AlphaWEB. Os
artefatos são gerados de acordo com os templates definidos no gerador, esses
artefatos são criados através da utilização do esquema de estudo de caso da
Oficina Eletrônica. Os artefatos SQL, Bean e HTML gerados são referentes à
tabela de Comissão e todos seus atributos.
73
Os demais artefatos gerados pelo AlphaWEB referentes aos esquemas
de estudo de caso de Help Desk e Venda Web não são apresentados pois têm
a mesma estrutura dos artefatos apresentados, mudando apenas seu conteúdo
variável de acordo com o template.
CREATE TABLE OFICINA.COMISSAO (
CODIGO NUMBER(22),
DATAPAGAMENTO DATE(7),
VALOR NUMBER(22)
);
Fonte: Elaborado pelos Autores, 2010.
Figura 37. 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 38. Artefato Bean da Tabela Comissão.
74
<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 39. Artefato HTML da Tabela Comissão.
75
CONCLUSÃO
A proposta deste trabalho é desenvolver um gerador de artefatos para
aplicações, tendo como principal objetivo automatizar e acelerar o processo de
desenvolvimento de software, oferecendo aos desenvolvedores benefícios
como o ganho de produtividade e diminuição das atividades repetitivas durante
o desenvolvimento ou atualização de uma nova versão de uma aplicaçã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 (especificações) que são 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, DAO e
HTML/JSP. Inicialmente o gerador funciona apenas para o banco de dados
Oracle.
O AlphaWEB não teve todas as suas funcionalidades implementadas,
sendo assim, as demais funcionalidade poderão ser desenvolvidas em
trabalhos futuros. O objetivo que se pretendia alcançar com esse trabalho era o
de gerar alguns artefatos para uma aplicação.
Como proposta para trabalhos futuros, o gerador poderá receber
atualizações de sua recente versão, tendo como objetivo adaptar o sistema às
necessidades
dos
usuários.
As
seguintes
atualizações
poderão
ser
implementadas no gerador a fim de melhorar a forma de criação dos artefatos,
permitindo a criação de mais tipos de artefatos como:
a) criação da documentação da aplicação e dos artefatos gerados;
b) permissão ao usuário para adicionar, alterar ou remover atributos dos
artefatos sempre que necessário;
c) realização das alterações necessárias para o gerador funcionar com
outros bancos de dados;
76
d) implementar ao gerador as funcionalidades para gerar outros
artefatos para as aplicações como: gerar os scripts DML para
manipulação dos dados das tabelas, gerar as classes Java DAO para
manipulação da aplicação com banco de dados, gerar os Servlets e o
web.xml, os controladores da aplicação, gerar as páginas JSP de
interação com o usuário, gerar as funções de Ajax e JS (Java Script)
e os modelos de formatação CSS para as páginas HTML e JSP.
Com o desenvolvimento desse sistema, concluiu-se que a utilização de
um gerador de artefatos pode auxiliar durante 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 e qualidade, já que os artefatos gerados
já foram previamente testados em outras aplicações.
77
REFERÊNCIAS
APACHE. Javax.sql: Extensões JDBC, Brasil, [s.d.]. Disponível em:
<http://db.apache.org/derby/docs/dev/pt_BR/ref/rrefjta18596.html>. Acesso em:
12 fev. 2010.
APACHE TOMCAT. Apache Tomcat, Brasil, 03 fev. 2010. Disponível em:
<http://pt.wikipedia.org/wiki/Apache_Tomcat)>. Acesso em: 07 fev. 2010.
API.
API,
Brasil,
30
ago.
2009.
Disponível
<http://pt.wikipedia.org/wiki/API)>. Acesso em: 31 ago. 2009.
em:
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.
BEZERRA, E. Princípios de Análise e Projetos de Sistemas com UML. 2.ed.
Rio de Janeiro: Campus, 2007.
BODOFF, S.; et al. Tutorial do J2EE. Tradução Cláudio Rodrigues Pistilli Rio
Janeiro: Editora Ciência Moderna, 2005.
CLEAVELAND, J. C. Program generators with XML and Java. Prentice Hall,
2001.
CRANE, D; PASCARELLO, E; JAMES, D. Ajax em Ação, São Paulo: Pearson
Prentice Hall, 2007.
CZARNECKI, K.; EISENERCKER. U.W. Generative Programming: Methods,
Tools, and Applications. Ed. Addison-Wesley, 2000.
DATE, C. J. Introdução a Sistemas de Banco de Dados. 8. ed. Rio de
Janeiro: Campus/Elsevier, 2004.
DEITEL, H.M.; DEITEL, P.J. Java: como programar. 6. ed. São Paulo: Pearson
Prentice Hall, 2005.
DEITEL, H.M.; DEITEL, P.J. Ajax, Rich Internet Applications e
desenvolvimento Web para programadores. São Paulo: Pearson Prentice
Hall, 2008.
ELMASRI, R; NAVATHE, S. B. Sistemas de Banco de Dados. 4. ed. São
Paulo: Pearson Addison Wesley, 2005.
FOWLER, M. UML essencial: um breve guia para a linguagem-padrão de
modelagem de objetos. 3. ed. Porto Alegre: Bookman, 2005.
78
GAS Tecnologia. GAS2007 - Gerador Automático de Sistemas. Brasil, [s.d.].
Disponível em: <http://www.gastecnologia.com.br/site/pt/GAS.aspx>. Acesso
em: 10 nov. 2009.
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.
GONÇALVES, E. Dominando Ajax: as melhores práticas ligadas a aplicações
Web escritas em Java como em PHP 5 utilizando Ajax. Rio de Janeiro: Ciência
Moderna, 2006.
JAVA
FREE.
RowSet,
Brasil,
[s.d.].
Disponível
<http://javafree.uol.com.br/index.jf>. Acesso em: 08 fev. 2010.
em:
JAVA. Java: Linguagem de Programação, Brasil, 19 ago. 2009. Disponível em:
<http://pt.wikipedia.org/wiki/Java_(linguagem_de_programa%C3%A7%C3%A3
o)>. Acesso em: 28 ago. 2009.
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.
JDBC.
JDBC,
Brasil,
15
set.
2009.
Disponível
http://pt.wikipedia.org/wiki/JDBC)>. Acesso em: 02 out. 2009.
em:
<
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.
MACORATTI, J. C. O Processo de Software, Brasil, [s.d.]. Disponível em: <
http://www.macoratti.net/proc_sw1.htm>. Acesso em: 06 jun. 2010.
MARCANDALI, A. Analisando metadados com JDBC. GUJ, [s.l.], 11 nov. 2002.
Disponível em:<http://www.guj.com.br/article.show.logic?id=24> Acesso em: 22
out. 2009.
METADADOS. Metadados, Brasil, 12 out. 2009. Disponível
<http://pt.wikipedia.org/wiki/Metadados)>. Acesso em: 22 out. 2009.
em:
MUKHI, V.; MUKHI, S.; KOTECHA, N. Java Servlets JSP. São Paulo: Makron
Books, 2002.
ORACLE. A história do Oracle: Inovação, Liderança e Resultados, Brasil,
[s.d.]. Disponível em: <http://www.oracle.com/global/br/corporate/story.html>.
Acesso em: 20 out. 2009.
ORACLE.
ORACLE,
Brasil,
08
out.
2009.
Disponível
<http://pt.wikipedia.org/wiki/Oracle>. Acesso em: 12 out. 2009.
em:
79
OLSON, S. D. Ajax com Java: Os fundamentos da programação de
XMLHttpRequest e de XML com Java, Rio de Janeiro: Alta Books, 2007.
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.
PENDER, T. UML: A Bíblia. Rio de Janeiro: Elsevier, 2004.
PUC-RIO.
Projeto
Draco-PUC,
Brasil,
[s.d.].
Disponível
<http://www.inf.puc-rio.br/~draco/>. Acesso em: 11 nov. 2009.
em:
RAMALHO, J. A. Oracle 10g. São Paulo: Thonsom, 2005.
SAWAYA, M. R. Dicionário de Informática e Internet: inglês/português. 3. ed.
São Paulo: Nobel, 2005.
SERVLET.
Servlet,
Brasil,
31
ago.
2009.
Disponível
<http://pt.wikipedia.org/wiki/Servlet)>. Acesso em: 03 set. 2009.
em:
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.
SUN MICROSYSTEMS. O que é o GlassFish, Brasil, [s.d.]. Disponível em:
<http://br.sun.com/practice/software/glassfish/index.jsp>. Acesso em: 07 fev.
2010.
TEMPLATE.
Template,
Brasil, 02 mar.
2010.
Disponível
<http://pt.wikipedia.org/wiki/Templates>. Acesso em: 10 mai. 2010.
em:
WAZLAWICK, R. S. Análise e Projeto de Sistemas de Informação
Orientadas a Objetos. Rio de Janeiro: Elsevier, 2004.
WIKI SINTECTUS. Introdução ao JDBC, Brasil, [s.d]. Disponível em:
<http://wiki.sintectus.com/bin/view/GrupoJava/LicaoIntroducaoAoJDBC)>.
Acesso em: 08 fev. 2010.
80
GLOSSÁRIO
Termo
Descrição
As API’s contêm um conjunto de rotinas e padrões
estabelecidos por um software para a utilização de suas
API
funcionalidades por programas e aplicativos. Essas funções
são acessíveis somente por programação, permitindo
utilizar características do software menos evidentes ao
usuário tradicional (API, 2009).
Coleção de componentes organizada para realizar funções
Aplicação
interdependentes, visando apoiar atividades de um ou mais
usuários.
Qualquer item criado como parte da definição, manutenção
ou utilização de um processo de software. Inclui entre
descrições de processo, especificações, procedimentos,
Artefato
planos, código, projeto de arquitetura, projeto detalhado,
componente, módulo, aplicação, documentação para o
usuário. Artefatos podem ou não ser entregues a um cliente
ou usuário final.
É uma estrutura que abstrai um conjunto de objetos com
características similares ou iguais, define o comportamento
Classe
de seus objetos através de métodos e os estados possíveis
desses objetos através de atributos. Em outros termos uma
classe descreve os serviços providos por seus objetos e
quais informações ele podem armazenar.
DataSource é um parâmetro onde será especificado o
caminho lógico do banco de dados, representa dados em
DataSource
um banco de dados relacional do SQL para controles
ligados a dados, é utilizado para exibir, editar e classificar
dados em uma página da Web com pouco ou nenhum
código (APACHE, 2010).
81
Desktop (área de trabalho), é uma expressão utilizada para
computadores de mesa. Uma área de trabalho consiste de
um ambiente gráfico adequado ao usuário, onde ele possa
Desktop
abrir janelas de programas e efetuar operações básicas, há
ambientes gráficos que permitem o usuário ter mais de uma
área de trabalho permitindo a distribuição e organização
das janelas abertas.
Uma área de aplicação. São exemplos: pilhas, árvores,
Domínio
fluxo de caixa, planejamento e acompanhamento de
projetos, controle de um determinado processo químico,
gestão acadêmica, edição de diagramas, etc.
DriverManager é uma classe que cria e gerencia o
estabelecimento das conexões e faz gerenciamento dos
DriverManager
drivers JDBC, tem como responsabilidade manter uma lista
de
implementações
do
driver
e
apresentar
as
implementações a aplicação (WIKI SINTECTUS, 2010).
Qualquer solução incompleta que pode ser completada
Framework
através da instanciação e, desta forma, possibilitando a
geração de mais de uma aplicação dentro do domínio-alvo
do framework.
Gerador de
Uma ferramenta que produz um artefato completo e pronto
Artefatos
para o uso a partir de sua especificação.
GlassFish é um servidor de aplicações Java EE de código
aberto e de nível corporativo que oferece clusterização
GlassFish
avançada,
administração
centralizada
desempenho,
confiabilidade, produtividade e facilidade de uso superior de
servidores de aplicações proprietários (SUN, 2010).
É uma linguagem de programação ou de especificação
dedicada a um domínio de problema particular. O conceito
Linguagem de
não é novo, linguagens de programação de propósito
Domínio
especial, os tipos de linguagem de modelagem sempre
existiram, mas o termo se tornou mais popular devido à
ascensão da modelagem de domínio específico.
82
É uma pratica de análise e programação que agregam
OO (Orientado a
Objeto)
técnica de armazenamento, um conjunto de dados e suas
rotinas a um objeto que faz parte de uma determinada
classe de objetos, sendo que, na programação, cada objeto
é tratado como se fosse uma unidade autônoma.
O processo de software pode ser definido como um
conjunto de atividades uniformizadas a serem aplicadas
sistematicamente que se encontram agrupadas em fases,
cada uma das quais com os seus intervenientes com
Processo de
responsabilidades, que possui diversas entradas e produz
Software
diversas saídas. Isto é, define quem faz o quê, quando e
como para atingir um certo objetivo. Pode-se considerar, que
de uma forma geral o processo de software pode ser visto como
um conjunto de padrões voltados para a construção de um
produto de software (MACORATTI, 2010).
RowSet é uma interface que configura a conexão com o
banco de dados e executa as consultas automaticamente,
RowSet
oferece métodos ao programador para especificar as
propriedades
conexão,
há
necessárias
dois
para
tipos
de
se
estabelecer
Rowset
uma
conectado
e
desconectado (JAVA FREE, 2010).
Programa que fornece algum tipo de serviço para outro
programa, na internet ou em outras redes, um computador
ou programa que responde a comandos provenientes de
Servidor
um cliente. Por exemplo, um servidor de arquivos pode
conter um arquivo de dados ou de programas, quando um
cliente solicita um arquivo, o servidor transfere uma cópia
do arquivo para o cliente.
Conjunto de programas que executam tarefas que fazem
Sistema
parte de uma tarefa global. Um sistema pode ser composto
dos seguintes programas: compra e venda, atualização,
controle, gerenciamento e etc.
83
Todo e qualquer conjunto de instruções executadas no
computador. Um software pode ser um programa, um
Software
sistema, uma
rotina,
um
sistema operacional,
uma
linguagem, um aplicativo, uma aplicação ou qualquer outro
conjunto de instruções, independente da função, tamanho,
forma, linguagem ou de qualquer outra característica.
Tomcat é um servidor web Java, que inclui ferramentas de
configurações
Tomcat
e
gerenciamento,
e
cobre
parte
da
especificação J2EE com tecnologias como Java Servlets,
Java Server Pages e tecnologias de apoio relacioandas a
segurança (APACHE TOMCAT, 2010).
É um sistema de páginas e documentos em hipermídia que
Web
são interligadas e executadas na internet, para visualização
e navegação do conteúdo dessas paginas na web utiliza-se
um navegador de internet.
Fonte: Elaborado pelos autores, 2010.
Quadro 13. Termos utilizados no trabalho.
84
APÊNDICES
85
APÊNDICE A – SCRIPTS SQL DE CRIAÇÃO DO ESQUEMA DA OFICINA
ELETRÔNICA NO BANCO DE DADOS
Para a utilização do gerador e criação dos artefatos foram criados
esquemas no banco de dados do usuário, além dos esquemas padrões do
banco para estudos de caso do gerador. Abaixo estão os scripts de criação do
esquema de estudo de caso da Oficina Eletrônica.
CREATE USER OFICINA PROFILE "DEFAULT"
IDENTIFIED BY "oficina" DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK;
GRANT "CONNECT" TO "OFICINA";
GRANT "DBA" TO "OFICINA";
CREATE TABLE OFICINA.CLIENTES (
CODIGO NUMBER (6),
NOME VARCHAR2 (40),
ENDERECO VARCHAR2 (45),
TELEFONE VARCHAR2 (12),
EMAIL VARCHAR2 (40),
CIDADE VARCHAR2 (45),
CONSTRAINT PK_CLIENTES PRIMARY KEY (CODIGO)
);
CREATE TABLE OFICINA.TIPOAPARELHO (
CODIGO NUMBER (6),
DESCRICAO VARCHAR2 (50),
CONSTRAINT PK_TIPOAPARELHO PRIMARY KEY (CODIGO)
);
CREATE TABLE OFICINA.APARELHO (
NUMERO NUMBER (6),
MODELO VARCHAR2 (15),
SITUACAO VARCHAR2 (50),
FABRICANTE VARCHAR2 (25),
CODIGO NUMBER(6),
CONSTRAINT PK_APARELHO PRIMARY KEY (NUMERO),
CONSTRAINT FK_OFICINA_TIPOAPARELHO FOREIGN KEY (CODIGO)
REFERENCES OFICINA.TIPOAPARELHO (CODIGO)
);
CREATE TABLE OFICINA.TECNICO (
CODIGO NUMBER (6),
NOME VARCHAR2 (40),
86
PERCCOMISSAO NUMBER (5),
SALARIO NUMBER (10),
ESPECIALIDADE VARCHAR2 (15),
CONSTRAINT PK_TECNICO PRIMARY KEY (CODIGO),
CONSTRAINT SALARIO_CK CHECK (SALARIO in ('>0')),
CONSTRAINT PERCCOMISSAO_CK CHECK (PERCCOMISSAO in ('>0'))
);
CREATE TABLE OFICINA.COMISSAO (
CODIGO NUMBER (6),
DATAPAGAMENTO DATE,
VALOR NUMBER (10),
CONSTRAINT PK_COMISSAO PRIMARY KEY (CODIGO),
CONSTRAINT FK_OFICINA_TECNICO FOREIGN KEY (CODIGO)
REFERENCES OFICINA.TECNICO (CODIGO),
CONSTRAINT VALOR_CK CHECK (VALOR in ('>0'))
);
CREATE TABLE OFICINA.CONSERTOAPARELHO (
CODIGO NUMBER (6),
DATAENTRADA DATE,
DATASAIDA DATE,
DEFEITOSAPRESENTADOS VARCHAR2 (50),
PECASTROCAS VARCHAR2 (50),
SERVICOSEXECUTADOS VARCHAR2(50),
CODIGOCLIENTE NUMBER (6),
NUMEROAPARELHO NUMBER (6),
CONSTRAINT PK_CONSERTODEAPARELHO PRIMARY KEY (CODIGO),
CONSTRAINT FK_OFICINA_CLIENTES FOREIGN KEY (CODIGOCLIENTE)
REFERENCES OFICINA.CLIENTES (CODIGO),
CONSTRAINT FK_OFICINA_APARELHO FOREIGN KEY
(NUMEROAPARELHO)
REFERENCES OFICINA.APARELHO (NUMERO)
);
CREATE TABLE OFICINA.EXECUCAOCONSERTO (
CODIGOTECNICO NUMBER (6),
CODIGOCONSERTO NUMBER (6),
CONSTRAINT FK_OFICINA_TECNICO_CONSERTO FOREIGN KEY
(CODIGOTECNICO)
REFERENCES OFICINA.TECNICO (CODIGO),
CONSTRAINT FK_OFICINA_CONSERTOAPARELHO FOREIGN KEY
(CODIGOCONSERTO)
REFERENCES OFICINA.CONSERTOAPARELHO (CODIGO)
);
87
APÊNDICE B – TEMPLATES DE CRIAÇÃO DOS ARTEFATOS
Para a criação dos artefatos foram utilizados três modelos de templates,
sendo que cada template gera um tipo de artefato, sendo SQL, Bean e HTML.
O template de criação dos artefatos com os scripts SQL já foi explicado e
exemplificado no desenvolvimento do trabalho. Abaixo estão os modelos dos
templates criados para as classes Java Beans e das páginas HTML do gerador
de artefatos.
Os templates para classes Beans e páginas HTML seguem o mesmo
padrão do template para scripts SQL. Os templates contêm as partes fixas que
estão destacadas em negrito e as partes variáveis que estão entre tags.
A seguir têm se o template criado para as classes Beans do gerador.
public class Esquema {
private String nome;
public Esquema ( ){ }
public String getNome ( ) {
return nome;
}
public void setNome (String nome) {
this.nome = nome;
}
}
Fonte: Elaborado pelos Autores, 2010.
Figura 40. Conjunto de scripts de criação das classes Beans.
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 41. Template definido para criação das classes Beans.
88
//template para gerar o script Java Bean da tabela escolhida
public void getScriptBean(Atributos atributos, String esquema,
String tabela) throws IOException{
String espaco = " ";
String esq = esquema;
String tab = tabela;
FileWriter saida =null;
//criando arquivo
File dir = new
File("c:/"+padrao.fCase(esq)+"."+padrao.fCase(tab));
if (!dir.exists()){
dir.mkdir();
}
File arquivo = new File(dir, padrao.fCase(tab)+"(java).java");
saida = new FileWriter(arquivo,true);
AtributosDAO atr = new AtributosDAO();
List<Atributos>lista = atr.getListaAtributos(esq, tab);
saida.write("public class "+padrao.fCase(tab)+" {\n");
//atributos
for (Atributos atrs : lista) {
saida.write("\n"+espaco+"private "+atrs.getTipoDado()+"
"+atrs.getNome()+";");
}
//construtor
saida.write("\n\n"+espaco+"public "+padrao.fCase(tab)
+"(){}\n");
//getters and setter
for (Atributos atrs : lista) {
saida.write("\n\n"+espaco+"public "+atrs.getTipoDado()+"
get"+padrao.fCase(atrs.getNome())+"(){");
saida.write("\n"+espaco+"
"+"return "+atrs.getNome()
+";\n"+espaco+"}");
saida.write("\n\n"+espaco+"public void set"+padrao. fCase
(atrs.getNome())+"("+atrs.getTipoDado()+"
"+atrs.getNome()+"){");
saida.write("\n"+espaco+"
"+"this."+atrs.getNome()+" =
"+atrs.getNome()+";\n"+espaco+"}");
}
saida.write("\n\n}");
saida.close();
}
}
Fonte: Elaborado pelos Autores, 2010.
Figura 42. Template para construção das Beans.
89
A seguir têm se nas Figuras 43, 44 e 45 o modelo do template criado
para as páginas HTML do gerador de artefatos.
//template para gerar o script HTML da tabela escolhida
public void getScriptHTML(Atributos atributos, String esquema,
String tabela) throws IOException{
String espaco = "
";
String tab = tabela;
String esq = esquema;
String nome = atributos.getNome();
String tipo = atributos.getTipoDado();
FileWriter saida = null;
//criando arquivo
File dir = new
File("c:/"+padrao.fCase(esq)+"."+padrao.fCase(tab));
if (!dir.exists()){
dir.mkdir();
}
File arquivo = new File(dir, padrao.fCase(tab)+".html");
saida = new FileWriter(arquivo,true);
AtributosDAO atr = new AtributosDAO();
List<Atributos>lista = atr.getListaAtributos(esq, tab);
saida.write("<html>\n");
saida.write("<head>\n");
saida.write("<title> Página HTML da Tabela "+padrao.fCase
(tab)+"</title>\n");
saida.write("</head>\n");
saida.write("<body>\n");
saida.write("<form id=\"id"+padrao.fCase(tab)+"\">\n");
for (Atributos atrs : lista) {
saida.write(espaco+""+atrs.getNome()+": <input type=\"text\"
id=\""+atrs.getNome()+"\" /><br/>\n");
}
saida.write(espaco+"<input type=\"button\" value=\"Salvar\"
/>\n");
saida.write(espaco+"<input type=\"button\" value=\"Limpar\"
/>");
saida.write("</form>\n");
saida.write("</body>\n");
saida.write("</html>\n");
saida.write("<html>\n");
saida.close();
}
Fonte: Elaborado pelos Autores, 2010.
Figura 43. Template para construção das páginas HTML.
90
<html>
<head>
<title> Página HTML da Tabela TipoAparelho </title>
</head>
<body>
codigo: <input type="text" id=" codigo"/> <br/>
descricao: <input type="text" id=" descricao"/> <br/>
</body>
</html>
Fonte: Elaborado pelos Autores, 2010.
Figura 44. Conjunto de scripts de criação das páginas HTML.
<html>
<head>
<title> Página HTML da Tabela <nome da tabela> </title>
</head>
<body>
nome_atributo: <input type="text" id="<nome do atributo>"/> <br/>
</body>
</html>
Fonte: Elaborado pelos Autores, 2010.
Figura 45. Template definido para criação das páginas HTML.
Download