92
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

GERADOR DE ARTEFATOS PARA APLICAÇÕES … · Dedico ao meu grande amigo e companheiro de grupo Murillo por ... Quadro 3. Caso de Uso ... Express Edition

Embed Size (px)

Citation preview

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

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

R713g

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

Construtor

Se o JavaBean não contiver nenhum construtor declarado

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.

Persistência

O JavaBens pode implementar interfaces que possibilitem a

persistência e restauração do estado do objeto da classe, mas essa

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.

Atributos

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,

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 seus dados utilizando a API do JDBCTM. 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?

codigo 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 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?

codigoConserto Numero 6 Não

descrição Texto 50 Não

códigoTecnico Numero 6 Não

numeroAparelho Numero 6 Nã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

códigoTipoAparelho Numero 6 Não 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?

código Numero 6 Não

descrição Texto 50 Nã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 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

especialidade Texto 15 Não 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.

Fonte: Elaborado pelos Autores, 2010. Figura 31. Conjunto de scripts de criação de tabelas utilizando SQL.

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.

CREATE TABLE <ESQUEMA>.<NOME_TABELA> ( <ATRIBUTO> <TIPO> (<TAMANHO>) ) ;

CREATE TABLE OFICINA.CLIENTES ( CODIGO NUMBER (6),

NOME VARCHAR2 (40), ENDERECO VARCHAR2 (45), TELEFONE VARCHAR2 (12), EMAIL VARCHAR2 (40), CIDADE VARCHAR2 (45)

) ;

69

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.

//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 );

} } }

70

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

Gerador de classes Beans

Gerador de interfaces HTML

Gerador AlphaWEB

Templates

Recupera dados das especificações do

Gerador

Base de Dados

do Gerador

... Templates modelo = new Templates(); AtributosDAO obj = new AtributosDAO(); modelo.getScriptSQL(tabela, esquema);

modelo.getScriptHTML(obj.getAtributos ObjAtributo(esquema, tabela), esquema, tabela); modelo.getScriptBean(obj.getAtributosObjAtributo(esquema, tabela), esquema, tabela); response.getWriter().close();

...

Lê as definições Java para geração

dos artefatos

Gerador de scripts SQL

Script SQL de criação da tabela

CREATE TABLE OFICINA.TIPOAPARELHO ( CODIGO NUMBER(22), DESCRICAO VARCHAR2(50) );

Interface HTML

Classe Bean

public class TipoAparelho { private int codigo; private String descricao; public TipoAparelho(){} public int getCodigo(){ return codigo; } public void setCodigo(int codigo){ this.codigo = codigo; } public String getDescricao(){ return descricao; } public void setDescricao(String

descricao){ this.descricao = descricao; } }

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.

Fonte: Elaborado pelos Autores, 2010. Figura 37. Artefato de scripts SQL da Tabela Comissão.

Fonte: Elaborado pelos Autores, 2010. Figura 38. Artefato Bean da Tabela Comissão.

CREATE TABLE OFICINA.COMISSAO ( CODIGO NUMBER(22), DATAPAGAMENTO DATE(7),

VALOR NUMBER(22) );

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; } }

74

Fonte: Elaborado pelos Autores, 2010. Figura 39. Artefato HTML da Tabela Comissão.

<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

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 em: <http://pt.wikipedia.org/wiki/API)>. Acesso em: 31 ago. 2009. 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 em: <http://javafree.uol.com.br/index.jf>. Acesso em: 08 fev. 2010. 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%A3o)>. 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 em: < http://pt.wikipedia.org/wiki/JDBC)>. Acesso em: 02 out. 2009. JUNIOR, E. K. S. Um de Gerador de Aplicações Configurável. 2006. Dissertação (Mestrado em Ciências de Computação e Matemática Computacional) – Instituto de Ciências Matemáticas e de Computação, USP de São Carlos, São Paulo. 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 em: <http://pt.wikipedia.org/wiki/Metadados)>. Acesso em: 22 out. 2009. 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 em: <http://pt.wikipedia.org/wiki/Oracle>. Acesso em: 12 out. 2009.

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ós-Graduaçã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 em: <http://www.inf.puc-rio.br/~draco/>. Acesso em: 11 nov. 2009. 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 em: <http://pt.wikipedia.org/wiki/Servlet)>. Acesso em: 03 set. 2009. 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 em: <http://pt.wikipedia.org/wiki/Templates>. Acesso em: 10 mai. 2010. 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

