LUCAS POMPEO PONTES SPINELLI DESENVOLVIMENTO DE UMA FERRAMENTA PARA GERAÇÃO AUTOMÁTICA DE CÓDIGO ABERTO EM JAVA SERVER FACES Assis 2015 LUCAS POMPEO PONTES SPINELLI DESENVOLVIMENTO DE UMA FERRAMENTA PARA GERAÇÃO AUTOMÁTICA DE CÓDIGO ABERTO EM JAVA SERVER FACES Trabalho de Conclusão de Curso apresentado Instituto Municipal de Ensino Superior de Assis, como requisito do Curso Superior de Bacharelado em Ciência da Computação. Orientador: Prof. Douglas Sanches da Cunha Área de concentração: Ciência da Computação Assis 2015 FICHA CATALOGRÁFICA POMPEO PONTES SPINELLI, Lucas Desenvolvimento de uma Ferramenta para Geração Automática de Código Aberto em Java Server Faces / Lucas Pompeo Pontes Spinelli. Fundação Educacional do Município de Assis – Assis, 2015. 46p. Orientador: Prof. Douglas Sanches da Cunha Trabalho de Conclusão de Curso – Instituto Municipal de Ensino Superior de Assis – IMESA. 1. Gerador 2. Java 3. Framework CDD 001.6 Biblioteca da FEMA DESENVOLVIMENTO DE UMA FERRAMENTA PARA GERAÇÃO AUTOMÁTICA DE CÓDIGO ABERTO EM JAVA SERVER FACES LUCAS POMPEO PONTES SPINELLI Trabalho de Conclusão de Curso apresentado ao Instituto Municipal de Ensino Superior de Assis, como requisito do Curso Bacharelado em Computação analisado pela seguinte comissão examinadora: Orientador: Prof. Douglas Sanches da Cunha Analisador: Prof. Célio Desiró Assis 2015 DEDICATÓRIA Dedico este trabalho primeiramente a Deus, que me guardou e me deu toda a perseverança para a realização do trabalho. Dedico também para todas as pessoas que contribuíram para que ele fosse concluído, como familiares e amigos. AGRADECIMENTOS Primeiramente a Deus que permitiu que tudo isso se realizasse, e não só por esses anos, e sim por todos os momentos em minha vida. A FEMA, pela oportunidade de realizar o curso, e todo o seu corpo docente. Ao professor Douglas, por toda atenção e suporte dado para a realização do meu projeto. Aos familiares e amigos que sempre estiveram comigo, me ajudando e que fizeram parte da minha formação. RESUMO O presente trabalho irá facilitar o desenvolvimento de software, com a criação de módulos CRUD (Create, Read, Update e Delete) e tabelas no banco de dados, que são utilizadas para o armazenamento de informações. O framework fornecerá classes (modelo, bean, dao...) que podem ser usadas por todo o projeto agilizando a construção da interface gráfica e também no acesso ao banco de dados. Este trabalho trará diversas vantagens ao usuário, como padronização, eficiência e o aumento da produtividade. Muitas outras vantagens podem ser percebidas com o uso do gerador automático de código. O código será gerado na linguagem Java para a plataforma WEB. Palavras chave: Gerador, framework, Java. ABSTRACT The present work will facilitate the software development, with the creation of modules CRUD (Create, Read, Update and Delete), reports and tables in the database. The framework will provide classes that can be used throughout the project speeding the GUI construction and also in the access to the database. This work will bring several advantages to the user, such as standardization, efficiency and increased productivity. Many other advantages can be realized by using automatic code generator. The code will be generated in the language Java on the platform WEB. Tags: Generator, framework, Java. LISTA DE ILUSTRAÇÕES Figura 1 – Funcionamento JSF....................................................................16 Figura 2 – Exemplo JDBC...........................................................................18 Figura 3 – PostgreSQL................................................................................18 Figura 4 – Netbeans....................................................................................19 Figura 5 – Java............................................................................................19 Figura 6 – Diagrama de classe Modelo para exemplo................................20 Figura 7 – Diagrama de classe DAO para exemplo....................................21 Figura 8 – Diagrama de classe Bean para exemplo....................................21 Figura 9 – Estrutura analítica do projeto......................................................22 Figura 10 – Caso de uso do projeto.............................................................25 Figura 11 – Caso de uso Manter Projeto.....................................................26 Figura 12 – Diagrama de sequência Manter Projeto...................................27 Figura 13 – Caso de uso manter Classe.....................................................28 Figura 14 – Diagrama de sequência Classe................................................29 Figura 15 – Caso de uso manter Atributo....................................................30 Figura 16 – Diagrama de sequência Atributos.............................................31 Figura 17 – Caso de uso Manter Profissional..............................................32 Figura 18 – Diagrama de sequência Profissional........................................33 Figura 19 – Caso de uso Manter Suporte....................................................34 Figura 20 – Diagrama de sequência Suportes............................................35 Figura 21 – Caso de uso Gerar Tabela.......................................................36 Figura 22 – Diagrama de sequência Gerar Tabela......................................37 Figura 23 – Caso de uso Gerar Modelo.......................................................38 Figura 24 – Diagrama de sequência Gerar Modelo.....................................38 Figura 25 – Caso de uso Gerar DAO...........................................................39 Figura 26 – Diagrama de sequência gerar DAO..........................................40 Figura 27 – Caso de uso Gerar Bean..........................................................41 Figura 28 – Diagrama de sequência gerar Bean.........................................42 Figura 29 – Caso de uso gerar tela JSF......................................................43 Figura 30 – Diagrama de sequência gerar Tela..........................................43 LISTA DE TABELAS Tabela 1 – Lista de eventos.........................................................................24 Tabela 2 – Orçamento do projeto................................................................25 Tabela 3 – Narrativa Caso de Uso Manter Projeto......................................26 Tabela 4 – Narrativa Caso de Uso Manter Classe......................................28 Tabela 5 – Narrativa Caso de Uso Manter Atributo.....................................29 Tabela 6 – Narrativa Caso de Uso Manter Profissional...............................33 Tabela 7 – Narrativa Caso de Uso Manter Suporte.....................................34 Tabela 8 – Narrativa Caso de Uso Gerar Tabela........................................37 Tabela 9 – Narrativa Caso de Uso Gerar Modelo........................................38 Tabela 10 – Narrativa Caso de Uso Gerar DAO..........................................39 Tabela 11 – Narrativa Caso de Uso Gerar Bean.........................................41 Tabela 12 – Narrativa Caso de Uso Gerar Tela JSF...................................42 LISTA DE ABREVIATURAS E SIGLAS HTTP – Hypertext Transfer Protocol JDK – Java Development Kit IDE – Integrated Development Environment JSF – JavaServer Faces DAO - Data Access Object JDBC - Java Database Connectivity MVC - Model-view-controller API – Application Programming Interface SGBD – Sistema Gerenciador de Banco de Dados SUMÁRIO 1 INTRODUÇÃO..............................................................................................13 1.1 OBJETIVO................................................................................................14 1.1.1 OBJETIVO ESPECÍFICO........................................................................14 1.2 JUSTIFICATIVA...........................................................................................14 1.3 MOTIVAÇÃO...............................................................................................15 1.4 PÚBLICO ALVO...........................................................................................15 2 GERADOR AUTOMÁTICO DE CÓDIGOS.................................................15 2.1 FERRAMENTAS UTILIZADAS....................................................................16 2.1.1 JSF..........................................................................................................16 2.1.2 JDBC.......................................................................................................18 2.1.3 POSTGRESQL.......................................................................................18 2.1.4 NETBEANS.............................................................................................19 2.1.5 JAVA.......................................................................................................19 2.2 FUNCIONAMENTO.....................................................................................20 3 ESTRUTURA ANALÍTICA DO PROJETO..................................................22 4 ANÁLISE DOS REQUISITOS.....................................................................23 4.1 RESULTADO ESPERADO..........................................................................23 4.2 FORMA ADOTADA PARA O LEVANTAMENTO DOS REQUISITOS.........23 4.3 RESTRIÇÕES DO DESENVOLVIMENTO..................................................23 4.4 PROBLEMAS POTENCIAIS........................................................................24 4.5 LISTA DE EVENTOS...................................................................................24 4.6 ORÇAMENTO DO PROJETO.....................................................................25 5 DIAGRAMAS..............................................................................................25 5.1 CASO DE USO PRINCIPAL/GERAL..........................................................25 5.2 CASO DE USO MANTER PROJETO..........................................................26 5.3 DIAGRAMA DE SEQUENCIA PROJETO....................................................27 5.4 CASO DE USO MANTER CLASSE.............................................................28 5.5 DIAGRAMA DE SEQUENCIA DE CLASSE................................................29 5.6 CASO DE USO MANTER ATRIBUTO.........................................................30 5.7 DIAGRAMA DE SEQUENCIA ATRIBUTO..................................................31 5.8 CASO DE USO MANTER PROFISSIONAL................................................32 5.9 DIAGRAMA DE SEQUENCIA PROFISSIONAL..........................................33 5.10 CASO DE USO MANTER SUPORTE....................................................34 5.11 DIAGRAMA DE SEQUENCIA SUPORTE..............................................35 5.12 CASO DE USO USUÁRIO GERAR TABELA.........................................36 5.13 DIAGRAMA DE SEQUENCIA GERAR TABELA....................................37 5.14 CASO DE USO GERAR A CLASSE MODELO......................................38 5.15 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA CLASSE MODELO..38 5.16 CASO DE USO GERAR A CLASSE DAO..............................................39 5.17 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA CLASSE DAO..........40 5.18 CASO DE USO GERAR A CLASSE BEAN............................................41 5.19 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA CLASSE BEANS......42 5.20 CASO DE USO GERAR A TELA JSF.....................................................43 5.21 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA TELA........................43 6 CONCLUSÃO..............................................................................................45 7 REFERENCIAS...........................................................................................46 14 1 INTRODUÇÃO Nos dias de hoje, pode-se dizer que o grande desafio na área da tecnologia é criar um software com qualidade e que atenda as necessidades do consumidor no menor tempo possível. O uso de ferramentas geradoras de código oferece uma grande ajuda às técnicas de desenvolvimento ágil e tende a suprir algumas dessas necessidades. A falta de padronização de códigos, tarefas repetidas, gastos desnecessários de tempo, são problemas que ocorrem durante o desenvolvimento de software, levando a gastos maiores, entre outros problemas. Segundo Gomes (1998), o desenvolvimento ágil tende a satisfazer o cliente, entregando o software em um prazo curto de tempo e funcionando. Segundo Pressman (2011), ter como prioridade satisfazer o cliente por meio de entrega adiantada e contínua do software, acolher bem os pedidos de alterações (aproveitando o tempo ganho com o framework), entregar o software em funcionamento, simplicidade, são os princípios básicos para o desenvolvimento ágil. Segundo Coad (1992), um framework pode ser definido como um esqueleto de classes, objetos e relacionamentos agrupados para construir aplicações específicas. Para Johnson (1991), o projeto de um conjunto de objetos que colaboram entre si para execução de um conjunto de responsabilidades, seria a definição para framework. Um framework é a ferramenta certa para o desenvolvimento ágil. Essa ferramenta enquadra-se perfeitamente no que diz respeito a diminuir o tempo utilizado para o desenvolvimento, organização, agilidade e códigos genéricos. Os frameworks são importantíssimos por terem diversas vantagens em sua utilização, como: redução de custos, redução de time-to-market, entre outros. E os motivos para isso, são: a maximização de reuso, desenvolvedores do software adicionam valores em vez de começar do zero, menos manutenção. 15 1.1 OBJETIVO O Objetivo é construir um sistema que irá gerar códigos Java, inclusive as telas para um projeto Java para Web, que auxiliará o gerente de projeto no desenvolvimento de software. 1.1.1 Objetivo Específico O Gerador Automático de Código, agilizará o processo de desenvolvimento de software, no tocante à criação de módulos CRUD (Create, Read, Update e Delete), templates(PrimeFaces) e tabelas no banco de dados (JDBC) e no controle do projeto, como profissionais e suportes a serem dados. 1.2 JUSTIFICATIVA Criar um software envolve vários procedimentos, tais como, criação de telas, páginas, classes e a conexão com o banco de dados. O tempo dedicado para realizar esses procedimentos é muito importante. O desenvolvimento do Gerador Automático de Código justifica-se pela tentativa de agilizar o processo de desenvolvimento do software no estágio inicial, diminuindo o consumo de tempo de programação dos cadastros CRUD do sistema. Uma das motivações para este trabalho é que o Gerador poderá produzir código para o ambiente WEB proporcionando agilidade de fato na criação de código e padronização, sobrando tempo para outras funções mais especificas do sistema. Utilizar um gerador automático de código tem algumas vantagens: - Qualidade: Os códigos digitados manualmente tendem a ter um nível de qualidade bastante irregular. 16 - Produtividade: Com o gerador, o número de códigos digitados tem uma queda muito relevante, ou seja, sobrará mais tempo para o desenvolvimento de outras rotinas do sistema. 1.3 MOTIVAÇÃO A principal motivação para o desenvolvimento do Gerador se dá ao fato do tempo utilizado no desenvolvimento de software ser muito importante. Com a criação do framework, o desenvolvedor terá tempo para trabalhar em outras especificações do projeto. 1.4 PÚBLICO ALVO O fator mais interessante do sistema é o seu público alvo: o gerente de projeto e o próprio desenvolvedor. O gerador vai ser utilizado pelo gerente de projeto e programadores. Irá facilitar o trabalho inicial e o de acompanhamento de todas as rotinas geradas pelo sistema. 2 GERADOR AUTOMÁTICO DE CÓGIDOS Como já citado anteriormente, o gerador facilitará a vida do usuário durante o desenvolvimento do software, economizando um tempo bastante significante, assim, eliminando repetições de códigos, não começando a programar do zero, aumentando a produtividade do desenvolvimento, a eliminação de algumas falhas, dentre outras. Segundo Dollard (2014), as vantagens do gerador são: Padronização: Com a padronização, diversos erros são evitados na implementação. Aumentando consideravelmente a qualidade do código. 17 Eficiência: Testes e padrões deixam o código muito eficaz em relação as suas funcionalidades. Produtividade: Com o gerador, muito tempo é ganho, então, com o uso dele, o foco dos desenvolvedores voltam-se às especificações do sistema, como regras de negócios, etc. 2.1 FERRAMENTAS UTILIZADAS 2.1.1 JSF JSF é um framework que permite a criação de interfaces web colocando os componentes em um formulário e conectando-os com objetos Java permitindo a separação entre lógica e regras de negócio, navegação, conexões com serviços externos e gerenciamento de configurações. JSF é um padrão MVC, ou seja, divide a camada em três partes: model, view e controller.A model (modelo) é responsável pela apresentação dos objetos. A view (visão) é responsável pela interface. Controller (controlador) é responsável pela conexão entre a view e a model. Esse framework é bastante utilizado pelos desenvolvedores por ser flexível, de fácil entendimento, de fácil manuseio e de diversas opções. A figura a seguir mostra o funcionamento do framework: Figura 1 – Funcionamento JSF 18 2.1.2 JDBC JDBC é uma API que contém classes e interfaces na linguagem Java que possibilitam conectar através de um driver específico do banco de dados desejado. Com esse driver, podem-se executar instruções SQL em qualquer tipo de banco de dados. É necessário possuir um driver para fazer a conexão entre a aplicação e o SGBDs. Figura 2 – Exemplo JDBC 2.1.3 PostgreSQL PostgreSQL é um sistema de gerenciamento de banco de dados (SGBDs). O PostgreSQL é descendente de código aberto, que possui várias funcionalidades, como: comandos complexos, chaves estrangeiras, gatilhos, visões, integridade transacional e controle de simultaneidade multiversão. Além disso, esse sistema também pode ser ampliado pelo usuário de muitas maneiras como, por exemplo, adicionando novos tipos de dado, funções, operadores, funções de agregação, métodos de índice e linguagens procedurais. Figura 3 - PostgreSQL 19 2.1.4 NetBeans O NetBeans é um ambiente de desenvolvimento, ou seja, uma ferramenta para desenvolvedores, que permite escrever, compilar, depurar e instalar programas. Esse ambiente é completamente escrito em Java, mas pode suportar qualquer linguagem de programação. O NetBeans é um produto livre, e também existem várias extensões de funcionalidades do IDE. A IDE é um projeto de código livre de sucesso, fundada pela Sun Microsystems. Figura 4 - NetBeans 2.1.5 Java Java é uma linguagem de programação e plataforma computacional criada pela Sun Microsystems. As principais características da linguagem Java são: orientação a objeto, portabilidade, recursos de rede e segurança. É a tecnologia que capacita muitos programas da mais alta qualidade, como utilitários, jogos e aplicativos corporativos, entre muitos outros, por exemplo. O Java é executado em mais de 850 milhões de computadores pessoais e em bilhões de dispositivos em todo o mundo, inclusive telefones celulares e dispositivos de televisão. 20 Figura 5 - Java 2.2 FUNCIONAMENTO O gerador funciona da seguinte maneira: O usuário precisará cadastrar o projeto a ser desenvolvido e os profissionais que irão trabalhar nele. Cada detalhe do projeto será salvo, como classes e atributos. Há telas para a criação de classes, atributos, profissionais, suportes e projetos com todas as especificações requeridas. Na tela do gerador, o projeto e classe serão selecionados, mostrando todas as informações necessárias para a criação dos modelos, mostrando os botões para a geração automática de código (Gerar Tabela, Gerar Modelo, Gerar DAO, Gerar Bean, Gerar Tela JSF). Segue o exemplo de 3 objetos gerados (Cliente, Cidade e Estado) com as classes “modelos”, “bean” e “dao”. O exemplo foi feito através de diagramas de classe: O diagrama de classe modelo exemplifica a criação das classes com os atributos 21 Figura 6 – Diagrama de classe Modelo para exemplo O diagrama de classe DAO exemplifica a criação das classes com os objetos e métodos Figura 7 – Diagrama de Classe DAO para exemplo O diagrama de classe Bean exemplifica a criação das classes com os objetos e métodos Figura 8 – Diagrama de Classe Bean para exemplo 22 3 ESTRUTURA ANALITICA DO PROJETO Para o desenvolvimento do Gerador Automático elaborou-se a seguinte Estrutura Analítica do Projeto: Figura 9 – Estrutura analítica do projeto 23 4 ANÁLISE DOS REQUISITOS O problema a ser resolvido, basicamente seria evitar os problemas futuros, pois o programador terá um auxílio de grande valia, evitando problemas com o tempo, repetições de códigos desnecessários, geração automática da tabela, etc. 4.1 RESULTADO ESPERADO O resultado esperado é utilizar o Gerador como uma real ferramenta de trabalho e de estudo, ajudando a programador a desenvolver o seu software com maior economia de tempo e maior qualidade. 4.2 FORMA ADOTADA PARA O LEVANTAMENTO DOS REQUISITOS Para o desenvolvimento do sistema, realizou-se um estudo de todas as características de um projeto, desde os atributos e suas especificações (nome, tipo, máscara, entre outros) até os profissionais encarregados de trabalharem no projeto. 4.3 RESTRIÇÕES DO DESENVOLVIMENTO O gerador será descrito basicamente em uma tela principal, onde o usuário irá apenas definir o nome da classe e seus atributos, como a tabela do banco de dados. Todos os dados serão armazenados no banco de dados, para manter total controle. 24 4.4 PROBLEMAS POTENCIAIS O problema a ser estudado do Gerador se dá pelo fato de a estrutura dos códigos gerados (classes) não poderem ser alteradas. Caso a alteração seja necessária, o usuário deverá alterar o código fonte. 4.5 LISTA DE EVENTOS Para o desenvolvimento do projeto elaborou-se a seguinte tabela de eventos: Nº Descrição Caso de Uso 01 Usuário cadastra as informações do Manter Projeto projeto 02 Usuário cadastra as informações da classe Manter Classe 03 Usuário cadastra as informações do Manter Atributo atributo 04 Usuário cadastra as informações do Manter Profissional profissional 05 Usuário cadastra as informações do Manter Suporte suporte 06 Usuário gera a tabela Gerar Tabela 07 Usuário gera o modelo Gerar Modelo 08 Usuário gera o DAO Gerar DAO 09 Usuário gera o Bean Gerar Bean 10 Usuário gera a tela Gerar Tela Tabela 1 – Lista de Eventos 25 4.6 ORÇAMENTO DO PROJETO Itens Valor Notebook R$ 800,00 Programador R$ 4.500,00 Netbeans Sem custo Servidor R$ 50,00 Banco de dados PostgreSQL Sem custo Tabela 2 – Orçamento do projeto 26 5 DIAGRAMAS Neste capítulo, os diagramas de casos de uso e de sequência irão ajudar a especificar o sistema. 5.1 CASO DE USO PRINCIPAL/GERAL Caso de uso principal do projeto com todos os eventos. Figura 10 – Caso de uso do projeto 27 5.2 CASO DE USO MANTER PROJETO Figura 11 – Caso de uso Manter Projeto Nome Use Case Descrição Manter Projeto Ator Usuário A função deste caso de uso é cadastrar dados de um projeto O usuário escolhe a opção “Criar Projeto“ na tela principal Evento Inicial Fluxo Principal Fluxo Exceção 1 - O sistema solicita os dados necessários para a criação do Projeto; 2 – O sistema efetiva a criação do projeto. O sistema informa que não foi adicionado nenhum atributo. Tabela 3 – Narrativa Caso de Uso Manter Projeto 28 5.3 DIAGRAMA DE SEQUENCIA PROJETO Para o cadastro do projeto, foi desenvolvido esse diagrama de sequência, onde o usuário preenche os dados, os dados são enviados para a camada BEAN e para a camada DAO, onde eles serão salvos. Logo após, será gerada uma mensagem para o usuário. Figura 12 – Diagrama de Sequencia Manter Projeto 29 5.4 CASO DE USO MANTER CLASSE Figura 13 – Caso de uso Manter Classe Nome Use Case Descrição Manter Classe Ator Usuário A função deste caso de uso é cadastrar dados de uma classe O usuário escolhe a opção “Criar Classe“ na tela principal Evento Inicial Fluxo Principal Fluxo Exceção 1 - O sistema solicita os dados necessários para a criação da Classe; 2 – O sistema efetiva a criação da classe. O sistema informa que não foi adicionado nenhum atributo. Tabela 4 – Narrativa Caso de Uso Manter Classe 30 5.5 DIAGRAMA DE SEQUENCIA CLASSE Para o cadastro de classe, foi desenvolvido esse diagrama de sequência, onde o usuário preenche os dados, os dados são enviados para a camada BEAN e para a camada DAO, onde eles serão salvos. Logo após, será gerada uma mensagem para o usuário. Figura 14 – Diagrama de Sequencia Classe 31 5.6 CASO DE USO MANTER ATRIBUTO Figura 15 – Caso de uso Manter Atributo Nome Use Case Descrição Manter Atributo Ator Usuário A função deste caso de uso é cadastrar dados de um atributo O usuário escolhe a opção “Criar Atributo“ na tela principal Evento Inicial Fluxo Principal Fluxo Exceção 1 - O sistema solicita os dados necessários para a criação do Atributo; 2 – O sistema efetiva a criação do atributo. O sistema informa que não foi adicionado nenhum dado. Tabela 5 – Narrativa Caso de Uso Manter Atributo 32 5.7 DIAGRAMA DE SEQUENCIA ATRIBUTO Para o cadastro de atributo, foi desenvolvido esse diagrama de sequência, onde o usuário preenche os dados, os dados são enviados para a camada BEAN e para a camada DAO, onde eles serão salvos. Logo após, será gerada uma mensagem para o usuário. Figura 16 – Diagrama de Sequencia Atributos 33 5.8 CASO DE USO MANTER PROFISSIONAL Figura 17 – Caso de uso Manter Profissional Nome Use Case Descrição Ator Manter Profissinal A função deste caso de uso é cadastrar dados de um profissional Usuário O usuário escolhe a opção “Criar Profissional“ na tela principal Evento Inicial Fluxo Principal Fluxo Exceção 1 - O sistema solicita os dados necessários para a criação do profissional; 2 – O sistema efetiva a criação do profissinal. O sistema informa que não foi adicionado nenhum atributo. Tabela 6 – Narrativa Caso de Uso Manter Profissional 34 5.9 DIAGRAMA DE SEQUENCIA PROFISSIONAL Para o cadastro de profissional, foi desenvolvido esse diagrama de sequência, onde o usuário preenche os dados, os dados são enviados para a camada BEAN e para a camada DAO, onde eles serão salvos. Logo após, será gerada uma mensagem para o usuário. Figura 18 – Diagrama de Sequencia Profissional 35 5.10 CASO DE USO MANTER SUPORTE Figura 19 – Caso de uso Manter Suporte Nome Use Case Descrição Manter Suporte Ator Usuário A função deste caso de uso é cadastrar dados de um suporte O usuário escolhe a opção “Criar Suporte“ na tela principal Evento Inicial Fluxo Principal Fluxo Exceção 1 - O sistema solicita os dados necessários para a criação do Suporte; 2 – O sistema efetiva a criação do suporte. O sistema informa que não foi adicionado nenhum atributo. Tabela 7 – Narrativa Caso de Uso Manter Suporte 36 5.11 DIAGRAMA DE SEQUENCIA SUPORTE Para o cadastro de suporte, foi desenvolvido esse diagrama de sequência, onde o usuário preenche os dados, os dados são enviados para a camada BEAN e para a camada DAO, onde eles serão salvos. Logo após, será gerada uma mensagem para o usuário. Figura 20 – Diagrama de Sequencia Suportes 37 5.12 CASO DE USO GERAR TABELA Figura 21 – Caso de uso Gerar Tabela Nome Use Case Descrição Gerar Tabela A função deste caso de uso é criar uma tabela no banco de dados Usuário Ator O usuário escolhe a opção “Gerar Tabela“ na tela principal Evento Inicial Fluxo Principal Fluxo Exceção 1 - O sistema solicita os dados necessários para a geração da Tabela; 2 – O sistema efetiva a criação da tabela. O sistema informa que não foi adicionado nenhum atributo. Tabela 8 – Narrativa Caso de Uso Gerar Tabela 38 5.13 DIAGRAMA DE SEQUENCIA GERAR TABELA Todos os diagramas de sequencia são parecidos, mudando apenas a classe a ser gerada, pois todo evento necessita dos mesmos dados que serão usados para gerar as classes. No diagrama abaixo, a tabela é gerada a partir dos dados preenchidos. Figura 22 – Diagrama de sequencia gerar Tabela 39 5.14 CASO DE USO GERAR A CLASSE MODELO Figura 23 – Caso de uso Gerar Modelo Nome Use Case Descrição Gerar Modelo Ator Usuário A função deste caso de uso é criar um objeto Modelo O usuário escolhe a opção “Gerar Modelo” na tela principal Evento Inicial Fluxo Principal Fluxo Exceção 1 - O sistema solicita os dados necessários para a geração do Modelo; 2 – O sistema efetiva a criação do objeto. O sistema informa que não foi adicionado nenhum atributo. Tabela 9 – Narrativa Caso de Uso Gerar Modelo 40 5.15 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA CLASSE MODELO No diagrama abaixo, o modelo é gerado a partir dos dados preenchidos, os mesmos dados serão salvos na tabela do banco de dados. Figura 24 – Diagrama de sequencia gerar Modelo 41 5.16 CASO DE USO GERAR A CLASSE DAO Figura 25 – Caso de uso Gerar DAO Nome Use Case Gerar DAO Descrição A função deste caso de uso é criar um DAO Ator Usuário O usuário escolhe a opção “Gerar DAO” na tela principal Evento Inicial Fluxo Principal 1 - O sistema solicita os dados necessários para a geração do DAO; 2 – O sistema efetiva a criação do DAO. Fluxo Exceção O sistema informa que não foi adicionado nenhum atributo. Tabela 10 – Narrativa Caso de Uso Gerar DAO 5.17 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA CLASSE DAO No diagrama abaixo, a classe Dao é gerada a partir dos dados preenchidos, os mesmos dados serão salvos na tabela do banco de dados. 42 Figura 26 – Diagrama de sequência gerar DAO 5.18 CASO DE USO ONDE O USUÁRIO GERA A CLASSE BEAN Figura 27 – Caso de uso Gerar Bean Nome Use Case Gerar Bean Descrição A função deste caso de uso é criar um Bean 43 Ator Usuário O usuário escolhe a opção “Gerar Bean” na tela principal Evento Inicial Fluxo Principal 1 - O sistema solicita os dados necessários para a geração do Bean; 2 – O sistema efetiva a criação do Bean. Fluxo Exceção O sistema informa que não foi adicionado nenhum atributo. Tabela 11– Narrativa Caso de Uso Gerar Bean 5.19 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA CLASSE BEAN No diagrama abaixo, o Bean é gerado a partir dos dados preenchidos, os mesmos dados serão salvos na tabela do banco de dados. Figura 28 – Diagrama de sequência gerar BEAN 44 5.20 CASO DE USO GERAR A TELA JSF Figura 29 – Caso de uso Gerar tela JSF Nome Use Case Gerar tela JSF Descrição A função deste caso de uso é criar um tela JSF Ator Usuário O usuário escolhe a opção “Gerar tela JSF” na tela principal Evento Inicial Fluxo Principal 1 - O sistema solicita os dados necessários para a geração da Tela; 2 – O sistema efetiva a criação da tela. Fluxo Exceção O sistema informa que não foi adicionado nenhum atributo. Tabela 12 – Narrativa Caso de Uso Gerar Tela JSF 5.21 DIAGRAMA DE SEQUENCIA DA GERAÇÃO DA TELA No diagrama abaixo, a tela é gerada a partir dos dados preenchidos, os mesmos dados serão salvos na tabela do banco de dados. 45 Figura 30 – Diagrama de sequencia gerar Tela 46 6 CONCLUSÃO O framework desenvolvido nesse projeto atende todas as necessidades do usuário (programador). O uso do gerador automático de código proporciona vantagens como: economia de tempo, padronização de código, eliminação tarefas repetidas desnecessárias, controle do projeto através de todos os dados salvos, do primeiro atributo até as especificações do projeto, como profissionais, suportes, entre outras soluções dos problemas enfrentados durante o desenvolvimento de um sistema. A criação de um sistema é dividida em criação de módulos, tais como, criação de classes (Modelo, DAO e Bean), tela e tabela no banco de dados. Todo o projeto foi desenvolvido na linguagem Java para o ambiente WEB. O desenvolvimento deste trabalho trouxe uma contribuição enorme para o crescimento do autor, proporcionando um aprendizado bastante significativo, que com certeza levará para a área profissional e paro o resto de seu curso. O software poderá sofrer várias alterações, podendo modificar consideravelmente a sua estrutura. A geração de classes para outras linguagem é completamente possível. 47 7 REFERÊNCIAS COAD, Peter. Object-Oriented Patterns. Communications of the ACM, 1992. DOLLARD, K. Code Generation in Microsoft .Net. EUA: Apress, 2004. FRANÇA, L.; STAA, A. Geradores de Artefatos: Implementação e Instanciação de frameworks. Simpósio Brasileiro de Engenharia de Software, 15. SBC, 2001. PP 302-315. GOMES, André Faria. Ágile. São Paulo: Casa do código Johnson, Ralph E.; Russo, Vincent. Reusing Object-Oriented Designs. Relatório Técnico da Universidade de Illinois, UIUCDCS 91-1696, 1991. PRESSMAN Roger S. Engenharia de Software, 2011. PALMEIRA, Thiago Vinícius V. Aprendendo Java com JDBC. Disponível em <http://www.devmedia.com.br/aprendendo-java-com-jdbc/29116> Acessado em 06/11/2014 PostgreSQL. O que é o PostgreSQL? <http://pgdocptbr.sourceforge.net/pg82/intro-whatis.html> 06/11/2014 Disponível Acessado NetBeans. O que é o NetBeans? Disponível <https://netbeans.org/index_pt_PT.html> Acessado em 06/11/2014 em em em Java. O que é a tecnologia Java e por que preciso dela? Disponível em < https://www.java.com/pt_BR/download/faq/whatis_java.xml> Acessado em 06/11/2014 BUENO, Kassia Jaqueline. O que é JSF? Disponível em <http://fabrica.ms.senac.br/2013/06/o-que-e-jsf-java-server-faces/> Acessado em 06/11/2014