2011 Criação de Componente de parâmetro de Relatório e Pesquisa Framework de Aplicação: Amanda Barbosa Silva UNIVERSIDADE ESTADUAL DE GOIÁS UNIDADE UNIVERSITÁRIA DE CIÊNCIAS EXATAS E TECNOLÓGICAS BACHARELADO EM SISTEMAS DE INFORMAÇÃO AMANDA BARBOSA SILVA Framework de Aplicação: Criação de Componente de Parâmetro de Relatório e Pesquisa Anápolis Novembro, 2011 UNIVERSIDADE ESTADUAL DE GOIÁS UNIDADE UNIVERSITÁRIA DE CIÊNCIAS EXATAS E TECNOLÓGICAS BACHARELADO EM SISTEMAS DE INFORMAÇÃO AMANDA BARBOSA SILVA Framework de Aplicação: Criação de Componente de Parâmetro de Relatório e Pesquisa Projeto apresentado ao Departamento de Sistemas de Informação da Unidade Universitária de Ciências Exatas e Tecnológicas da Universidade Estadual de Goiás, como requisito parcial para obtenção do grau de Bacharel em Sistemas de Informação. Orientador: Prof. Esp. Leandro Doutor Branquinho Anápolis Novembro, 2011 FICHA CATALOGRÁFICA SILVA, Amanda Barbosa. Framework de Aplicação: Criação de Componente de Parâmetro de Relatório e Pesquisa. Anápolis 2011. (UEG / UnUCET, Bacharelado em Sistemas de Informação, 2011). Trabalho de Conclusão de Curso (Projeto). Universidade Estadual de Goiás, Unidade Universitária de Ciências Exatas e Tecnológicas. Departamento de Sistemas de Informação. 1. Framework 2. Pesquisa 3. Parâmetros de Relatório 4. Banco de Dados 5. Padrões 6. Orientação a Objetos REFERÊNCIA BIBLIOGRÁFICA SILVA, Amanda Barbosa. Framework de Aplicação: Criação de Componente de Parâmetro de Relatório e Pesquisa. Anápolis, 2011. 151 p. Trabalho de Conclusão de Curso (Projeto) – Curso de Sistemas de Informação, UnUCET, Universidade Estadual de Goiás. CESSÃO DE DIREITOS NOME DO AUTOR: Amanda Barbosa Silva TÍTULO DO TRABALHO: Framework de Aplicação: Criação de Componente de Parâmetro de Relatório e Pesquisa. GRAU/ANO: Graduação / 2011. É concedida à Universidade Estadual de Goiás permissão para reproduzir cópias deste trabalho, emprestar ou vender tais cópias para propósitos acadêmicos e científicos. O autor reserva outros direitos de publicação e nenhuma parte deste trabalho pode ser reproduzida sem a autorização por escrito do autor. Amanda Barbosa Silva Avenida Contorno nº 314, Qd. 104 A Lt. 59 - Centro CEP 74055-140 – Goiânia – GO – Brasil Dedico esse trabalho a minha mãe, por ter sempre me ajudado e incentivado em meus estudos, estando sempre ao meu lado. Dedico também ao meu namorado, Vinicius, por sempre me ajudar em minhas dificuldades e sempre acreditar em mim e em minha capacidade. Dedico também ao meu professor e orientador, Leandro, por propor esse projeto. AGRADECIMENTOS Ao meu professor e orientador Leandro, pelo apoio, incentivo, e por acreditar no desenvolvimento deste projeto e em minha capacidade. A todos os meus professores pelo constante apoio ao longo dos anos do curso. Agradeço a empresa em que a trabalho atualmente, a DataEasy, por ter acreditado em meu potencial, investido em minha carreira profissional e proporcionado a minha mudança para a área de programação e minha contratação. Aos meus familiares pelo apoio a seguir um curso em outra cidade e por outras dificuldades encontradas durante os quatro anos de curso. Agradeço especialmente a minha mãe, por sempre me apoiar em minhas escolhas e pelos incentivos em continuar o curso. Ao meu namorado, Vinicius, pelo constante apoio em minhas dificuldades e ao incentivo à carreira de programador que proporcionou a iniciativa e o desenvolvimento deste projeto. A todos, os meus sinceros agradecimentos. LISTA DE ABREVIATURAS E SIGLAS Siglas Descrição OO Orientação a Objetos DMS Documento de Modelagem de Sistema UEG Universidade Estadual de Goiás UnUCET Unidade Universitária de Ciências Exatas e Tecnológicas SQL Structured Query Language MSSQL Banco de Dados Microsoft SQL Server RESUMO O desenvolvimento de um framework possui vantagens e desvantagens, mas é possível que os benefícios sejam capazes de sobressair se for bem estruturado e se o domínio for conhecido detalhadamente. Framework é o conceito de orientação a objetos na prática. A maturidade em seus conceitos permite que o desenvolvedor seja capaz de abstrair problemas comuns em certo domínio criando uma solução genérica através de um conjunto de classes e interfaces encapsuladas, que pode ser utilizada em aplicações semelhantes (do mesmo domínio), mas não necessariamente iguais. O uso de padrões de projeto proporciona um dos principais desafios dos desenvolvedores, o reuso de código. Este projeto tem como objetivo o desenvolvimento de um componente para um framework de aplicação (vertical): com as funções de pesquisa e parâmetro de relatórios. O objetivo do framework é permitir a mudança das interfaces de pesquisa e das consultas de relatórios através do banco de dados da aplicação, possibilitando a mudança em tempo de execução do sistema e sem a necessidade de compilação, ou seja, um framework gerenciado pelo banco de dados. Palavras-chave: Framework, Banco de dados, Padrões de Projeto, reutilização, regras de negócio. ABSTRACT The development of a framework has advantages and disadvantages, but it is possible that the benefits are able to exceed if properly structured and if the domain is known in detail. Framework is the concept of object orientation in practice. The maturity in their concepts allows the developer to be able to abstract common problems in one domain by creating a generic solution through a set of classes and interfaces encapsulated, which can be used in similar applications (same domain), but not necessarily equal. The use of design patterns provides a major challenge for developers, code reuse. This project aims to develop a component to an application framework (vertical) with search functions and parameter reports. The aim of the framework is to allow the change of search interfaces and reporting queries through the database application, allowing the change in the runtime system and without the need to build, that is, a framework managed by the database. Keywords: Framework, Database, Design Patterns, reuse, business rules. PREFÁCIO O propósito deste documento é apresentar a especificação de uma solução em software genérica, mas que seja capaz de ser especificada para as diversas aplicações que serão criadas a partir do framework. Especificadamente a criação de um componente de pesquisa e parâmetros de relatório capaz de gerar interfaces e consultas dinamicamente a partir de configurações realizadas em banco de dados. Objetiva também ser uma base de dados dos requisitos do software, dos casos de uso e definição da arquitetura que serão utilizados para o desenvolvimento. O Documento de Modelagem do Sistema está organizado em lista de Elementos Gráficos do Projeto, Dicionário do Projeto, Gerência de Projeto, Modelagem do Negócio, Requisitos, Modelagem dos Casos de Uso, Modelagem de Dados, Especificação da Arquitetura, Realização dos Casos de Uso, itens relacionados aos testes e a conclusão do projeto e complementos. TABELA DE REVISÕES Versão Principais Autores Descrição da Versão Data de Término V[1.0] Amanda Barbosa Silva Elaboração do pré-projeto. 07/04/2011 V[2.0] Amanda Barbosa Silva Definição do processo de desenvolvimento do software. 07/05/2011 V[3.0] Amanda Barbosa Silva Elaboração do processo para 28/05/2011 definição da estrutura do banco de dados para os componentes. Definição da estrutura do banco de dados. V[4.0] Amanda Barbosa Silva Definição do processo de especificação de requisitos. 03/09/2011 V[5.0] Amanda Barbosa Silva Especificação dos requisitos. 05/09/2011 V[6.0] Amanda Barbosa Silva Preenchimento da ata de reunião realizada no dia 02/09/2011. Definição dos casos de uso e criação do diagrama de caso de uso. 24/09/2011 V[7.0] Amanda Barbosa Silva Alteração da modelagem do banco de dados. Inserção de exemplos na especificação de requisitos. Início do detalhamento dos casos de uso. 26/09/2011 Versão Principais Autores Descrição da Versão V[8.0] Amanda Barbosa Silva Foi decidido que seria 08/10/2011 desenvolvido um único componente com as funcionalidades de pesquisa e parâmetro de relatório. Continuação do detalhamento dos casos de uso. Criação do ER do banco de dados e do script. Elaboração do apêndice A que apresenta ao usuário a configuração do caminho dos arquivos de conexão com o banco de dados. V[9.0] Amanda Barbosa Silva Finalização da modelagem de 15/10/2011 dados. Finalização do detalhamento dos casos de uso. Criação dos diagramas de atividade, componentes, implantação e pacotes. V[10.0] Amanda Barbosa Silva Casos de uso alterados para a nova 22/10/2011 programação. Alteração dos diagramas de acordo com a necessidade da nova programação. Preenchimento das atas de reunião conforme solicitado (reuniões online). Inicio da definição do dicionário do projeto. V[11.0] Amanda Barbosa Silva Conclusão do dicionário do 29/10/2011 projeto. Criação dos casos de teste. Criação do apêndice B que será usando da realização do caso de teste. Criação da conclusão. V final Correção dos diagramas de acordo 11/12/2011 com a implementação. Preenchimento do relatório de testes. Imagem da interface gráfica. Amanda Barbosa Silva Tabela 1 – Tabela de Revisões Data de Término SUMÁRIO 1 2 3 4 Lista de Elementos Gráficos ............................................................................................. 19 1.1 Lista de Tabelas..................................................................................................................... 19 1.2 Lista de Figuras ..................................................................................................................... 21 Dicionário do Projeto ........................................................................................................ 23 2.1 Lista de Abreviaturas nos Artefatos do Documento ............................................................. 23 2.2 Elementos de Dados.............................................................................................................. 23 2.3 Elementos de Comportamento ............................................................................................. 27 Gerência do Projeto ........................................................................................................... 36 3.1 Cronograma de Atividades .................................................................................................... 36 3.2 Processos de Desenvolvimento do Software ........................................................................ 37 3.3 Relatório Semanal de Progresso ........................................................................................... 40 3.3.1 Relatório Semanal de Progresso n.º 01 ......................................................................... 40 3.3.2 Relatório Semanal de Progresso n.º 02 ......................................................................... 41 3.3.3 Relatório Semanal de Progresso n.º 03 ......................................................................... 42 3.3.4 Relatório Semanal de Progresso n.º 04 ......................................................................... 43 3.3.5 Relatório Semanal de Progresso n.º 05 ......................................................................... 44 3.3.6 Relatório Semanal de Progresso n.º 06 ......................................................................... 45 3.3.7 Relatório Semanal de Progresso n.º 07 ......................................................................... 46 3.3.8 Relatório Semanal de Progresso n.º 08 ......................................................................... 47 3.3.9 Relatório Semanal de Progresso n.º 09 ......................................................................... 48 3.3.10 Relatório Semanal de Progresso n.º 10 ......................................................................... 49 3.3.11 Relatório Semanal de Progresso n.º 11 ......................................................................... 50 3.3.12 Relatório Semanal de Progresso n.º 12 ......................................................................... 51 3.3.13 Relatório Semanal de Progresso n.º 13 ......................................................................... 52 3.3.14 Relatório Semanal de Progresso n.º 14 ......................................................................... 53 3.3.15 Relatório Semanal de Progresso n.º 15 ......................................................................... 54 3.3.16 Relatório Semanal de Progresso n.º 16 ......................................................................... 55 3.3.17 Relatório Semanal de Progresso n.º 17 ......................................................................... 56 3.3.18 Relatório Semanal de Progresso n.º 18 ......................................................................... 57 3.3.19 Relatório Semanal de Progresso n.º 19 ......................................................................... 58 Modelagem do Negócio .................................................................................................... 59 15 4.1 5 4.1.1 Ata n.º 01....................................................................................................................... 59 4.1.2 Ata n.º 02....................................................................................................................... 60 4.1.3 Ata n.º 03....................................................................................................................... 62 4.1.4 Ata n.º 04....................................................................................................................... 64 4.1.5 Ata n.º 05....................................................................................................................... 65 4.1.6 Ata n.º 06....................................................................................................................... 66 4.1.7 Ata n.º 07....................................................................................................................... 67 4.1.8 Ata n.º 08....................................................................................................................... 67 4.1.9 Ata n.º 09....................................................................................................................... 69 4.2 Descrição do Negócio ............................................................................................................ 70 4.3 Lista de Requisitos ................................................................................................................. 72 4.4 Lista de Regras de Negócio ................................................................................................... 73 4.5 Dificuldades encontradas no Negócio ................................................................................... 75 4.6 Definição do Problema .......................................................................................................... 76 4.7 Objetivo do Software ............................................................................................................ 76 4.8 Escopo do Software ............................................................................................................... 76 4.9 Clientes Alvo .......................................................................................................................... 77 4.10 Glossário do Negócio............................................................................................................. 77 Requisitos .......................................................................................................................... 78 5.1 6 Ata de Reunião ...................................................................................................................... 59 Especificação dos Requisitos ................................................................................................. 78 5.1.1 ERaF1.1 .......................................................................................................................... 78 5.1.2 ERaF2.1 .......................................................................................................................... 78 5.1.3 ERaF3.1 .......................................................................................................................... 79 5.1.4 ERaF4.1 .......................................................................................................................... 80 5.1.5 ERaF5.1 .......................................................................................................................... 80 5.1.6 ERaF6.1 .......................................................................................................................... 81 5.1.7 ERaF7.1 .......................................................................................................................... 81 5.1.8 ERaF8.1 .......................................................................................................................... 82 5.1.9 ERaF9.1 .......................................................................................................................... 83 5.1.10 ERaF10.1 ........................................................................................................................ 83 Modelagem de Casos de Uso ............................................................................................ 84 6.1 Relação de Casos de Uso ....................................................................................................... 84 16 6.2 Relação dos Atores ................................................................................................................ 84 6.2.1 Desenvolvedor............................................................................................................... 85 6.2.2 Componente .................................................................................................................. 85 6.3 Diagrama Geral de Casos de Uso .......................................................................................... 85 6.4 Detalhamento dos Casos de Uso........................................................................................... 85 6.4.1 [Caso de Uso] Criar conexões com os bancos de dados das aplicações ....................... 86 6.4.2 [Caso de Uso] Realizar conexão com o banco de dados do componente .................... 91 6.4.3 [Caso de Uso] Realizar conexão com o banco de dados da aplicação .......................... 93 6.4.4 [Caso de Uso] Configurar Framework ........................................................................... 96 6.4.5 [Caso de Uso] Configuração da execução do componente ........................................... 98 6.4.6 [Caso de Uso] Configurar interface gráfica ................................................................. 100 6.4.7 [Caso de Uso] Checar se existe entidade/view no banco de dados ............................ 103 6.4.8 [Caso de Uso] Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface ................................................................................................................ 106 7 6.4.9 [Caso de Uso] Criar SQL de consulta com base nos parâmetros informados ............. 108 6.4.10 [Caso de Uso] Realizar consulta .................................................................................. 111 6.4.11 [Caso de Uso] Retornar resultado de acordo com a função ....................................... 113 6.4.12 [Caso de Uso] Realizar consulta extra ......................................................................... 116 Modelagem de Dados ...................................................................................................... 120 7.1 Projeto Conceitual de Dados ............................................................................................... 120 7.2 Projeto Lógico de Dados...................................................................................................... 120 7.3 Script de Criação de Banco de Dados .................................................................................. 121 8 Especificação da Arquitetura .......................................................................................... 123 8.1 Diagrama de Componentes ................................................................................................. 123 8.2 Diagrama de Implantação ................................................................................................... 124 8.3 Diagrama de Pacotes ........................................................................................................... 125 9 Realização de Casos de Uso ............................................................................................ 126 9.1 Diagrama de Classe Conceitual ........................................................................................... 126 9.2 Diagrama de Classes do Projeto .......................................................................................... 126 9.3 Diagrama de Sequência ....................................................................................................... 130 9.4 Layout da Interface ............................................................................................................. 134 9.5 Diagrama Geral de Classes do Projeto ................................................................................ 135 10 Testes ........................................................................................................................... 136 17 10.1 Plano de Testes ................................................................................................................... 136 10.2 Casos de Testes ................................................................................................................... 136 10.3 Relatório de Testes .............................................................................................................. 140 11 Conclusão .................................................................................................................... 141 12 Referências .................................................................................................................. 142 13 Apêndices .................................................................................................................... 143 13.1 Apêndice A – Cronograma de Atividades do Trabalho de Conclusão de Curso .................. 143 13.2 Apêndice A – PÔSTER APRESENTADO NO III SIMPÓSIO DE TECNOLOGIA DA INFORMAÇÃO E III SEMANA DE INICIAÇÃO CIENTÍFICA DO CURSO DE SISTEMAS DE INFORMAÇÃO UNUCETUEG/2011 ........................................................................................................................................ 144 13.3 Apêndice C – Configuração dos arquivos dataSource ......................................................... 145 13.4 Apêndice D – Configurando o banco de dados ................................................................... 146 13.5 Apêndice E – Exemplo de Uso ............................................................................................. 149 18 1 Lista de Elementos Gráficos 1.1 Lista de Tabelas Tabela 1 – Tabela de Revisões ................................................................................................. 14 Tabela 2 – Lista de Abreviaturas nos Artefatos do Documento ............................................... 23 Tabela 3 – Elementos de Dados – Entidades ............................................................................ 24 Tabela 4 – Elementos de Dados - Campos ............................................................................... 25 Tabela 5 – Elementos de Dados – Filtro .................................................................................. 25 Tabela 6 – Elementos de Dados – Filtro_has_campos ............................................................. 25 Tabela 7 – Elementos de Dados - Pesquisa .............................................................................. 26 Tabela 8 – Elementos de Dados – Pesquisa_has_filtro ............................................................ 26 Tabela 9 – Elementos de Comportamento Entidades ............................................................... 27 Tabela 10 – Elementos de Comportamento Campos................................................................ 28 Tabela 11 – Elementos de Comportamento Filtro .................................................................... 28 Tabela 12 – Elementos de Comportamento Pesquisa ............................................................... 29 Tabela 13 – Elementos de Comportamento TipoCampo.......................................................... 30 Tabela 14 – Elementos de Comportamento TipoOperador ...................................................... 31 Tabela 15 – Elementos de Comportamento EntidadesDAO .................................................... 31 Tabela 16 – Elementos de Comportamento CamposDAO ....................................................... 32 Tabela 17 – Elementos de Comportamento FiltroDAO ........................................................... 32 Tabela 18 – Elementos de Comportamento PesquisaDAO ...................................................... 33 Tabela 19 – Elementos de Comportamento Select ................................................................... 33 Tabela 20 – Elementos de Comportamento ParametersSQL ................................................... 35 Tabela 21 – Elementos de Comportamento WhereClauses...................................................... 35 Tabela 22 - Relatório Semanal de Progresso n.º 01 ................................................................. 40 Tabela 23 - Relatório Semanal de Progresso n.º 02 ................................................................. 41 Tabela 24 - Relatório Semanal de Progresso n.º 03 ................................................................. 42 Tabela 25 - Relatório Semanal de Progresso n.º 04 ................................................................. 43 Tabela 26 - Relatório Semanal de Progresso n.º 05 ................................................................. 44 Tabela 27 - Relatório Semanal de Progresso n.º 06 ................................................................. 45 Tabela 28 - Relatório Semanal de Progresso n.º 07 ................................................................. 46 Tabela 29 - Relatório Semanal de Progresso n.º 08 ................................................................. 47 Tabela 30 - Relatório Semanal de Progresso n.º 09 ................................................................. 48 Tabela 31 - Relatório Semanal de Progresso n.º 10 ................................................................. 49 Tabela 32 - Relatório Semanal de Progresso n.º 11 ................................................................. 50 Tabela 33 - Relatório Semanal de Progresso n.º 12 ................................................................. 51 Tabela 34 - Relatório Semanal de Progresso n.º 13 ................................................................. 52 Tabela 35 - Relatório Semanal de Progresso n.º 14 ................................................................. 53 Tabela 36 - Relatório Semanal de Progresso n.º 15 ................................................................. 54 Tabela 37 - Relatório Semanal de Progresso n.º 16 ................................................................. 55 Tabela 38 - Relatório Semanal de Progresso n.º 17 ................................................................. 56 Tabela 39 - Relatório Semanal de Progresso n.º 18 ................................................................. 57 Tabela 40 - Relatório Semanal de Progresso n.º 19 ................................................................. 58 19 Tabela 41 – Ata de Reunião n.º 01 ........................................................................................... 59 Tabela 42 – Ata de Reunião n.º 02 ........................................................................................... 61 Tabela 43 – Ata de Reunião n.º 03 ........................................................................................... 63 Tabela 44 – Ata de Reunião n.º 04 ........................................................................................... 64 Tabela 45 – Ata de Reunião n.º 05 ........................................................................................... 65 Tabela 46 – Ata de Reunião n.º 06 ........................................................................................... 66 Tabela 47 – Ata de Reunião n.º 07 ........................................................................................... 67 Tabela 48 – Ata de Reunião n.º 08 ........................................................................................... 69 Tabela 49 – Ata de Reunião n.º 09 ........................................................................................... 69 Tabela 50 – Lista de Requisitos................................................................................................ 72 Tabela 51 – Lista de Regras de Negócio .................................................................................. 74 Tabela 52 – Dificuldades encontradas no negócio ................................................................... 75 Tabela 53 – Clientes Alvo ........................................................................................................ 77 Tabela 54 – Glossário do Negócio ........................................................................................... 78 Tabela 55 – Especificação do Requisito definir entidade a ser consultada .............................. 78 Tabela 56 – Especificação do Requisito definir os filtros de pesquisa .................................... 79 Tabela 57 – Especificação do Requisito definir os campos das entidades ............................... 80 Tabela 58 – Especificação do Requisito definir quais campos pertence a cada filtro .............. 80 Tabela 59 – Especificação do Requisito validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface ................................................................... 81 Tabela 60 – Especificação do Requisito criar SQL de consulta com base nos parâmetros informados ......................................................................................................................... 81 Tabela 61 – Especificação do Requisito Definir se o campo deverá realizar uma consulta extra ........................................................................................................................................... 82 Tabela 62 – Especificação do Requisito Checar se existe entidade/view no banco de dados .. 82 Tabela 63 – Especificação do Requisito Definir a consulta que o campo deverá executar para apresentar os dados ............................................................................................................ 83 Tabela 64 – Especificação do Requisito Permitir a montagem de uma interface dinamicamente para pesquisas e parâmetros de relatório .................................................. 84 Tabela 65 – Lista de Casos de Uso ........................................................................................... 84 Tabela 66 – Detalhamento Caso de Uso UC01 ........................................................................ 88 Tabela 67 – Detalhamento Caso de Uso UC02 ........................................................................ 92 Tabela 68 – Detalhamento Caso de Uso UC03 ........................................................................ 95 Tabela 69 – Detalhamento Caso de Uso UC04 ........................................................................ 97 Tabela 70 – Detalhamento Caso de Uso UC05 ...................................................................... 100 Tabela 71 – Detalhamento Caso de Uso UC06 ...................................................................... 102 Tabela 72 – Detalhamento Caso de Uso UC07 ...................................................................... 105 Tabela 73 – Detalhamento Caso de Uso UC08 ...................................................................... 107 Tabela 74 – Detalhamento Caso de Uso UC09 ...................................................................... 110 Tabela 75 – Detalhamento Caso de Uso UC10 ...................................................................... 112 Tabela 76 – Detalhamento Caso de Uso UC11 ...................................................................... 115 Tabela 77 – Detalhamento Caso de Uso UC12 ...................................................................... 118 Tabela 78 – Caso de Teste – Configurar framework .............................................................. 137 Tabela 79 – Caso de Teste – Preencher campo do tipo texto ................................................. 137 Tabela 80 – Caso de Teste – Preencher campo do tipo data .................................................. 138 Tabela 81 – Caso de Teste – Preencher campo do tipo combobox ........................................ 138 Tabela 82 – Caso de Teste – Preencher campo do tipo checkbox .......................................... 139 Tabela 83 – Caso de Teste – Preencher campo do tipo radio button ..................................... 139 20 Tabela 84 – Caso de Teste – Preencher campo do tipo lista de adição .................................. 140 Tabela 85 – Caso de Teste – Preencher campo do tipo lista de adição .................................. 140 1.2 Lista de Figuras Figura 1 – Diagrama Geral de Caso de Uso ............................................................................. 85 Figura 2 – Diagrama de Atividade – UC01 Configurar ........................................................... 89 Figura 3 – Diagrama de Atividade – UC01 Alterar.................................................................. 90 Figura 4 – Diagrama de Atividade – UC02 Conectar .............................................................. 93 Figura 5 – Diagrama de Atividade – UC03 Conectar .............................................................. 96 Figura 6 – Diagrama de Atividade – UC04 Instanciar ............................................................. 98 Figura 7 – Diagrama de Atividade – UC05 Configurar ......................................................... 100 Figura 8 – Diagrama de Atividade – UC06 Configurar ......................................................... 103 Figura 9 – Diagrama de Atividade – UC07 Checar entidade/view ........................................ 105 Figura 10 – Diagrama de Atividade – UC08 Validar tipo campo .......................................... 108 Figura 11 – Diagrama de Atividade – UC09 Criar SQL ........................................................ 110 Figura 12 – Diagrama de Atividade – UC10 Consultar ......................................................... 113 Figura 13 – Diagrama de Atividade – UC11 Retornar resultado – Busca ............................. 115 Figura 14 – Diagrama de Atividade – UC11 Retornar resultado – Relatório ........................ 116 Figura 15 – Diagrama de Atividade – UC12 Realizar consulta extra – Buscar Textfield ..... 118 Figura 16 – Diagrama de Atividade – UC12 Realizar consulta extra – Buscar Lista de Adição ......................................................................................................................................... 119 Figura 17 – Diagrama de Atividade – UC12 Realizar consulta extra – Remover Lista de Adição .............................................................................................................................. 119 Figura 18 – Projeto Conceitual ............................................................................................... 120 Figura 19 – Projeto Lógico ..................................................................................................... 120 Figura 20 – Diagrama de Componentes ................................................................................. 123 Figura 21 – Diagrama de Implantação ................................................................................... 124 Figura 22 – Diagrama de Pacotes Arquitetural ...................................................................... 125 Figura 23 – Diagrama de Classe Conceitual .......................................................................... 126 Figura 24 – DC de Projeto - Realizar Conexões .................................................................... 126 Figura 25 – DC de Projeto - Execução do Componente......................................................... 127 Figura 26 – DC de Projeto – Retorno do Resultado ............................................................... 128 Figura 27 – DC de Projeto – Realizar consulta extra ............................................................. 129 Figura 28 – Execução do Componente ................................................................................... 130 Figura 29 – Realizar consulta extra ........................................................................................ 130 Figura 30 – Escolha consulta extra ......................................................................................... 131 Figura 31 – Retorno do Resultado – BUSCA......................................................................... 132 Figura 32 – Retorno do Resultado – RELATÓRIO ............................................................... 133 Figura 33 – Interface de pesquisa ........................................................................................... 134 Figura 34 – Diagrama de Classes ........................................................................................... 135 Figura 35 – Cronograma de atividades proposto no projeto do Trabalho de Conclusão de Curso ................................................................................................................................ 143 Figura 36 – Pôster – Framework de Aplicação ...................................................................... 144 Figura 37 – Configuração Tomcat .......................................................................................... 145 Figura 38 – Tabela de Pesquisa .............................................................................................. 146 21 Figura 39 – Tabela de Entidades ............................................................................................ 147 Figura 40 – Tabela de Campos ............................................................................................... 147 Figura 41 – Tabela de Filtro ................................................................................................... 148 Figura 42 – Tabela de vinculo entre Campos e Filtro ............................................................ 148 Figura 43 – Tabela de vinculo entre Filtro e Pesquisa ........................................................... 149 Figura 44 – Configuração do uso do componente no web.xml da aplicação web ................. 150 Figura 45 – Chamada ao componente da interface................................................................. 151 22 2 Dicionário do Projeto 2.1 Lista de Abreviaturas nos Artefatos do Documento Artefato Termo ou Sigla Significado Elementos de Dados D.C.C Características Conceitual no Diagrama de Classes Elementos de Dados e Elementos de Comportamento D.C.P Características no Diagrama de Classes de Projeto Elementos de Dados L.T Características no Layout de Tabela Elementos de Dados e Elementos de Comportamento Item Identificador único no artefato do diagrama Elementos de Dados e Artefato Elemento do diagrama Elementos de Comportamento Elementos de Comportamento Assinatura Assinatura do método Cronograma Atividade Atividade que precisa ser realizada. Cronograma Previsão Data planejada concluída. Cronograma Entrega Data em que a atividade foi realmente entregue. para entrega da atividade Tabela 2 – Lista de Abreviaturas nos Artefatos do Documento 2.2 Elementos de Dados Artefato Item id Entidades Características Identificador da entidade da aplicação para o D.C.C Numérico D.C.P Integer L.T Int auto_increment 23 framework. nome Nome da entidade na aplicação que utilizará o framework. Texto String Varchar isView Define se a entidade é uma view no banco original da aplicação. Numérico Byte Tinyint Tabela 3 – Elementos de Dados – Entidades Artefato Item id Campos Características D.C.C D.C.P Integer L.T Identificador do campo da aplicação para o framework. Numérico Int nome Nome do campo na aplicação que utilizará o framework. Texto String Varchar consulta SQL para trazer dados e preencher o campo na tela ou realizar a consulta extra. Texto String Varchar tipoCamp oBanco Tipo do campo no banco de dados que utiliza o framework. Numérico Enum int tipoCamp oInterface Tipo do campo que deseja na interface. Numérico Enum int tipoOpera dor Tipo do operador que será utilizado na consulta para comparação do valor. Numérico Enum int auto_increment 24 idEntidad e Id da entidade a qual pertence. Numérico Integer int Tabela 4 – Elementos de Dados - Campos Artefato Filtro Item id Características Identificador do filtro. D.C.C Numérico D.C.P Integer L.T Int auto_increment label Nome do filtro que será apresentado na interface gráfica. Texto String Varchar negar Possibilidade de inverter o operador no momento da consulta. Numérico Byte Tinyint campos Lista de campos que pertencem ao filtro. Lista List Entidade Tabela 5 – Elementos de Dados – Filtro Artefato filtro_has_campos Item Características D.C.C D.C.P L.T campos Lista de campos que pertencem ao filtro. - - filtro_idFiltro - - - - campos_idCampo Tabela 6 – Elementos de Dados – Filtro_has_campos 25 Artefato Pesquisa Item id Características Identificador da pesquisa. D.C.C Numérico D.C.P Integer L.T Int auto_increment descricao Descrição da pesquisa que será apresentado na interface gráfica. Texto String Varchar ordemPes quisa Como o resultado da pesquisa deverá ser ordenado.(SQL) Texto String Varchar filtros Lista de filtros que pertencem à pesquisa. Lista List Entidade Tabela 7 – Elementos de Dados - Pesquisa Artefato pesquisa_has_filtro Item Características D.C.C D.C.P L.T filtros Lista de filtros que pertencem à pesquisa. - - pesquisa_idPesquisa - - - - filtro_idFiltro Tabela 8 – Elementos de Dados – Pesquisa_has_filtro 26 2.3 Elementos de Comportamento Artefato Item id Entidades Características Get and Set do atributo. Assinatura getId() setId(Integer id) nome Get and Set do atributo. getNome() setNome(String nome) isView Get and Set do atributo. getIsView() setIsView(Byte isView) Tabela 9 – Elementos de Comportamento Entidades Artefato Item id Campos Características Get and Set do atributo. Assinatura getId() setId(Integer id) nome Get and Set do atributo. getNome() setNome(String nome) consulta Get and Set do atributo. getConsulta() setConsulta(String consulta) tipoCamp oBanco Get and Set do atributo. getTipoCampoOperador() setTipoCampoOperador(TipoCampo tipoCampoBanco) 27 tipoCamp oInterface Get and Set do atributo. getTipoCampoInterface() setTipoCampoInterface(TipoCampo tipoCampoInterface) tipoOpera dor Get and Set do atributo. getTipoOperador() setTipoOperador(TipoOperador tipoOperador) idEntidad e Get and Set do atributo. getIdEntidade() setIdEntidade(Integer idEntidade) Tabela 10 – Elementos de Comportamento Campos Artefato Item id Filtro Características Get and Set do atributo. Assinatura getId() setId(Integer id) label Get and Set do atributo. getLabel() setLabel(String label) negar Get and Set do atributo. getNegar() setNegar(Byte negar) campos Get and Set do atributo. getCampos() setCampos(List<Campos> campos) Tabela 11 – Elementos de Comportamento Filtro Artefato Item id Pesquisa Características Get and Set do atributo. Assinatura getId() 28 setId(Integer id) descrição Get and Set do atributo. getDescricao() setDescricao(String descricao) ordemPes quisa Get and Set do atributo. getOrdemPesquisa() setOrdemPesquisa(String ordemPesquisa) filtros Get and Set do atributo. getFiltros() setFiltros(List<Filtros> filtros) Tabela 12 – Elementos de Comportamento Pesquisa Artefato Item id TipoCampo Características Assinatura Get and Set do atributo. getId() Representa o valor do banco de dados. setId(Integer id) Get and Set do atributo. getTipo() Representa o valor utilizado no html, para os utilizados na interface gráfica (tela). setTipo(String tipo) TEXTFIE LD Atributo que representa o tipo do campo na tela. TEXTFIELD COMBO BOX Atributo que representa o tipo do campo na tela. COMBOBOX CHECKB OX Atributo que representa o tipo do campo na tela. CHECKBOX RADIO_ BUTTON Atributo que representa o tipo do campo na tela. RADIO_BUTTON tipo 29 LISTA_A DD Atributo que representa o tipo do campo na tela. LISTA_ADD TEXTUA IS Atributo que representa o tipo do campo no banco. TEXTUAIS NUMERI COS Atributo que representa o tipo do campo no banco. NUMERICOS DATA Atributo que representa o tipo do campo na tela e no banco. DATA Tabela 13 – Elementos de Comportamento TipoCampo Artefato Item id TipoOperador Características Assinatura Get and Set do atributo. getId() Representa o valor do banco de dados. setId(Integer id) Get and Set do atributo. getOperador() Representa o valor utilizado no SQL. setOperador(String operador) IGUAL Atributo que representa o operador utilizado na montagem do SQL para o campo. TEXTFIELD LIKE Atributo que representa o operador utilizado na montagem do SQL para o campo. LIKE DIFERE NTE Atributo que representa o operador utilizado na montagem do SQL para o campo. DIFERENTE MAIOR Atributo que representa o operador utilizado na montagem do SQL para o campo. MAIOR operador 30 MENOR Atributo que representa o operador utilizado na montagem do SQL para o campo. MENOR BETWEE N Atributo que representa o operador utilizado na montagem do SQL para o campo. BETWEEN NOT Atributo que representa o operador utilizado na montagem do SQL para o campo. NOT Tabela 14 – Elementos de Comportamento TipoOperador Artefato Item EntidadesDAO Características Assinatura buscaEnti dadeById Retorna o objeto de acordo com o id passado por parâmetro. buscaEntidadeById(Integer idEntidade) : Entidades doGetJD BCViews Verifica se o schema passado como parâmetro é uma view. doGetJDBCViews(String schemaName) : Boolean Tabela 15 – Elementos de Comportamento EntidadesDAO Artefato Item CamposDAO Características Assinatura getCampo sByFiltro Retorna a lista de campos do filtro passado como parâmetro. getCamposByFiltro(Integer idFiltro) : List<Campos> getCampo ById Retorna o objeto de acordo com o id passado por parâmetro. getCampoById(Integer idCampo) : Campos 31 executarC onsultaCa mpo Executa a consulta no banco de dados cliente do campo e retorna a lista de dados. executarConsultaCampo(String consulta) : List<Object> setTipoCa mpo Seta o tipo do campo nos atributos tipoCampo e tipoInterface. setTipoCampo(Integer tipoCampo) : TipoCampo setTipoO perador Seta o tipo do campo no atributo tipoOperador. setTipoOperador(Integer tipoOperador) : TipoOperador Tabela 16 – Elementos de Comportamento CamposDAO Artefato Item FiltroDAO Características Assinatura camposD AO Representa uma instancia de CamposDAO. camposDAO getFiltros byPesquis a Retorna a lista de filtros da pesquisa passada como parâmetro. getFiltrosbyPesquisa(Integer idPesquisa) : List<Filtros> getFiltroB yId Retorna o objeto de acordo com o id passado por parâmetro. getFiltroById(Integer idFiltro) : Filtros getCampo sFiltro Retorna a lista de campos do filtro passado como parâmetro. getCamposFiltro(Integer idFiltro) : List<Campos> Tabela 17 – Elementos de Comportamento FiltroDAO Artefato Item PesquisaDAO Características Assinatura 32 filtrosDA O Representa uma instancia de FiltrosDAO. filtrosDAO getPesqui saById Retorna o objeto de acordo com o id passado por parâmetro. getPesquisaById(Integer idPesquisa) : Pesquisa getPesqui saByDesc ricao Retorna o objeto de acordo com a descrição passada por parâmetro. getPesquisaByDescricao(String nomePesquisa) : Pesquisa getFiltros Pesquisa Retorna a lista de filtros da pesquisa passada como parâmetro. getFiltrosPesquisa(Integer idPesquisa) : List<Filtros> Tabela 18 – Elementos de Comportamento PesquisaDAO Artefato Item select Select Características Get and Set do atributo. Assinatura getSelect() setSelect(String select) parameter Get and Set do atributo. getParameters() setParameters(List<Object>) Tabela 19 – Elementos de Comportamento Select Artefato Item value ParametersSQL Características Assinatura Get and Set do atributo. getValue() Representa o valor do campo para montagem do SQL. setValue(String id) 33 SELECT Atributo que representa a constante utilizada na montagem do SQL. SELECT FROM Atributo que representa a constante utilizada na montagem do SQL. FROM WHERE Atributo que representa a constante utilizada na montagem do SQL. WHERE ORDER_ BY Atributo que representa a constante utilizada na montagem do SQL. ORDER_BY SPACE Atributo que representa um espaço para a montagem do SQL. SPACE COMMA Atributo que representa uma vírgula para a montagem do SQL. COMMA OR Atributo que representa a constante utilizada na montagem do SQL. OR AND Atributo que representa a constante utilizada na montagem do SQL. AND PARENT Atributo que representa a abertura de um HESES_L parêntese para a montagem do SQL. EFT PARENTHESES_LEFT PARENT HESES_ RIGHT Atributo que representa o fechamento de um parêntese para a montagem do SQL. PARENTHESES_RIGHT QUERY Atributo que representa os parâmetros da consulta com ? para substituição pelo valor a ser pesquisado na montagem do SQL. QUERY ASTERIS K Atributo que representa um asterisco (*) para a montagem do SQL. ASTERISK 34 QUOTE Atributo que representa uma aspa simples para a montagem do SQL. QUOTE Tabela 20 – Elementos de Comportamento ParametersSQL Artefato Item rightPara meter WhereClauses Características Get and Set do atributo. Assinatura getRightParameter() setRightParameter(String rightParameter) secondRi ghtParam eter Get and Set do atributo. operand Get and Set do atributo. getSecondRightParameter() setSecondRightParameter(String secondRightParameter) getOperand() setOperand(String operand) leftParam eter Get and Set do atributo. getLeftParameter() setLeftParameter(String leftParameter) nextOpera Get and Set do atributo. nd getNextOperand() setNextOperand(String nextOperand) Tipo Get and Set do atributo. getTipo() setTipo(TipoCampo tipo) Tabela 21 – Elementos de Comportamento WhereClauses 35 3 Gerência do Projeto 3.1 Cronograma de Atividades Incremento 1ª Iteração o Definição do projeto a ser desenvolvido o Elaboração do pré-projeto o Conclusão e entrega do pré-projeto 2ª Iteração o Adequação da documentação antiga e especificação dos novos requisitos definidos o Validação dos requisitos o Detalhamento dos casos de uso e validação. 3ª Iteração o Correções necessárias e finalização do projeto. o Entrega do projeto para realização da banca. 4ª Iteração o Implementação dos casos de uso definidos. o Realização de testes Previsão Entrega 08/04/2011 02/06/2011 08/11/2011 13/11/2011 36 3.2 Processos de Desenvolvimento do Software 1. Etapa 1 – Conhecimento do negócio e do domínio da aplicação 1.1. Estudo sobre o projeto proposto através de DMSs anteriores e pesquisas de um modo geral sobre frameworks. 1.2. Objetivo: Não focar no desenvolvimento. Procurar entender os conceitos e o objetivo da solução proposta. 1.3. Problemas encontrados: 1.3.1. Aplicação de domínio genérico. 1.3.2. Aplicação dos conceitos de Orientação a Objetos. 1.3.3. Complexidade do desenvolvimento de um framework. 1.3.4. Criação de interfaces e relatórios gerenciados pelo banco de dados. (regras definidas no banco) 2. Etapa 2 – Definição das funcionalidades do componente do projeto 2.1. Partir do pressuposto que as funcionalidades do componente já foram identificadas. 2.2. Escolher a funcionalidade a ser trabalhada. 2.3. Identificar os atributos da funcionalidade. (repetição) 2.3.1. Identificar o tipo de dado/objeto e tamanho se necessário. 2.4. Identificar os métodos. 2.4.1. Identificar as assinaturas do método. 2.5. Definição da interface da funcionalidade. 2.6. Saídas: interface da funcionalidade definida. 3. Etapa 3 – Levantamento e Análise de Requisitos 3.1. Reunir com o orientador para definir o que o framework deverá fazer. 3.1.1. A partir das necessidades do cliente definir os requisitos do sistema. 3.1.2. Saídas: Atas de reunião, definição dos requisitos e regras de negócio. 3.2. Produção da especificação dos requisitos definidos e adaptação de requisitos anteriores de acordo com a necessidade do projeto. 37 3.2.1. Especificar os requisitos definidos nas reuniões de acordo com a tabela definida. Informar: definição, especificação, regras de negócio associadas, risco e descrição do risco e a interação que será entregue. 3.2.2. Entradas: Atas de reunião, definição dos requisitos e regras de negócio. 3.2.3. Saídas: Especificação dos requisitos, incluindo requisitos não funcionais. Validação dos requisitos e aprovação. 4. Etapa 4 – Definição e Detalhamento dos Casos de Uso 4.1. Definição de casos de uso de acordo com os requisitos aprovados e casos de uso que surjam a partir de outros casos de uso. 4.2. Entradas: Especificação de requisitos e casos de usos anteriores. 4.3. Saídas: Detalhamento dos casos de usos encontrados e definidos, diagramas de atividade por caso de uso, diagrama de caso de uso, diagrama de sequencia e de classe. Validação do detalhamento. 5. Projeto arquitetural 5.1. Entradas: definição das funcionalidades do componente. 5.2. Escolher a funcionalidade a ser trabalhada. (repetição) 5.2.1. Identificar as tabelas necessárias para o funcionamento da funcionalidade. 5.2.2. Identificar os atributos que deverão ser guardados e os seus tipos. O que o usuário deverá informar para que o componente funcione. 5.2.3. Definir os relacionamentos necessários entre as tabelas e as transposições de chaves. 5.3. Saídas: diagrama de componentes e definição de camadas, elaboração do diagrama de classe, diagrama de pacotes, projeto lógico do banco de dados, script. 6. Etapa 5 – Implementação 6.1. Codificação dos casos de uso definidos, detalhados e aprovados. 6.2. Entradas: Análise completa do sistema. 6.3. Saídas: Funcionalidades implementadas e classes de teste elaboradas. Realização dos casos de uso. 7. Testes 7.1. Execução dos testes elaborados. 7.1.1. Entradas: classes de testes elaboradas. 7.1.2. Saídas: execução dos testes e elaboração dos relatórios. 38 8. Treinamento do uso do framework 8.1. Elaboração de um manual para uso do framework. 8.2. Entradas: Framework concluído, ambiente necessário configurado. 8.3. Saídas: Manual com ensinamentos do uso do framework. 9. Manutenção e Evolução 9.1. Correções ou implementação de novos casos de uso. 9.2. Entradas: Framework em uso pelo cliente. 9.3. Saídas: correção de uma funcionalidade já existente ou implementação de novos casos de uso para o framework. 39 3.3 Relatório Semanal de Progresso 3.3.1 Relatório Semanal de Progresso n.º 01 Relatório Semanal de Progresso Período N.º 01 21/02/2011 á 26/02/2011 Atividade Planejada Entrar em contato com o orientador para discutir sobre o projeto a ser desenvolvido. Atividade Realizada Email encaminhado ao orientador informando ausência no período e intenção de marcar reunião. Aguardando contato. Próximo Período 28/02/2011 á 05/03/2011 Planejado para o próximo período Reunião com o orientador para definição do projeto. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 22 - Relatório Semanal de Progresso n.º 01 40 3.3.2 Relatório Semanal de Progresso n.º 02 Relatório Semanal de Progresso Período N.º 02 28/02/2011 á 05/03/2011 Atividade Planejada Reunir-se para definição do projeto. Atividade Realizada Não houve atividade. Próximo Período 07/02/2011 á 12/03/2011 Planejado para o próximo período Entregar termo de aceite ao orientador. Definir o projeto a ser desenvolvido. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 23 - Relatório Semanal de Progresso n.º 02 41 3.3.3 Relatório Semanal de Progresso n.º 03 Relatório Semanal de Progresso Período Atividade Planejada Atividade Realizada N.º 03 07/02/2011 á 12/03/2011 Entregar termo de aceite ao orientador. Definir o projeto a ser desenvolvido. Foi feita a entrega do termo de aceite. Conversamos e definimos que o projeto a ser desenvolvido seria a criação de dois componentes para um framework de aplicação que já vem sendo desenvolvido. Os componentes definidos foram o de pesquisa e parâmetro de relatório. Próximo Período 14/03/2011 á 19/03/2011 Planejado para o próximo período Reunião com o orientador para melhor discutir sobre o projeto proposto. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 24 - Relatório Semanal de Progresso n.º 03 42 3.3.4 Relatório Semanal de Progresso n.º 04 Relatório Semanal de Progresso Período Atividade Planejada Atividade Realizada N.º 04 14/03/2011 á 19/03/2011 Reunir-se com o orientador para discutir sobre o projeto proposto. Foi marcada uma reunião para o dia 14/03, mas por motivos pessoais o orientador não pode comparecer. A reunião foi remarcada para o dia 18/03 onde o orientador apresentou dois componentes a serem desenvolvidos e solicitou que estudasse os DMSs anteriores de formandos que já haviam iniciado o desenvolvimento do framework. No mesmo dia solicitei os DMSs na biblioteca. Consegui os do ano de 2008, dos formandos Joseph e Sandoval. Próximo Período 21/03/2011 á 26/03/2011 Planejado para o próximo período Estudar os DMSs anteriores sobre o projeto e solicitar ao orientador a possibilidade de conseguir os DMSs dos anos mais recentes (2009 e 2010). Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 25 - Relatório Semanal de Progresso n.º 04 43 3.3.5 Relatório Semanal de Progresso n.º 05 Relatório Semanal de Progresso Período N.º 05 21/03/2011 á 26/03/2011 Atividade Planejada Estudar os DMSs anteriores sobre o projeto e solicitar ao orientador a possibilidade de conseguir os DMSs dos anos mais recentes (2009 e 2010). Atividade Realizada Após ler os DMSs, entrei em contato com o orientador para apresentar o que já havia lido. O orientador informou que procuraria conseguir os DMSs mais recentes. Foi acordado que o desenvolvimento dois componentes seria, inicialmente, possível e que seria iniciada a elaboração do pré-projeto. Próximo Período 28/03/2011 á 02/04/2011 Planejado para o próximo período Avançar na preparação do pré-projeto visando compensar os atrasos. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 26 - Relatório Semanal de Progresso n.º 05 44 3.3.6 Relatório Semanal de Progresso n.º 06 Relatório Semanal de Progresso Período N.º 06 28/03/2011 á 02/04/2011 Atividade Planejada Avançar na preparação do pré-projeto visando compensar os atrasos. Atividade Realizada Inicio da elaboração do pré-projeto Próximo Período 04/04/2011 á 09/04/2011 Planejado para o próximo período Reunir-se com o orientador para apresentar uma prévia do pré-projeto e definir algo que esteja faltando. Entregar o pré-projeto. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 27 - Relatório Semanal de Progresso n.º 06 45 3.3.7 Relatório Semanal de Progresso n.º 07 Relatório Semanal de Progresso Período N.º 07 04/04/2011 á 09/04/2011 Atividade Planejada Reunir-se com o orientador para apresentar uma prévia do pré-projeto e definir os requisitos. Entregar o pré-projeto. Atividade Realizada Reunião realizada com o orientador. Discussão sobre o que deveria ser corrigido. Discussão sobre os requisitos a serem definidos. Próximo Período 11/04/2011 á 16/04/2011 Planejado para o próximo período Definição do processo de desenvolvimento do projeto. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 28 - Relatório Semanal de Progresso n.º 07 46 3.3.8 Relatório Semanal de Progresso n.º 08 Relatório Semanal de Progresso N.º 08 Períodos 02/05/2011 á 07/05/2011 Atividade Planejada Definição do processo de desenvolvimento do projeto. Atividade Realizada Processo de definição dos componentes do projeto. Definição dos artefatos do componente de pesquisa. Próximo Período 09/05/2011 á 14/05/2011 Planejado para o próximo período Continuar a definição do processo de desenvolvimento. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 29 - Relatório Semanal de Progresso n.º 08 47 3.3.9 Relatório Semanal de Progresso n.º 09 Relatório Semanal de Progresso N.º 09 Períodos 09/05/2011 á 14/05/2011 Atividade Planejada Continuar a definição do processo de desenvolvimento. Tirar dúvidas sobre o componente de relatórios. Atividade Realizada Não houve atividades. Próximo Período 16/05/2011 á 21/05/2011 Planejado para o próximo período Continuar a definição do processo de desenvolvimento. Tirar dúvidas sobre o componente de relatórios. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 30 - Relatório Semanal de Progresso n.º 09 48 3.3.10 Relatório Semanal de Progresso n.º 10 Relatório Semanal de Progresso N.º 10 Períodos 16/05/2011 á 21/05/2011 Atividade Planejada Continuar a definição do processo de desenvolvimento. Tirar dúvidas sobre o componente de relatórios. Atividade Realizada Reunião com o orientador, dúvidas sobre o componente de relatório sanadas. Próximo Período 23/05/2011 á 28/05/2011 Planejado para o próximo período Elaboração do processo para definição da estrutura do banco de dados para os componentes. Definição da estrutura do banco para o componente de relatório. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 31 - Relatório Semanal de Progresso n.º 10 49 3.3.11 Relatório Semanal de Progresso n.º 11 Relatório Semanal de Progresso N.º 11 Períodos 23/05/2011 á 28/05/2011 Atividade Planejada Elaboração do processo para definição da estrutura do banco de dados para os componentes. Definição da estrutura do banco para o componente de relatório. Atividade Realizada Elaboração do processo para definição da estrutura do banco de dados para os componentes. Definição da estrutura do banco para o componente de relatório. Próximo Período - Planejado para o próximo período Definir o processo de especificação de requisitos e inicia-lo. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 32 - Relatório Semanal de Progresso n.º 11 50 3.3.12 Relatório Semanal de Progresso n.º 12 Relatório Semanal de Progresso N.º 12 Períodos 29/08/2011 á 03/09/2011 Atividade Planejada Definir o processo de especificação de requisitos e inicia-lo. Definição do processo de especificação de requisitos. Atividade Realizada Reunião com o orientador e definição de que os componentes suportariam um novo tipo, lista de adição, a possibilidade de negar o valor preenchido em um campo da tela e os retornos de cada componente. Próximo Período - Planejado para o próximo período Realizar a especificação de requisitos. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 33 - Relatório Semanal de Progresso n.º 12 51 3.3.13 Relatório Semanal de Progresso n.º 13 Relatório Semanal de Progresso Períodos 05/09/2011 á 10/09/2011 Atividade Planejada Realizar a especificação de requisitos. Atividade Realizada Especificação dos requisitos. Criação de um projeto no Google Code para manter o repositório dos arquivos do projeto de graduação e os logs das atividades. Próximo Período - Planejado para o próximo período Definição dos casos de uso e especificação. Avaliação do Período de Trabalho pelo orientador N.º 13 Ótimo Bom Regular Ruim Tabela 34 - Relatório Semanal de Progresso n.º 13 52 3.3.14 Relatório Semanal de Progresso n.º 14 Relatório Semanal de Progresso N.º 14 Períodos 19/09/2011 á 24/09/2011 Atividade Planejada Definição dos casos de uso e especificação. Atividade Realizada Preenchimento da ata de reunião realizada no dia 02/09/2011. Definição dos casos de uso e criação do diagrama de caso de uso. Próximo Período 26/09/2011 á 01/10/2011 Planejado para o próximo período Detalhamento dos casos de uso. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 35 - Relatório Semanal de Progresso n.º 14 53 3.3.15 Relatório Semanal de Progresso n.º 15 Relatório Semanal de Progresso Períodos 26/09/2011 á 01/10/2011 Atividade Planejada Detalhamento dos casos de uso. N.º 15 Alteração da modelagem do banco de dados. Início do detalhamento dos casos de uso. Atividade Realizada Reunião com orientador em que foi definido que colocaríamos exemplos nas especificações dos requisitos. Exemplos inseridos. Orientador sugeriu que começasse o diagrama de classes, os modelos de dados e testes, deixando somente a realização de casos de uso para fazermos. Dúvidas quanto ao preenchimento do dicionário do projeto, contratos de operação dos casos de uso e se pode existir algum caso de uso que não foi definido. Orientador irá enviar exemplos para o preenchimento e verificar a existência de mais algum caso de uso. Dúvida quanto às exceções definidas para o caso de uso. São realmente exceções e não fluxos alternativos. Definido que a aplicação será realmente web. Próximo Período 03/10/2011 á 08/10/2011 Planejado para o próximo período Finalização do detalhamento dos casos de uso. Diagrama de classes, modelos de dados e testes. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 36 - Relatório Semanal de Progresso n.º 15 54 3.3.16 Relatório Semanal de Progresso n.º 16 Relatório Semanal de Progresso N.º 16 Períodos 03/10/2011 á 08/10/2011 Atividade Planejada Finalização do detalhamento dos casos de uso. Diagrama de classes, modelos de dados e testes. Continuação do detalhamento dos casos de uso. Criação do ER do banco de dados e do script. Atividade Realizada Início da programação com a realização dos casos de uso 1 e 2. Elaboração do apêndice A que apresenta ao usuário a configuração do caminho dos arquivos de conexão com o banco de dados. Reunião com orientador, dúvidas quanto ao preenchimento do dicionário do projeto, contratos de operação dos casos de uso e se pode existir algum caso de uso que não foi definido, ainda não sanadas. Orientador irá enviar exemplos para o preenchimento. Próximo Período 10/10/2011 á 15/10/2011 Planejado para o próximo período Finalização do detalhamento dos casos de uso. Diagrama de classes, modelos de dados e testes. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 37 - Relatório Semanal de Progresso n.º 16 55 3.3.17 Relatório Semanal de Progresso n.º 17 Relatório Semanal de Progresso N.º 17 Períodos 10/10/2011 á 15/10/2011 Atividade Planejada Finalização do detalhamento dos casos de uso. Diagrama de classes, modelos de dados e testes. Finalização da modelagem de dados. Finalização do detalhamento dos casos de uso. Criação dos diagramas de atividade, componentes, implantação e pacotes. Atividade Realizada Realização dos casos de uso faltando apenas a interface gráfica. Programação para montagem da tela de pesquisa. Não será possível realizar as realizações dos casos de uso como planejado. Nova definição de programação. Foram feitos testes em uma nova maneira de implementação que irei adotar. Próximo Período Planejado para o próximo período Avaliação do Período de Trabalho pelo orientador 10/10/2011 á 15/10/2011 Alterar os casos de uso, os diagramas e a realização dos casos de uso. Reiniciar a programação dos casos de uso. Ótimo Bom Regular Ruim Tabela 38 - Relatório Semanal de Progresso n.º 17 56 3.3.18 Relatório Semanal de Progresso n.º 18 Relatório Semanal de Progresso Períodos Atividade Planejada N.º 18 17/10/2011 á 22/10/2011 Alterar os casos de uso, os diagramas e a realização dos casos de uso. Reiniciar a programação dos casos de uso. Casos de uso alterados para a nova programação. Alteração dos diagramas de acordo com a necessidade da nova programação. Atividade Realizada Reunião com orientador. As dúvidas quanto ao dicionário do projeto foram sanadas. Foi definido que não seria feita a definição dos valores padrões para os campos. Quanto à implementação seria apresentado à montagem da tela até a próxima sexta, dia 28/10. Preenchimento das atas de reunião conforme solicitado. Inicio da definição do dicionário do projeto. Próximo Período 24/10/2011 á 29/10/2011 Planejado para o próximo período Implementação dos casos de uso. Criação dos casos de teste. Criação do apêndice B que será usando da realização do caso de teste. Criação da conclusão. Conclusão do dicionário do projeto. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 39 - Relatório Semanal de Progresso n.º 18 57 3.3.19 Relatório Semanal de Progresso n.º 19 Relatório Semanal de Progresso N.º 19 Períodos 24/10/2011 á 29/10/2011 Atividade Planejada Implementação dos casos de uso. Criação dos casos de teste. Criação do apêndice B que será usando da realização do caso de teste. Criação da conclusão. Conclusão do dicionário do projeto. Atividade Realizada Inicio da implementação e conclusão do dicionário do projeto. Criação dos casos de teste. Criação do apêndice B que será usando da realização do caso de teste. Criação da conclusão. Próximo Período - Planejado para o próximo período Continuação da implementação dos casos de uso. Avaliação do Período de Trabalho pelo orientador Ótimo Bom Regular Ruim Tabela 40 - Relatório Semanal de Progresso n.º 19 58 4 Modelagem do Negócio 4.1 Ata de Reunião 4.1.1 Ata n.º 01 ATA da Reunião n.º 01 Data Horário Local 18/03/2011 Das 20h00m às 20h30m Sala de aula do 4º ano de Sistemas de Informação na UEG-UnUCET Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião foi realizada no local e no horário agendado. Ao iniciar a reunião o senhor Leandro propôs o desenvolvimento de dois componentes para o framework de aplicação. A criação de um componente de pesquisa e de um componente de parâmetro de relatório que fosse gerenciado pelo banco de dados. Isso facilitaria para o desenvolvedor de software que utilizasse o framework nas mudanças das interfaces e views de relatórios sem a necessidade de recompilar as classes do sistema. O orientador Leandro solicitou que fossem estudados os DMSs anteriores relativos a esse mesmo projeto dos alunos formandos dos anos de 2008, 2009 e 2010. A preocupação inicial é o entendimento do projeto e dos conceitos relacionados e o esclarecimento de dúvidas. Observação Importante O objetivo da reunião foi apresentar o que o projeto a ser desenvolvido envolveria e busca de conhecimento sobre o projeto e seu domínio. Requisitos Registrados Os componentes deverão ser gerenciados pelo banco de dados. Tabela 41 – Ata de Reunião n.º 01 59 4.1.2 Ata n.º 02 ATA da Reunião n.º 02 Data Horário Local 07/04/2011 Das 20h30m às 21h00m Ateliê de Arquitetura na UEG-UnUCET Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião foi realizada no local combinado. O horário da reunião foi das 21h30m às 22h10m. Ao iniciar a reunião o senhor Leandro verificou o que já havia sido desenvolvido para o pré-projeto a ser entregue. Foram realizadas algumas correções. Foi definido que não utilizaríamos o termo “reutilização de código”, devido ao fato de estarmos desenvolvendo um framework que reutilizará tanto código quanto interface, ou seja, reutilizará o projeto. A reutilização de um framework possui maior abrangência do que apenas o reuso de código. Acordamos que o framework seria capaz de trabalhar com views no banco de dados, e que existiria uma entidade que guardaria o SQL da tabela ou a view, no caso componente de relatório. Poderíamos também utilizar o próprio componente de pesquisa no componente de parâmetro de relatório. Quanto a isso, o senhor Leandro informou que possui um framework desenvolvido por ele que reutiliza os componentes, como sugeriu, só que as regras ainda estão no código-fonte, e não gerenciadas pelo banco de dados. Resolvemos que ainda não iriamos definir a linguagem a ser utilizada no desenvolvimento, assim como o banco de dados a ser utilizado. Observação Importante O objetivo da reunião foi verificar o andamento do pré-projeto e iniciar a definição de requisitos e regras de negócio do sistema. Requisitos Registrados 60 Definir entidade a ser consultada Definir campos da entidade pelo qual deseja consultar Definir o tipo do campo na interface Definir a quais campos da entidade o campo da interface deve consultar Definir o tipo da consulta a ser executada para os campos da interface Criar SQL de consulta com base nos parâmetros informados Criar view no banco de dados Checar se existe entidade/view no banco de dados Tabela 42 – Ata de Reunião n.º 02 61 4.1.3 Ata n.º 03 ATA da Reunião n.º 03 Data Horário Local 02/05/2011 Das 21h00m às 22h30m Sala de aula do 4º ano de Sistemas de Informação na UEG-UnUCET Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião foi realizada no horário e no local combinado. Ao iniciar a reunião acordamos que seguiríamos um processo de software bem definido. Para isso, iriamos definir os processos. Um processo já havia sido definido. Como a parte de conhecimento do negócio já havia sido realizada, iniciamos com a definição dos componentes do projeto. Foi definido no processo: Definição dos componentes do projeto 1.1. Partir do pressuposto que os componentes já foram identificados. 1.2. Escolher o componente a ser trabalhado. 1.3. Identificar os atributos do componente. (repetição) 1.3.1. Identificar o tipo de dado/objeto e tamanho se necessário. 1.4. Identificar os métodos. 1.4.1. Identificar as assinaturas do método. 1.5. Definição da interface do componente. 1.6. Saídas: interface do componente definida. Após definir o processo realizamos a definição do componente de pesquisa. Componente de Pesquisa o Conexão com Banco de Dados o Entidade do banco 62 Nome da entidade o Lista de campos Titulo do campo (label) Tipo de controle de interface Tipo do campo no banco Critério pesquisa (na consulta) Critério exibição (tela) Ordem de pesquisa Ordem de exibição o Métodos do componente Conectar (Connection conexao): boolean Executar (nome componente) configurarInterface() - campos do componente exibirJanela() realizarConsulta() – resultado da consulta getResultado o Interface do componente Executar getResultado Talvez continuaríamos a definição do processo no outro dia. Observação Importante O objetivo da reunião foi definir o processo de desenvolvimento de software. Requisitos Registrados Nenhum requisito registrado. Tabela 43 – Ata de Reunião n.º 03 63 4.1.4 Ata n.º 04 ATA da Reunião n.º 04 Data Horário Local 17/05/2011 Das 21h30m às 22h30m Sala de aula do 4º ano de Sistemas de Informação na UEG-UnUCET Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião foi realizada no local combinado. O horário da reunião foi das 21h30m às 22h10m. Ao iniciar a reunião apresentei ao professor que ainda tinha dúvidas no componente de relatórios do framework. O professor fez alguns desenhos, primeiro exemplificando como seria a visão do usuário final, com os campos de pesquisa disponíveis. Ao clicar no botão seria executado um select ou uma view e seria apresentado o relatório para o usuário, com a utilização de uma ferramenta de relatórios que montasse o resultado da consulta. Depois fomos para a visão do programador, o usuário. Em que ele teria que definir, via banco de dados, um relatório com cada campo com um label e um tipo. E via programação chamar a execução do componente para renderização. Por último, a visão do framework, o componente em si. O componente teria que montar o SQL, associar o dataset ao relatório e exibir a janela montada na página. Com essas as discussões sobre o componente de parâmetro de relatório surgiram mais algumas dúvidas sobre as views. Foi acordado que o sistema trabalharia com as views como se fossem entidades, sendo possível pesquisar os dados dentro de uma view. Para melhores esclarecimentos, o senhor Leandro sugeriu que eu definisse o processo de desenvolvimento de software para a arquitetura do banco de dados de cada componente e montasse a arquitetura para o componente de relatório. Observação Importante O objetivo da reunião foi esclarecer dúvidas sobre o componente de relatório. Requisitos Registrados Nenhum requisito registrado. Tabela 44 – Ata de Reunião n.º 04 64 4.1.5 Ata n.º 05 ATA da Reunião n.º 05 Data Horário Local 02/09/2011 Das 20h00m às 21h00m Sala dos professores na UEG-UnUCET Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião ocorreu conforme combinado. Durante a reunião foi decidido que a interface gráfica suportaria mais um tipo de campo além de text, checkbox, radio button e combobox, que seria a lista de adição. O usuário poderia digitar um texto livre em um campo do tipo text e incluir na listagem ou selecionar um texto já inserido na listagem e remover. Também foi acordado que o usuário poderia negar a condição colocada na tela. Ao invés de pesquisar pelo que está colocando no campo, seria pesquisar o que não foi preenchido. Decidimos que o componente de pesquisa (formulário) retornaria uma chave primária (que representa o registro pesquisado) e que o relatório retornaria uma string que representa o select gerado dinamicamente pelo componente. Nesse último caso, o desenvolvedor poderia executar o SQL e manipular os dados retornados montando um relatório em pdf (por exemplo). Observação Importante Cada campo da tela será pesquisado no select por „and‟. Os dados inseridos na caixa de seleção serão pesquisados por „or‟. Requisitos Registrados Nenhum requisito registrado. Tabela 45 – Ata de Reunião n.º 05 65 4.1.6 Ata n.º 06 ATA da Reunião n.º 06 Data Horário Local 01/10/2011 Das 10h00m às 11h00m Online – mensagens instantâneas Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião ocorreu conforme combinado. Na reunião, o DMS preenchido até o momento foi enviado para o professor. O orientador realizou uma rápida avaliação e sugeriu que colocasse exemplos de preenchimento nas especificações dos requisitos devido à complexidade de entendimento do detalhamento. Sugeriu também que começasse o diagrama de classes, os modelos de dados e testes, deixando somente a realização de casos de uso para fazermos posteriormente. Informei que possuía dúvidas quanto ao preenchimento do dicionário do projeto, contratos de operação dos casos de uso e se poderia existir algum caso de uso que não foi definido. Orientador informou que irá enviar exemplos para o preenchimento e avaliar o DMS enviando um feedback até o início da próxima semana. No detalhamento dos casos de uso coloquei algumas exceções, mas estava com dúvida quanto a serem realmente exceções ou fluxos alternativos. Orientador verificou e informou que são realmente exceções. Estava com dúvidas quanto a fazer uma aplicação desktop ou web devido as tecnologias que poderia utilizar. Possuo mais facilidade em utilizar html e servlet do que o swing. Definido, então, que a aplicação será realmente web. Foi decidido que seria desenvolvido um único componente com as funcionalidades de pesquisa e parâmetro de relatório. Observação Importante A aplicação será web. O objetivo da reunião foi sanar as dúvidas quanto ao preenchimento do DMS. Requisitos Registrados Nenhum requisito registrado. Tabela 46 – Ata de Reunião n.º 06 66 4.1.7 Ata n.º 07 ATA da Reunião n.º 07 Data Horário Local 08/10/2011 Das 10h00m às 11h00m Online – mensagens instantâneas Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião ocorreu conforme combinado. O DMS foi enviado anteriormente para que o orientador pudesse avaliar. Informei novamente sobre as dúvidas quanto ao preenchimento do dicionário do projeto, contratos de operação dos casos de uso e se poderia existir algum caso de uso que não foi definido, pois ainda não havia recebido o feedback. Orientador informou que irá enviar exemplos para o preenchimento e avaliar o DMS enviando o feedback. Observação Importante O objetivo da reunião foi sanar as dúvidas quanto ao preenchimento do DMS. Requisitos Registrados Nenhum requisito registrado. Tabela 47 – Ata de Reunião n.º 07 4.1.8 Ata n.º 08 ATA da Reunião n.º 08 Data Horário Local 22/10/2011 Das 21h30m às 22h10m Sala de Estágio UEG-UnUCET Equipe técnica Amanda Barbosa Silva 67 Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião ocorreu conforme combinado. Na reunião o orientador perguntou como estava o andamento do projeto. Informei que o DMS estava praticamente concluído faltando apenas o dicionário do projeto que não havia preenchido. O caso de teste e o apêndice para sua realização e a conclusão. O orientador fez alguns exemplos do dicionário do projeto. Por exemplo, se a classe SearchServlet possuir uma instancia de CamposDAO. Em que CamposDAO é responsável pela persistência da entidade campos e qual seria o seu tipo no diagrama de classe conceitual, de forma mais genérica e o seu tipo do diagrama de classe do projeto, que é o seu tipo verdadeiro. Nesse caso, seria uma classe nos dois tipos. Informou que eu deveria listar os conceitos definidos no projeto. Surgiu a dúvida quanto ao desenho do diagrama de classe conceitual ou não, pois o diagrama não existia no modelo do DMS disponibilizado. O orientador também informou que provavelmente não seria necessário devido ao fato desse diagrama ser desenvolvido para se ter um melhor entendimento do projeto, sem ser no nível tão técnico. Como o projeto já é técnico não haveria a necessidade. O orientador iria verificar essa necessidade e informar. Informei que havia preenchido os relatórios de acompanhamento por não achar que o cronograma estava completo o bastante. Repassei para o orientador. O orientador solicitou que fossem preenchidas as atas de reunião das orientações online devido as decisões tomadas durante essas reuniões serem importantes. O orientador perguntou sobre a programação, informei que havia iniciado a programação, mas tive problemas para implementar da forma como havia detalhado. Então fiz uns testes de uma maneira que deu certo e resolvi usar essa maneira. Então realizei as alterações no DMS conforme necessário. Ele solicitou que fosse feita uma implementação para apresentar a ele, sem a necessidade de estar funcionando tudo corretamente. Informei que gostaria de terminar o DMS nessa semana para a entrega e depois me preocupar somente com a programação, mas que daria para iniciar a programação essa semana ainda. Combinamos então uma apresentação na sexta, dia 28, com a tela montada para a realização da pesquisa. Informei ao orientador a necessidade de não fazer o requisito quanto ao preenchimento dos valores padrões para um campo, devido à necessidade de o desenvolvedor preencher esses valores com dados que existam no banco original da aplicação onde o framework irá buscar os dados, senão nada seria encontrado. Ficou definido então que não será feito. Estava com dúvidas também quanto a implementação da lista de adição, devido ao modo como queria implementar a primeira vez e que não seria viável. Mas na nova forma de implementação será possível implementar. Informei também quanto a possibilidade de um campo poder se relacionar com outro e um filtro poder se relacionar com outro e resolvemos colocar esse requisito como futuro ou sugestão de implementação. Pois, o modo como foi especificado, um filtro já possui vários campos permitindo colocar um campo período, por exemplo, com dois campos. Estava preocupada quanto à necessidade de alterações no DMS antes da apresentação da banca. O orientador informou que eu poderia realizar as modificações que desejasse e apresentar a retifica para a banca no dia da apresentação. Observação Importante O objetivo da reunião foi sanar as dúvidas quanto ao preenchimento do DMS. 68 Requisitos Registrados Nenhum requisito registrado. Tabela 48 – Ata de Reunião n.º 08 4.1.9 Ata n.º 09 ATA da Reunião n.º 09 Data Horário Local 18/11/2011 Das 21h00m às 21h30m Sala de Estágio UEG-UnUCET Equipe técnica Amanda Barbosa Silva Equipe usuária Leandro Doutor Branquinho Teor desta reunião A reunião ocorreu conforme combinado. Foi apresentado ao orientador o dicionário do projeto preenchido. O orientador informou que estava de acordo. O sistema foi apresentado ao orientador. Houve um mal entendido no retorno da funcionalidade do relatório. O retorno da chave primária seria o registro selecionado na listagem retornada após a busca do usuário final. Ficou acordado que seria um requisito futuro e que a funcionalidade retornaria um Map com o nome da coluna e o valor respectivo a cada coluna. Observação Importante O objetivo da reunião foi apresentar o preenchimento do dicionário do projeto e apresentar o sistema ao orientador antes da apresentação final. Requisitos Registrados Nenhum requisito registrado. Tabela 49 – Ata de Reunião n.º 09 69 4.2 Descrição do Negócio O projeto visa desenvolver um framework do tipo vertical, também conhecido como framework de aplicação, de domínio genérico para o desenvolvimento de sistemas de informação. De acordo com Rocha (2009), a idéia pregada por esse tipo de software não é nova, e surgiu junto com a orientação a objetos. Um framework é a estrutura de uma aplicação, ou seja, um conjunto de classes e interfaces projetado para encapsular o código comum de certo domínio fornecendo uma solução pronta e genérica para os problemas relacionados a esse domínio. O uso dessa solução, chamada pré-fabricada por Rocha (2009), facilita a tarefa do desenvolvedor devido ao fato de parte do sistema já estar implementada e testada, bastando apenas tratar os pontos específicos da aplicação. Além disso, aplicações criadas a partir de um framework são desenvolvidas com maior rapidez e qualidade. Grande parte do trabalho no desenvolvimento de um framework consiste em identificar suas partes fixas (frozen spots) e variáves (hot spots). As partes fixas são responsáveis por definir a arquitetura e o comportamento básico da aplicação, além dos relacionamentos entres os seus componentes. Essas partes são constantes para qualquer aplicação instanciada a partir do framework. Já as partes variáveis, podem ser customizadas e estão abertas a extensão, permitindo que o comportamento do framework seja especificado para cada tipo de aplicação. Normalmente, os frameworks são a generalização de um domínio, por isso possui as partes variáveis, para que o desenvolvedor possa, durante a instanciação, customizar as especificidades da aplicação. Para realizar essa customização normalmente o desenvolvedor implementa interfaces, estende classes ou configura arquivos. As partes fixas e variáveis do framework definem uma de suas maiores vantagens, o reuso tanto de código quanto de interface. Além disso, utiliza técnicas de padrões de projeto, “soluções comprovadas para problemas recorrentes”. Sem esquecer da extensibilidade, que, segundo Rocha (2009) é uma característica importante para esse tipo de aplicação, pois permite que o desenvolvedor utiliza a mesma estrutura para solucionar problemas semelhantes, mas não necessariamente iguais. Mas é claro que o uso de um framework possui, também, desvantagens. Uma delas é a complexidade, pois é necessário conhecer não apenas o problema que se pretende resolver como o domínio das aplicações e os conceitos de OO e design patterns. Depois disso é necessário desenvolver uma solução flexível, robusta e extensível, o que também não é uma solução fácil. Além disso, existe o alto custo no desenvolvimento, o que normalmente só é justificável quando há certeza que ele será utilizado na criação de várias aplicações. Temos também a questão da evolução, pois qualquer mudança no framework irá afetar as aplicações desenvolvidas a partir dele. Portanto, é possível ter diversas aplicações com diferentes versões do framework. Tal fato aumenta sistematicamente a complexidade da manutenção tanto da aplicação quanto do framework. De acordo com Rocha (2009) os frameworks são classificados basicamente em caixa-branca e caixa-preta. O primeiro, é configurado principalmente através de herança e implementação de métodos abstratos, o que significa que o desenvolvedor deve possuir conhecimento sobre a estrutura do framework para utilizá-lo. Essa abordagem é considerada simples, por não ser necessário o conhecimento de todas as extensões que o framework suporta antes que seja necessário. Por outro lado, ela é mais difícil por ser necessário que o desenvolvedor conheça a estrutura interna do framework. 70 O segundo, a instanciação é feita a partir de classes já existentes e não é necessário que o desenvolvedor conheça a estrutura do framework. Ele é considerado mais simples de ser utilizado, mas seu projeto possui uma complexidade maior devido a necessidade de todas as combinações de extensões possíveis. Além desses, existe frameworks que são uma combinação dos dois anteriores, eles são chamado de caixa-cinza. Como foi dito, o framework que será desenvolvido, é de aplicação. Os frameworks de aplicações, também conhecidos com verticais, são frameworks voltados para áreas de domínios específicos, proveem altíssimo grau de reutilização, pois o foco não é solucionar problemas sistêmicos e sim problemas de negócio, embora, comumente incorporam alguns requisitos sistêmicos. Capturam as funcionalidades comuns a várias aplicações, portanto, sempre que aplicações distintas em um mesmo domínio possuírem funcionalidades em comum é possível criar um framework. Porém, o objeto no momento é o desenvolvimento de uma solução genérica, que posteriormente poderá ser específico a um domínio. O objetivo é o desenvolvimento de dois componentes para o framework: pesquisa e parâmetro de relatório. Os componentes serão gerenciados pelo banco de dados. Com isso, quando houver necessidade de alterações nas interfaces ou consultas pode-se simplesmente alterar determinados valores no banco de dados e o framework consegue realizar as alterações dos objetos persistentes de acordo com essas novas regras, sem que seja necessária uma nova compilação. 71 4.3 Lista de Requisitos Identificação Requisito R01 Definir entidade a ser consultada R02 Definir os filtros de pesquisa R03 Definir os campos das entidades R04 Definir quais campos pertencem a cada filtro R05 Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R06 Criar SQL de consulta com base nos parâmetros informados R07 Definir se o campo deverá realizar uma consulta extra R08 Checar se existe entidade/view no banco de dados R09 Definir a consulta que o campo deverá executar para apresentar os dados R10 Permitir a montagem de uma interface dinamicamente para pesquisas e parâmetros de relatório Tabela 50 – Lista de Requisitos 72 4.4 Lista de Regras de Negócio Requisito Associado Identificação Regras de Negócio RN01 Entidade a ser consultada, filtros da interface e parâmetros R01, R02, da consulta SQL devem ser definidos no banco de dados. R03, R04, R05, R06 RN02 É necessário escolher uma entidade/view para cada campo R01 definido para a consulta. RN03 O nome da entidade deve ser o mesmo nome da tabela no R01 banco de dados a ser consultado. RN04 Todos os operadores devem independentemente do tipo de dados. RN05 Os parâmetros da consulta SQL são os campos definidos R06 pelo qual deseja pesquisar, combinados com os valores preenchidos pelo usuário final na interface gráfica. RN06 Os parâmetros para consulta deverão estar vinculados a R03, R08 uma entidade ou a uma view. Não poderá existir campo sem entidade ou sem view. RN07 Os tipos dos campos na interface gráfica devem ser: R03 textfield, combobox, checkbox, radio button ou lista de adição. RN08 A consulta para trazer opções preenchidas será realizada R09 apenas para os campos do tipo combobox, checkbox e radio button. Para que esses campos sejam preenchidos é necessário existir a consulta. RN09 Caso o campo consulta seja preenchido para campos do R07 tipo textfield ou lista de adição, significa que a consulta extra está habilitada. RN10 A consulta extra poderá ser habilitada apenas para campos R07 do tipo textfield ou lista de adição. RN11 O desenvolvedor poderá definir uma consulta para R09 qualquer tipo de campo com base nas regras RN08 e RN09. estar disponíveis R03 73 RN12 Os tipos dos campos no banco de dados devem ser R05 compatíveis com os tipos dos campos na interface de pesquisa. Varchar, char, text: textuais Int, decimal, bigInt, double, float, tinyint, smallint: numéricos Date, Datetime: data RN13 Um filtro de pesquisa poderá ter vários campos. R04 RN15 Para a funcionalidade de busca (pesquisa, formulário), R06 retornar uma chave (chave primária do registro pesquisado). Para o parâmetro de relatório retornar a SQL configurada pelo componente. RN16 Cada campo da tela será pesquisado no select por „and‟. R06 Os dados inseridos na caixa de seleção e as opções selecionadas do checkbox serão pesquisados por „or‟. RN17 É necessário preencher pelo menos um campo da interface R06 para realizar a pesquisa. Tabela 51 – Lista de Regras de Negócio 74 4.5 Dificuldades encontradas no Negócio Dificuldades Propostas de Soluções 1. A criação de framework é uma atividade muito Analisar os projetos já realizados na área complexa por envolver o entendimento de muitos de framework e projetos antigos conceitos como: orientação a objetos e design patterns. relacionados a esse projeto, e priorizar o estudo de designer patterns e das metodologias usadas para o desenvolvimento de framework. 2. O framework inicialmente será genérico sem a Abstrair ao máximo os componentes que definição de um domínio. Quando se define um domínio serão desenvolvidos. é necessário o estudo do seu negócio, mas um framework genérico é necessário uma abrangência maior. 3. A inserção das regras de validação dos objetos do Descrever de forma minuciosa todos os domínio do negócio no banco de dados sem o auxílio de procedimentos a serem seguidos pelo uma interface gráfica para disciplinar o uso do usuário do framework e desenvolver framework. funcionalidades no framework que o permita emitir mensagem mais intuitivas e claras. 4. Como o projeto é uma evolução, é necessário conhecer Analisar os DMSs anteriores o que já foi feito anteriormente e adaptações. relacionados ao mesmo projeto. Tabela 52 – Dificuldades encontradas no negócio 75 4.6 Definição do Problema Atualmente as ferramentas convencionais de desenvolvimento de software não têm facilitado: a manutenção de software; reutilização de código-fonte, de análise e de projeto. Atualmente quando se deseja desenvolver uma nova aplicação, mesmo que pertença a domínios semelhantes ou até mesmo iguais aos de outras aplicações já desenvolvidas, o código é iniciado do zero ou até mesmo realizando cópias das aplicações similares. O mesmo acontece para as interfaces e consultas ao banco de dados dos sistemas quando se necessita de alterações, sejam elas evolutivas, adaptativas, ou corretivas. Dependendo da complexidade dessa mudança e de como está estruturado, alguns desenvolvedores optam por refazerem todo o projeto. Quando se opta pela alteração, ela pode abalar a estrutura do software, dificultar manutenções futuras e chegar até mesmo ao ponto de reconstruir o software. Com a utilização do framework o desenvolvedor poderá guardar sua regra de negócio no banco de dados. Isso permite que as interfaces gráficas e as consultas ao banco de dados sejam criadas dinamicamente e que futuras alterações sejam rápidas e realizadas com facilidade, sem a necessidade de parar a aplicação ou a nova compilação de classes para visualização das alterações. Garantindo assim as principais vantagens de um framework: reuso e extensibilidade. No momento, o importante não é o domínio da aplicação, e sim o desenvolvimento de um componente com duas funcionalidades: pesquisa e parâmetro de relatório. Capaz de estruturar a interface gráfica e a montagem do SQL de retorno dinamicamente, com resultados visuais rápidos e funcionais. 4.7 Objetivo do Software Modelagem de um framework de aplicação, genérico, orientado a objetos, com foco na implementação de um componente com duas funcionalidades: pesquisa e parâmetro de relatório. A funcionalidade de pesquisa permitirá a criação de interfaces gráficas dinamicamente e a obtenção de um resultado de acordo com a pesquisa preenchida e as configurações realizadas no banco de dados ao usuário final. A funcionalidade de parâmetro de relatório utilizará a funcionalidade de pesquisa retornando, nesse caso, ao desenvolvedor uma consulta e permitindo que o mesmo realize o que desejar com o resultado pronto. Como por exemplo, a execução da consulta e a montagem de um relatório em pdf. Como os dados serão obtidos do banco de dados do framework, poderá facilitar as manutenções que venham a ser necessárias ou satisfazer mudanças nas regras de negócios da aplicação sem comprometer o código. 4.8 Escopo do Software 76 O framework utilizará linguagem Java e banco de dados Microsoft SQL Server com suporte à criação de interfaces dinamicamente, a partir de uma entidade, restrita ao componente: text field, combo box, checkbox, radio button ou lista de adição. O componente deverá: Montar a interface gráfica a partir dos dados inseridos no banco de dados. Gerar uma consulta SQL a partir de dados do banco (tipo do operador do campo) e a partir dos dados informados na tela para consulta pelo usuário final. Pesquisa (busca): deverá executar a consulta SQL e retornar o registro pesquisado. Parâmetro de Relatório: deverá retornar a String que representa a consulta no banco para os dados informados para que o desenvolvedor a utilize para a montagem de um relatório. Para os casos citados os parâmetros são configurados no Banco de Dados. Utilizará também o MiniTemplator que é uma ferramenta compacta de template para arquivos HTML. 4.9 Clientes Alvo Nome Definição Desenvolvedor de Software Responsável por instanciar e preencher o banco de dados do framework. Tabela 53 – Clientes Alvo 4.10 Glossário do Negócio Termo Definição Sinônimo Instanciação Criação de uma aplicação a partir de um framework Frozen spots Arquitetura e Partes fixas comportamentos básicos da aplicação Hot spots Partes da aplicação abertas à Partes variáveis customização e extensão que permitem que o comportamento do framework seja adaptado as características específicas da aplicação. 77 View Representa uma tabela do Visões do banco de dados banco de dados ou o resultado de uma consulta SQL. Tabela 54 – Glossário do Negócio 5 Requisitos 5.1 Especificação dos Requisitos 5.1.1 ERaF1.1 ERaF1 Definir entidade a ser consultada Definição Para a montagem da tela é necessário definir qual ou quais as entidades serão consultadas. As entidades deverão ser cadastradas manualmente. O nome da entidade deve ser o mesmo nome da tabela no banco de dados a ser consultado. Especificação Por exemplo, caso deseje que a entidade Paciente da sua aplicação seja consultável, deverá preencher no banco de dados o campo nome_entidade com o nome da tabela no seu banco de dados. (o campo id é auto incremento) Regras de Negócio Associadas RN01, RN02 e RN03 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 55 – Especificação do Requisito definir entidade a ser consultada 5.1.2 ERaF2.1 ERaF2 Definir os filtros de pesquisa 78 Para a montagem da tela é necessário definir qual ou quais os filtros deverão ser apresentados na interface para o usuário final. Definição A label do filtro será definida com o nome que o usuário deseja que seja apresentado na interface para o usuário final. Especificação A negação significa se será apresentado ao usuário final um checkbox com a opção de negar os dados preenchidos no filtro. Buscando tudo menos o que ele preencheu. Por exemplo, um filtro Nome Usuário, esse seria sua label ou apenas Nome, e caso desejasse que o usuário possa negar essa condição seria apenas preencher no banco de dados o negar com 1, se não for pra negar a condição, preencher com 0. Regras de Negócio Associadas RN01, RN06 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 56 – Especificação do Requisito definir os filtros de pesquisa 5.1.3 ERaF3.1 ERaF3 Definir os campos das entidades Definição Para a montagem da tela é necessário definir os campos que serão consultados e qual entidade ele pertence. O nome do campo deverá ser preenchido com o nome do campo no banco a ser consultado. Definir a qual entidade ou a qual view o campo pertence. Preencher o tipo do campo no banco de dados de origem e o tipo do campo na interface de busca. Os tipos dos campos na interface gráfica podem ser: textfield = 1, combobox = 2, checkbox = 3, radio button 4 ou lista de adição = 5. Especificação Por exemplo, para o filtro Nome provavelmente teremos um campo do tipo textfield ou lista de adição. Nesse caso, poderíamos pesquisar por like, pois existem nomes compostos. Preenchemos então o banco de dados com: nome = nome do campo no banco de dados da aplicação (nome, por exemplo); tipo_campo_banco, nesse caso provavelmente um varchar, então preencheríamos com 1. Se fosse do tipo numério seria 2 se fosse data seria 3; 79 tipo_campo_interface seria 1 ou 5; tipo_operador seria 1 ou 2; id auto incremento. Regras de Negócio Associadas RN01, RN04, R06 e RN07 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 57 – Especificação do Requisito definir os campos das entidades 5.1.4 ERaF4.1 ERaF4 Definir quais campos pertencem a cada filtro Definição Um filtro será apresentado na interface gráfica pode ter vários campos de pesquisa. Após o cadastro dos filtros e dos campos é necessário vincular os campos aos seus respectivos filtros. Especificação Por exemplo, em um filtro chamado Período, provavelmente teríamos que preencher duas datas, consequentemente teríamos dois campos. Então na tabela preencheríamos com o id do campo e o id do filtro que cadastramos. Teríamos nesse caso duas entradas, uma para cada campo do filtro. Regras de Negócio Associadas RN13 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 58 – Especificação do Requisito definir quais campos pertence a cada filtro 5.1.5 ERaF5.1 ERaF5 Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface Definição O tipo da consulta deve ser compatível como tipo do campo do banco de dados. Especificação O framework deverá consultar o campo no banco de dados e comparar os dados do tipo da consulta e do tipo do campo no banco de dados: 80 Varchar: textuais = 1 Int, decimal, bigInt, double, float: numéricos = 2 Date: data = 3 Regras de Negócio Associadas RN01 e RN12 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 59 – Especificação do Requisito validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface 5.1.6 ERaF6.1 ERaF6 Criar SQL de consulta com base nos parâmetros informados Definição A partir dos dados informados na interface gráfica e dos dados configurados em banco de dados, o framework deverá montar um SQL. Especificação Para a busca (pesquisa) o framework montará o SQL e executará no banco do cliente, retornando uma chave primária que representa o registro pesquisado. Para o parâmetro de relatório o framework montará o SQL e retornará uma string, em que o usuário poderá usá-la como desejar. Regras de Negócio Associadas RN01, RN05, RN15 e RN17 Descrição do Risco Risco Montar o SQL de consulta com os dados do banco de 3 dados. Iteração Única Tabela 60 – Especificação do Requisito criar SQL de consulta com base nos parâmetros informados 5.1.7 ERaF7.1 ERaF7 Definir se o campo deverá realizar uma consulta extra Definição Na montagem da tela o desenvolvedor poderá definir uma consulta extra para o campo textfield ou lista de adição, assim, o framework habilitará um botão para pesquisa com base da consulta cadastrada e no dado 81 informado, preenchendo campo na interface gráfica. Caso deseje que o usuário final possa realizar uma consulta extra, o desenvolvedor deverá preencher o campo consulta. Nesse caso a interface terá o botão para a consulta e preenchimento do campo. O framework usará consulta definida para o campo. Se um campo textfield ou lista de adição tiver o campo consulta preenchido, significa que a consulta extra está habilitada. Especificação Por exemplo, para o campo Nome caso o campo consulta esteja preenchido, o usuário final poderia preencher o campo com o que deseja encontrar e selecionar o botão de pesquisa, o sistema iria realizar uma pesquisa, com base na consulta informada e retornar uma combobox com os dados encontrados. O usuário seleciona o desejado e o campo na interface é preenchido, no caso de textfield; ou é adicionado a lista, se for lista de adição. Regras de Negócio Associadas RN09 e RN10 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 61 – Especificação do Requisito Definir se o campo deverá realizar uma consulta extra 5.1.8 ERaF8.1 ERaF8 Checar se existe entidade/view no banco de dados Definição O usuário poderá definir que um campo será buscado em uma view. Para buscar, o framework deverá verificar se a view existe. Especificação Antes de executar a consulta para o campo, o framework deverá verificar se a view existe no banco do cliente. Regras de Negócio Associadas RN06 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 62 – Especificação do Requisito Checar se existe entidade/view no banco de dados 82 5.1.9 ERaF9.1 ERaF9 Definir a consulta que o campo deverá executar para apresentar os dados Definição Na montagem da tela o desenvolvedor poderá definir uma consulta para o campo, assim, o framework apresentará o resultado da consulta como valores para que o usuário selecione. Caso o campo deva realizar uma consulta para apresentar na tela, o desenvolvedor deverá definir a consulta a ser executada. Especificação Por exemplo, para um filtro Usuário caso deseje que traga todos os usuários do banco de dados, basta preencher o campo consulta com o select específico para trazer os dados desejados. (select nome from usuário where ativo = 1) Regras de Negócio Associadas RN08 e RN11 Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única Tabela 63 – Especificação do Requisito Definir a consulta que o campo deverá executar para apresentar os dados 5.1.10 ERaF10.1 ERaF10 Permitir a montagem de uma interface dinamicamente para pesquisas e parâmetros de relatório Definição O componente deverá montar uma interface dinamicamente para a pesquisa configurada no banco de dados. Especificação Quando chamada a execução do componente, tanto para a busca como para o parâmetro de relatório, o sistema deverá configurar a interface dinamicamente de acordo com os filtros e campos definidos para a pesquisa solicitada. Regras de Negócio Associadas - Descrição do Risco Risco Iteração Não existem riscos de desenvolvimento. - Única 83 Tabela 64 – Especificação do Requisito Permitir a montagem de uma interface dinamicamente para pesquisas e parâmetros de relatório 6 Modelagem de Casos de Uso 6.1 Relação de Casos de Uso Casos de Uso UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC03 - Realizar conexão com o banco de dados da aplicação UC04 – Configurar framework UC05 – Configuração da execução do componente UC06 – Configurar interface gráfica UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface UC09 - Criar SQL de consulta com base nos parâmetros informados UC10 - Realizar consulta UC11 - Retornar resultado de acordo com a função UC12 – Realizar consulta extra Tabela 65 – Lista de Casos de Uso 6.2 Relação dos Atores 84 6.2.1 Desenvolvedor Este ator é responsável por configurar a conexão e o banco de dados da aplicação e realizar a instanciação do framework para a execução do componente. O desenvolvedor deverá seguir as orientações definidas no manual de instanciação conforme apêndice C deste documento para obtenção dos recursos do componente. 6.2.2 Componente Este ator é responsável por utilizar as configurações definidas pelo desenvolvedor, montar a interface gráfica, realizar a consulta e retornar os dados de acordo com a função executada. 6.3 Diagrama Geral de Casos de Uso Figura 1 – Diagrama Geral de Caso de Uso 6.4 Detalhamento dos Casos de Uso 85 6.4.1 [Caso de Uso] Criar conexões com os bancos de dados das aplicações UC.01 Criar conexões com os bancos de dados das aplicações Descrição: Este caso de uso descreve como deverá ser realizada a configuração para a criação da conexão com o banco de dados da aplicação e do framework. Cenário 1 - Configurar PréCondição: Nenhuma. PósCondição: Arquivos dataSourceComponents.properties e dataSourceApplication.properties configurados e caminhos dos arquivos especificados. Atores: Desenvolvedor Ativação: Fluxo Principal Nº. Ação 1 O desenvolvedor deverá criar dois arquivos para a configuração da conexão. Um arquivo com o nome dataSourceComponents.properties, onde serão configurados os dados de conexão do banco do componente. E outro arquivo dataSourceApplication.properties, onde serão configurados os dados de conexão do banco de dados da aplicação do desenvolvedor. 2 Nos arquivos deverá conter: conn.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver conn.url= url=jdbc:sqlserver://[HOST]:[PORTA];databaseName=[DATABASE NAME] conn.pwd=[SENHA] conn.user=[USER] O desenvolvedor deverá preencher os dados que estão em vermelho. 3 Os arquivos deverão ficar no mesmo diretório e o desenvolvedor deverá configurar o caminho dos arquivos nos dados de inicialização da JVM da seguinte forma: Dcomponent.config.path="C:/dataSource (por exemplo)" (verificar apêndice A). 86 Cenário 2 - Alterar PréCondição: Arquivos de configurações dataSourceComponents.properties e / ou dataSourceApplication.properties já existirem. PósCondição: Arquivos dataSourceComponents.properties, arquivo dataSourceApplication.properties e caminho dos arquivos alterados. Atores: Desenvolvedor Ativação: Fluxo Principal Nº. Ação 1 O desenvolvedor deverá acessar o diretório onde os arquivos dataSourceComponents.properties e dataSourceApplication.properties estão configurados. 2 Nos arquivos poderá alterar as configurações de acordo com o desejado seguindo o padrão abaixo: conn.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver conn.url= url=jdbc:sqlserver://[HOST]:[PORTA];databaseName=[DATABASE NAME] conn.pwd=[SENHA] conn.user=[USER] O desenvolvedor deverá preencher os dados que estão em vermelho. 3 Caso tenha alterado o caminho dos arquivos, o desenvolvedor deverá reconfigurar o caminho nos dados de inicialização da JVM: Dcomponent.config.path="C:/dataSource (por exemplo)". (verificar apêndice A) Fluxo de Exceção E1 Desenvolvedor não configurou o caminho nos dados de inicialização. E2 Caminho informado dos arquivos de configuração do banco de dados não existe. E3 Desenvolvedor alterou diretório dos arquivos e não configurou o novo caminho nos dados de inicialização. Requisitos 87 R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R06 - Criar SQL de consulta com base nos parâmetros informados R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexão com o banco de dados da aplicação UC02 - Realizar conexão com o banco de dados da aplicação UC04 – Configurar framework UC05 - Configuração da execução do componente UC06 - Configurar interface gráfica UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface UC09 - Criar SQL de consulta com base nos parâmetros informados UC10 - Realizar consulta UC12 – Realizar consulta extra Observações Não há. Tabela 66 – Detalhamento Caso de Uso UC01 88 Figura 2 – Diagrama de Atividade – UC01 Configurar 89 Figura 3 – Diagrama de Atividade – UC01 Alterar 90 6.4.2 [Caso de Uso] Realizar conexão com o banco de dados do componente UC.02 Realizar conexão com o banco de dados do componente Descrição: Este caso de uso descreve como deverá ser realizada a conexão com o banco de dados do componente. Cenário 1 – Conectar PréCondição: Configuração do arquivo dataSourceComponents.properties e do caminho do arquivo. PósCondição: Conexão com o banco de dados realizada com sucesso. Atores: Desenvolvedor e Componente Ativação: Fluxo Principal Nº. Ação 1 Desenvolvedor faz chamada ao componente. 2 Componente tenta realizar conexão com o banco de dados. 3 O sistema deverá buscar o caminho do arquivo configurado com o nome : Dcomponent.config.path nos dados de inicialização. 4 Com o arquivo encontrado deverá buscar os dados de conexão: conn.driver, conn.url, conn.pwd, conn.user. 5 Realizar a conexão com o banco de dados configurado. Fluxo de Exceção E1 Desenvolvedor não configurou o caminho nos dados de inicialização. 91 E2 Caminho informado do arquivo de configuração do banco de dados não existe. E3 Desenvolvedor alterou diretório do arquivo e não configurou o novo caminho nos dados de inicialização. Requisitos R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R06 - Criar SQL de consulta com base nos parâmetros informados R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexão com o banco de dados da aplicação UC02 - Realizar conexão com o banco de dados da aplicação UC05 – Configuração da execução do componente UC06 - Configurar interface gráfica UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface Observações Não há. Tabela 67 – Detalhamento Caso de Uso UC02 92 Figura 4 – Diagrama de Atividade – UC02 Conectar 6.4.3 [Caso de Uso] Realizar conexão com o banco de dados da aplicação UC.03 Realizar conexão com o banco de dados da aplicação 93 Descrição: Este caso de uso descreve como deverá ser realizada a conexão com o banco de dados da aplicação. Cenário 1 – Conectar PréCondição: Configuração do arquivo dataSourceApplication.properties e do caminho do arquivo. PósCondição: Conexão com o banco de dados realizada com sucesso. Atores: Usuário final e Componente Ativação: Usuário final seleciona o botão para realizar a pesquisa. Fluxo Principal Nº. Ação 1 Usuário final preenche os dados desejados para realizar a pesquisa na interface gráfica e seleciona o botão de pesquisar. 2 Componente tenta realizar conexão com o banco de dados. 3 O sistema deverá buscar o caminho do arquivo configurado com o nome : Dcomponent.config.path nos dados de inicialização. 4 Com o arquivo encontrado deverá buscar os dados de conexão: conn.driver, conn.url, conn.pwd, conn.user. 5 Realizar a conexão com o banco de dados configurado. Fluxo de Exceção E1 Desenvolvedor não configurou o caminho nos dados de inicialização. E2 Caminho informado do arquivo de configuração do banco de dados não existe. E3 Desenvolvedor alterou diretório do arquivo e não configurou o novo caminho nos dados de inicialização. Requisitos R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R06 - Criar SQL de consulta com base nos parâmetros informados 94 R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexão com o banco de dados da aplicação UC03 - Realizar conexão com o banco de dados da aplicação UC09 - Criar SQL de consulta com base nos parâmetros informados UC10 - Realizar consulta UC12 – Realizar consulta extra Observações Não há. Tabela 68 – Detalhamento Caso de Uso UC03 95 Figura 5 – Diagrama de Atividade – UC03 Conectar 6.4.4 [Caso de Uso] Configurar Framework UC.04 Configurar framework Descrição: Este caso de uso descreve como o desenvolvedor deverá configurar o framework para a sua utilização. 96 Cenário 1 – Configurar PréCondição: - PósCondição: Configuração do framework, com local do servlet definido no web.xml e cópia dos jars de dependência. Atores: Desenvolvedor. Ativação: Fluxo Principal Nº. Ação 1 Desenvolvedor configura o mapeamento do servlet no web.xml. 2 Desenvolvedor copia search.jar (que representa o framework) e sua dependências para o diretório lib do seu projeto dentro de WEB-INF. Referências UC04 – Configurar framework UC05 – Configuração da execução do componente Observações Não há. Tabela 69 – Detalhamento Caso de Uso UC04 97 Figura 6 – Diagrama de Atividade – UC04 Instanciar 6.4.5 [Caso de Uso] Configuração da execução do componente UC.05 Configuração da execução do componente Descrição: Este caso de uso descreve como o desenvolvedor deverá configurar a execução do componente. Cenário 1 – Configurar PréCondição: Configuração dos arquivos de conexão, conexão com o banco de dados do componente, configuração do framework e configurações da regras de negócio. PósCondição: Configuração do componente para a renderização da interface gráfica de acordo com as regras de negócio definidas no banco de dados. Atores: Desenvolvedor e Componente 98 Ativação: Fluxo Principal Nº. Ação 1 Após a configuração do framework, no local onde deseja fazer a chamada ao framework para configuração da tela, o desenvolvedor poderá colocar como link ou como form do botão a chamada ao framework (de acordo com o caminho definido no web.xml). 2 Além da chamada ao caminho, o desenvolvedor deverá passar como parâmetro o id da pesquisa que deseja executar (com o nome „pesquisa‟), o modo como deseja executar (r (relatório) ou b (busca), com o nome „modo‟) e o caminho do servlet para qual deseja que seja redirecionado após a execução da pesquisa pelo usuário final (onde o desenvolvedor poderá manipular os dados do resultado retornado, com o nome „resultado‟). Fluxo de Exceção E1 Sistema não consegue conectar com o banco de dados do componente. E2 Desenvolvedor não seta os parâmetros necessários. E3 Desenvolvedor não configurou o banco de dados. Requisitos R01 - Definir entidade a ser consultada R02 - Definir os filtros de pesquisa R03 - Definir os campos das entidades R04 - Definir quais campos pertence a cada filtro R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R07 - Definir se o campo deverá realizar uma consulta extra R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC04 – Configurar framework UC05 – Configuração da execução do componente UC06 – Configurar interface gráfica 99 UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface Observações O nome dos parâmetros a serem repassados para o servlet do framework são: pesquisa, modo e resultado. Tabela 70 – Detalhamento Caso de Uso UC05 Figura 7 – Diagrama de Atividade – UC05 Configurar 6.4.6 UC.06 [Caso de Uso] Configurar interface gráfica Configurar interface gráfica 100 Descrição: Este caso de uso descreve a configuração da interface gráfica após a chamada da execução. Cenário 1 – Configurar PréCondição: Configuração da chamada a execução do componente. PósCondição: Renderização da interface gráfica de acordo com as regras de negócio definidas no banco de dados. Atores: Usuário final e Componente Ativação: Usuário final clica no botão ou link configurado. Fluxo Principal Nº. Ação 1 Usuário final clica no botão ou link configurado pelo desenvolvedor. 2 Componente busca os parâmetros passados pelo desenvolvedor. 3 Componente realiza a configuração da interface a partir das regras de negócio 4 Componente realiza validações das regras de negócio em banco de dados. 5 Componente apresenta interface configurada. Fluxo de Exceção E1 Sistema não consegue conectar com o banco de dados do componente. E2 Desenvolvedor não seta os parâmetros necessários. E3 Desenvolvedor não configurou o banco de dados. Requisitos 101 R01 - Definir entidade a ser consultada R02 - Definir os filtros de pesquisa R03 - Definir os campos das entidades R04 - Definir quais campos pertence a cada filtro R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R07 - Definir se o campo deverá realizar uma consulta extra R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC04 – Configurar framework UC05 – Configuração da execução do componente UC06 – Configurar interface gráfica UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface Observações Não há. Tabela 71 – Detalhamento Caso de Uso UC06 102 Figura 8 – Diagrama de Atividade – UC06 Configurar 6.4.7 [Caso de Uso] Checar se existe entidade/view no banco de dados UC.07 Checar se existe entidade/view no banco de dados Descrição: Este caso de uso descreve a checagem da existência da entidade/view no banco de dados. 103 Cenário 1 – Checar entidade/view PréCondição: Chamada à execução do componente e configuração da interface gráfica. Antes da renderização realizar validação. PósCondição: Execução do componente e renderização da interface gráfica de acordo com as regras de negócio definidas no banco de dados. Atores: Desenvolvedor e Componente Ativação: Fluxo Principal Nº. Ação 1 Componente verifica se a entidade/view existe no banco de dados. 2 Existindo, retorna a validação „verdadeiro‟ e permite a próxima validação. Fluxos alternativos Entidade/View não existe 1 Componente verifica se a entidade/view existe no banco de dados. 2 Caso a entidade/view não exista, retorna mensagem ao usuário e cancela validação. Fluxo de Exceção E1 Sistema não consegue conectar com o banco de dados do componente. E2 Desenvolvedor não seta os parâmetros necessários. E3 Desenvolvedor não configurou o banco de dados. Requisitos R01 - Definir entidade a ser consultada R02 - Definir os filtros de pesquisa R03 - Definir os campos das entidades R04 - Definir quais campos pertence a cada filtro R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface 104 R07 - Definir se o campo deverá realizar uma consulta extra R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC04 – Configurar framework UC05 – Configuração da execução do componente UC06 – Configurar interface gráfica UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface Observações Não há. Tabela 72 – Detalhamento Caso de Uso UC07 Figura 9 – Diagrama de Atividade – UC07 Checar entidade/view 105 6.4.8 [Caso de Uso] Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface UC.08 Descrição: Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface Este caso de uso descreve a checagem da compatibilidade do tipo do campo no banco com o tipo do campo na interface. Cenário 1 – Validar tipo campo PréCondição: Chamada à execução do componente e configuração da interface gráfica. Antes da renderização realizar validação. PósCondição: Execução do componente e renderização da interface gráfica de acordo com as regras de negócio definidas no banco de dados. Atores: Desenvolvedor e Componente Ativação: Fluxo Principal Nº. Ação 1 Caso a checagem da entidade/view seja validada o componente deve verificar se o tipo do campo no banco é compatível com o tipo do campo na interface. 2 Caso os tipos sejam compatíveis permite a renderização da página. Fluxos alternativos Tipos não são compatíveis 1 Verifica se os tipos são compatíveis. 3 Tipos não são compatíveis, retorna mensagem ao usuário e cancela validação. Fluxo de Exceção 106 E1 Sistema não consegue conectar com o banco de dados do componente. E2 Desenvolvedor não seta os parâmetros necessários. E3 Desenvolvedor não configurou o banco de dados. Requisitos R01 - Definir entidade a ser consultada R02 - Definir os filtros de pesquisa R03 - Definir os campos das entidades R04 - Definir quais campos pertence a cada filtro R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R07 - Definir se o campo deverá realizar uma consulta extra R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC04 – Configurar framework UC05 – Configuração da execução do componente UC06 – Configurar interface gráfica UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface Observações Não há. Tabela 73 – Detalhamento Caso de Uso UC08 107 Figura 10 – Diagrama de Atividade – UC08 Validar tipo campo 6.4.9 [Caso de Uso] Criar SQL de consulta com base nos parâmetros informados UC.09 Criar SQL de consulta com base nos parâmetros informados Descrição: Este caso de uso descreve a criação do SQL de consulta pelo componente com base nas regras de negócio definidos em banco de dados para a pesquisa selecionada pelo desenvolvedor. Cenário 1 – Criar SQL PréCondição: Configuração dos arquivos de conexão, conexão com o banco de dados do componente, execução do componente, chamada a configuração da interface, validações e configurações das regras de negócio. Pós- SQL criada permitindo o retorno desejado ao desenvolvedor. 108 Condição: Atores: Usuário final e Componente Ativação: Usuário final preenche os dados para pesquisa e clica no botão. Fluxo Principal Nº. Ação 1 Usuário final preenche os dados desejados para realizar a pesquisa na interface gráfica e seleciona o botão de pesquisar. 2 Componente busca dados dos campos da interface gráfica e cria o SQL de consulta dinamicamente para aquela pesquisa. Fluxo de Exceção E1 Sistema não consegue conectar com o banco de dados do componente. E2 Desenvolvedor não seta os parâmetros necessários. E3 Desenvolvedor não configurou o banco de dados. Requisitos R01 - Definir entidade a ser consultada R02 - Definir os filtros de pesquisa R03 - Definir os campos das entidades R04 - Definir quais campos pertence a cada filtro R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R06 - Criar SQL de consulta com base nos parâmetros informados R07 - Definir se o campo deverá realizar uma consulta extra R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC04 - Instanciar hot-spot UC04 – Configurar framework UC05 – Configuração da execução do componente 109 UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface UC09 - Criar SQL de consulta com base nos parâmetros informados UC10 - Realizar consulta UC11 - Retornar resultado de acordo com a função Observações Não há. Tabela 74 – Detalhamento Caso de Uso UC09 Figura 11 – Diagrama de Atividade – UC09 Criar SQL 110 6.4.10 [Caso de Uso] Realizar consulta UC.10 Realizar consulta Descrição: Este caso de uso descreve a realização da consulta após a criação do SQL caso o a funcionalidade executada seja a de busca. Cenário 1 – Consultar PréCondição: Configuração dos arquivos de conexão, conexão com o banco de dados do componente e da aplicação, execução do componente, chamada a configuração da interface, validações, criação da consulta e configurações das regras de negócio. PósCondição: Consulta realizada permitindo o retorno desejado ao desenvolvedor. Atores: Componente Ativação: Fluxo Principal Nº. Ação 1 Componente verifica se é o modo de busca. 2 Se o modo da chamada for o de busca executa o SQL criado. Fluxos Alternativos Não é o modo de busca 1 Componente verifica se é o modo de busca. 2 Não é o modo de busca, não executa o SQL Fluxo de Exceção E1 Sistema não consegue conectar com o banco de dados do componente. 111 E2 Sistema não consegue conectar com o banco de dados da aplicação. E3 Desenvolvedor não seta os parâmetros necessários. E4 Desenvolvedor não configurou o banco de dados. Requisitos R01 - Definir entidade a ser consultada R02 - Definir os filtros de pesquisa R03 - Definir os campos das entidades R04 - Definir quais campos pertence a cada filtro R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R06 - Criar SQL de consulta com base nos parâmetros informados R07 - Definir se o campo deverá realizar uma consulta extra R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC04 – Configurar framework UC05 – Configuração da execução do componente UC06 – Configurar interface gráfica UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface UC09 - Criar SQL de consulta com base nos parâmetros informados UC10 - Realizar consulta UC11 - Retornar resultado de acordo com a função Observações Não há. Tabela 75 – Detalhamento Caso de Uso UC10 112 Figura 12 – Diagrama de Atividade – UC10 Consultar 6.4.11 [Caso de Uso] Retornar resultado de acordo com a função UC.11 Retornar resultado de acordo com a função Descrição: Este caso de uso descreve como deverá ser o retorno do resultado para as funções do componente. Cenário 1 – Retornar resultado PréCondição: Criação e execução da consulta SQL. PósCondição: Retorno desejado ao desenvolvedor a partir da funcionalidade executada. Atores: Componente Ativação: 113 Fluxo Principal Nº. Ação 1 Componente verifica qual o modo executado. 2 Se o modo da chamada for o de busca seta o atributo „result-search‟ com o resultado da execução do SQL (Map<String, Object>: nome da coluna no banco de dados e resultado encontrado). Se o modo da chamada for o de relatório setar o atributo „resultsearch‟ com a String que representa o SQL. Fluxo de Exceção E1 Sistema não consegue conectar com o banco de dados do componente. E2 Sistema não consegue conectar com o banco de dados da aplicação. E3 Desenvolvedor não seta os parâmetros necessários. E4 Desenvolvedor não configurou o banco de dados. Requisitos R01 - Definir entidade a ser consultada R02 - Definir os filtros de pesquisa R03 - Definir os campos das entidades R04 - Definir quais campos pertence a cada filtro R05 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface R06 - Criar SQL de consulta com base nos parâmetros informados R07 - Definir se o campo deverá realizar uma consulta extra R08 - Checar se existe entidade/view no banco de dados Referências UC01 - Criar conexões com os bancos de dados das aplicações UC02 - Realizar conexão com o banco de dados do componente UC04 – Configurar framework UC05 – Configuração da execução do componente UC06 – Configurar interface gráfica UC07 - Checar se existe entidade/view no banco de dados UC08 - Validar se o tipo do campo no banco de dados é compatível com o tipo do campo na interface UC09 - Criar SQL de consulta com base nos parâmetros informados 114 UC10 - Realizar consulta UC11 - Retornar resultado de acordo com a função Observações Não há. Tabela 76 – Detalhamento Caso de Uso UC11 Figura 13 – Diagrama de Atividade – UC11 Retornar resultado – Busca 115 Figura 14 – Diagrama de Atividade – UC11 Retornar resultado – Relatório 6.4.12 [Caso de Uso] Realizar consulta extra UC.12 Realizar consulta extra Descrição: Este caso de uso descreve como o usuário final poderá realizar uma consulta extra para um campo textfield ou lista de adição. Cenário 1 – Buscar Textfield PréCondição: Execução do componente. PósCondição: Opção escolhida preenchida no respectivo campo. Atores: Usuário final e Componente Ativação: Usuário final clica no botão de consulta extra do respectivo campo. Fluxo Principal Nº. Ação 1 Usuário final clica no botão de consulta extra. 2 Componente busca o campo e abre uma nova tela com uma combobox preenchida com os dados retornados da consulta definida para o campo. 3 Usuário final seleciona a opção desejada e clica no botão selecionar. 4 Componente preenche o campo na tela de pesquisa com a opção selecionada pelo usuário final. Cenário 2 – Buscar Lista de adição PréCondição: Execução do componente. 116 PósCondição: Opção escolhida adicionada na lista do respectivo campo. Atores: Usuário final e Componente Ativação: Usuário final clica no botão de consulta extra do respectivo campo. Fluxo Principal Nº. Ação 1 Usuário final clica no botão de consulta extra. 2 Componente busca o campo e abre uma nova tela com uma combobox preenchida com os dados retornados da consulta definida para o campo. 3 Usuário final seleciona a opção desejada e clica no botão selecionar. 4 Componente adiciona a opção selecionada pelo usuário final na lista de adição do campo na tela de pesquisa. Cenário 2 – Remover Lista de adição PréCondição: Existir pelo menos um item da lista de adição do campo. PósCondição: Opção escolhida removida da lista do respectivo campo. Atores: Usuário final e Componente Ativação: Usuário final clica no botão de remover da opção desejada do respectivo campo. Fluxo Principal Nº. Ação 1 Usuário final clica no botão remover do item desejado na lista do respectivo campo. 2 Componente remove a opção desejada da lista do campo. Fluxo de Exceção E1 Usuário final fecha a tela sem clicar no botão selecionar. 117 E2 Sistema não consegue conectar com o banco de dados da aplicação. Requisitos R07 - Definir se o campo deverá realizar uma consulta extra Referências UC01 - Criar conexões com os bancos de dados das aplicações UC03 - Realizar conexão com o banco de dados da aplicação UC12 – Realizar consulta extra Observações Não há. Tabela 77 – Detalhamento Caso de Uso UC12 Figura 15 – Diagrama de Atividade – UC12 Realizar consulta extra – Buscar Textfield 118 Figura 16 – Diagrama de Atividade – UC12 Realizar consulta extra – Buscar Lista de Adição Figura 17 – Diagrama de Atividade – UC12 Realizar consulta extra – Remover Lista de Adição 119 7 Modelagem de Dados 7.1 Projeto Conceitual de Dados Figura 18 – Projeto Conceitual 7.2 Projeto Lógico de Dados Figura 19 – Projeto Lógico 120 7.3 Script de Criação de Banco de Dados SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[campos]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[campos]( [idcampo] [int] IDENTITY(1,1) NOT NULL, [nome] [varchar](45) NULL, [consulta] [varchar](1500) NULL, [tipo_campo_banco] [int] NOT NULL, [tipo_campo_interface] [int] NOT NULL, [tipo_operador] [int] NOT NULL, [entidades_identidade] [int] NOT NULL, CONSTRAINT [PK_campos] PRIMARY KEY CLUSTERED ( [idcampo] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[entidades]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[entidades]( [identidade] [int] IDENTITY(1,1) NOT NULL, [nome_entidade] [varchar](45) NOT NULL, CONSTRAINT [PK_entidades] PRIMARY KEY CLUSTERED ( [identidade] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[filtro]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[filtro]( [idfiltro] [int] IDENTITY(1,1) NOT NULL, [label] [varchar](45) NOT NULL, [negar] [smallint] NOT NULL, CONSTRAINT [PK_filtro] PRIMARY KEY CLUSTERED ( 121 [idfiltro] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[filtro_has_campos]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[filtro_has_campos]( [filtro_idfiltro] [int] NOT NULL, [campos_idcampo] [int] NOT NULL, CONSTRAINT [PK_filtro_has_campos] PRIMARY KEY CLUSTERED ( [filtro_idfiltro] ASC, [campos_idcampo] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pesquisa]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[pesquisa]( [idpesquisa] [int] IDENTITY(1,1) NOT NULL, [descricao] [varchar](45) NULL, [ordem_pesquisa] [varchar](45) NULL, CONSTRAINT [PK_pesquisa] PRIMARY KEY CLUSTERED ( [idpesquisa] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pesquisa_has_filtro]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[pesquisa_has_filtro]( [pesquisa_idpesquisa] [int] NOT NULL, [filtro_idfiltro] [int] NOT NULL, CONSTRAINT [PK_pesquisa_has_filtro] PRIMARY KEY CLUSTERED ( [pesquisa_idpesquisa] ASC, [filtro_idfiltro] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END 122 8 Especificação da Arquitetura 8.1 Diagrama de Componentes Figura 20 – Diagrama de Componentes 123 8.2 Diagrama de Implantação Figura 21 – Diagrama de Implantação 124 8.3 Diagrama de Pacotes Figura 22 – Diagrama de Pacotes Arquitetural 125 9 Realização de Casos de Uso 9.1 Diagrama de Classe Conceitual Figura 23 – Diagrama de Classe Conceitual 9.2 Diagrama de Classes do Projeto Figura 24 – DC de Projeto - Realizar Conexões 126 Figura 25 – DC de Projeto - Execução do Componente 127 Figura 26 – DC de Projeto – Retorno do Resultado 128 Figura 27 – DC de Projeto – Realizar consulta extra 129 9.3 Diagrama de Sequência Figura 28 – Execução do Componente Figura 29 – Realizar consulta extra 130 Figura 30 – Escolha consulta extra 131 Figura 31 – Retorno do Resultado – BUSCA 132 Figura 32 – Retorno do Resultado – RELATÓRIO 133 9.4 Layout da Interface Figura 33 – Interface de pesquisa 134 9.5 Diagrama Geral de Classes do Projeto Figura 34 – Diagrama de Classes 135 10 Testes 10.1 Plano de Testes O teste a ser executado será de usabilidade seguindo todos os procedimentos necessários para a utilização do framework: Configuração dos arquivos datasource.properties. Configuração do banco de dados. Configuração das libs e da chamada ao componente. Manipulação do retorno. Um teste para cada tipo de campo na interface preenchendo somente o campo. Um teste que preenche todos os campos da tela, um de cada tipo. Os requisitos necessários para a execução do teste são: Uma aplicação web que possa fazer chamada ao componente SQL Server 2005 Tomcat 6.0.20 Windows XP/Vista/Sete ou Ubuntu Navegador Firefox, Internet Explorer, por exemplo 10.2 Casos de Testes Caso de Teste Configurar framework Tipo de Teste Usabilidade Procedimentos 1. Configuração dos arquivos dataSource.properties de acordo com o detalhamento do caso de uso 01 e seguindo o procedimento descrito no apêndice C. 2. Seguir os procedimentos descritos no Apêndice D e E. 3. Disponibilizar a aplicação para o usuário final utilizar. 4. Verificar se o retorno dos dados está conforme manipulado. 136 Resultado Esperado Framework configurado pelo desenvolvedor e pronto para uso pelo usuário final. Resultado do Teste Satisfatório Tabela 78 – Caso de Teste – Configurar framework Caso de Teste Preencher campo do tipo texto Tipo de Teste Verificação Procedimentos 1. Preencher campo com o que deseja pesquisar. 2. Efetuar buscar e verificar se os dados retornados estão de acordo como o preenchido e o configurado. 1. Campo possui consulta extra. Seleciona botão de consulta extra, escolhe uma opção na combobox e clica no botão selecionar. 2. Verifica se o valor selecionado foi preenchido na tela de pesquisa, no local do campo. 3. Efetuar a busca e verificar se os dados retornados estão de acordo com o preenchido e configurado. Resultado Esperado Campo preenchido e retorno de acordo com o que foi pesquisado. Resultado do Teste Satisfatório Tabela 79 – Caso de Teste – Preencher campo do tipo texto Caso de Teste Preencher campo do tipo data Tipo de Teste Verificação Procedimentos 1. Preenche o campo com a data desejada. 2. Verifica se o componente configurou corretamente a máscara. 3. Efetuar a busca e verificar se os dados retornados estão de acordo com o preenchido e configurado. 137 Resultado Esperado Campo preenchido e retorno de acordo com o que foi pesquisado. Resultado do Teste Satisfatório Tabela 80 – Caso de Teste – Preencher campo do tipo data Caso de Teste Preencher campo do tipo combobox Tipo de Teste Verificação Procedimentos 1. Verifica se os valores apresentados na combobox estão de acordo com a consulta definida para o campo. 2. Seleciona o valor desejado. 3. Efetuar a busca e verificar se os dados retornados estão de acordo com o preenchido e configurado. Resultado Esperado Campo preenchido e retorno de acordo com o que foi pesquisado. Resultado do Teste Satisfatório Tabela 81 – Caso de Teste – Preencher campo do tipo combobox Caso de Teste Preencher campo do tipo checkbox Tipo de Teste Verificação Procedimentos 1. Verifica se os valores apresentados nas checkboxes estão de acordo com a consulta definida para o campo. 2. Seleciona o(s) valor(es) desejado(s). 3. Efetuar a busca e verificar se os dados retornados estão de acordo com o preenchido e configurado. Resultado Esperado Campo preenchido e retorno de acordo com o que foi pesquisado. Resultado do Teste Satisfatório 138 Tabela 82 – Caso de Teste – Preencher campo do tipo checkbox Caso de Teste Preencher campo do tipo radio button Tipo de Teste Verificação Procedimentos 1. Verifica se os valores apresentados nos radio buttons estão de acordo com a consulta definida para o campo. 2. Seleciona o valor desejado. 3. Efetuar a busca e verificar se os dados retornados estão de acordo com o preenchido e configurado. Resultado Esperado Campo preenchido e retorno de acordo com o que foi pesquisado. Resultado do Teste Satisfatório Tabela 83 – Caso de Teste – Preencher campo do tipo radio button Caso de Teste Preencher campo do tipo lista de adição Tipo de Teste Verificação Procedimentos 1. Preencher campo texto com o que deseja pesquisar. 2. Clica no botão adicionar. Verifica se o valor foi adicionado na listagem. 3. Efetuar buscar e verificar se os dados retornados estão de acordo como o preenchido e o configurado. 1. Campo possui consulta extra. Seleciona botão de consulta extra, escolhe uma opção na combobox e clica no botão selecionar. 2. Verifica se o valor foi adicionado na listagem. 3. Efetuar a busca e verificar se os dados retornados estão de acordo com o preenchido e configurado. Resultado Esperado Campo preenchido e retorno de acordo com o que foi 139 pesquisado. Resultado do Teste Satisfatório Tabela 84 – Caso de Teste – Preencher campo do tipo lista de adição Caso de Teste Preencher pesquisa Tipo de Teste Verificação Procedimentos 1. Preencher todos os campos apresentados na tela. 2. Efetuar a busca e verificar se os dados retornados estão de acordo com o preenchido e configurado. Resultado Esperado Campos preenchidos e retorno de acordo com o que foi pesquisado. Resultado do Teste Satisfatório Tabela 85 – Caso de Teste – Preencher campo do tipo lista de adição 10.3 Relatório de Testes Os procedimentos definidos nos casos de teste foram seguidos. A configuração do banco de dados foi simples. Uma dificuldade é o vínculo de campos com filtro e o vinculo de filtro com pesquisa por ter que saber o id (identificador) corretor dos dois. A configuração do framework na aplicação foi simples e sem dificuldades. Foi configurada uma interface para usuário final com cada tipo de campo, habilitando a consulta extra e a consulta que traz opções nos campos combobox, checkbox e radio button. Não houve dificuldades no preenchimento dos dados. A tela teve uma resposta rápida, montando rapidamente a interface configurada no banco de dados. Para cada teste do campo somente o campo foi preenchido. Foi efetuada uma pesquisa preenchendo todos os campos da interface. Os dados foram retornados conforme desejado. O componente foi executado nos dois modos: busca e relatório. O retorno do componente com relação à funcionalidade solicitada (busca ou relatório) foi como especificado e foi possível a fácil manipulação do retorno para apresentação dos dados para o usuário final. 140 11 Conclusão Pensando nas vantagens do uso de um framework esse projeto teve como objetivo o desenvolvimento de um componente com duas funcionalidades: pesquisa e parâmetro de relatório. Foi desenvolvida uma configuração simples para o seu uso e sem a necessidade de compilação de código objetivando a praticidade e rapidez nas mudanças. Houveram dificuldades no desenvolvimento do projeto devido a criação em tempo de execução da interface visual do componente e também do SQL de consulta. Foram estudos empíricos da melhor forma de implementação resultando em uma solução prática e simples. O objetivo não foi definir um domínio para a aplicação. Afinal, praticamente todos os programas precisam de uma pesquisa. O componente tem grandes chances de ser bem aceito pelos desenvolvedores. Na minha opinião, um dos aspectos que mais contribui para isso, é a facilidade de integração com a aplicação web já existente. O desenvolvedor precisa apenas configurar no web.xml de sua aplicação, copias os .jars necessários e fazer a chamada no local desejado além, é claro, da configuração no banco de dados. Outro aspecto é a configuração realizada no banco de dados. Consequentemente, não é necessário retirar a aplicação do ar para manutenções nem recompilações de código. A cada demanda, basta apenas adicionar o novo parâmetro de pesquisa via banco de dados e as alterações estarão disponíveis para o usuário final em tempo de execução. Usuários finais de aplicações solicitam muito pesquisas com determinados campos e relatórios. O componente nesse aspecto facilita bastante. A demanda do cliente pode ser atendida rapidamente quanto aos campos de busca e os parâmetros de relatório. Assim, o desenvolvedor não precisa se preocupar com a interface e sim com o seu retorno. Como um requisito futuro, para quem desejar continuar o projeto, sugiro permitir o relacionamento de um campo com outro e de um filtro com outro, sendo que esse relacionamento seria apenas visual (apenas na interface). Com isso, na utilização do componente poderia ser configurado o relacionamento de dois filtros de data, por exemplo, sendo cada um com um período. Outro requisito futuro seria uma opção que selecionasse todas as opções do checkbox, para que o usuário não precisasse selecionar um por um na listagem. E, por último, no caso da funcionalidade de busca, seria listar todas as opções encontradas de acordo com a pesquisa preenchida. O usuário final poderia selecionar uma opção na listagem e o componente retornaria o identificador do registro selecionado. Assim, o desenvolvedor que está manipulando o componente poderia buscar esse registro e apresentá-lo em um modo de consulta ou em modo de edição para o usuário final. 141 12 Referências Isbir Filho, Joseph Antônio. Framework de Aplicação: Modelagem e Implementação de Interfaces. Anápolis, 2008. 138 p. Trabalho de Conclusão de Curso (Projeto) – Curso de Sistemas de Informação, UnUCET, Universidade Estadual de Goiás. MENDONÇA, Sandoval César de Oliveira. Framework de Aplicação para o Desenvolvimento de Sistemas de Informação: Frameworks de Aplicações. Anápolis, 2008. 187 p. Projeto – Curso de Sistemas de Informação, UnUCET, Universidade Estadual de Goiás. PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO. Frameworks: Conceitos Gerais. Rio de Janeiro, 14p. ROCHA, André Dantas. Construindo frameworks em Java. Java Magazine, Rio de Janeiro, ano VII, edição 66, p. 76-82, fevereiro 2009. UNIVERSIDADE FEDERAL DE CAMPINA GRANDE. Tipos de frameworks. Disponível em: <http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/tipos.htm>. Acesso em 02 de abril de 2011. 142 13 Apêndices 13.1 Apêndice A – Cronograma de Atividades do Trabalho de Conclusão de Curso Figura 35 – Cronograma de atividades proposto no projeto do Trabalho de Conclusão de Curso 143 13.2 Apêndice A – PÔSTER APRESENTADO NO III SIMPÓSIO DE TECNOLOGIA DA INFORMAÇÃO E III SEMANA DE INICIAÇÃO CIENTÍFICA DO CURSO DE SISTEMAS DE INFORMAÇÃO UNUCET-UEG/2011 Figura 36 – Pôster – Framework de Aplicação 144 13.3 Apêndice C – Configuração dos arquivos dataSource Configuração do caminho dos arquivos properties de conexão com o banco de dados no Windows. Após a instalação do Apache Tomcat, acessar a pasta /tomcat/bin. Executar o arquivo tomcat6w.exe, é necessário que o serviço tenha sido instalado. Acessar a aba Java. No campo Java Options inserir o parâmetro: -Dcomponent.config.path="C:/dataSource (por exemplo)" Figura 37 – Configuração Tomcat 145 13.4 Apêndice D – Configurando o banco de dados 1. Pesquisa. Inserir o nome da pesquisa, que será apresentado na tela e a ordenação do resultado (asc ou desc). Figura 38 – Tabela de Pesquisa 2. Entidades. Cadastre a entidade que deseje que seja pesquisável. Lembrando que o nome da entidade deve ser o mesmo nome da entidade no banco original. 146 Figura 39 – Tabela de Entidades 3. Campos. Definir os valores conforme especificado nos requisitos R03, R07 e R09. Figura 40 – Tabela de Campos 4. Definir os filtros para os campos. Lembrando que um filtro pode ter vários campos. 147 Figura 41 – Tabela de Filtro 5. Agora podemos vincular os campos em seus respectivos filtros. Figura 42 – Tabela de vinculo entre Campos e Filtro 148 6. E os filtros a sua pesquisa. Figura 43 – Tabela de vinculo entre Filtro e Pesquisa 7. Pronto! O banco de dados está configurado para ser utilizado. 13.5 Apêndice E – Exemplo de Uso 1. O primeiro passo é copiar o jar do framework e suas dependências para a pasta lib de seu projeto. (componente.jar e biz.jar) 2. O segundo passo é mapear o framework no web.xml da sua aplicação. Exemplo abaixo: a. Lembrando que o caminho do servlet é sempre o mesmo, mudando apenas o mapeamento. 149 Figura 44 – Configuração do uso do componente no web.xml da aplicação web 3. Depois de mapeado, você poderá fazer uso do componente fazendo chamada ao servlet mapeado e passando os parâmetros necessários. Como por exemplo: a. Lembrando que os parâmetros são: i. pesquisa = id da pesquisa que deseja executar ii. modo = o modo como deseja executar r (relatório) ou b (busca) iii. resultado = caminho do servlet para qual deseja que seja redirecionado após a execução da pesquisa pelo usuário final (onde o desenvolvedor poderá manipular os dados do resultado retornado) b. Lembrando que todos os parâmetros são minúsculos. 150 Figura 45 – Chamada ao componente da interface 4. Pronto! O componente está pronto para uso! Basta agora que você manipule os dados retornados pelo componente configurando o seu servlet. 5. Lembrando que é necessário que o banco de dados já esteja configurado com os dados necessários. 151