API

As API’s contêm um conjunto de rotinas e padrões

estabelecidos por um software para a utilização de suas

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).

Aplicação Coleção de componentes organizada para realizar funções

interdependentes, visando apoiar atividades de um ou mais

usuários.

Artefato

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,

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.

Classe

É uma estrutura que abstrai um conjunto de objetos com

características similares ou iguais, define o comportamento

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

DataSource é um parâmetro onde será especificado o

caminho lógico do banco de dados, representa dados em

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

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

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.

Domínio

Uma área de aplicação. São exemplos: pilhas, árvores,

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

DriverManager é uma classe que cria e gerencia o

estabelecimento das conexões e faz gerenciamento dos

drivers JDBC, tem como responsabilidade manter uma lista

de implementações do driver e apresentar as

implementações a aplicação (WIKI SINTECTUS, 2010).

Framework

Qualquer solução incompleta que pode ser completada

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 Artefatos

Uma ferramenta que produz um artefato completo e pronto

para o uso a partir de sua especificação.

GlassFish

GlassFish é um servidor de aplicações Java EE de código

aberto e de nível corporativo que oferece clusterização

avançada, administração centralizada desempenho,

confiabilidade, produtividade e facilidade de uso superior de

servidores de aplicações proprietários (SUN, 2010).

Linguagem de Domínio

É uma linguagem de programação ou de especificação

dedicada a um domínio de problema particular. O conceito

não é novo, linguagens de programação de propósito

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

OO (Orientado a Objeto)

É uma pratica de análise e programação que agregam

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.

Processo de Software

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. 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

RowSet é uma interface que configura a conexão com o

banco de dados e executa as consultas automaticamente,

oferece métodos ao programador para especificar as

propriedades necessárias para se estabelecer uma

conexão, há dois tipos de Rowset conectado e

desconectado (JAVA FREE, 2010).

Servidor

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

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.

Sistema

Conjunto de programas que executam tarefas que fazem

parte de uma tarefa global. Um sistema pode ser composto

dos seguintes programas: compra e venda, atualização,

controle, gerenciamento e etc.

83

Software

Todo e qualquer conjunto de instruções executadas no

computador. Um software pode ser um programa, um

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

Tomcat é um servidor web Java, que inclui ferramentas de

configurações 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).

Web

É um sistema de páginas e documentos em hipermídia que

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.

Fonte: Elaborado pelos Autores, 2010. Figura 40. Conjunto de scripts de criação das classes Beans.

Fonte: Elaborado pelos Autores, 2010. Figura 41. Template definido para criação das classes Beans.

public class Esquema { private String nome; public Esquema ( ){ } public String getNome ( ) { return nome; } public void setNome (String nome) { this.nome = nome; } }

public class <NomeTabela> { private <tipo> <nome>;

public <NomeTabela> ( ){ }

public <tipo> get<Atributo> ( ) { return <atributo>;

}

public void set<Atributo> (<tipo> <atributo>) { this.<atributo> = <atributo>;

} }

88

Fonte: Elaborado pelos Autores, 2010. Figura 42. Template para construção das Beans.

//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(); } }

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.

Fonte: Elaborado pelos Autores, 2010. Figura 43. Template para construção das páginas HTML.

//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(); }

90

Fonte: Elaborado pelos Autores, 2010. Figura 44. Conjunto de scripts de criação das páginas HTML.

Fonte: Elaborado pelos Autores, 2010. Figura 45. Template definido para criação das páginas HTML.

<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>

<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>