UNIVERSIDADE DO PLANALTO CATARINENSE DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE SISTEMAS DE INFORMAÇÃO (BACHARELADO) CLEITON FERNANDO REMOR SISTEMA PARA COLETA DE DADOS BASEADO EM DISPOSITIVOS MÓVEIS E WEB SERVICES LAGES (SC) 2008 CLEITON FERNANDO REMOR SISTEMA PARA COLETA DE DADOS BASEADO EM DISPOSITIVOS MÓVEIS E WEB SERVICES Trabalho de Conclusão de Curso submetido à Universidade do Planalto Catarinense para obtenção dos créditos de disciplina com nome equivalente no curso de Sistemas de Informação Bacharelado. Orientação: Prof. Wilson Castello Branco Neto, Dr. LAGES (SC) 2008 CLEITON FERNANDO REMOR DESENVOLVIMENTO DE UM SISTEMA DE INFORMAÇÃO PARA COLETA DE DADOS ESTE RELATÓRIO, DO TRABALHO DE CONCLUSÃO DE CURSO, FOI JULGADO ADEQUADO PARA OBTENÇÃO DOS CRÉDITOS DA DISCIPLINA DE TRABALHO DE CONCLUSÃO DE CURSO, DO 8º. SEMESTRE, OBRIGATÓRIA PARA OBTENÇÃO DO TÍTULO DE: BACHAREL EM INFORMAÇÃO SISTEMAS DE Lages (SC), 04 de Dezembro de 2008 Prof. Wilson Castello Branco Neto, Dr. Orientador BANCA EXAMINADORA: Prof. Marcos André Pisching, M.Sc. UNIPLAC Prof. Angelo Augusto Frozza, M.Sc. UNIPLAC Prof. Wilson Castello Branco Neto, Dr. Professor de TCC Prof. Angelo Augusto Frozza, M.Sc. Coordenador de Curso Dedico a Deus que me deu condições para desenvolver este trabalho. LISTA DE ILUSTRAÇÕES FIGURA 1 FIGURA 2 FIGURA 3 FIGURA 4 FIGURA 5 FIGURA 6 FIGURA 7 FIGURA 8 FIGURA 9 FIGURA 10 FIGURA 11 FIGURA 12 FIGURA 13 FIGURA 14 FIGURA 15 FIGURA 16 FIGURA 17 FIGURA 18 FIGURA 19 FIGURA 20 FIGURA 21 FIGURA 22 FIGURA 23 FIGURA 24 FIGURA 25 FIGURA 26 - PDA com o sistema operacional Pocket PC da Microsoft. ..................20 Osborne 1..............................................................................................20 IBM-PC.................................................................................................21 Epson HX-20 ........................................................................................21 Tela inicial do Visual Studio 2005. .......................................................25 Desenv. de um sistema para computador de mesa no Visual Studio 2005 ...........................................................................................25 Desenvolvimento de uma aplicação para PDA no Visual Studio 2005 ...........................................................................................26 Emuladores da Microsoft incluídos no Visual Studio 2005..................26 Ambiente de desenvolvimento de aplicativos móveis no NetBeans ..............................................................................................27 Emulador do NetBeans em execução .................................................28 Ambiente de desenvolvimento do PDAToolBox ................................29 Ambiente de desenvolvimento do SQL Server Management Studio Express ................................................................................................31 Ciclo de vida do sistema baseado em ciclos iterativos .......................37 Estrutura de um projeto de web service no Visual Studio ..................57 Esquema de funcionamento do sistema ..............................................58 Exemplo de reutilização das camadas MVC ......................................60 Estrutura de camadas do sistema ........................................................61 Interface gráfica da primeira etapa do cadastro de abastecimento de veículos ...............................................................................................81 Interface gráfica para a inclusão e alteração de abastecimento de veículo.................................................................................................84 Acessando o arquivo ServicoRetornaDados.asmx .............................93 Acessando o método retornaUnidadesNegocio .................................94 Resultado da execução do método retornaUnidadeNegocio .............94 Acessando o arquivo ServicoRecebeDados.asmx ..............................95 Acessando o método inserirAbastecimentoMaquina .........................96 Resultado da execução do método inserirAbastecimentoMaquina............................................................97 Interface de alteração dos endereços dos web services no aplicativo do módulo de comunicação no PDA. ................................98 FIGURA 27 - Interface do processo de comunicação no PDA .................................98 FIGURA 28 - Resultado da etapa de obtenção de dados com o aplicativo do módulo de comunicação no PDA .......................................................99 FIGURA 29 - Resultado da etapa de envio de dados com o aplicativo do módulo de comunicação no PDA .....................................................100 FIGURA 30 - Tabela ABASTECIMENTOVEICULO do banco de dados da empresa antes do processo de comunicação .....................................100 FIGURA 31 - Tabela ABASTECIMENTOVEICULO do banco de dados da empresa depois do processo de comunicação...................................101 FIGURA 32 - Designado ou alterando uma unidade de negócio no PDA ..............102 FIGURA 33 - Alertas mostrado quando da não designação de uma unidade de negócio ..............................................................................................102 FIGURA 34 - Interfaces do cadastro de abastecimento de veículo .........................103 FIGURA 35 - Resultado da etapa de coleta de dados com o aplicativo do módulo de coleta no PDA .................................................................104 FIGURA 36 - Tela inicial para cadastro de atividades ............................................105 FIGURA 37 - Interface para a inserção ou alteração de uma atividade ..................105 FIGURA 38 - Menu de opções para atividades .......................................................106 FIGURA 39 - Interface para inserção de funcionário em atividade ........................106 FIGURA 40 - Interface para efetuar uma cópia de segurança.................................108 FIGURA 41 - Interface para restaurar uma cópia de segurança ..............................108 FIGURA 42 - Resultado do teste de cópia de segurança.........................................109 QUADRO 1 - Comparativo entre ferramentas de desenvolvimento .........................31 QUADRO 2 - Comparativo entre modelos de PDA ..................................................34 QUADRO 3 - Requisito funcional F1 – Manter informações sobre unidades de negócio...........................................................................40 QUADRO 4 - Requisito funcional F2 – Manter informações sobre parcelas ...........41 QUADRO 5 - Requisito funcional F3 – Manter informações sobre quadras ............41 QUADRO 6 - Requisito funcional F4 – Manter informações sobre culturas ............41 QUADRO 7 - Requisito funcional F5 – Manter informações sobre cultivares .........42 QUADRO 8 - Requisito funcional F6 – Manter informações sobre clones ..............42 QUADRO 9 - Requisito funcional F7 – Manter informações sobre funcionários ........................................................................................42 QUADRO 10 - Requisito funcional F8 – Manter informações sobre implementos......................................................................................42 QUADRO 11 - Requisito funcional F9 – Manter informações sobre tipos de materiais............................................................................................42 QUADRO 12 - Requisito funcional F10 – Manter informações sobre subtipos de materiais............................................................................................43 QUADRO 13 - Requisito funcional F11 – Manter informações sobre materiais............................................................................................43 QUADRO 14 - Requisito funcional F12 – Manter informações sobre veículos .............................................................................................43 QUADRO 15 - Requisito funcional F13 – Manter informações sobre tipos de máquinas ...........................................................................................43 QUADRO 16 - Requisito funcional F14 – Manter informações sobre máquinas ...........................................................................................43 QUADRO 17 - Requisito funcional F15 – Manter informações sobre safras ...........43 QUADRO 18 - Requisito funcional F16 – Manter informações sobre tipos de atividades ..........................................................................................44 QUADRO 19 - Requisito funcional F17 – Manter informações sobre pragas ..........44 QUADRO 20 - Requisito funcional F18 – Manter informações sobre atividades ..........................................................................................44 QUADRO 21 - Requisito funcional F19 – Manter informações sobre atividades dos funcionários ................................................................................44 QUADRO 22 - Requisito funcional F20 – Manter informações sobre a utilização de veículos ........................................................................................45 QUADRO 23 - Requisito funcional F21 – Manter informações sobre a utilização de máquinas ......................................................................................45 QUADRO 24 - Requisito funcional F22 – Manter informações sobre abastecimentos de máquinas. .....................................................................................45 QUADRO 25 - Requisito funcional F23 – Manter informações sobre abastecimento de veículos. .......................................................................................45 QUADRO 26 - Requisito funcional F24 – Manter informações sobre materiais utilizados. ..........................................................................................45 QUADRO 27 - Requisito funcional F25 – Manter informações sobre insumos utilizados. ..........................................................................................46 QUADRO 28 - Requisito funcional F27 – Transferir dados da empresa para o PDA. .................................................................................................46 QUADRO 29 - Requisito funcional F28 – Transferir dados do PDA para a empresa. ............................................................................................46 QUADRO 30 - Requisito funcional F28 – Efetuar cópia de segurança. ...................47 QUADRO 31 - Requisitos suplementares para o módulo PDA. ...............................47 QUADRO 32 - Requisitos suplementares para o módulo de comunicação. .............47 QUADRO 33 - Casos de Uso do sistema ..................................................................48 QUADRO 34 - Conceitos do sistema ........................................................................49 QUADRO 35 - Expansão do caso de uso UC1 – Atribuir atividades aos funcionários ......................................................................................51 QUADRO 36 - Expansão do caso de uso UC2 – Encerrar atividade dos funcionários ......................................................................................52 QUADRO 37 - Estrutura de camadas do sistema ......................................................60 QUADRO 38 - Código fonte da classe UnidadeNegocio ..........................................62 QUADRO 39 - Código fonte da classe (web service) ServicoRetornaDados ...........64 QUADRO 40 - Código fonte da classe Conexao I ....................................................65 QUADRO 41 - Código fonte da classe Conexao II ...................................................67 QUADRO 42 - Arquivo xml de configuração da conexão com banco de dados Firebird .............................................................................................68 QUADRO 43 - Código fonte da classe ControleUnidadeNegocio ...........................68 QUADRO 44 - Classe RecebeDados do aplicativo para PDA do módulo de comunicação .....................................................................................71 QUADRO 45 - Método de inserção de dados na tabela UnidadeNegocio do PDA ..................................................................................................73 QUADRO 46 - Método que retorna todos os abastecimentos de veículos armazenados no PDA .......................................................................74 QUADRO 47 - Código fonte do método para o envio dos dados ao web service receptor .............................................................................................75 QUADRO 48 - Método que insere os abastecimentos de veículos no banco de dados da empresa .........................................................................77 QUADRO 49 - Método inserirAbastecimentoVeiculo do web service ServicoRecebeDados ........................................................................78 QUADRO 50 - Método retornaAbastecimentoVeiculo da classe ControleAbastecimentoVeiculo ........................................................81 QUADRO 51 - Código fonte das ações dos botões da interface principal de cadastro. ............................................................................................82 QUADRO 52 - Thread que efetua a busca de dados essenciais para o cadastro. ............................................................................................84 QUADRO 53 - Código fonte do formulário de inserção e alteração de abastecimento de veículo I ...............................................................85 QUADRO 54 - Código fonte do formulário de inserção e alteração de abastecimento de veículo II ..............................................................87 QUADRO 55 - Código fonte da criação da cópia de segurança ................................90 QUADRO 56 - Código fonte para a recuperação da cópia de segurança ..................90 LISTA DE ABREVIATURAS E SIGLAS ARM DLL GPS HP IBGE IDE IIS ISAM JME MOS MVC PDA PU RISC RPC RUP SDK SGBD SOAP SQL UC XML - Advanced RISC Machine - Dynamic link library - Global Position System - Hewlett-Packard - Instituto Brasileiro de Geografía e Estatística - Integrated Development Environment - Internet Information Service - Infra-estrutura de Suporte às Aplicações Móveis - Java Micro Edition - Machine Operating System - Model View Controller - Personal Digital Assistant - Processo Unificado - Reduced Instruction Set Computer - Remote Procedure Call - Rational Unified Process - Software Development Kit - Sistema Gerenciador de Banco de Dados - Simple Object Access Protocol - Structured Query Language - Use Case - Extensible Markup Language RESUMO Em muitos negócios é fundamental coletar dados, seja explicita ou implicitamente, para tomar decisões. Com o avanço da tecnologia da computação móvel, antigos sistemas, como a coleta e armazenamento em papel, vem sendo substituídos pela coleta com computadores móveis, como: notebooks, Assistentes Pessoais Digitais, celulares etc., pois a coleta manual pode ocasionar diversos contratempos, como a perda de dados, rasuras ou até mesmo mau preenchimento de planilhas, por exemplo. Existem diversos sistemas para a coleta de dados em dispositivos móveis, mas na grande maioria são sistemas proprietários e desenvolvidos para usuários específicos, não podendo ser aproveitados por outros usuários potenciais. Levando em conta este contexto, apresenta-se o desenvolvimento de um sistema para coleta de dados baseado em dispositivos móveis para uma empresa do ramo de frutas utilizar em suas diversas fazendas. Tal sistema deve possibilitar ao usuário coletar, armazenar e transmitir os dados registrados a um banco de dados central. Através de estudos verificou-se a possibilidade de desenvolvimento em diversas linguagens de programação, sendo a linguagem C# com a ferramenta Visual Studio escolhida, por se tratar de uma ferramenta com diversas funcionalidades e de grande eficácia, que possibilitam o desenvolvimento do sistema proposto. Além dos aplicativos para dispositivos móveis, também se tem o desenvolvimento de serviços web para fazer a transferência de dados entre o dispositivo móvel e o banco de dados da empresa. Todo o sistema é desenvolvido seguindo o padrão MVC, sendo assim, tem-se um projeto com códigos e bibliotecas bem organizados e com a possibilidade de reutilização destes em todo o projeto. Palavras-chave: Aplicativos para Dispositivos Móveis; Assistente Pessoal Digital; Serviço Web; Coleta e Transmissão de Dados; Empresas Produtoras de Frutas. ABSTRACT In many businesses is crucial to do the data collection, it can be explicitly or implicitly, to make decisions. With the advance of mobile computing technology, old systems like the collection and storage of data in paper, has been replaced by the collection with mobile computers, form example: notebooks, Personal Digital Assistant, cellphones etc., because the manual collection can causes various problems like the loss of data, erasure or even bad fill in spreadsheets for example. There are several systems for data collection on mobile devices, but mostly proprietary systems and designed for specific users and can’t be used by other potential users. Considering this context, it’s showing a system for data collection based on mobile devices for a company in the industry of fruit use in its various farms. The system should possibilty the user to collect, store and transmit data to a central database. With studies it could be certified that there was the possibility of development in various programming languages, and the language C# with Visual Studio tool was chosen because it is a tool with multiple functions and high-efficiency, that possibility the development of the proposed system. In addition to the applications for mobile devices, also has been the development of web services to make the data transfer between the mobile device and the company's databases. The whole system is developed following the MVC pattern, so it causes that the codes and libraries are well-organized and the possibility of reuse them in the project. Keywords: Applications for Mobile Devices; Personal Digital Assistant; Web Service; Collection and Transmission of Data; Companies that Produce Fruit. SUMÁRIO 1 INTRODUÇÃO ........................................................................................................13 1.1 Apresentação ...........................................................................................................13 1.2 Descrição do problema ............................................................................................14 1.3 Justificativa ..............................................................................................................15 1.4 Objetivo geral ..........................................................................................................16 1.5 Objetivos específicos ...............................................................................................16 1.6 Metodologia .............................................................................................................16 2 COMPUTAÇÃO MÓVEL ......................................................................................18 2.1 Histórico ..................................................................................................................18 2.2 PDA .........................................................................................................................20 2.3 Linguagens e ferramentas de desenvolvimento.......................................................23 2.3.1 Visual Studio .................................................................................................................... 24 2.3.2 NetBeans IDE .................................................................................................................. 27 2.3.3 PDAToolBox .................................................................................................................... 28 2.3.4 Outras ferramentas de desenvolvimento ......................................................................... 29 2.3.5 Microsoft SQL Server Mobile .......................................................................................... 30 2.3.6 Análise das ferramentas .................................................................................................. 31 2.4 Modelos de PDA .....................................................................................................32 2.4.1 Palm ................................................................................................................................. 32 2.4.2 HP (Hewlett-Packard) ..................................................................................................... 32 2.4.3 Comparativo entre modelos ............................................................................................ 33 2.5 Conclusão ................................................................................................................34 3 ANÁLISE E PROJETO DO SISTEMA .................................................................36 3.1 Processo Unificado de desenvolvimento de software .............................................36 3.2 Concepção ...............................................................................................................37 3.2.1 Modelo atual de coleta de dados da empresa alvo do sistema ....................................... 39 3.2.2 Sumário executivo ........................................................................................................... 40 3.2.3 Levantamento de requisitos ............................................................................................. 40 3.2.4 Organização dos requisitos em casos de uso .................................................................. 47 3.2.5 Organização dos requisitos em função de conceitos....................................................... 48 3.3 Elaboração ...............................................................................................................49 3.3.1 Expansão dos casos de uso.............................................................................................. 50 3.3.2 Modelo conceitual ........................................................................................................... 52 3.3.3 Diagrama de classe ......................................................................................................... 53 3.3.4 Diagrama de estado de navegação ................................................................................. 53 3.4 Conclusão ................................................................................................................54 4 IMPLEMENTAÇÃO DO SISTEMA .....................................................................55 4.1 Web service ..............................................................................................................55 4.2 Arquitetura do sistema .............................................................................................58 4.3 Camada de modelo ..................................................................................................61 4.4 Módulo de comunicação..........................................................................................63 4.4.1 Web service provedor dos dados ..................................................................................... 63 4.4.2 Recepção dos dados no PDA ........................................................................................... 70 4.4.3 Envio dos dados do PDA ................................................................................................. 74 4.4.4 Recepção e inserção dos dados no servidor.................................................................... 77 4.5 Módulo de coleta de dados ......................................................................................79 4.5.1 Designar unidade de negócio .......................................................................................... 79 4.5.2 Coleta dos dados ............................................................................................................. 80 4.5.3 Cópia de segurança ......................................................................................................... 89 4.6 Conclusão ................................................................................................................91 5 APRESENTAÇÃO DO SISTEMA .........................................................................92 5.1 Módulo de comunicação..........................................................................................92 5.1.1 Web service provedor de dados ....................................................................................... 92 5.1.2 Web service receptor de dados ........................................................................................ 95 5.1.3 Aplicativo de comunicação no PDA ................................................................................ 97 5.2 Módulo de coleta de dados ....................................................................................101 5.2.1 Designar unidade de negócio ........................................................................................ 101 5.2.2 Coleta de dados ............................................................................................................. 102 5.2.3 Cópia de segurança ....................................................................................................... 107 5.3 Conclusão ..............................................................................................................109 6 CONSIDERAÇÕES FINAIS .................................................................................110 REFERÊNCIAS BIBLIOGRÁFICAS ....................................................................113 BIBLIOGRAFIA COMPLEMENTAR ...................................................................116 APÊNDICES ..............................................................................................................117 ANEXOS.....................................................................................................................133 13 1 INTRODUÇÃO 1.1 Apresentação A informática tem, cada vez mais, tomado conta do universo dos negócios e as empresas sentem a necessidade de informatizarem suas atividades para não perderem clientes e mercado. Em um mundo de extrema concorrência como o atual, saem na frente as empresas com um sistema de informação baseado em computadores (LAUDON e LAUDON, 1999). Nesse universo da informação, uma tecnologia que está em pleno crescimento é a dos dispositivos móveis. Celulares, computadores portáteis e computadores de mão estão desempenhando funções que antes dependiam de vários funcionários ou, quando informatizados, de uma máquina de grande porte e sem nenhuma mobilidade. A utilização específica de computadores de mão, conhecidos pela sigla PDA (Personal Digital Assistant) não é mais uma novidade. Muitas empresas que necessitam de dados descentralizados, como, por exemplo, os pedidos de compra de seus clientes, têm nesse tipo de computador a solução ideal de informatização, pois torna prático o processo de venda. Outro exemplo, no qual se enquadra esse trabalho, é o de uma empresa com vários setores e um fluxo grande de informações distribuídas entre estes. Nesse caso, o PDA pode ser de grande utilidade na coleta, tratamento e atualização destas informações. A empresa que serve como cenário para o trabalho em questão atua com 14 produção de frutas em diversos municípios da Serra Catarinense, tais como: São Joaquim, Painel e Lages. Ela possui um grande fluxo de atividades em diferentes setores e unidades de produção, o que implica na necessidade de coleta de dados descentralizados. Todas as funcionalidades do sistema proposto são baseadas nas necessidades específicas desta empresa, cujo nome é omitido ao longo do trabalho por solicitação da mesma. O primeiro capítulo deste trabalho apresenta uma introdução ao tema abordado, juntamente com a definição do problema, objetivos, justificativa e metodologia utilizada. No segundo capítulo é abordado um estudo sobre os computadores de mão (PDA) existentes no mercado, bem como as ferramentas de desenvolvimento para os mesmos. O terceiro capítulo apresenta a modelagem do sistema desenvolvido. O quarto capítulo mostra a implementação do sistema e no quinto capítulo é feita uma apresentação do mesmo após concluída a implementação. Finalizando o trabalho de conclusão de curso, são apresentadas as considerações finais no sexto capítulo. 1.2 Descrição do problema Uma empresa que atua na produção de frutas em diversos municípios da Serra Catarinense tem um grande fluxo de atividades em diferentes setores e unidades de produção. Os dados oriundos destas atividades são centralizados em um único banco de dados na matriz. Ela utiliza planilhas em papel, que os gerentes de cada unidade de produção preenchem com os dados necessários e encaminham ao setor de informática para serem digitados. Esse processo, além do tempo demandado, pode causar diversos contratempos, como, por exemplo, a perda de uma dessas planilhas, a digitação incorreta dos dados ou, até mesmo, o preenchimento incorreto, uma vez que não há nenhuma ferramenta capaz de analisar os dados manuscritos. 15 1.3 Justificativa É comum, ainda hoje, que sistemas antigos, tais como planilhas, controles e relatórios em papel, sejam utilizados nas empresas. Porém, estes estão se tornando cada vez mais defasados devido ao avanço das tecnologias, o crescimento da concorrência em todas as áreas de trabalho e a preocupação com o meio ambiente. Ainda, surge neste cenário uma série de dificuldades que as empresas encontram na sua administração, que engloba desde a simples perda de um relatório até uma tomada de decisão errada, que pode acarretar em grandes prejuízos em um determinado negócio. É uma necessidade que as empresas se adaptem às novas tecnologias e à utilização de sistemas de informação, pois todas estão passando por um momento de extrema concorrência por recursos de toda ordem, como fornecedores, clientes, matéria prima e tecnologia (LAUDON e LAUDON, 1999). A empresa em questão geralmente tem vários problemas com a utilização dos métodos atuais, pois utiliza planilhas para o controle de suas unidades e centraliza as informações mensalmente em um único banco de dados. As falhas são diversas, entre elas estão a perda de planilhas e o mau preenchimento das mesmas, pois uma planilha preenchida de forma errada no início do mês pode acarretar em erros no momento da digitação. Além dos problemas administrativos, a empresa também enfrenta problemas de ordem financeira com a compra de papel e os prejuízos causados pelas falhas supra citadas. Uma possível solução consiste na informatização do sistema de coleta de dados, utilizando computadores de mão. Assim, a empresa pode solucionar boa parte dos problemas, pois esse tipo de sistema tem condições de fazer uma crítica simultânea ao preenchimento, o que soluciona os erros ocorridos nessa etapa. Somam-se a isso as facilidades que o sistema gera, como a atualização no banco de dados com uma temporalidade menor que a atual, que é de um mês, facilitando e agilizando a tomada de decisão e, conseqüentemente, melhorando a administração da empresa. 16 1.4 Objetivo geral Desenvolver um sistema de informação para uma empresa utilizar na coleta, tratamento e armazenamento de dados de suas diversas unidades, com um módulo baseado em computadores de mão para realizar a coleta dos dados, bem como um módulo responsável para fazer a comunicação entre o módulo supra citado com o banco de dados da empresa. 1.5 Objetivos específicos Para este trabalho, têm-se como objetivos específicos: a) Fazer um levantamento dos modelos e características dos computadores de mão disponíveis no mercado, a fim de auxiliar na escolha de tal dispositivo para a implantação do sistema a ser desenvolvido; b) Desenvolver um aplicativo para computadores de mão, para ser utilizado na coleta, tratamento, armazenamento e exportação de dados; c) Desenvolver um aplicativo, que possa ser acessado via Internet, para receber os dados oriundos dos computadores de mão e inseri-los em um banco de dados. 1.6 Metodologia Neste trabalho foi desenvolvido um sistema de informação para a coleta de dados, com um módulo baseado em computadores de mão, bem como um módulo responsável por fazer a transferência dos dados coletados ao banco de dados de uma empresa que atua no ramo de produção de frutas. No início do trabalho realizou-se um levantamento a respeito dos computadores de mão, os modelos disponíveis no mercado, as características e os custos. Também foi feito um levantamento das ferramentas de desenvolvimento de aplicativos para esse tipo de computador. Para essa atividade foram utilizados como 17 fonte de pesquisa artigos, revistas, websites, trabalhos científicos e livros, resultando no capítulo dois. O próximo passo foi a modelagem do sistema baseado em módulos, que foi feita segundo o Processo Unificado. Essa fase do trabalho resultou no capítulo três. Após a modelagem, o passo seguinte foi o desenvolvimento do sistema. Para a programação dos aplicativos baseados em computadores de mão foi utilizada a linguagem C# e a ferramenta Visual Studio 2005. O banco de dados foi desenvolvido com o Microsoft SQL Server 2005 Mobile Edition. Para o módulo de transferência dos dados também foi utilizada a linguam C# e a ferramenta Visual Studio 2005, porém esse módulo foi desenvolvido com a utilização do Firebird como sistema gerenciador de banco de dados, pois é nesse sistema que está o banco de dados atual da empresa. Essa etapa do trabalho resultou no capítulo quatro. Ao final do capítulo quatro, foram realizados testes para comprovar o funcionamento dos módulos desenvolvidos, tanto para a coleta como para a transferência dos dados, resultando no capítulo cinco deste trabalho. Por fim, no capítulo seis, são apresentadas as considerações finais do trabalho. 18 2 COMPUTAÇÃO MÓVEL Neste capítulo são apresentados conceitos básicos sobre computação móvel e seus equipamentos. Em seguida, apresenta-se um levantamento mais detalhado sobre o Assistente Digital Pessoal (PDA – Personal Digital Assistant), que é o dispositivo móvel utilizado neste trabalho, especificando os modelos existentes, características e preços, bem como as ferramentas e linguagens de programação disponíveis para esse tipo de equipamento. 2.1 Histórico Com o avanço da tecnologia e a necessidade cada vez maior de acesso contínuo a dados, tem-se um cenário evolutivo de comunicação entre dispositivos móveis com bancos de dados e redes fixas, bem como com outros dispositivos móveis (MATEUS e LOUREIRO, 1998, p. 1). Nesse cenário encontra-se a computação móvel, que, conforme ISAM (2008), é “a computação onde todos os elementos do sistema têm a propriedade de mobilidade”. Pode-se, então, definir computação móvel como um paradigma de computação em que os elementos têm a propriedade de mobilidade, bem como a possibilidade de conexão com outros elementos, sejam eles fixos ou móveis. Esse paradigma traz algumas vantagens aos usuários, como: a mobilidade na utilização de componentes computacionais; a disponibilidade de uma gama enorme de aplicativos em um só aparelho que pode ser utilizado de inúmeras formas; a substituição de sistemas antecessores, como o armazenamento em papel (utilização de planilhas, agendas, cadernos), evitando a perda de dados por extravio ou avarias; e, a 19 facilidadade de comunicação, seja entre pessoas ou dispositivos (ZENI et al., 2004, p. 1). Assim como a computação móvel oferece vantagens, também apresenta desvantagens, como: possibilidade de perda de dados por falhas nos aplicativos ou pelo extravio dos equipamentos; dificuldade que o usuário pode ter em digitar os dados devido aos teclados serem virtuais ou pequenos; e, principalmente, limitações de memória impostas pelos dispositivos (ZENI et al., 2004, p. 1). A computação móvel é considerada como uma nova revolução da informática e dos meios de comunicação, como os grandes centros de processamento dos anos sessenta, o surgimento de terminais nos anos setenta e a evolução das redes de computadores nos anos oitenta (MATEUS e LOUREIRO, 1998, p. 1). Como toda revolução tecnológica, ela vem acompanhada de uma enorme gama de dispositivos, que vão desde os computadores portateis (notebooks) até os sistemas embarcados. Dentre esses dispositivos pode-se destacar: • PDA (Personal Digital Assistant): Computador de mão com características muito parecidas com as de um computador de mesa, porém com grandes limitações com relação a esse; • Celular: Telefone móvel com diversas ferramentas que tem como objetivo facilitar a comunicação entre os usuários, possibilita o envio de mensagens, além de possuir aplicativos de organização pessoal; • Smartphone: Pode ser definido como uma junção do celular com o PDA, pois possui todas as características do telefone, aliadas às funcionalidades de um PDA; • Leitor de livros: Dispositivo eletrônico que tem por objetivo o armazenamento e visualização de livros em formato digital. A seguir, trata-se com mais profundidade sobre PDA, que é o objetivo deste capítulo. 20 2.2 PDA O Assistente Pessoal Digital, conhecido pela sigla em inglês PDA (Personal Digital Assistant), é um dispositivo móvel com características similares às de um computador de mesa, pois possibilita ao usuário executar várias funções que há tempos atrás não eram possíveis sem que se estivesse em frente a um microcomputador. A figura 1 mostra um PDA. FIGURA 1 - PDA com o sistema operacional Pocket PC da Microsoft. (Fonte: SOCRIA.NET, 2008) Equipamentos portáteis ou ao menos transportáveis existem desde a década de 80. Em 1981, Adam Osborne lançou o primeiro computador portátil que se tem notícia, o Osborne-1, que pode ser visto na figura 2. Tempos depois, também lançado pela Osborne, surge o IBM-PC, que pode ser visto na figura 3. FIGURA 2 - Osborne 1 (Fonte: ALVES, 2002, p. 20). 21 FIGURA 3 - IBM-PC (Fonte: ALVES, 2002, p. 20). O primeiro dispositivo com característica realmente móvel que surgiu foi o Epson HX-20, que tinha um hardware muito limitado e a tela pequena dificultava a apresentação dos aplicativos, como pode ser visto na figura 4 (ALVES, 2002, p. 1922). FIGURA 4 - Epson HX-20 (Fonte: ALVES, 2002, p. 21). Nos anos 90, a Apple lançou o primeiro PDA do mundo, o Newton, que não foi um grande sucesso de vendas. Em 1992 nasce a Palm Inc., adquirida em 1995 pela US Robotics, que lançou os primeiros Palmtops (PDA) que realmente fizeram sucesso, são eles: o Pilot 1000 e o Pilot 5000. Em 1997, a 3Com adquiriu a US Robotics e, a partir desse ano, o mercado teve uma expansão gigantesca (TROIS, 2003, p. 1). A Microsoft entrou nesse mercado lançando uma versão do Windows para computadores móveis, denominada Windows CE, e a ofereceu aos fabricantes, fazendo com que logo surgissem PDA e Handled PC com esse sistema (ALVES, 2002, p. 23). Hoje, a Microsoft disponibiliza o Windows Mobile, que é uma versão aperfeiçoada do Windows CE, utilizado tanto em PDA, quanto em telefones celulares. Com essa diversidade de dispositivos, cresce cada vez mais o número de 22 aplicativos móveis no mercado, muitos deles disponíveis nos próprios sistemas operacionais, como, por exemplo, o Windows Mobile, que traz aplicativos clássicos da Microsoft, como o Word, Excel e alguns jogos, que vêm acompanhando a série Windows para desktop desde a sua criação. O sistema operacional da Palm também traz muitos aplicativos, como calculadora, editor de memorandos, leitor de e-mails e um to-do list (lista de afazeres). Além dos aplicativos disponibilizados juntamente com os sistemas operacionais, também existem vários outros de uso comercial e exclusivos, como sistemas de vendas, pesquisas e coleta de dados. Pode-se citar o aplicativo utilizado pelo IBGE (Instituto Brasileiro de Geografia e Estatística) no censo agropecuário do ano de 2007. Nesse caso, o uso do PDA trouxe várias vantagens em relação ao método anterior de coleta utilizado pelo Instituto, como, por exemplo, a crítica imediata no momento em que os dados eram coletados, o preenchimento de todos os quesitos obrigatórios e a dispensa do transporte de grandes volumes de questionários em papel (IBGE, 2008, p. 34). Na atualidade, existem dois sistemas operacionais que se destacam no mundo dos PDA: o Palm OS e o Windows Mobile. Existem ainda outros sistema operacionais, como o Linux e os sistema da Apple, porém é inegável que os mais utilizados sejam os primeiros citados, conforme visto em Criarweb (2008): Embora existam outras alternativas, como a possibilidade de instalar Linux, o que é certo é que a batalha no mercado dos PDA se trava atualmente entre o tradicional Palm OS e o irmão caçula do Windows, Windows CE ou Windows Mobile. O Palm OS é um sistema operacional embarcado e compatível com processadores ARM (Advanced RISC Machine), esses processadores possuem uma arquitetura tipicamente RISC (Reduced Instruction Set Computer), desenvolvida pela Arcon Computers, a qual é baseada no MOS (Machine Operating System) Technology 6502 e no Berkeley RISC 1, a partir da versão 5.0, e bastante otimizado para dispositivos com pouca memória e display pequeno (LOPES, 2006, p. 20-25). O Windows Mobile é um sistema operacional criado pela Microsoft, que 23 conta com o Windows Office Mobile Edition, além de uma gama de aplicativos da empresa, como o Outlook para a leitura de e-mails. Até a versão 5.0 existiam três categorias desse sistema (SILVA, 2007): • Windows Mobile 2003/5.0 for Pocket PC: Utilizado em equipamentos com características de organizadores pessoais; • Windows Mobile 2003/5.0 for Pocket PC Phone Edition: Tem as mesmas características do primeiro, acrescido de uma opção de comunicação de dados e voz sobre GSM/GPRS/3G; • Windows Mobile 2003/5.0 for SmartPhone: Sistema que se adéqua a uma utilização intensiva de telefone e com algumas características de organizador pessoal. A partir da versão 6.0, a nomenclatura deu lugar respectivamente à (SILVA, 2007): • Windows Mobile 6 Classic, equivalente ao Windows Mobile 2003/5.0 for Pocket PC. • Windows Mobile 6 Professional, equivalente ao Windows Mobile 2003/5.0 for Pocket PC Phone Edition. • Windos Mobile 6 Standard, equivalente ao Windows Mobile 2003/5.0 for SmartPhone. 2.3 Linguagens e ferramentas de desenvolvimento Apesar de os computadores de mão serem uma realidade recente, existem inúmeras linguagens e ferramentas de desenvolvimento para esse tipo de dispositivo (SOUZA, 2004, p. 24). Algumas linguagens são utilizadas no desenvolvimento para PDA, bem como no desenvolvimento de aplicações para computadores de mesa. Essas linguagens têm comandos e sintaxe básica iguais, porém existem algumas restrições ocasionadas pela diferença dos tipos de hardware. Dentre outras linguagens destacamse: C++; Java; Pascal; C#; Visual Basic. 24 Existem, ainda, algumas linguagens de programação específicas para dispositivos móveis, é o caso do SuperWaba que, segundo Pereira (2008, p. 2): ...é uma plataforma que possui uma implementação própria de linguagem (com sintaxe semelhante ao Java), máquina virtual, formato de arquivos de classes e um conjunto de classes. Além disso, ele permite o uso de ferramentas Java no desenvolvimento. Dentre as diversas características, podemos notar o suporte para SQL, leitor de código de barras, protocolo GPS, protocolo HTTP, tratamento de imagens JPEG, GIF e PNG, e suporte para compressão de dados. Além das linguagens de desenvovimento, tem-se no mercado inúmeras ferramentas que auxiliam o desenvolvedor. Essas ferramentas, em sua grande maioria, auxiliam na elaboração do código fonte de um aplicativo através de interfaces gráficas. Por meio destas interfaces é possível, por exemplo, arrastar uma caixa de texto para um formulário, ficando a ferramenta encarregada de gerar o código para essa ação. Existem ferramentas de acesso livre, outras com custos baixos e outras com custos bastante elevados, que dão suporte a uma ou mais liguagens de programação. Dessa maneira, o desenvolvedor pode escolher a que melhor se adéqua às suas necessidades e possibilidades. A seguir são apresentadas algumas delas. 2.3.1 Visual Studio O Visual Studio é uma IDE (Integrated Development Environment) para a plataforma .NET, projetado pela Microsoft. Ele é proprietário e tem suporte nativo a quatro linguagens de programação, são elas: Visual Basic; Visual C#; Visual J#; e Visual C++. A figura 5 apresenta a tela inicial do Visual Studio, a partir do qual é possível desenvolver sistemas para web, computadores de mesa (figura 6), dispositivos móveis (figura 7), além de sistemas para servidores, como web services. Com o .Net é possível desenvolver aplicativos para qualquer sistema operacional. Como pode ser visto em MSDN (2008a): “Do ponto de vista dos programadores, o ‘.NET Framework’ é o sistema operacional. É através dele que são invocadas todas as funções necessárias ao funcionamento dos programas, sob qualquer sistema operacional”. 25 Para o desenvolvedor ter a possibilidade de testar aplicações feitas para dispositivos móveis no Visual Studio, sem que haja a necessidade de possuir tal dispositivo, a Microsoft disponibiliza de forma integrada com o sistema uma variedade de emuladores, como pode ser visto na figura 8. FIGURA 5 - Tela inicial do Visual Studio 2005. FIGURA 6 - Desenv. de um sistema para computador de mesa no Visual Studio 2005 26 FIGURA 7 - Desenvolvimento de uma aplicação para PDA no Visual Studio 2005 FIGURA 8 - Emuladores da Microsoft incluídos no Visual Studio 2005 27 2.3.2 NetBeans IDE A IDE NetBeans é uma ferramenta de desenvolvimento gratuita e open source que permite escrever, compilar, depurar e instalar programas. A IDE é completamente escrita em Java e voltada para essa plataforma, porém, também pode suportar outras linguagens de programação (NETBEANS, 2008). Por ser uma IDE multiplataforma, os aplicativos desenvolvidos com o NetBeans na linguagem Java podem rodar em qualquer sistema operacional ou dispositivo, desde que esse tenha a máquina virtual Java instalada. Com o NetBeans também é possível o desenvolvimento de aplicativos para dispositivos móveis, utilizando a extensão JME (Java Micro Edition) e um emulador da máquina virtual para testar as aplicações (figuras 9 e 10). FIGURA 9 - Ambiente de desenvolvimento de aplicativos móveis no NetBeans 28 FIGURA 10 - Emulador do NetBeans em execução 2.3.3 PDAToolBox O PDAToolBox é um sistema que possibilita o desenvolvimento de aplicativos que rodam no sistema operacional Palm OS sem que o desenvolvedor precise ter um profundo conhecimento em linguagens de programação, pois funciona no modo visual - arrastar e soltar. O PDAToolBox é uma ferramenta proprietária, porém é possível instalar uma versão que funciona por trinta dias gratuitamente (TROIS, 2003, p. 23). Com essa ferramenta é possível criar programas apenas para o sistema operacional Palm OS. Com ela não é possível, por exemplo, criar aplicativos para o Windows Mobile ou qualquer outro sistema operacional. Na figura 11 é mostrado o ambiente de desenvolvimento do PDAToolBox. 29 FIGURA 11 - Ambiente de desenvolvimento do PDAToolBox 2.3.4 Outras ferramentas de desenvolvimento Existem, ainda, inúmeras ferramentas de desenvolvimento específicas para PDA, como as citadas a seguir: • PocketStudio: Ferramenta proprietária, com uma interface semelhante à do Delphi e também baseada na linguagem Pascal (ALVES, 2002, p. 95); • CodeWarrior: É uma ferramenta de desenvolvimento para Palm muito utilizada pelos programadores, por ser baseada na linguagem C/C++ é bastante poderosa (ALVES, 2002, p. 69); • DeveloperStudio: É uma ferramenta de desenvolvimento para Palm que contém um ambiente de trabalho integrado, composto por um editor de texto, bem como um editor de tabelas. É baseada nas linguagens C/C++ (ALVES, 2002, p. 81). 30 No início da era mobile utilizavam-se mais as ferramentas de desenvolvimento específico para esse tipo de dispositivo, como é o caso do PDAToolBox, PocketStudio e CodeWarrior, por exemplo. Atualmente, as ferramentas mais genéricas, como o Visual Studio e NetBeans, que servem tanto para o desenvolvimento mobile como para não mobile, estão em maior evidência. 2.3.5 Microsoft SQL Server Mobile O Microsoft SQL Server Mobile é uma versão do conhecido sistema gerenciador de banco de dados da Microsoft específica para ser utilizado em dispositivos móveis, que proporciona aos usuários e desenvolvedores grandes vantagens na sua utilização. Segundo Schaal (2005, p. 9), “Bancos de dados ou porções de bancos de dados podem ser facilmente sincronizados para computadores móveis para que os funcionários possam ainda se beneficiar do acesso aos dados corporativos quanto estiverem fora”. Já em Microsoft (2008) se faz referência à integração com outras ferramentas de desenvolvimento da Microsoft: A integração total do SQL Server 2005 Mobile Edition com o SQL Server 2005 e o Visual Studio 2005 fornece uma plataforma para desenvolvedores construírem rapidamente aplicações que estendem o gerenciamento de dados corporativos aos dispositivos móveis. Também é disponibilizado gratuitamente o software SQL Server Management Studio Express, no qual o desenvolvedor encontra uma interface de desenvolvimento facilitada, que, em muitos casos, dispensa o uso da linguagem SQL (Structured Query Language) na criação de um banco de dados, pois o software monta o código SQL a partir dos diagramas. Na figura 12 é apresentado o ambiente de desenvolvimento do SQL Server Management Studio Express. 31 FIGURA 12 - Ambiente de desenvolvimento do SQL Server Management Studio Express 2.3.6 Análise das ferramentas Dentre todas as ferramentas disponíveis no mercado, optou-se para o desenvolvimento deste trabalho por uma do tipo genérica, ou seja, que serve para desenvolver sistemas em diversas plataformas (Mobile, Web, Desktop). O quadro 1 mostra um resumo das ferramentas apresentadas neste capítulo. QUADRO 1 - Comparativo entre ferramentas de desenvolvimento Ferramenta NetBeans Linguagens nativas de desenvolvimento Visual basic, C#, C/C++, J# Java PDAToolBox PocketStudio CodeWarrior DeveloperStudio Modo visual Pascal C/C++ C/C++ Visual Studio Dispositivos Móveis Windows Mobile / Palm OS Windows Mobile / Palm OS Palm OS Palm OS Palm OS Palm OS Outras Plataformas Gratuita Sim Não Sim Sim Não Não Sim Não Não Não Não Não A ferramenta Visual Studio tem um ambiente de desenvolvimento para 32 disposítivos móveis muito amplo, principalmente com o sistema operacional Windows Mobile, utilizando a plataforma .NET, além de contar com suporte ao sistema gerenciador de banco de dados Microsoft SQL Server Mobile. Aliado a essas características favoráveis para este trabalho, tem-se o interesse por parte do autor em aprofundar seus conhecimentos nessa ferramenta. Analisadas todas as características supra citadas, escolheu-se para o desenvolvimento do sistema alvo deste trabalho a ferramenta Visual Studio 2005. 2.4 Modelos de PDA Destacam-se no mercado de PDA, atualmente, duas plataformas que acabam dividindo os fabricantes destes dispositivos: o Palm OS e o Windows Mobile. Existem, também, outras plataformas, mas que não têm tanto destaque como as supra citadas. A seguir são apresentadas algumas informações sobre os fabricantes e modelos de PDA dessas duas plataformas. Além da Palm e HP, também existem outros fabricantes de PDA no mercado. Tem-se nesse cenário empressas como a Dell, Acer, Mio e Asus, que disponibilizam dispositivos com diversas características. 2.4.1 Palm A Palm é uma empresa de produtos móveis que tem como objetivo auxiliar as pessoas no gerenciamento de sua vida pessoal (PALM, 2008). A Palm trabalha atualmente com smartphones, PDA e acessórios. Tem como sistema operacional de seus aparelhos o Palm OS e Windows Mobile em alguns produtos, como é o caso dos modelos de smarthphones Treo 750 e Treo 700wx. 2.4.2 HP (Hewlett-Packard) A Hewlett-Packard, conhecida em todo o mundo pela sigla HP, existe desde o ano de 1939, quando iniciou seu trabalho com medidores elétricos e calculadoras. Na 33 década de oitenta fez grande sucesso no setor de impressoras e servidores, porém teve que esperar até o final dos anos noventa para encontrar seu lugar no mercado de computadores pessoal (CONHEÇA A HISTÓRIA DA HP, 2001). Na linha dos computadores de mão, a HP trabalha com PDA, GPS (Global Position System) e smartphones, na grande maioria com o sistema operacional Windows Mobile. Dentre os modelos de PDA disponíveis à venda, pode-se destacar o iPAQ 110 e o iPAQ 210. 2.4.3 Comparativo entre modelos Como a quantidade e a variedade de equipamentos no mercado é muito grande, ao escolher um PDA é necessário avaliar alguns requisitos, para que no final a escolha seja coerente com as necessidades do usuário. Podem ser definidos os seguintes requisitos básicos ao funcionamento e custo/beneficio para comparar os diversos modelos existentes: processador; memória total; armazenamento; existência de suporte às conexões bluetooth e wireless; tamanho da tela; sistema operacional; suporte a cartão de expansão de memória e preço médio. O quadro 2 mostra esse comparativo com modelos das empreas HP, Palm e Mio. Dentre os modelos pesquisados, três não têm suporte a comunicação em rede sem fio (wireless), são o Palm Z22, Palm Tungsten E2 e Mio P350, por esse motivo foram descartados, uma vez que a conexão wireless é muito útil para dispositivos móveis. Dos modelos restantes, o HP iPAQ 110 Classic Handhled, HP iPAQ 210 Enterprise Handhled e Mio P550 estão com o preço médio muito elevado. Restaram os modelos Palm TX e HP iPAQ hx2400 que atingiram o mesmo preço médio de 1.100 reais. O objetivo desse trabalho não é avaliar qual modelo de PDA é o melhor, mas sim, identificar o mais adequado para a implantação do sistema em questão. Sendo assim, foi escolhido para a implantação dos aplicativos mobiles do sistema o modelo HP iPAQ hx2400, pois esse é equipado com o sistema operacional Windows Mobile 5.0, o que facilita o sincronismo com os demais computadores da empresa, que trabalham com a plataforma Windows, sendo esse o modelo que apresenta melhor 34 custo/benefício para a implantação do sistema. QUADRO 2 - Comparativo entre modelos de PDA Modelo Proces sador Memória total Memória para armaZenamento Wireless Bluetooth Tela Sistema operacional Palm Z22 200 Mhz 32Mb 20Mb Não Não Colorida, 160x160 Palm Tungsten E2 Palm TX 200 Mhz 32Mb 26Mb Não Sim Colorida 320x320 312 Mhz 128Mb 100Mb Sim Sim Colorida 320x480 HP iPAQ 110 Classic Handhled HP iPAQ 210 Entreprise Handhled HP iPAQ hx2400 624 Mhz 320Mb 64Mb Sim Sim Colorida 240x320 Palm OS Garnet 5.4 Palm OS Garnet 5.4 Palm OS Garnet 5.4 Windows Mobile 6 Classic 624 Mhz 384Mb 128Mb Sim Sim Colorida 640X480 520 Mhz 256Mb 64Mb Sim Sim Colorida 240x320 Mio P350 400 Mhz 192Mb 64Mb Não Não Colorida 240x320 Mio P550 400 Mhz 64Mb Sim Sim Colorida 240x320 Cartão de expansão Não Preço médio R$ Sim 400,00 Sim 1.100,00 Sim 1.400,00 Windows Mobile 6 Classic Sim 2.400,00 Windows Mobile 5.0 Windows Mobile 5.0 Windows Mobile 5.0 Sim 1.100,00 Sim 1.350,00 Sim 1.550,00 350,00 2.5 Conclusão A elaboração deste capítulo teve grande importância no que diz respeito ao aprendizado sobre dispositivos móveis, com ênfase maior em Assistente Pessoal Digital, que é o dispositivo móvel usado neste trabalho. A pesquisa sobre PDA foi fundamental, uma vez que através dela foi possível definir as ferramentas a serem utilizadas no desenvolvimento do sistema, bem como seus requisitos e arquitetura, já que nem todos os PDA são iguais e dão suporte às mesmas ferramentas e plataformas. Outro fator importante é a pesquisa com relação às linguagens de programação para o desenvolvimento de aplicações móveis. Essa pesquisa tem fundamental importância numa realidade cada vez mais voltada a esse tipo de 35 dispositivo, soma-se a isso o aprendizado adquirido a respeito dessas ferramentas e das linguagens de programação, além da pesquisa subsidiar o desenvolvimento deste trabalho. 36 3 ANÁLISE E PROJETO DO SISTEMA Neste capítulo são apresentados a análise e parte do projeto do sistema para coleta de dados proposto neste trabalho. Para a elaboração deste capítulo foram utilizadas algumas etapas do processo unificado, conforme apresentado em Wazlawick (2004), consideradas fundamentais para este projeto. 3.1 Processo Unificado de desenvolvimento de software Um sistema de informação é um tipo especializado de sistema, que pode ser definido como um conjunto de componentes inter-relacionados trabalhando juntos para coletar, recuperar, processar, armazenar e distribuir a informação. Geralmente um sistema de informação computadorizado tem implementado uma grande quantidade de código e que necessita de alterações constantes conforme as necessidades dos usuários e a legislação vigente. Por exemplo, um sistema de vendas, por estar fortemente atrelado à legislação fiscal, em caso de mudanças nas leis tem que ser adequado (LELES, 2008). Os sistemas de informação podem ser classificados como elegantes e deselegantes. Um sistema elegante, segundo Wazlawick (2004, p. 19), é “aquele cuja estrutura é intrinsecamente mais fácil de compreender, que é autodocumentado e pode ser compreendido em nível macro ou em detalhes. Ele é mais fácil de modificar: quando alguma de suas características é mudada, ele continua funcionando”. Já um sistema deselegante é feito sem uma estrutura clara, sem a utilização de padrões e sem planejamento, um sistema deselegante não pode ser alterado sem que isso afete seu funcionamento. 37 Visando auxiliar o desenvolvedor na execução de projetos de aplicativos, o Processo Unificado (PU), que também é conhecido pela sigla RUP (Rational Unified Process), descreve um método de análise e projeto de sistemas que comporta em suas recomendações as antigas fases de estudo de viabilidade, análise de requisitos, análise de domínio e projeto em múltiplas camadas. Essas fases aparecem no PU organizadas da seguinte forma: concepção, elaboração, construção e transição. A fase de concepção incorpora o estudo de viabilidade e uma parte da análise de requisitos. As fases de elaboração e construção ocorrem dentro de ciclos iterativos, no qual a elaboração é constituída de análise e projeto e a construção corresponde à implementação e testes. A fase de transição ocorre após o ultimo ciclo iterativo, quando o sistema é implantado, substituindo o sistema atual, seja ele computadorizado ou não. A figura 13 mostra o ciclo de vida de um sistema baseado em ciclos iterativos. FIGURA 13 - Ciclo de vida do sistema baseado em ciclos iterativos (Fonte: WAZLAWICK, 2004, p. 24) 3.2 Concepção A fase de concepção é uma etapa na qual o analista vai buscar as primeiras informações sobre o sistema a ser desenvolvido. Nessa etapa, assume-se por parte do analista uma grande interação com o usuário e cliente e pouco conhecimento sobre o sistema. O objetivo da fase de concepção é descobrir se vale a pena fazer a análise do 38 sistema, mas sem fazê-la propriamente dita (WAZLAWICK, 2004, p. 32). Recomenda-se que a fase de concepção não demore mais do que duas semanas para ser concluída, isso se dá porque o cliente e o analista teoricamente ainda não têm um contrato firmado, sendo assim, se o analista perder muito tempo nesse momento e a negociação com o cliente falhar, tem-se um prejuízo por parte do analista. Wazlawick (2004, p. 32-57) divide a fase de concepção em três partes, são elas: levantamento de requisitos, organização dos requisitos e planejamento de desenvolvimento. A seguir é apresentada cada uma delas: a) Levantamento de Requisitos: Consiste em uma pesquisa junto ao cliente de quais requisitos o sistema deve dispor. Nesse momento o analista produz alguns documentos, tais como: • Sumário executivo: Texto corrido, sem a necessidade de nenhuma estrutura espacial, que deve descrever as principais idéias do cliente sobre o sistema. • Requisitos funcionais e não-funcionais: Registra todos os tópicos relativos ao que o sistema deve fazer. Nesse momento o documento não precisa estar totalmente estruturado, admitem-se eventuais lacunas que serão preenchidas durante os outros ciclos do desenvolvimento. b) Organização dos requisitos: Depois de identificados, os requisitos são organizados em grupos correlacionados. Os requisitos podem ser agrupados da seguinte forma: • Casos de uso (UC – Use Case): É necessário identificar os grandes processos que o cliente executa, os quais, possivelmente, são compostos por diversas operações elementares, como, por exemplo, consultas e alteração de dados • Conceitos e operações cadastrais: Os conceitos são informações que possivelmente sofrem operações de manutenção. Em geral essas operações são inserir, alterar, remover e consultar. Em um sistema 39 bancário, por exemplo, existem clientes, que é um conceito, o cadastro de um novo cliente é uma operação cadastral realizada sobre o conceito cliente. • Consultas: São os relatórios que o sistema deve produzir, sua identificação na fase de concepção pode ajudar muito no levantamento de requisitos e na elaboração do sistema. c) Planejamento do desenvolvimento: Nessa fase, o analista faz um planejamento do desenvolvimento do sistema, é nesse momento, por exemplo, que são definidos os cronogramas de execução e custos. Essa fase é de grande importância para que o projeto possa ser executado, sem ela podem ocorrer problemas como o não cumprimento de prazos e estouro de orçamento. Nas subseções seguintes, são apresentadas as atividades da concepção para o projeto em questão. 3.2.1 Modelo atual de coleta de dados da empresa alvo do sistema Para iniciar o levantamento de requisitos do sistema proposto, é preciso antes entender como a empresa faz a coleta dos dados atualmente. A empresa faz uso de determinadas planilhas para coletar os dados referentes às atividades executadas em cada unidade de trabalho. Essas planilhas são preenchidas por cada gerente e encaminhadas à sede da empresa, onde são digitadas por um funcionário, sendo assim as informações inseridas no banco de dados da empresa. Nos Anexos A, B e C são apresentadas respectivamente as planilhas utilizadas pela empresa para a coleta de: atividades; utilização de veículos; e abastecimento de veículos. Existem também outras planilhas, como é o caso das planilhas de utilização de máquinas, utilização de materiais, utilização de insumos, abastecimento de máquinas e participação de funcionários nas atividades da empresa. 40 3.2.2 Sumário executivo É proposto o desenvolvimento de um sistema de informação para a coleta de dados nas unidades de uma empresa especializada na produção de frutas. O sistema visa a substituição do método atual de coleta da empresa que se baseia em um sistema manual com a utilização de planilhas em papel. O sistema é divido em dois módulos, o primeiro, executado em um PDA, é responsável pelo trabalho efetivo de coleta e deve manter as informações coletadas até que sejam transferidas ao banco de dados da empresa. O sistema deve ainda permitir a execução de uma cópia de segurança dos dados em uma mídia de gravação, bem como a eventual restauração desses dados. O segundo módulo deve fazer a ligação entre os dados coletados através do primeiro e o banco de dados da empresa. 3.2.3 Levantamento de requisitos Na etapa de levantamento de requisitos, o analista deve ouvir o cliente para identificar todas as necessidades para o sistema. Os requisitos funcionais e nãofuncionais do sistema são apresentados do quadro 3 ao quadro 30 conforme modelo apresentado em Wazlawick (2004, p. 40). Os requisitos funcionais F1 ao F17 (quadros 3 ao 19) dizem respeito a informações que são obtidas do banco de dados da empresa e não devem ser alteradas no módulo de coleta de dados. Essas informações são mantidas no PDA porque sem elas é impossível coletar os dados ao qual destina-se o sistema. QUADRO 3 - Requisito funcional F1 – Manter informações sobre unidades de negócio F1 Manter informações sobre unidades de negócio. Oculto ( ) Descrição: Manter informações sobre as unidades de negócio da empresa, permitindo sua importação e consulta. As informações que devem ser mantidas são: Código*, Nome*, Localidade e Município. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF1.2 Manipulação da informação. NF1.3 Exposição da informação. Não deve ser possível alterar nenhum dado registrado através do módulo PDA. As informações referentes à unidade de negócio devem ser apresentadas na tela inicial do módulo PDA. Interface Interface X X X 41 O requisito funcional F1, apresentado no quadro 3, tem fundamental importância para o módulo de coleta de dados, pois através da informação das unidades de negócio da empresa, pode ser evitado o download de informações desnecessárias à unidade de negócio para a qual o PDA está em utilização. É muito importante que apenas as informações pertinentes a cada unidade de negócio sejam mantidas no PDA, a menos que informações de outras unidades de negócio possam ser úteis à coleta dos dados, pois esse tipo de dispositivo tem limitações de memória e o armazenamento de informações desnecessárias pode causar falta de memória para o armazenamento de informações pertinentes. QUADRO 4 - Requisito funcional F2 – Manter informações sobre parcelas F2 Manter informações sobre parcelas. Oculto ( ) Descrição: Manter informações sobre as parcelas da unidade de negócio da empresa, permitindo sua importação e consulta. As informações que devem mantidas são: Código*, quantidade de quadras*, cultura*, unidade de negócio* e área. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF2.1 Controle de dados. Deve ser possível ao usuário visualizar apenas as parcelas da unidade de negócio em questão. NF2.2 Manipulação Não deve ser possível alterar nenhum dado da informação. registrado através do módulo PDA. Interface X Interface X QUADRO 5 - Requisito funcional F3 – Manter informações sobre quadras F3 Manter informações sobre quadras. Oculto ( ) Descrição: Manter informações sobre as quadras de cada parcela da unidade de negócio, permitindo sua importação e consulta. As informações que devem ser mantidas são: Código*, parcela*, ano de implantação. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF3.1 Controle de dados. Deve ser possível ao usuário visualizar apenas as quadras da unidade de negócio em questão. NF3.2 Manipulação Não deve ser possível alterar nenhum dado da informação. registrado através do módulo PDA. Interface X Interface X QUADRO 6 - Requisito funcional F4 – Manter informações sobre culturas F4 Manter informações sobre culturas. Oculto ( ) Descrição: Manter informações sobre as culturas produzidas pela empresa, permitindo sua importação e consulta. A informação que deve ser mantida é: Nome*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF4.1 Manipulação Não deve ser possível alterar nenhum dado da informação. registrado através do módulo PDA. Interface X 42 QUADRO 7 - Requisito funcional F5 – Manter informações sobre cultivares F5 Manter informações sobre cultivares. Oculto ( ) Descrição: Manter informações sobre cultivares de cada cultura, permitindo sua importação e consulta. As informações que devem ser mantidas são: Nome*, Cultura*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF5.1 Manipulação Não deve ser possível alterar nenhum dado da informação. registrado através do módulo PDA. Interface X QUADRO 8 - Requisito funcional F6 – Manter informações sobre clones F6 Manter informações sobre clones. Oculto ( ) Descrição: Manter informações sobre clones de cada cultivar, permitindo sua importação e consulta. As informações que devem ser mantidas são: Nome*, Cultivar*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF6.1 Manipulação Não deve ser possível alterar nenhum dado da informação. registrado através do módulo PDA. Interface X QUADRO 9 - Requisito funcional F7 – Manter informações sobre funcionários F7 Manter informações sobre funcionários. Oculto ( ) Descrição: O sistema deve manter informações sobre os funcionários da empresa, permitindo sua importação e consulta. As informações armazenadas devem ser o nome do funcionário* e o seu código*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF7.1 Manipulação da informação. NF 7.2 Obtenção da informação. Não deve ser possível alterar nenhum dado registrado através do módulo PDA. Só devem ser obtidos os funcionários cujo a situação seja ativo. Interface X Persistência X QUADRO 10 - Requisito funcional F8 – Manter informações sobre implementos F8 Manter informações sobre implementos. Oculto ( ) Descrição: Manter as informações sobre os implementos da empresa utilizados na unidade de negócio em questão, permitindo sua importação e consulta. As informações a serem mantidas são: Nome*, código*, unidade de negócio*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF8.1 Manipulação Não deve ser possível alterar nenhum dado da informação. registrado através do módulo PDA. NF8.2 Apresentação Devem ser apresentado inicialmente apenas das informações. os implementos da unidade de negócio em questão, também possibilitando a busca dos demais implementos da empresa. Interface Interface X X QUADRO 11 - Requisito funcional F9 – Manter informações sobre tipos de materiais F9 Manter informações sobre tipos de materiais. Oculto ( ) Descrição: Manter informações sobre tipos de materiais, permitindo sua importação e consulta. A informação que deve ser mantida é: Nome*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF9.1 Manipulação Não deve ser possível alterar nenhum dado da informação. registrado através do módulo PDA. Interface X 43 QUADRO 12 - Requisito funcional F10 – Manter informações sobre subtipos de materiais F10 Manter informações sobre subtipos de materiais. Oculto ( ) Descrição: Manter informações sobre subtipos de materiais, permitindo sua importação e consulta. As informações que devem ser mantidas são: Nome* e tipo de material* Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF10.1 Manipulação da informação. Não deve ser possível alterar nenhum dado registrado através do módulo PDA. Interface X QUADRO 13 - Requisito funcional F11 – Manter informações sobre materiais F11 Manter informações sobre materiais. Oculto ( ) Descrição: Manter informações sobre materiais em estoque na empresa, permitindo sua importação e consulta. As informações que devem ser mantidas são: Nome*, subtipo* e quantidade em estoque. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF11.1 Manipulação da informação. Não deve ser possível alterar nenhum dado registrado através do módulo PDA. Interface X QUADRO 14 - Requisito funcional F12 – Manter informações sobre veículos F12 Manter informações sobre veículos Oculto ( ) Descrição: Manter informações sobre os veículos da empresa, permitindo sua importação e consulta. As informação que devem ser mantidas são: Placa, nome*, código*, unidade de negócio*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF12.1 Apresentação das informações. Deve ser possível ao usuário visualizar apenas os veículo da unidade de negócio em questão. Interface X QUADRO 15 - Requisito funcional F13 – Manter informações sobre tipos de máquinas F13 Manter informações sobre tipos de máquinas. Oculto ( ) Descrição: Manter informações sobre os tipos de máquinas da empresa, permitindo sua importação e consulta. A informação que deve ser mantida é: Nome*. QUADRO 16 - Requisito funcional F14 – Manter informações sobre máquinas F14 Manter informações sobre máquinas. Oculto ( ) Descrição: Manter informações sobre as máquinas na empresa, permitindo sua importação e consulta. As informações que devem ser mantidas são: Nome*, código*, tipo da máquina*, operador, unidade de negócio*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF14.1 Apresentação das informações. Deve ser possível ao usuário visualizar apenas as máquinas da unidade de negócio em questão. Interface X QUADRO 17 - Requisito funcional F15 – Manter informações sobre safras F15 Manter informações sobre safras. Oculto ( ) Descrição: Manter informações sobre safras, permitindo sua importação e consulta. As informações que devem ser mantidas são: Ano*, se a safra for a atual. 44 QUADRO 18 - Requisito funcional F16 – Manter informações sobre tipos de atividades F16 Manter informações sobre tipos de atividades. Oculto ( ) Descrição: Manter informações sobre os tipos de atividades mantidos pela empresa, permitindo sua importação e consulta. As informações que devem ser mantidas são: Nome*, unidade de rendimento, rendimento médio, rateio. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF16.1 Manipulação da informação. Não deve ser possível alterar nenhum dado registrado através do módulo PDA. Interface X QUADRO 19 - Requisito funcional F17 – Manter informações sobre pragas F17 Manter informações sobre pragas. Oculto ( ) Descrição: Manter informações sobre pragas, permitindo sua importação e consulta. A informação que deve ser mantida é: Nome*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF17.1 Manipulação da informação. Não deve ser possível alterar nenhum dado registrado através do módulo PDA. Interface X Os requisitos funcionais F18 ao F25 (quadros 20 ao 27) fazem referência aos dados que são coletados pelo módulo de coleta de dados e que são enviados para o banco de dados da empresa através do módulo de comunicação de dados. QUADRO 20 - Requisito funcional F18 – Manter informações sobre atividades F18 Manter informações sobre atividades. Oculto ( ) Descrição: Manter informações sobre atividades realizadas na empresa, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Safra*, quadra*, clone*, tipo de atividade*, data de início*, data de término e número de tratamento*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF18.1 Manipulação da informação. NF 18.2 Exposição da informação. Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Uma atividade será considerada encerrada quando a data de termino for cadastrada. Interface Persistência X X QUADRO 21 - Requisito funcional F19 – Manter informações sobre atividades dos funcionários F19 Manter informações sobre atividades dos Oculto ( ) funcionários. Descrição: Manter informações sobre as atividades desenvolvidas por cada funcionário, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Funcionário*, atividade realizada*, data*, hora de início, hora do termino, rendimento, horas improdutivas, horas produtivas, observações, encarregado responsável*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF19.1 Manipulação da informação. Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Interface X 45 QUADRO 22 - Requisito funcional F20 – Manter informações sobre a utilização de veículos F20 Manter informações sobre a utilização de veículos. Oculto ( ) Descrição: Manter informações sobre a utilização de veículos na unidade de negócio correspondente, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Data*, motorista*, veículo*, atividade realizada*, hora de início, hora do termino, velocímetro de início, velocímetro do termino, litros de combustível abastecidos. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF20.1 Manipulação da informação. Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Interface X QUADRO 23 - Requisito funcional F21 – Manter informações sobre a utilização de máquinas F21 Manter informações sobre a utilização de máquinas. Oculto ( ) Descrição: Manter informações sobre a utilização de máquinas na unidade de negócio correspondente, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Data*, atividade realizada*, máquina*, operador*, horímetro inicial, horímetro final, hora de início, hora do termino, litros de combustível abastecidos, implemento utilizado, volume de calda. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF21.1 Manipulação da informação. Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Interface X QUADRO 24 - Requisito funcional F22 – Manter informações sobre abastecimentos de máquinas. F23 Manter informações sobre abastecimentos de Oculto ( ) máquinas. Descrição: Manter informações sobre o abastecimento de combustível das máquinas na unidade de negócio correspondente, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Data*, total de litros*, valor de litro, maquina*, funcionário*, safra* e horímetro da máquina. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF22.1 Manipulação da informação. Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Interface X QUADRO 25 - Requisito funcional F23 – Manter informações sobre abastecimento de veículos. F23 Manter informações sobre abastecimento de veículos. Oculto ( ) Descrição: Manter informações sobre o abastecimento de combustível de veículos na unidade de negócio correspondente, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Data*, total de litros*, valor do litro, safra*, funcionário*, veículo*, velocímetro do veículo. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF23.1 Manipulação da informação. Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Interface X QUADRO 26 - Requisito funcional F24 – Manter informações sobre materiais utilizados. F24 Manter informações sobre materiais utilizados Oculto ( ) Descrição: Manter informações sobre os materiais utilizados nas atividades desenvolvidas na unidade de negócio, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Atividade realizada*, material*, data*, valor médio, valor informado, quantidade total*. 46 F24 Manter informações sobre materiais utilizados Requisitos Não-Funcionais Nome Restrição NF24.1 Manipulação da informação. Oculto ( ) Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Categoria Desejável Interface Permanente X QUADRO 27 - Requisito funcional F25 – Manter informações sobre insumos utilizados. F25 Manter informações sobre insumos utilizados. Oculto ( ) Descrição: Manter informações sobre insumos utilizado nas atividades desenvolvidas na unidade de negócio, permitindo sua inserção, alteração, exclusão e consulta. As informações que devem ser mantidas são: Atividade realizada*, material (insumo)*, praga*, quantidade, volume, dose, data de início*, data de termino*, hora de início*, hora de termino*. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF25.1 Manipulação da informação. Deve ser possível alterar as informações mantidas através do módulo de coleta de dados. Interface X Os requisitos funcionais F26 e F27 (quadros 28 e 29) fazem referência à comunicação entre o módulo PDA e o banco de dados da empresa. O requisito funcional F28 (quadro 30) é responsável pela segurança dos dados coletados, antes que esses sejam inseridos no banco de dados. QUADRO 28 - Requisito funcional F27 – Transferir dados da empresa para o PDA. F26 Transferir dados da empresa para o PDA Oculto ( ) Descrição: Efetuar o download dos dados necessários a utilização do módulo PDA. Requisitos Não-Funcionais Nome Restrição Categoria Desejável NF26.1 Manipulação da informação. NF26.2 Meio de comunicação. Antes de efetuar o download, para evitar a manutenção de informação repetida, o PDA deve verificar se as tabelas do módulo estão vazias. As informações devem ser obtidas através do módulo responsável para a comunicação. Permanente Persistência Interface QUADRO 29 - Requisito funcional F28 – Transferir dados do PDA para a empresa. F27 Transferir dados do PDA para a empresa Oculto ( ) Descrição: Enviar os dados coletados com o PDA para o banco de dados da empresa, utilizando como meio de transporte o módulo do sistema responsável por essa etapa. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF27.1 Meio de comunicação. NF27.2 Cópia de segurança. NF 27.3 As informações devem ser transferidas através do módulo responsável para a comunicação. Antes de executar a transferência das informações, o PDA deve efetuar uma cópia de segurança dos dados. Só devem ser transmitidas os registros de Interface Segurança Persistência X 47 F27 Transferir dados do PDA para a empresa Transmissão de atividades realizadas já encerradas. atividades. Oculto ( ) QUADRO 30 - Requisito funcional F28 – Efetuar cópia de segurança. F28 Efetuar cópia de segurança Oculto ( ) Descrição: Possibilitar ao usuário efetuar cópia de segurança dos dados coletados, bem como faze-lo sem que o usuário requisite em antes do requisito funcional 20. Requisitos Não-Funcionais Nome Restrição Categoria Desejável Permanente NF28.1 Mídia de gravação. Deve ser armazenada a cópia de segurança em um cartão de memória, e na falta desse deve ser armazenado em uma pasta no PDA. Interface O sistema tem ainda os requisitos suplementares que são apresentados no quadro 31 (módulo de coleta de dados) e quadro 32 (módulo de comunicação). QUADRO 31 - Requisitos suplementares para o módulo PDA. Nome Restrição S1 Tipo de interface A interface do módulo deve ser implementada no padrão de janelas do sistema Windows Mobile. Categoria Desejável Permanente Interface QUADRO 32 - Requisitos suplementares para o módulo de comunicação. Nome Restrição S2 Tipo de interface A interface do módulo de comunicação deve ser implementada como um web service. S3 Armazenamento A camada de persistência já existente pode de dados. ser alterada conforme as necessidades do cliente, no desenvolvimento do módulo deve ser tratada essa situação. Categoria Desejável Permanente X X Interface Persistência 3.2.4 Organização dos requisitos em casos de uso Os casos de uso são os grandes processos de negócio da empresa (usuário do sistema), devem cobrir as principais atividades da empresa ligadas ao sistema a ser implementado. Os casos de uso têm como objetivo levantar informações sobre como o sistema interage com possíveis usuários e quais consultas e transformações de informação são necessárias além daquelas já identificadas na fase de levantamento de requisitos. O quadro 33 mostra a relação de casos de uso para o sistema desenvolvido neste trabalho. Na organização dos requisitos em casos de uso, devem ser observadas as 48 seguintes informações: • Nome: O nome do caso de uso. • Atores: Os atores envolvidos nas ações a qual se refere o caso de uso. • Descrição: Uma breve descrição do caso de uso. • Referências cruzadas: O caso de uso é associado a um conjunto de requisitos funcionais do sistema, esses requisitos devem aparecer nas referências cruzadas. QUADRO 33 - Casos de Uso do sistema Nome UC1 - Atribuir atividades aos funcionários. UC2 - Encerrar atividade de funcionários Atores Encarregado, Funcionário Encarregado, Funcionário,. Descrição O encarregado identifica os funcionários, designa funções a cada um e efetua o registro do início da execução da atividade Ao termino da execução da atividade, o encarregado identifica a atividade atribuída ao funcionário, registra os dados da execução, bem como as horas improdutivas. Referências cruzadas F7, F18, F19 F7, F18, F19 3.2.5 Organização dos requisitos em função de conceitos Algumas operações simples que o sistema executa (como, por exemplo, o registro de um funcionário) não devem ser consideradas como caso de uso, pois seu processo iterativo é de apenas um passo, não sendo necessário assim estudá-lo. Essas operações possivelmente fazem parte de casos de uso. Para identificar essas operações, sugere-se que o analista identifique todos os conceitos envolvidos no sistema. O quadro 34 mostra os conceitos do sistema em questão. Para a organização dos conceitos, sugere-se um quadro a com os seguintes campos: • Conceito: Nome do conceito. • Inserção (I): Indica se o conceito deve sofrer inserção. • Alteração (A): Indica se o conceito deve sofrer alteração. • Exclusão (E): Indica se o conceito deve sofrer exclusão. • Consulta (C): Indica se o conceito deve sofrer consulta. • Importação (Im): Indica se o conceito pode ser importado de outra fonte. • Observação: Nesse campo, registra-se possíveis restrições ou regras de 49 validação sobre o conceito. • Referências cruzadas: Os requisitos funcionais ao qual estão envolvidos o conceito. QUADRO 34 - Conceitos do sistema Conceito Abastecimento de máquina Abastecimento de veículo Atividade Atividade de funcionário Clone Cultivar Cultura Funcionário Implemento Máquina Material Parcela Praga Quadra Safra Subtipo Material Tipo Atividade Tipo de máquina Tipo de material Unidade de negócio Utilização de insumo Utilização de máquina Utilização de material Utilização de veículo Veículo I A E C X X X X Im Observação Ref. Cruzadas F7, F14, F22 X X X X F7, F14, F23 X X X X X X X X F16, F18 F7, F18, F19 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X F5, F6 F4, F5 F4 F7 F1, F8 F1, F13, F14 F10, F11 F1, F2, F4 F17 F2, F3 F15 F9, F10 F16 F13 F9 F1 X X X X F11, F17, F18 X X X X F7, F14, F18 X X X X F11, F18 X X X X F7, F12, F18 X X F1, F12 3.3 Elaboração A fase de elaboração, segundo o PU, pode ser divida em duas subfases: análise e projeto. Na subfase de análise, o analista aprimora a documentação obtida na concepção do projeto, essa fase comporta três atividades distintas, são elas: • Expansão dos casos de uso: Na fase de concepção, os casos de uso são descritos de uma maneira superficial, não se tem detalhes da operação 50 realizada, sendo assim impossível determinar uma seqüência real dos fatos. A expansão dos casos de uso entra nesse contexto com o objetivo de detalhar cada ação, permitindo ao analista especificar cada passo executando no caso de uso, bem como as possíveis exceções e variantes desses passos. • Construção do modelo conceitual: É um diagrama que procura mostrar quais são os elementos de informação tratados pelo sistema. Faz parte do domínio do problema, e não do domínio da solução, portanto não deve ser confundido com a arquitetura do sistema. • Contratos: Cada operação de inserção ou consulta no sistema implica em uma intenção por parte do usuário, a função dos contratos é capturar essas intenções, são organizados em contratos de operação do sistema e contratos de consulta de sistema. Até a subfase de análise da elaboração, o analista pensa no sistema como um problema ao qual a solução ainda não foi proposta. Na subfase de projeto, o analista já começa a propor a solução para o problema, é nessa fase que o sistema começa a ser projetado. Nas subseções a seguir são apresentadas as atividades da elaboração para o projeto em questão. 3.3.1 Expansão dos casos de uso Identificados os casos de uso na fase de concepção, a próxima etapa para o projeto é expandi-los. Para demonstrar a expansão dos casos de uso do projeto em questão, sugere-se um quadro com os seguintes campos: • Caso de uso: Nome do caso de uso. • Atores: Os atores envolvidos nas ações a qual se refere o caso de uso. • Fluxo principal: O fluxo principal consiste nos passos obrigatórios de cada caso de uso e que envolvem informações que passam dos atores ao sistema e do sistema aos atores. No fluxo principal deve-se considerar 51 que todos os passos ocorram sem problema algum. • Tratamento de exceções: Os passos do fluxo principal podem acarretar em algumas exceções, por exemplo, em uma operação de saque num sistema bancário, o ator cliente pode não ter saldo para a operação, isso acarreta em uma exceção que não permite que a operação seja concluída. Essas exceções devem ser tratadas nesse momento. No fluxo principal e no tratamento de exceções é possível determinar quais passos são eventos de sistema, ou seja, quais trasnportam informações do ator para o sistema, e quais passos são respostas de sistema, ou seja, transportam informações do sistema para os atores. Esse tratamento se dá incluindo as siglas [EV] para evento de sistema e [RS] para resposta de sistema antes de cada passo. Os quadros 35 e 36 mostram a expansão dos casos de uso do sistema desenvolvido neste trabalho. QUADRO 35 - Expansão do caso de uso UC1 – Atribuir atividades aos funcionários Caso de uso: Atribuir atividades aos funcionários Atores: Encarregado Fluxo principal: 1. [RS] O sistema apresenta as atividades em andamento. 2 [EV] O encarregado seleciona uma atividade. 3. [RS] O sistema apresenta os dados da atividade. 4. [EV] O encarregado informa a data e o encarregado da atividade. 5 [EV] O encarregado seleciona o funcionário que vai trabalhar na atividade e informa a hora de inicio. Repete o passo 4 até incluir todos os funcionários. 6. [EV] O encarregado encerra o registro. Tratamento de exceções: 2a Atividade não cadastrada. 2a.1 O encarregado cadastra a atividade. 2a.2 Retorna ao fluxo principal no passo 2. 4a. O encarregado não consta no cadastro. 4a.1 O encarregado verifica junto a matriz se está regular e registrado. 4a.2 Caso o registro do encarregado esteja correto, atualiza o cadastro e retornar ao fluxo principal no passo 1. 4a.3 Caso o encarregado não esteja registrado, aborta a operação. 5a. O funcionário não consta no cadastro. 5a.1 O encarregado verifica junto a matriz se o funcionário está regular e registrado. 5a.2 Caso o registro do funcionário esteja correto o encarregado atualiza o cadastro e retornar ao fluxo principal no passo 1. 5a.3 Caso o funcionário não esteja registrado o encarregado aborta a operação. 52 QUADRO 36 - Expansão do caso de uso UC2 – Encerrar atividade dos funcionários Caso de uso: Encerrar atividade dos funcionários Atores: Encarregado Fluxo principal: 1. [RS] O sistema apresenta as atividades em execução. 2. [EV] O encarregado seleciona a atividade para o encerramento. 3. [RS] O sistema apresenta os dados da execução da atividade. 4. [EV] O encarregado registra a hora de encerramento da atividade pelo funcionário. Repete o passo 4 até efetuar o registro para todos os funcionários. 5. [EV] O encarregado registra as horas improdutivas. 6. [RS] O sistema informa o total de horas improdutivas. 7. [EV] O encarregado encerra o registro. Tratamento de exceções: 7a Algum funcionário não teve o termino registrado. 7a.1 O encarregado registra a hora de termino do funcionário. 7a.2 Retorna ao fluxo principal no passo 5. 3.3.2 Modelo conceitual O modelo conceitual é um artefato do domínio do problema e deve descrever a informação que o sistema vai gerenciar. O modelo conceitual não deve ser confundido com a arquitetura do aplicativo, bem como, com o modelo de dados, pois esses artefatos fazem parte do domínio da solução, ou seja, fazem parte do projeto do sistema (WAZLAWICK, 2004, p. 102). Por se tratar de um artefato do domínio do problema, o modelo conceitual deve ser construído sem direção a nenhuma tecnologia, nem mesmo deve ser tratado como um sistema computacional. Antes da construção do modelo, o analista deve identificar alguns elementos básicos, são eles: • Conceitos: É a representação da informação complexa, ou seja, informação que não pode ser representada apenas por um tipo alfanumérico. • Atributos: São informações alfanuméricas diretamente ligadas aos conceitos. • Associações: Consiste em um tipo de informação que liga diferentes conceitos entre si. Ao identificar esses elementos, o modelo pode começar a ser construído. No 53 Apêndice A está o modelo conceitual do sistema desenvolvido neste trabalho. 3.3.3 Diagrama de classe O diagrama de classes de projeto é construído apartir do modelo conceitual porém com algumas modificações básicas conforme visto em Wazlawick (2004, p. 185), são elas: • Adição dos métodos: os métodos de cada classe são adicionados declarados no diagrama, fato que não ocorre no modelo conceitual; • Adição da direção das associações: no diagrama de classes é determinada a direção de navegação das associações; • Detalhamento dos atributos e associações: se necessário, pode-se definir os tipos dos atributos, bem como o nome de papel de cada associação; • Alteração na estrutura das classes e associações: pode ser necessário criar novas classes para implementar estruturas do projeto; • Criação de atributos privados ou protegidos: no modelo conceitual todos os atributos devem ser declarados como públicos, uma vez que representam a informação e não faz sentido uma informação que não possa ser acessível. Para a modelagem do diagrama de classes do sistema desenvolvido neste trabalho, usou-se a ferramenta Class Diagram do Visual Studio, o diagrama é apresentado no Apêndice B. 3.3.4 Diagrama de estado de navegação O diagrama de estado de navegação indica todas as interfaces gráficas que compõem o sistema e com quais eventos se dá a navegação entre elas. Cada evento rotulado neste diagrama é posteriormente associado a algum controle da janela de origem (botão, menu, por exemplo). É desejável que os nomes dos eventos correspondam aos nomes dos controles de interface encarregado de efetivar o evento 54 (WAZLAWICK, 2004). No sistema proposto, dois aplicativos fazem uso de janelas como interface com o usuário, são eles o aplicativo do módulo de coleta e o aplicativo do módulo de comunicação utilizado no PDA. Os diagramas de estado de navegação desses aplicativos são apresentados nos Apêndices C (aplicativo do módulo de coleta) e Apêndice D (aplicativo do módulo de comunicação). 3.4 Conclusão A elaboração deste capítulo teve grande importância no que diz respeito ao aprendizado sobre o Processo Unificado para o desenvolvimento de sistemas, principalmente nas fases de concepção e elaboração. Além do aprendizado, a importância deste capítulo estende-se à elaboração da análise e de parte do projeto do sistema a ser desenvolvido, dessa maneira subsidiando o início da implementação, assunto alvo do próximo capítulo. 55 4 IMPLEMENTAÇÃO DO SISTEMA Neste capítulo apresenta-se o processo de desenvolvimento do sistema proposto neste trabalho. São utilizados, para isso, a tecnologia de web service, a ferramenta de desenvolvimento Visual Studio 2005 com a linguagem C#, o banco de dados Microsoft SQL Server 2005 Mobile e o provedor de conexão entre o Visual Studio e o sistema gerenciador de banco de dados Firebird. 4.1 Web service É apresentada nessa sessão uma breve explicação sobre web service, pois essa tecnologia é utilizada e tem grande relevância no sistema proposto neste trabalho. Um web service, ou serviço web, segundo Deitel (2005, p. 894) é “... um aplicativo armazenado em uma máquina que pode ser acessado em outra máquina, em uma rede”. A máquina em que o web service reside é comumente referida como máquina remota. O aplicativo que acessa o web service envia uma chamada para a máquina remota, que processa a chamada e envia uma resposta ao aplicativo (DEITEL, 2005, p. 894). Para compreender o funcionamento de um web service, é necessário entender as tecnologias XML, SOAP e RPC. • XML (Extensible Markup Language): É uma tecnologia aberta, portável e amplamente suportada para descrever dados, o XML é um padrão para o armazenamento de dados intercambiados entre programas. Com arquivos XML é possível enviar dados de um aplicativo a outro de forma simples e organizada (DEITEL, 2005, p. 724). 56 • SOAP (Simple Object Access Protocol): É um protocolo independente de plataforma que utiliza XML para efetuar chamadas a procedimentos remotos por meio de HTTP. As mensagens SOAP são muito populares, pois são escritas em códigos XML, sendo fácil de entender e independente de plataforma (DEITEL, 2005, p. 897-898). • RPC (Remote Procedure Call): Chamada de procedimento remoto é uma tecnologia de comunicação entre processos que permite a um programa de computador chamar um procedimento em outro computador, normalmente através de uma rede. Em um web service, os procedimentos são chamados pelo cliente de maneira remota, utilizando uma chamada RPC. Os métodos no web service são marcados pelo atributo WebMethod, tornando-se, dessa maneira, acessíveis para qualquer aplicativo por meio de uma chamada RPC. A maioria das requisições e respostas de web service é transmitida por SOAP, sendo assim, qualquer cliente capaz de processar mensagens SOAP pode utilizar o serviço, independente da linguagem em que o web service esteja escrito (DEITEL, 2005, p. 895). Um web service criado no Visual Studio 2005 é dividido em duas partes: um arquivo com a extensão ASMX, que contém informações sobre o serviço, como as descrições dos métodos e as maneiras de testar esses métodos; e um arquivo de código de retaguarda, que fornece a implementação dos métodos que o web service contém (DEITEL, 2005, p. 895). O Visual Studio, ainda, cria no projeto dois diretórios denominados App_Code, para armazenar os arquivos de códigos de retaguarda e App_Data, para armazenar os arquivos de persistência. Ao incorporar alguma biblioteca no projeto, o Visual Studio cria outro diretório denominado bin e armazena os arquivos da biblioteca incorporada neste diretório. A figura 14 mostra a estrutura de um projeto de web service no Visual Studio. Para criar um novo projeto de web service no Visual Studio basta ao desenvolvedor seguir os seguintes passos: 57 • Com o Visual Studio aberto, escolher a opção de menu: File, New, Web Site. • Escolher a opção ASP.NET Web Service. • Escolher a linguagem de desenvolvimento e o diretório de destino. FIGURA 14 - Estrutura de um projeto de web service no Visual Studio Dependendo o tipo de trabalho requerido do projeto de web service, o Visual Studio ainda cria um arquivo de configuração denominado web.config, que segundo Silva (2008): ...é um arquivo especial que configura o comportamento de sua aplicação asp.net e está no formato xml podendo ser editado facilmente com um editor comum, como o bloco de notas. Cada aplicativo web que você cria, pode ter o seu próprio arquivo web.config, e as informações deste arquivo valem para o diretório corrente e seus subdiretórios. 58 4.2 Arquitetura do sistema O sistema do trabalho em questão é constituído por dois módulos, um denominado módulo de coleta de dados, que é responsável por efetuar a coleta dos dados da empresa em campo, utilizando um dispositivo PDA (Personal Digital Assistant). O outro módulo é denominado módulo de comunicação e é responsável por efetuar a comunicação e transferência de dados entre o dispositivo PDA e o banco de dados da empresa. A figura 15 mostra um esquema de funcionamento do sistema. FIGURA 15 - Esquema de funcionamento do sistema O padrão de arquitetura de software utilizado é o MVC (Model View Controller), que traduzido para português significa: Modelo, Visão e Controlador. O MVC consiste em dividir uma aplicação em três camadas. A camada de modelo (Model) é a representação específica da informação operada pela aplicação. A camada controladora (Controller) é responsável por processar e responder a eventos, 59 geralmente ações do usuário. A camada de visão (View) é responsável pela interação com o sistema, essa camada envia eventos com as ações a serem executadas para a camada controladora. Normalmente essa camada trabalha como uma interface para o usuário do sistema. Utilizar o MVC em aplicações orientadas a objetos traz algumas vantagens, como a facilidade de manutenção do aplicativo, uma vez que as camadas são independentes uma das outras. Sendo assim, havendo necessidade de alteração de uma camada, isso pode ser feito sem que, necessariamente, seja preciso alterar as demais (UNITO SISTEMAS, 2008). Outra vantagem é a possibilidade de reutilização das camadas, pois cada camada de modelo pode ser utilizada em quantos controladores possa servir, bem como a camada controladora pode servir para quantas camadas de visão seja necessário (UNITO SISTEMAS, 2008). A figura 16 mostra um exemplo da reutilização das camadas MVC. Neste caso são apresentados dois aplicativos, o primeiro é um aplicativo desktop, que tem como camada de visão uma interface padrão Windows em que o usuário pode efetuar consultas e cadastros. A camada de visão do segundo aplicativo é um web service que pode ser acessado de qualquer máquina através de uma rede, assim como no sistema proposto neste trabalho. Ambos os aplicativos utilizam as mesmas camadas de controle e modelo, não sendo necessário desenvolvê-las especificamente para cada um. No sistema em questão, os aplicativos dos dois módulos tem como camada de modelo uma mesma biblioteca, denominada ModelagemSistema. No módulo de comunicação, os dois web services tem como camada de visão os arquivos ServicoRetornaDados.asmx (provedor de dados) e ServicoRecebeDados.asmx (receptor de dados) e utilizam WebServiceComunicacao.Control. como camada controladora a biblioteca 60 FIGURA 16 - Exemplo de reutilização das camadas MVC O aplicativo do módulo de comunicação do PDA tem como camada de visão as interfaces presentes no arquivo executável PDA.Comunicacao.exe. Já o aplicativo do módulo de coleta tem como camada de visão as interfaces do arquivo executável PDA.Coleta.exe. Estes dois aplicativos utilizam a mesma camada controladora, disponível na biblioteca PDA.Control. A figura 17 e o quadro 37 mostram a estrutura de camadas do sistema. QUADRO 37 - Estrutura de camadas do sistema Modulo Comunica ção Comunica ção Comunica ção Coleta Aplicativo Web service Provedor Web service Receptor PDA.Comunica cao PDA.Coleta Camada de visão ServicoRetornaD ados.asmx ServicoRecebeD ados.asmx PDA.Comunicac ao.exe PDA.Coleta.exe Camada de controle WebServiceComunicacao. Control WebServiceComunicacao. Control PDA.Control Camada de modelo ModelagemSistema PDA.Control ModelagemSistema ModelagemSistema ModelagemSistema 61 FIGURA 17 - Estrutura de camadas do sistema 4.3 Camada de modelo Antes de iniciar o desenvolvimento dos módulos de comunicação e coleta, tem-se o desenvolvimento, a partir do modelo conceitual apresentado no apêndice A, da biblioteca responsável pela estrutura de classes do sistema. A biblioteca, denominada ModelagemSistema, implementa a camada de modelo do sistema e é utilizada em todos os aplicativos dos módulos que o compõem. Para o desenvolvimento das classes da biblioteca ModelagemSistema utilizase a ferramenta ClassDiagram do Visual Studio, com ela é possível declarar os atributos, propriedades e métodos das classes de maneira visual. No apêndice B deste trabalho é mostrado o modelo de classes da biblioteca desenvolvido com a ferramenta ClassDiagram. O quadro 38 mostra o código fonte da classe UnidadeNegocio, como exemplo, a qual faz parte da referida biblioteca. Para cada classe do modelo conceitual foi criada uma classe com as mesmas características de UnidadeNegocio. 62 Assim como as outras bibliotecas desenvolvidas neste trabalho, ModelagemSistema após compilada torna-se em um arquivo do tipo DLL (Dynamic Link Library) que pode ser acessado de qualquer aplicação desenvolvida para a plataforma .Net. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 QUADRO 38 - Código fonte da classe UnidadeNegocio using System; using System.Collections.Generic; using System.Text; namespace ModelagemSistema { public class UnidadeNegocio { private int _idUnidadeNegocio; public int IdUnidadeNegocio { get { return _idUnidadeNegocio; } set { _idUnidadeNegocio = value; } } private string _codigo; public string Codigo { get { return _codigo; } set { _codigo = value; } } private string _localidade; public string Localidade { get { return _localidade; } set { _localidade = value; } } private string _nome; public string Nome { get { return _nome; } set { _nome = value; } } private string _municipio; public string Municipio { get { return _municipio; } set { _municipio = value; } } private bool _pertencente; public bool Pertencente { get { return _pertencente; } set { _pertencente = value; } } public UnidadeNegocio() { Pertencente = false; } } } 63 No quadro 38, a linha 5 mostra o nome do projeto ao qual a classe pertence, na linha 7 é feita a declaração da classe e da linha 9 à linha 44 ocorre a declaração dos atributos e das propriedades da classe, com seus métodos Get e Set. Nas linhas 45 a 48 define-se o método construtor da classe. A definição de propriedades na linguagem C# garante um objetivo importante das linguagens de programação orientada a objetos, que é fornecer acesso controlado às variáveis internas de uma classe. Como no exemplo do quadro 38, as variáveis declaradas como privadas podem receber e retornar valores através das propriedades, que por serem declaradas como públicas, são acessíveis por outras classes (MICROSOFT, 2006). A biblioteca ModelagemSistema é a camada de modelo de todos os aplicativos dos módulos do sistema desenvolvido neste trabalho. As camadas controladoras e de visão são específicas para cada aplicativo e, por isto, são discutidas individualmente a partir da seção 4.4. 4.4 Módulo de comunicação O módulo de comunicação faz a comunicação (envio e recebimento) dos dados entre o banco de dados da empresa e o PDA. Ele é composto por dois web services, um denomindado web service provedor, que provê os dados essenciais para o funcionamento do módulo de coleta do sistema, e o outro denominado web service receptor, que recebe os dados coletados no módulo de coleta e insere-os no banco de dados da empresa. Além dos dois web services¸ o módulo de comunicação ainda tem um aplicativo instalado no PDA responsável pelo envio e recebimento de dados nesse dispositivo. 4.4.1 Web service provedor dos dados O web service construído para prover os dados essenciais ao funcionamento do módulo de coleta recebe o nome de ServicoRetornaDados. Ele tem por objetivo 64 buscar no banco de dados da empresa os dados necessários para que o usuário possa usar o módulo de coleta no PDA. Para conectar o sistema gerenciador de banco de dados Firebird com o Visual Studio 2005 é necessário a utilização de um provedor, ou seja, uma biblioteca baseada em ado.net1 com as mesmas características de qualquer outro provedor do Visual Studio (PIMENTA, 2008). Para efetuar a instalação do provedor, é necessário fazer o download da página do Firebird (FIREBIRD, 2008), após terminado o download basta desanexar o pacote e importar ao projeto do Visual Studio a biblioteca FirebirdSql. Data.FirebirdClient.dll. Seguindo o padrão MVC, o web service deste trabalho faz uso da biblioteca ModelagemSistema como camada de modelo. A camada de visão é o próprio web service, através do arquivo ServicoRetornaDados.asmx, e a camada controladora é a biblioteca WebServiceComunicacao.Control. O quadro 39 mostra a estrutura da classe (web service) ServicoRetornaDados, com o método que retorna a lista de unidades de negócios obtidas através da classe ControleUnidadeNegocio da camada controladora. Nessa seção é mostrada apenas a classe responsável por prover os dados, a classe responsável por receber os dados no PDA é mostrada na seção 4.4.2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 QUADRO 39 - Código fonte da classe (web service) ServicoRetornaDados using System; using System.Web; using System.Collections; using System.Collections.Generic; using System.Web.Services; using System.Web.Services.Protocols; using WebServiceComunicacao.Control; using ModelagemSistema; /// <summary> /// Summary description for ServicoRetornaDados /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class ServicoRetornaDados : System.Web.Services.WebService { Tecnologia de acesso a dados no .NET framework. O ado.net é uma evolução do modelo Cliente/Servidor, projetada especialmente para a construção de aplicações escaláveis, distribuídas e para a web (PAULI, 2008). 65 public ServicoRetornaDados() { 19 20 21 22 23 24 25 26 27 28 29 30 31 } [WebMethod] public List<UnidadeNegocio> retornaUnidadesNegocio() { ControleUnidadeNegocio controle = new ControleUnidadeNegocio(); return controle.retornaUnidadesNegocio(); } } No quadro 39, a linha 24 mostra a declaração WebMethod do método retornaUnidadesNegocio, fazendo com que esse método seja acessível por outra máquina através de um chamado RPC. O método retornaUnidadesNegocio (linhas 25 à 30) cria um objeto da classe ControleUnidadeNegocio da camada controladora e retorna a lista de unidades de negócio montada através da chamada controle.retornaUnidadesNegocio (linha 30). Na linha 16 pode-se notar que a classe ServicoRetornaDados herda as características da classe System.Web.Services.WebService. Herdar essa classe não é obrigatório, porém possibilita ao web service acessar os objetos intrínsecos do asp.net, tais como Application e Session (MSDN, 2008b). Para a camada controladora, foi desenvolvida uma nova biblioteca, denominada WebServiceComunicacao.Control, essa biblioteca conta com uma classe responsável pela conexão com o banco de dados, denominada Conexao, que é apresentada nos quadros 40 e 41. 1 2 3 4 5 6 7 8 9 10 using using using using using QUADRO 40 - Código fonte da classe Conexao I System; System.Collections.Generic; System.Text; FirebirdSql.Data.FirebirdClient; System.Xml; namespace WebServiceComunicacao.Control { public class Conexao: System.Web.UI.Page { 66 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 FbConnection conexao; public Conexao() { try { this.conexao = new FbConnection(getStringConnection()); } catch (Exception) { throw; } } public FbConnection getConexao() { return this.conexao; } public void abreConexao() { try { this.conexao.Open(); } catch (Exception) { throw; } } public void fechaConexao() { try { this.conexao.Close(); } catch (Exception) { throw; } } No quadro 40, a linha 4 mostra que a classe Conexao usa o pacote FirebirdSql.Data.FirebirdClient disponível no provedor de conexão e a linha 9 mostra a herança da classe System.Web.UI.Page, que possibilita utilizar, entre outros, o método Server.MapPath que mapeia o diretório onde está alocado o web service. Na linha 11 cria-se um objeto da classe FbConnection, responsável pela conexão com o banco de dados. No construtor da classe (linhas 12 a 23) este objeto é iniciado com uma string de conexão. Três métodos essenciais para o gerenciamento da conexão são implementados: o método getConexao (linhas 24 à 27), responsável por retornar o objeto da classe FbConnection; o método abreConexao (linhas 28 à 38), responsável por abrir a conexão com o banco de dados; e o método fechaConexao 67 (linhas 39 à 49), que é responsável por fechar a conexão com o banco de dados. A string de conexão é obtida através de um arquivo XML criado para armazenar as configurações da conexão. O método que obtém os dados do arquivo é apresentado nas linhas 1 à 51 do quadro 41, dessa maneira, caso alguma configuração da conexão seja alterada não é necessário re-compilar o sistema, basta, com um simples editor de texto alterar o arquivo XML apresentado no quadro 42. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 QUADRO 41 - Código fonte da classe Conexao II private String getStringConnection() { String stringConnection; XmlDocument documento = new XmlDocument(); try { documento.Load(Server.MapPath"configuracao.xml")); } catch (Exception) { documento.Load("TCCWebService\\configuracao.xml"); } XmlNodeList listaNodos; listaNodos = documento.SelectNodes ("configuracao/bancoDados[@tipo='firebird']"); XmlNode nodo = listaNodos.Item(0); stringConnection = "user=" + nodo.SelectSingleNode("user").InnerText; stringConnection += "password=" + nodo.SelectSingleNode("password").InnerText; stringConnection += "database=" + nodo.SelectSingleNode("database").InnerText; stringConnection += "datasource=" + nodo.SelectSingleNode("datasource").InnerText; stringConnection += "port=" + nodo.SelectSingleNode("port").InnerText; stringConnection += "dialect=" + nodo.SelectSingleNode("dialect").InnerText; stringConnection += "charset=" + nodo.SelectSingleNode("charset").InnerText; stringConnection += "role=" + nodo.SelectSingleNode("role").InnerText; stringConnection += "connection lifetime=" + nodo.SelectSingleNode ("connection_lifetime").InnerText; stringConnection += "pooling=" + nodo.SelectSingleNode("pooling").InnerText; stringConnection += "minpoolsize=" + nodo.SelectSingleNode("minpoolsize").InnerText; stringConnection += "maxpoolsize=" + nodo.SelectSingleNode("maxpoolsize").InnerText; stringConnection += "packet size=" + nodo.SelectSingleNode("packet_size").InnerText; stringConnection += "servertype=" + nodo.SelectSingleNode("servertype").InnerText; 68 47 48 49 50 51 52 53 } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 documento = null; listaNodos = null; nodo = null; return stringConnection; } } QUADRO 42 - Arquivo xml de configuração da conexão com banco de dados Firebird <?xml version="1.0" encoding="utf-8" ?> <configuracao> <bancoDados tipo="firebird"> <user>SYSDBA;</user> <password>masterkey;</password> <database> D:\Tcc\Desenvolvimento\BancoDados\CUSTOS.GDB; </database> <datasource>localhost;</datasource> <port>3050;</port> <dialect>3;</dialect> <charset>none;</charset> <role>;</role> <connection_lifetime>15;</connection_lifetime> <pooling>true;</pooling> <minpoolsize>0;</minpoolsize> <maxpoolsize>50;</maxpoolsize> <packet_size>8192;</packet_size> <servertype>0;</servertype> </bancoDados> </configuracao> Além da classe Conexao, a biblioteca contém as demais classes responsáveis pelas ações no banco de dados. O quadro 43 demonstra, como exemplo, o código fonte da classe ControleUnidadeNegocio. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 using using using using using QUADRO 43 - Código fonte da classe ControleUnidadeNegocio System; System.Collections.Generic; System.Text; FirebirdSql.Data.FirebirdClient; ModelagemSistema; namespace WebServiceComunicacao.Control { public class ControleUnidadeNegocio { Conexao conexao; public ControleUnidadeNegocio() { conexao = new Conexao(); } public List<UnidadeNegocio> retornaUnidadesNegocio() { List<UnidadeNegocio> unidadesNegocio = new 69 List<UnidadeNegocio>(); UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); conexao.abreConexao(); FbCommand comando = new FbCommand("SELECT IDUNIDADENEGOCIO, CODIGO," + NOME,LOCALIDADE, MUNICIPIO FROM UNIDADENEGOCIO" + " ORDER BY IDUNIDADENEGOCIO", this.conexao.getConexao()); try { FbDataReader reader = comando.ExecuteReader(); while (reader.Read()) { unidadeNegocio = populaObjeto(reader); unidadesNegocio.Add(unidadeNegocio); unidadeNegocio = new UnidadeNegocio(); } } catch (Exception) { throw; } conexao.fechaConexao(); return unidadesNegocio; 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 } } private UnidadeNegocio populaObjeto(FbDataReader reader) { UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); if (reader.IsDBNull(0)==false) { unidadeNegocio.IdUnidadeNegocio = reader.GetInt32(0); } if (reader.IsDBNull(1)==false) { unidadeNegocio.Codigo = reader.GetString(1); } ... return unidadeNegocio; } } No quadro 43, a linha 5 faz referência a utilização da biblioteca ModelagemSistema que contém as classes da camada de modelo do sistema. Nas linhas 13 a 16, tem-se o método construtor da classe que inicia um objeto da classe Conexao definido na linha 11. O método retornaUnidadesNegocio (linhas 17 à 40) é responsável por obter os dados da tabela unidadenegocio no banco de dados e empacotá-los em uma lista de objetos da classe UnidadeNegocio. Na linha 22 é criado um objeto da classe 70 FbCommand responsável pelo comando de busca no banco de dados e a linha 26 mostra a criação de um objeto da classe FbDataReader responsável por receber os resultados do objeto de comando. Nas linhas 27 a 32 acontece o empacotamento dos dados na lista. Nas linhas 41 a 58 apresenta-se o método populaObjeto que recebe o FbDataReader2 por parâmetro, checa se os dados recebidos não são nulos e faz a população de um objeto UnidadeNegocio, retornando-o para que ele seja inserido na lista. Para as demais tabelas do banco de dados, a busca e a provisão dos dados é feita da mesma forma da tabela de unidades de negócio, apresentada como exemplo nesta sessão. 4.4.2 Recepção dos dados no PDA O módulo de comunicação do sistema também possui um aplicativo no PDA responsável por receber e enviar os dados para o servidor da empresa (através dos web services). Nesta subseção é mostrada a primeira fase do desenvolvimento deste aplicativo que diz respeito à recepção dos dados do banco de dados gerados pelo web service ServicoRetornaDados, apresentado em 4.4.1. O primeiro passo para a criação desse aplicativo é iniciar um novo projeto no Visual Studio, para isso basta ao desenvolvedor seguir os seguintes passos. • Com o Visual Studio aberto clicar em File, New, Project; • Selecionar a opção Smart Device; nesse momento o Visual Studio disponibiliza os conjuntos de ferramentas para o desenvolvimento nas plataformas Pocket PC 2003, Smartphone 2003 e Windows CE 5.0. Caso haja a necessidade de desenvolvimento em outra plataforma é preciso certificar-se da disponibilidade e instalar o SDK (Software Development Kit) da plataforma requerida; • No caso deste trabalho, a plataforma de desenvolvimento é Pocket PC 2003, sendo assim basta selecionar essa opção e em seguida Device 71 Application; • Informar o nome do projeto, o diretório de armazenamento e o nome da solução. O sistema gerenciador de banco de dados para o PDA é o Microsoft SQL Server 2005 Mobile Edition, uma versão para dispositivos móveis do conhecido Sistema Gerenciador de Bando de Dados (SGBD) da Microsoft. Entre outras funcionalidades disponíveis, esta ferramenta destaca-se pela integração total com sua versão para dispositivos não móveis e o Visual Studio 2005 (MICROSOFT, 2008). Com essa integração, é possível desenvolver um banco de dados no próprio Visual Studio, sem a necessidade de uma interface alheia. O processo efetivo de comunicação inicia-se neste aplicativo do módulo de comunicação. O quadro 44 apresenta partes do código fonte da classe RecebeDados com o método recebeUnidadeNegocio, essa classe tem por objetivo fazer toda a transferência dos dados das unidades de negócio cadastradas no banco de dados da empresa para o PDA. Com o Visual Studio é possível inserir referências web em um projeto. Com essa funcionalidade tem-se facilmente a possibilidade de utilizar um web service, por exemplo, como se fosse uma classe do projeto. Para adicionar uma referência web no Visual Studio basta seguir os seguintes passos: • No menu principal do Visual Studio, clicar em Project, Add Web Reference; • Em Url, definir o endereço do web service; • Em Web reference name indicar o nome da referência web, que é o nome da classe para gerenciar a referência criada. 1 2 3 4 5 2 QUADRO 44 - Classe RecebeDados do aplicativo para PDA do módulo de comunicação using PDA.Control; using ModelagemSistema; namespace PDA.Comunicacao { Versão do DataReader para o provedor Firebird, utiliza-se para ler os dados obtidos com uma consulta SQL. 72 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 } public class RecebeDados { private WebServiceRetornaDados.ServicoRetornaDados servico; public RecebeDados(String url) { try{ this.servico = new WebServiceRetornaDados.ServicoRetornaDados(); this.servico.Url = url; } catch (Exception ex){ throw; } } private void recebeUnidadeNegocio() { List<WebServiceRetornaDados.UnidadeNegocio> listaWs = new List< WebServiceRetornaDados.UnidadeNegocio>(); ControleUnidadeNegocio controle = new ControleUnidadeNegocio(); UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); controle.limparTabela(); try{ ListaWs.AddRange (this.servico.retornaUnidadesNegocio()); } catch (Exception){ throw; } foreach (WebServiceRetornaDados.UnidadeNegocio unidadeNegocioWs in listaWs) { unidadeNegocio.IdUnidadeNegocio = unidadeNegocioWs.IdUnidadeNegocio; unidadeNegocio.Codigo = unidadeNegocioWs.Codigo; ... try{ controle.inserirUnidadeNegocio(unidadeNegocio); } catch (Exception){ throw; } unidadeNegocio = new UnidadeNegocio(); } } } No quadro 44, na linha 8 é criado um objeto da referência ao web service denominado servico; as linhas 9 à 18 mostram o método construtor da classe que recebe por parâmetro o endereço Url do web service, dentro deste método, na linha 12 cria-se uma nova instância do objeto servico e na linha 13 é atribuida à propriedade Url do objeto, o endereço do web service recebido por parâmetro. As linhas 19 à 44 mostram o método responsável pela obtenção e inserção 73 dos dados no banco de dados do módulo coleta (PDA). Na linha 21 cria-se uma lista de objetos da classe UnidadeNegocio do web service. Na linha 22 cria-se um objeto da classe ControleUnidadeNegocio da biblioteca PDA.Control. Esse objeto é responsável por fazer a inserção dos dados no banco do PDA (linha 37). Na linha 23 cria-se um objeto da classe UnidadeNegocio da biblioteca ModelagemSistema. Na linha 24 utiliza-se o método limparTabela do objeto controle, assim a tabela é esvaziada antes de iniciar o processo de inserção, evitando dados repetidos no banco de dados. Na linha 26, a lista criada na linha 21 é populada com os dados obtidos do método retornaUnidadesNegocio do web service. E, nas linhas 31 à 43, cada item da lista é inserido no banco de dados do PDA. Como já foi citado, a camada de modelo utilizada no aplicativo que recebe os dados no PDA é a mesma utilizada no desenvolvimento dos web services (ModelagemSistema). A camada controladora é a biblioteca PDA.Control que também é a camada controladora do aplicativo do módulo de coleta. A biblioteca de controle PDA.Control, responsável pelas operações de inserção, alteração, exclusão e consulta de dados faz uso do recurso Dataset tipado que fornece uma representação em objeto dos dados relacionais. Utilizando esse recurso, evita-se a utilização de comandos da linguagem SQL (Structured Query Language) no código fonte do programa, deixando essa codificação toda no Dataset. Dessa maneira, têm-se códigos mais limpos, organizados e de fácil manutenção. O quadro 45 mostra o método de inserção de dados na tabela UnidadeNegocio do PDA. Esse método pertence à classe ControleUnidadeNegocio da biblioteca PDA.Control. 1 2 3 4 5 6 QUADRO 45 - Método de inserção de dados na tabela UnidadeNegocio do PDA public void inserirUnidadeNegocio(UnidadeNegocio unidadeNegocio) { BancoDadosDataSet.UnidadeNegocioDataTable tabela; BancoDadosDataSetTableAdapters.UnidadeNegocioTableAdapter adapter; tabela = new BancoDadosDataSet.UnidadeNegocioDataTable(); adapter = new BancoDadosDataSetTableAdapters.UnidadeNegocioTableAdapter(); 7 this.adapter.Fill(this.tabela); 8 try 9 { 10 74 adapter.Insert(unidadeNegocio.IdUnidadeNegocio, unidadeNegocio.Codigo, unidadeNegocio.Localidade, unidadeNegocio.Municipio, unidadeNegocio.Nome, unidadeNegocio.Pertencente); 12 13 14 15 16 17 } catch (Exception) { throw; } } No quadro 45 pode-se notar que não há nenhum código SQL. Nas linhas 3 a 6 são criados e inicializados os objetos tabela e adapter da tabela UnidadeNegocio do Dataset. Na linha 10 é feita a inserção de dados no banco utilizando o método Insert do objeto adapter, que recebe como parâmetros os atributos do objeto que devem ser armazenados na tabela. A recepção no PDA dos demais dados enviados pelo web service é feita da mesma maneira que a recepção dos dados da tabela de unidades de negócio, apresentado como exemplo nesta sessão. 4.4.3 Envio dos dados do PDA O envio de dados do PDA para o banco de dados da empresa acontece através do aplicativo PDA.Comunicacao no módulo de comunicação do sistema. O aplicativo é responsável por buscar os dados no banco de dados do dispositivo e enviálos ao web service receptor de dados. Para obter os dados cadastrados no banco de dados é utilizada a biblioteca controladora (PDA.Control). O quadro 46 mostra o código fonte do método retornaAbastecimentoVeiculo da classe ControleAbastecimentoVeiculo da biblioteca controladora. QUADRO 46 - Método que retorna todos os abastecimentos de veículos armazenados no PDA public List<AbastecimentoVeiculo> retornaAbastecimentoVeiculo(bool ordenarData) 2 { 3 List<AbastecimentoVeiculo> lista = new List<AbastecimentoVeiculo>(); 4 AbastecimentoVeiculo abastecimentoVeiculo = new AbastecimentoVeiculo(); 5 ... 6 7 if (ordenarData == false){ 8 this.adapter.Fill(this.tabela); 1 75 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 } }else{ this.adapter.FillByOrderByData(this.tabela); } try{ foreach (BancoDadosDataSet.AbastecimentoVeiculoRow linha in this.tabela){ abastecimentoVeiculo.IdAbastecimentoVeiculo = linha.IdAbastecimentoVeiculo; abastecimentoVeiculo.Data = linha.Data; ... lista.Add(abastecimentoVeiculo); abastecimentoVeiculo = new AbastecimentoVeiculo(); } }catch (Exception){ throw; }finally{ safra.mataTabela(); funcionario.mataTabela(); veiculo.mataTabela(); this.tabela.Clear(); } return lista; No quadro 46, a linha 1 mostra a declaração do método, que recebe o parâmetro ordenarData, através do qual é escolhido se a busca deve retornar os dados ordenados por data ou não. Nas linhas 3 a 5 são criados os objetos utilizados na consulta. Nas linhas 7 a 11 é feita a consulta no banco de dados através do data set tipado. Nas linhas 13 a 19 os dados obtidos são organizados em uma lista de abastecimentos de veículos, a qual é retornada na linha 28. Com a lista obtida, basta enviar os dados ao web service receptor. O quadro 47 mostra o código fonte do método responsável pelo envio através do aplicativo do módulo de comunicação no PDA. QUADRO 47 - Código fonte do método para o envio dos dados ao web service receptor public void enviaAbastecimentoVeiculo() { ControleAbastecimentoVeiculo controle = new ControleAbastecimentoVeiculo(); 4 WebSeriviceRecebeDados.AbastecimentoVeiculo abastecimentoWs; 5 if (listaAbastecimentoVeiculo.Count > 0) 6 { 7 foreach (AbastecimentoVeiculo abastecimento in this.listaAbastecimentoVeiculo){ 8 abastecimentoWs = new WebSeriviceRecebeDados.AbastecimentoVeiculo(); 9 abastecimentoWs.IdAbastecimentoVeiculo = abastecimento.IdAbastecimentoVeiculo; 10 abastecimentoWs.Data = abastecimento.Data; 11 1 2 3 76 12 13 ... try{ if(servico.inserirAbastecimentoVeiculo (abastecimentoWs)){ try{ controle.removerAbastecimentoVeiculo (abastecimento.IdAbastecimentoVeiculo); }catch (Exception){ throw; } }else{ MessageBox.Show("Mensagem de erro","Erro", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); } }catch (Exception){ throw; } 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 } } } No quadro 47, na linha 1, é criado o método responsável pelo envio dos dados ao web service receptor e na linha 3 é criado um objeto da classe controladora ControleAbastecimentoVeiculo e, na linha 4, é criado um objeto do tipo AbastecimentoVeiculo do web service. Na linha 5 é feita uma verificação, para que os demais comandos do método sejam executados apenas se o total de registros na lista de abastecimentos de veículos for maior que zero, caso contrário significa que não há dados a serem enviados, sendo assim não é necessário executar os demais comandos do método. Nas linhas 7 a 27 é percorrida toda a lista de dados e executados os seguintes comandos para cada registro: nas linhas 8 a 11 os dados são empacotados no objeto abastecimentoWs; na linha 13 são enviados os dados do registro; caso o web service não retorne nenhuma mensagem de erro, na linha 15 esse registro é excluído, evitando assim que o mesmo dado possa ser enviado novamente. Ao final do procedimento, caso não ocorra nenhum erro, as tabelas de dados coletados devem estar limpas (sem nenhum registro). Os dados dos demais cadastros do sistema são enviados ao web service receptor de dados de maneira semelhante ao envio dos abastecimentos de veículos, mostrado nessa seção. No envio da tabela Atividades, conforme o requisito não funcional NF27.3 mostrado no quadro 29 do capítulo três, apenas as atividades com o 77 status de encerrada são transmitidas. 4.4.4 Recepção e inserção dos dados no servidor A recepção e inserção dos dados no banco de dados da empresa é feita no web service receptor de dados denominado ServicoRecebeDados. Esse web service tem o objetivo de receber os dados do PDA e inseri-los no banco de dados Firebird da empresa. Assim como o web service provedor de dados, o receptor faz uso da biblioteca controladora WebServiceComunicacao.Control. É através dessa biblioteca que os dados recebidos do PDA são inseridos no banco de dados da empresa. O quadro 48 mostra o código do método de inserção dos dados de abastecimentos de veículos no banco de dados Firebird, o qual pertence à classe ControleAbastecimentoVeiculo da biblioteca controladora WebServiceComunicacao.Control. QUADRO 48 - Método que insere os abastecimentos de veículos no banco de dados da empresa public bool inserirAbastecimentoVeiculo 1 (AbastecimentoVeiculo abastecimento) { 2 bool correto = true; 3 try{ 4 this.conexao.abreConexao(); 5 FbCommand comando = new FbCommand("INSERT INTO 6 ABASTECIMENTOSVEICULOS VALUES"(GEN_ID” +”(GEN_ID_ABASTECIMENTOVEICULO, 1), @DATA, @TOTALLITROS, @VALORLITRO, " + "@IDSAFRA, @IDFUNCIONARIO, @IDVEICULO, @VELOCIMETRO)", this.conexao.getConexao()); FbDataAdapter dataAdapter = new FbDataAdapter(comando); 7 dataAdapter.SelectCommand.Parameters.Clear(); 8 dataAdapter.SelectCommand.Parameters.Add("@DATA", 9 abastecimento.Data); . . . 10 11 if (abastecimento.Safra.IdSafra > 0){ 12 dataAdapter.SelectCommand.Parameters.Add("@IDSAFRA", abastecimento.Safra.IdSafra); }else{ 13 dataAdapter.SelectCommand.Parameters.Add("@IDSAFRA", 14 null); } 15 . . . 16 17 dataAdapter.SelectCommand.ExecuteNonQuery(); 18 78 19 20 21 22 23 24 25 } }catch (Exception){ correto = false; throw; } this.conexao.fechaConexao(); return correto; No quadro 48, na linha 1, é declarado o método que recebe como parâmetro um objeto da classe AbastecimentoVeiculo. Na linha 6 é criado um novo comando SQL e nele são informados os parâmetros que recebem os dados a serem inseridos no banco, um exemplo de parâmetro é @DATA (esse parâmetro recebe a data de um determinado registro). Na linha 7 é criado um objeto da classe FbDataAdapter (semelhando ao TableAdapter dos datasets tipados só que para o Firebird), nas linhas 9 a 10 são atribuídos os valores aos parâmetros. O banco de dados da empresa aceita que os campos de chaves estrangeiras, como é o caso do IDSAFRA, que representa um registro da tabela Safra recebam valores nulos. Por esse motivo, nas linhas 12 a 16 são feitas checagens se os velores recebidos são ou não nulos. Na linha 18 é executado o código SQL que insere os dados efetivamente no banco. Com o método de inserção no banco de dados pronto, basta desenvolver o web service em questão para realizar a sua chamada. O quadro 49 mostra o código fonte do método inserirAbastecimentoVeiculo do web service ServicoRecebeDados. 1 2 3 4 5 6 QUADRO 49 - Método inserirAbastecimentoVeiculo do web service ServicoRecebeDados [WebMethod] public bool inserirAbastecimentoVeiculo(AbastecimentoVeiculo abastecimento) { bool correto = true; 7 8 9 10 11 12 13 } ControleAbastecimentoVeiculo controle = new ControleAbastecimentoVeiculo(); if (controle.inserirAbastecimentoVeiculo (abastecimento)==false) { correto = false; } return correto; 79 No quadro 49, na linha 1 o método é declarado como um método web, na linha 2 é criado o método que recebe como parâmetro todos os dados a serem inseridos no banco de dados. Na linha 6 é criado um objeto da classe controladora ControleAbastecimentoVeiculo e nas linhas 8 a 11 é chamado o método inserirAbastecimentoVeiculo (quadro 48) que faz a inserção dos dados no banco. A recepção e inserção dos dados dos demais cadastros do sistema e feita de forma semelhante à recepção e inserção dos dados de abastecimentos de veículos mostrado nessa seção. 4.5 Módulo de coleta de dados O módulo de coleta de dados do sistema tem por objetivo possibilitar ao usuário o cadastro de informações de interesse da empresa em um PDA. Esse módulo consiste em um aplicativo para PDA, desenvolvido com a ferramenta Visual Studio e a linguagem C#. As informações coletadas ficam temporariamente armazenadas no banco de dados do PDA, até que sejam transmitidas ao banco de dados da empresa através do módulo de comunicação. Assim como os demais aplicativos do sistema, o módulo de coleta faz uso das camadas de modelo (biblioteca ModelagemSistema) e controladora (biblioteca PDA.Control). 4.5.1 Designar unidade de negócio Quando se desenvolve algum tipo de aplicativo para dispositivos móveis, tem-se que pensar, além das funcionalidades desejadas, em desempenho, evitando processamentos e ocupações desnecessárias de memória, além de aspectos que facilitem a utilização do aplicativo pelo usuário. Muitos recursos da empresa em questão são alocados por unidades de negócios, como é o caso dos veículos, por exemplo. Cada unidade de negócio tem seus próprios veículos, sendo assim, em um cadastro de abastecimento ou utilização de veículos o usuário deve ter a opção de ocultar os veículos que não dizem respeito a sua 80 unidade de negócio. Para que seja possível efetuar tal filtro nos dados é necessário conhecer a unidade de negócio na qual se está trabalhando. O módulo de coleta de dados do sistema, ao ser iniciado, verifica no banco de dados do PDA qual unidade de negócio está designada como a pertencente a este dispositivo. Após feita a verificação, o aplicativo armazena em memória o número de identificação da unidade de negócio e utiliza-o para filtrar os registros quando necessário. Caso não haja nenhuma unidade de negócio designada ao PDA, o aplicativo não permite que o usuário faça algum cadastro sem antes designar uma unidade de negócio para o PDA. 4.5.2 Coleta dos dados O objetivo do módulo de coleta de dados é proporcionar ao usuário a possibilidade de registrar no PDA dados com relação às atividades desenvolvidas nas unidades de negócio da empresa. Para ilustrar essa funcionalidade é apresentado a seguir o cadastro de abastecimento de veículos, atividade essa que é executada na empresa. O cadastro de abastecimento de veículos possibilita ao usuário do sistema visualizar, inserir, alterar e excluir registros. A primeira etapa deste cadastro deve demonstrar todos os registros efetuados, bem como as opções de ações sobre esses registros. A interface gráfica da primeira etapa do cadastro pode ser vista na figura 18. 81 FIGURA 18 - Interface gráfica da primeira etapa do cadastro de abastecimento de veículos Nesta interface são apresentados os dados já cadastrados, obtidos através do método retornaAbastecimentoVeiculo da classe ControleAbastecimentoVeiculo pertencente à biblioteca PDA.Control (camada controladora do sistema). O quadro 50 mostra o código fonte deste método. QUADRO 50 - Método retornaAbastecimentoVeiculo da classe ControleAbastecimentoVeiculo public List<AbastecimentoVeiculo> retornaAbastecimentoVeiculo(bool ordenarData) 2 { 3 List<AbastecimentoVeiculo> lista = new List<AbastecimentoVeiculo>(); 4 AbastecimentoVeiculo abastecimentoVeiculo = new AbastecimentoVeiculo(); 5 ControleSafra safra = new ControleSafra(); 6 7 ... 8 9 if (ordenarData == false){ 10 this.adapter.Fill(this.tabela); 11 }else{ 12 this.adapter.FillByOrderByData(this.tabela); 13 } 14 15 try{ 16 foreach (BancoDadosDataSet.AbastecimentoVeiculoRow 17 linha in this.tabela){ 18 abastecimentoVeiculo.Data = linha.Data; 19 abastecimentoVeiculo.TotalLitros = linha.TotalLt; 20 ... 21 lista.Add(abastecimentoVeiculo); 22 abastecimentoVeiculo = new AbastecimentoVeiculo(); 23 } 24 } 25 ... 26 return lista; 27 } 1 82 No quadro 50, a linha 1 mostra a declaração do método, que recebe por parâmetro uma variável do tipo bool (verdadeiro ou falso) na qual é informado verdadeiro se os dados buscados devem ser ordenados por data ou falso se não. Na linha 3 é criada a lista a ser retornada ao final do método e nas linhas 4 à 7 são criados os demais objetos necessários para o funcionamento do método. Nas linhas 9 à 13 é feita a chamada aos métodos do dataset responsável pela busca no banco de dados. Nas linhas 16 à 23 todos os registros obtidos com a busca no banco de dados são inseridos na lista de abastecimento de veículos, que é retornada na linha 26. Ainda na interface principal do cadastro, figura 18, abaixo dos dados já cadastrados, estão dispostos três botões que assumem ações distintas. O primeiro inicia a interface de inserção; o segundo inicia a interface de inserção já populando os campos com os dados do registro selecionado da grade de registros, para que o usuário possa alterá-los; e o terceiro possibilita a exclusão do registro selecionado. O quadro 51 mostra o código fonte de cada botão, ou seja, as ações que eles tomam quando são invocados (clicados). 1 2 QUADRO 51 - Código fonte das ações dos botões da interface principal de cadastro. //Botão Novo FormAbastecimentoVeiculoEditar form = new FormAbastecimentoVeiculoEditar(funcionarios, safras, veiculos, true, IdUnidadeNegocio, 0); form.ShowDialog(); form = null; montaTabela(); 3 4 5 6 //Botão Alterar / Visualizar 7 8 if (tabela.Rows.Count != 0) 9 { 10 FormAbastecimentoVeiculoEditar form = new FormAbastecimentoVeiculoEditar(funcionarios, safras, veiculos, false, IdUnidadeNegocio, (int)dataGrid1.Tag); 11 form.ShowDialog(); 12 form = null; 13 montaTabela(); 14 15 }else 16 { 17 visual.mensagemAlerta("Não há registros cadastrados", ""); 18 } 19 20 83 //Botão Excluir 21 if (visual.mensagemConfirmacao("Deseja reamente remover o 22 registro?","Confirmação")==DialogResult.Yes) 23 { controle.removerAbastecimentoVeiculo((int)dataGrid1.Tag); 24 abastecimentoVeiculoBindingSource.RemoveAt 25 (abastecimentoVeiculoBindingSource.Position); 26 dataGrid1.Refresh(); visual.mensagemSimples("Registro excluido com sucesso", "OK"); } No quadro 51, as linhas 2 à 5 mostram a ação quando o botão novo é clicado, essa ação repete-se com algumas alterações no botão alterar (linhas 7 à 17). Na linha 2 é criado e inicializado o formulário de inserção, passando por parâmetro as listas de veículos, funcionários e safras, o valor true que informa ao formulário que a ação é de inserção (novo registro), além do campo id da unidade de negócio e o valor 0 (zero). Na linha 10 ocorre a criação do formulário para a alteração de um registro. Suas diferenças em relação à criação de um novo registro é indicada pelos parâmetros false, que informa ao formulário que não é um novo registro, e o id do abastecimento de veículo do registro selecionado na grade de registros. Nas linhas 3 e 11 o formulário é mostrado. Nas linhas 4 e 12 o formulário é limpo da memória (após ser fechado) e nas linhas 5 e 13 é chamado o método que atualiza a grid de registros após a inserção ou alteração. Nas linhas 20 à 26 do quadro 47 é mostrado o código responsável por excluir um registro selecionado na grade de registros. Na linha 20 é criada uma caixa de diálogo que pede uma confirmação de exclusão para o usuário; no caso da confirmação ser positiva, executam-se as linhas 22 à 25 que, respectivamente, excluem o registro do banco de dados e do grid, atualizam este grid e exibem uma mensagem confirmando a exclusão. Na interface para a inclusão e alteração dos registros são usados os seguintes componentes: combobox para mostrar a lista de veículos, funcionários e safras cadastradas; um calendário para ser selecionada a data do abastecimento; textbox para ser digitado o total de litros, valor do litro, velocímetro e mostrar se a safra selecionada é a atual; um checkbox para o usuário escolher se todos os veículos ou apenas os veículos da unidade de negócio devem ser mostrados e três botões para executar as 84 ações desejadas. Na figura 19 é mostrada essa interface gráfica. Com a interface gráfica desenvolvida, a primeira ação a ser tomada é a população dos comboboxes. O formulário recebe como parâmetro as listas de veículos, funcionários e safras da interface anterior e insere-as nos comboboxes. Recebendo os dados como parâmetro, não se tem a necessidade de buscá-los no banco de dados, o que toma muito tempo de processamento, atrasando as ações do usuário. A busca e montagem dessas listas são feitas por uma Thread executada ao ser criada a primeira interface (figura 18). Assim, no mesmo momento em que a interface é criada, é feita a busca no banco de dados e a montagem das listas que, posteriormente, são enviadas por parâmetro para a interface de inserção e alteração (figura 19). No quadro 52 é mostrado o código fonte da busca e população das listas, bem como a execução através de uma Thread. FIGURA 19 - Interface gráfica para a inclusão e alteração de abastecimento de veículo 1 2 3 4 5 6 7 8 QUADRO 52 - Thread que efetua a busca de dados essenciais para o cadastro. private void obtemDadosParaCadastro() { controleSafra = new ControleSafra(); controleFuncionario = new ControleFuncionario(); controleVeiculo = new ControleVeiculo(); safras.AddRange(controleSafra.retornaSafras()); funcionarios.AddRange (controleFuncionario.retornaFuncionarios()); 85 9 veiculos.AddRange(controleVeiculo.retornarVeiculos()); 10 11 Thread.Sleep(100); 12 } 13 14 //Criação e chamada da Thread no método construtor da classe 15 16 Thread thread1 = new Thread(new ThreadStart(obtemDadosParaCadastro)); 17 thread1.Start(); No quadro 52, nas linhas 3 a 5, são incializados os objetos das classes de controle de safra, controle de funcionário e controle de veículo. Com esses objetos é possível obter os dados cadastrados de cada tabela no banco de dados (tabelas de safras, funcionários e veículos). Nas linhas 7 à 9, as listas de safras, funcionários e veículos são populadas com os dados do banco. Na linha 11 a thread é colocada em espera por 100 milisegundos. Nas linhas 16 e 17, a thread é criada e iniciada. Os quadros 53 e 54 mostram o código fonte responsável por executar as funções do formulário de inserção e alteração. QUADRO 53 - Código fonte do formulário de inserção e alteração de abastecimento de veículo I ... 1 using ModelagemSistema; 2 using PDA.Control; 3 4 namespace PDA.Coleta 5 { 6 public partial class FormAbastecimentoVeiculoEditar : Form{ 7 private bool novoRegistro; 8 private int idUnidadeNegocio; 9 private FerramentasVisuais visual=new FerramentasVisuais(); 10 private List<Funcionario> listaFuncionarios = 11 new List<Funcionario>(); ... 12 public FormAbastecimentoVeiculoEditar(List<Funcionario> 13 lisFun,List<Safra> lisSaf,List<Veiculo> lisVei, bool novoRegistro,int idUnidadeNegocio, int idAbastecimento){ this.novoRegistro = novoRegistro; 14 15 this.idUnidadeNegocio = idUnidadeNegocio; 16 populasListas(lisFun, lisSaf, lisVei); 17 InitializeComponent(); 18 populaCombos(); 19 limparCampos(); 20 if (this.novoRegistro == false){ 21 btnFinalizar.Enabled = false; 22 btnConfirmar.Text = "Alterar"; 23 populaCampos(idAbastecimento); 24 } 25 } 26 private void populasListas(List<Funcionario> lisFun, List<Safra> lisSaf, List<Veiculo> lisVei){ 86 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 if (listaFuncionarios.Count > 0) listaFuncionarios.Clear(); ... listaFuncionarios.AddRange(lisFun); ... } private void populaCombos(){ bindingVeiculo.DataSource = listaVeiculos; comboVeiculo.Refresh(); ... } private void atualizaComboVeiculo(){ if (checkVeiculosDemaisUN.Checked==false){ listaVeiculos = new List<Veiculo>(); listaVeiculos.AddRange (controleVeiculo.retornarVeiculos()); bindingVeiculo.DataSource = listaVeiculos; comboVeiculo.Refresh(); comboVeiculo.Text = ""; }else if (checkVeiculosDemaisUN.Checked == true){ listaVeiculos = new List<Veiculo>(); listaVeiculos.AddRange(controleVeiculo. retornarVeiculosPorUn(idUnidadeNegocio)); bindingVeiculo.DataSource = listaVeiculos; comboVeiculo.Refresh(); comboVeiculo.Text = ""; } } private void limparCampos(){ if (novoRegistro==true){ comboVeiculo.Text = null; ... } textTotalLt.Text = ""; funcionario = new Funcionario(); ... } private void populaCampos(int idAbastecimento){ abastecimento = controle. retornaAbastecimentVeiculoPorId(idAbastecimento); if (abastecimento.Safra.Atual == true){ textSafraAtual.Text = "Sim"; }else{ textSafraAtual.Text = "Não"; } textTotalLt.Text = Convert.ToString(abastecimento.TotalLitros); safra = abastecimento.Safra; combo.SelectedValue = safra.IdSafra; } No quadro 53, as linhas 2 e 3 fazem referência às camadas de modelo e controladora do sistema; na linha 7 é declarada a classe, herdando as característcas da classe Form uma vez que essa classe é um formulário (interface gráfica); nas linhas 8 a 12 são declarados todos os objetos e listas necessárias ao funcionamento da classe. Nas linhas 13 à 25 é declarado o método construtor da classe. Na linha 14 é atribuído à variável novoRegistro o valor recebido por 87 paramêtro (true tratando-se de um novo registro e false se não, sendo assim uma alteração ou visualização). Na linha 15 é atribuído à variável idUnidadeNegocio o valor recebido por parâmetro, esse valor diz respeito à unidade de negócio designada para o PDA utilizado. Na linha 16 é chamado o método populasListas (linhas 26 à 32) que é responsável por popular as listas de veículos, funcionários e safras com os valores recebidos por parâmetro. Na linha 17 é chamado o método InitializeComponent que é criado pelo Visual Studio, sendo responsável pela inicialização dos componentes visuais do formulários. Na linha 18 é chamado o método populaCombos (linhas 32 à 37), que é responsável por preencher os comboboxes com os dados das listas, por fim é chamado, na linha 19, o método limparCampos (linhas 54 à 62), responsável por atribuir valores nulos aos componentes visuais da classe. Na linha 20 é feita uma verificação, se a variável novoRegistro possuir o valor false significa que não se trata de uma inclusão e sim de uma alteração ou visualização de registro. Sendo assim, na linha 21 o botão finalizar é desabilitado, o botão confirmar recebe o texto Alterar; nas linhas 22 e 23 é chamado o método populaCampos (linhas 62 à 73) que atribuí aos componentes visuais os valores do registro a ser alterado ou visualizado. QUADRO 54 - Código fonte do formulário de inserção e alteração de abastecimento de veículo II ... 1 private void gravarDados(){ 2 if (comboVeiculo.Text.Equals("")){ 3 veiculo = new Veiculo(); 4 }else{ 5 veiculo = buscaVeiculoLista 6 ((int)comboVeiculo.SelectedValue); 7 } 8 abastecimento.Veiculo = veiculo; 9 ... 10 if (novoRegistro == true){ 11 controle.inserirAbastecimentoVeiculo 12 (abastecimento); visual.mensagemSimples("Mensagem", "OK"); 13 }else if (novoRegistro == false){ 14 controle.alterarAbastecimentoVeiculo 15 (abastecimento); visual.mensagemSimples("Mensagem", "OK"); 16 } 17 } 18 19 private Funcionario buscaFuncionarioLista(int idFuncionario){ Funcionario func = 20 88 listaFuncionarios.Find(new Predicate<Funcionario>( delegate(Funcionario funcionario) { return funcionario.IdFuncionario == idFuncionario; } )); return func; 21 22 } 23 private void inputPanel1_EnabledChanged(object sender, EventArgs e){ if (inputPanel1.Enabled == true){ 24 this.FormBorderStyle = FormBorderStyle.None; 25 this.AutoScroll = true; 26 this.Height -= inputPanel1.Bounds.Height; 27 } 28 if (inputPanel1.Enabled == false){ 29 this.Height += inputPanel1.Bounds.Height; 30 this.AutoScroll = false; 31 32 this.FormBorderStyle = FormBorderStyle.FixedSingle; 33 } 34 } 35 private void checkVeiculosDemaisUN_CheckStateChanged (object sender, EventArgs e){ 36 atualizaComboVeiculo(); 37 } 38 private void btnConfirmar_Click(object sender, EventArgs e){ 39 if (novoRegistro == true){ 40 gravarDados(); 41 limparCampos(); 42 }else{ 43 gravarDados(); 44 this.Close(); 45 } 46 } 47 private void btnCancelar_Click(object sender, EventArgs e){ 48 if (novoRegistro == true){ 49 limparCampos(); 50 }else{ 51 this.Close(); 52 } 53 } 54 private void comboSafra_SelectedValueChanged (object sender, EventArgs e){ 55 if (comboSafra.SelectedItem != null){ 56 safra = buscaSafraLista (Convert.ToInt32(comboSafra.SelectedValue)); 57 if (safra.Atual == true){ 58 textSafraAtual.Text = "Sim"; 59 }else{ 60 textSafraAtual.Text = "Não"; 61 } 62 } 63 } 64 private void btnFinalizar_Click(object sender, EventArgs e){ this.Close(); 65 } 66 private void comboSafra_LostFocus(object sender, EventArgs e){ 67 if (comboSafra.Text==""){ 68 textSafraAtual.Text = ""; 69 } 70 } 71 } 72 } 89 No quadro 54, nas linhas 2 à 18 é mostrado o método gravarDados. Esse método inicia a execução fazendo a seguinte verificação: caso a variável novoRegistro tenha o valor true, ele chama o método inserirAbastecimentoVeiculo da classe ControleAbastecimentoVeiculo, que insere um novo registro de abastecimento de veículo; caso o valor seja false, é chamado o método alterarAbastecimentoVeiculo que altera um determinado registro. Nas linhas 23 à 34 é criado um evento no componente inputPanel (responsável por gerenciar o teclado virtual do Windows Mobile). Esse evento faz com que, ao ser mostrado o teclado, a tela tenha seu tamanho diminuído, evitando assim que o teclado virtual a sobreponha. As classes controladoras responsáveis por salvar os dados cadastrados no banco de dados do PDA são as mesmas utilizadas no módulo de comunicação, mostrado no item 4.4.2 deste trabalho. Os demais cadastros do módulo de coleta são implementados de forma semelhante ao cadastro de abastecimento de veículos, apresentado como exemplo nesta sessão. 4.5.3 Cópia de segurança A cópia de segurança, no módulo de coleta, tem por objetivo criar uma cópia do arquivo de banco de dados do PDA para qualquer outro diretório (inclusive em cartões de memória), bem como restaurá-la se necessário. Em caso de qualquer tipo de problema com o PDA, tendo a cópia de segurança, essa pode ser utilizada em um outro PDA, evitando a perda de dados. Para efetuar a cópia de segurança, utiliza-se o componente SaveDialog do Visual Studio, bem como para recuperá-la utiliza-se o componente OpenDialog. O quadro 55 mostra o código fonte para a criação e o quadro 56 mostra o código fonte para a recuperação da cópia de segurança. 90 1 2 3 4 5 6 7 8 9 10 11 12 13 14 QUADRO 55 - Código fonte da criação da cópia de segurança String diretorioSistema = System.IO.Path.GetDirectoryName (System.Reflection.Assembly. GetExecutingAssembly().GetName().CodeBase); dialogoSalvar.FileName = "BackUpColeta"; if (dialogoSalvar.ShowDialog()==DialogResult.OK) { try { System.IO.File.Copy(diretorioSistema + "\\BancoDados.sdf", dialogoSalvar.FileName, true); visual.mensagemSimples("Cópia efetuada com sucesso", "Sucesso"); } catch (Exception) { visual.mensagemErro("Falha ao tentar executar a cópia de segurança", "Erro"); } } No quadro 55, na linha 1, é obtido o diretório atual do sistema, na linha 3 é chamado o SaveDialog e na linha 7 o arquivo de banco de dados é copiado para o diretório escolhido no SaveDialog. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 QUADRO 56 - Código fonte para a recuperação da cópia de segurança String diretorioSistema = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly(). GetName().CodeBase); if (dialogoAbrir.ShowDialog()!= DialogResult.Cancel) { try { System.IO.File.Copy(dialogoAbrir.FileName, diretorioSistema + "\\BancoDados.sdf", true); visual.mensagemConfirmacao("Cópia de segurança recuperada com sucesso. Você deve reiniciar seu PDA "+ "para completar esse processo ") } catch (Exception) { visual.mensagemErro("Falha ao recuperar cópia de segurança", "Erro"); } } No quadro 56, na linha 1, é obtido o diretório atual do sistema; na linha 2 é chamado o OpenDialog; na linha 6 é copiado o arquivo de banco de dados do diretório obtido através do OpenDialog para o diretório do programa; na linha 7 o aplicativo solicita ao usuário que reinicie o PDA. Reiniciar o PDA é necessário para completar o 91 processo de recuperação da cópia de segurança. 4.6 Conclusão Este capítulo tem o objetivo de mostrar como o sistema foi desenvolvido, utilizando a ferramenta Visual Studio e a linguagem C#. Com os exemplos de código fonte é possível ter uma noção exata dos comandos e classes utilizados no desenvolvimento dos diferentes módulos e aplicativos do sistema. O estudo sobre MVC e web services também enriqueceu o trabalho. Com o MVC pôde-se estruturar o sistema de maneira mais clara e elegante, facilitando a manutenção e leitura dos códigos fonte das classes desenvolvidas. Com o uso de web services pôde-se efetuar a transmissão dos dados através da rede mundial de computadores, evitando assim o deslocamento de dispositivos entre as unidades de negócio da empresa. 92 5 APRESENTAÇÃO DO SISTEMA Neste capítulo apresenta-se o sistema desenvolvido, para isso foram feitos testes nos dois módulos (comunicação e coleta de dados) com o objetivo de identificar possíveis falhas, bem como certificar-se do funcionamento do mesmo. Os testes são feitos conforme a arquitetura apresentada no capítulo 4, testando o módulo de comunicação e, em seguida, o módulo de coleta com todas as suas funcionalidades. 5.1 Módulo de comunicação O módulo de comunicação faz a transmissão dos dados da empresa para o PDA, bem como do PDA para a empresa. Para isso são utilizados dois web services e um aplicativo no PDA. Depois de feito um processo de comunicação, espera-se que o banco de dados da empresa contenha todos os dados coletados com o PDA e no PDA estejam disponíveis os dados necessários para o funcionamento do módulo de coleta. 5.1.1 Web service provedor de dados O primeiro aplicativo do sistema testado é o web service provedor de dados. Esse tem como o objetivo dispor ao cliente (aplicativo que faz uso) os dados contidos no banco de dados da empresa, essenciais ao funcionamento do módulo de coleta do sistema. Para colocar o web service em funcionamento é necessário um servidor web com suporte ao asp.net. Neste trabalho é usado o IIS (Internet Information Service) da Microsoft. Para testar o funcionamento do web service basta acessar o arquivo ServicoRetornaDados.asmx com um programa de visualização web, como o Internet 93 Explorer da Microsoft. Ao acessar o arquivo, são exibidos todos os métodos declarados como WebMethod (figura 20). Clicando sobre o método desejado, abre-se outra página com a indicação: To test the operation using the HTTP POST protocol, click the 'Invoke' button (figura 21). Ao clicar no botão Invoke uma nova página é aberta com o resultado do método no formato XML (Extensible Markup Language), como pode ser visto na figura 22. Para testar os demais métodos do web service provedor de dados basta seguir os mesmos passos mostrados nessa seção, uma vez que todas as consultas são feitas de forma semelhante ao método retornaUnidadeNegocio. FIGURA 20 - Acessando o arquivo ServicoRetornaDados.asmx 94 FIGURA 21 - Acessando o método retornaUnidadesNegocio FIGURA 22 - Resultado da execução do método retornaUnidadeNegocio 95 5.1.2 Web service receptor de dados O web service receptor de dados é responsável por receber os dados coletados no PDA e inserí-los no banco de dados da empresa. Cada método de inserção retorna um valor do tipo booleano (verdadeiro ou falso) que indica se os dados foram inseridos corretamente no banco. Para testar o web service receptor de dados, a exemplo do provedor, é utilizado o IIS e o Internet Explorer. Acessando o arquivo ServicoRecebeDados.asmx tem-se as interfaces apresentadas nas figuras 23 e 24. Na figura 23 são apresentados todos os métodos do web service (WebMethod) e na figura 24 é apresentado o formulário para testar o método inserirAbastecimentoMaquina. FIGURA 23 - Acessando o arquivo ServicoRecebeDados.asmx 96 FIGURA 24 - Acessando o método inserirAbastecimentoMaquina O IIS cria a interface de teste apenas se os parâmetros do método forem de tipos de dados primitivos da linguagem, o que não ocorre no trabalho em questão, uma vez que é enviado um objeto como parâmetro. Para demonstrar essa interface foi criado o referido método com os parâmetros sendo dados primitivos e, após o término do teste, alterado à realidade do sistema em questão. Na figura 25 é mostrada a interface que o sistema apresenta após a inserção dos dados, retornando em formato XML um valor booleano indicando se o cadastro foi inserido com sucesso. 97 FIGURA 25 - Resultado da execução do método inserirAbastecimentoMaquina 5.1.3 Aplicativo de comunicação no PDA O aplicativo de comunicação no PDA tem a função de enviar os dados coletados ao web service receptor e receber os dados essenciais ao funcionamento do módulo de coleta do web service provedor de dados. O aplicativo busca em um arquivo XML os endereços dos web services, bem como permite a alteração desses endereços. Dessa maneira, em caso de mudança dos endereços, basta ao usuário atualizá-los por meio da interface apresentada na figura 26. Com os endereços dos web services corretos, basta ao usuário clicar sobre o botão Iniciar comunicação e aguardar até o término do processo, conforme apresentado na figura 27. 98 FIGURA 26 - Interface de alteração dos endereços dos web services no aplicativo do módulo de comunicação no PDA. FIGURA 27 - Interface do processo de comunicação no PDA 99 Para verificar se o processo funcionou corretamente, basta acessar o arquivo BancoDados.sdf no PDA, utilizando o programa Query Analyzer (disponível com o Microsoft SQL Server Mobile) e buscar os dados armazenados. Na figura 28 apresentase a tabela de unidade de negócios (dados recebidos do web service provedor) e na figura 29 apresenta-se a tabela de abastecimento de veículos (dados enviados ao web service receptor). FIGURA 28 - Resultado da etapa de obtenção de dados com o aplicativo do módulo de comunicação no PDA Na figura 28, a interface da esquerda mostra a aba Grid da tabela UnidadeNegocio em branco, uma vez que até então não há dado algum no banco de dados do PDA. Ainda na figura 28, a interface da direita apresenta a aba Grid após efetuada a comunicação com o web service provedor de dados. Nesse momento, a tabela contém cinco registros, que são os registros cadastrados no banco de dados do PDA, os quais foram obtidos por meio do web service do banco de dados da empresa. Na figura 29, a interface da esquerda mostra a aba Grid da tabela AbastecimentoVeiculo com os registros cadastrados no PDA por meio do módulo de coleta. Após efetuada a comunicação, os dados são enviados ao banco de dados da empresa e a mesma tabela deve estar sem nenhum registro, conforme pode ser visto na 100 interface da direita na figura 29. FIGURA 29 - Resultado da etapa de envio de dados com o aplicativo do módulo de comunicação no PDA Para certificar-se completamente do funcionamento do módulo de transmissão, é preciso verificar se os dados transmitidos foram inseridos no banco de dados da empresa. Na figura 30 é mostrada a tabela ABASTECIMENTOVEICULO do banco de dados no servidor antes do processo de comunicação. Nesse momento a tabela não tem registro algum. Na figura 31 é mostrada a mesma tabela após o processo de comunicação, com os dados coletados pelo módulo de coleta do sistema. FIGURA 30 - Tabela ABASTECIMENTOVEICULO do banco de dados da empresa antes do processo de comunicação 101 FIGURA 31 - Tabela ABASTECIMENTOVEICULO do banco de dados da empresa depois do processo de comunicação 5.2 Módulo de coleta de dados O módulo de coleta de dados é responsável por coletar os dados em campo e armazená-lo eu um dispositivo PDA para posterior transferência. Esse módulo é constituído de um aplicativo instalado em um PDA que tem três funções básicas, são elas: designar unidade de negócio, coleta de dados e cópia de segurança. 5.2.1 Designar unidade de negócio Com a função designar unidade de negócio é possível atribuir ou alterar uma única unidade de negócio ao PDA em uso. Dessa maneira é possível filtrar os dados evitando que o usuário tenha contato direto com dados que não dizem respeito à unidade de negócio à qual pertence. Para designar uma unidade de negócio a um PDA basta acessar na interface principal a opção Alterar unidade de negócio. Uma nova janela é mostrada e o usuário pode escolher a unidade de negócio que deseja atribuir ao PDA. A figura 32 mostra as etapas para designar ou alterar uma unidade de negócio. Caso o PDA não tenha uma unidade de negócio atribuída, ao iniciar o aplicativo de coleta é mostrada uma mensagem alertando o usuário. Neste caso, não é possível acessar nenhum recurso do aplicativo (exceto cópia de segurança) como pode ser visto da figura 33. 102 FIGURA 32 - Designado ou alterando uma unidade de negócio no PDA FIGURA 33 - Alertas mostrado a não designação de uma unidade de negócio 5.2.2 Coleta de dados A função de coleta de dados representa os cadastros efetuados com o módulo de coleta no dispositivo PDA. É com essa função que os dados referentes às atividades nas unidades de negócios da empresa são coletados. 103 As interfaces dos cadastros têm a seguinte estrutura: a primeira tela mostra os registros já cadastrados e as funções que podem ser executadas com eles. Ao escolher uma função de edição de um registro (inclusão ou alteração), uma nova tela é mostrada para a execução dessa função. Para exemplificar a função de coleta de dados são mostradas na figura 34 as interfaces de cadastro de abastecimento de veículo. O aplicativo ainda proporciona os cadastros de: abastecimento de máquina; atividade; atividade por funcionário; utilização de insumo; utilização de máquina; utilização de material; e utilização de veículo. FIGURA 34 - Interfaces do cadastro de abastecimento de veículo Para comprovar a inserção dos dados no banco de dados do PDA, a figura 35 mostra a tabela AbastecimentoVeiculo sem nenhum dado na interface da esquerda e, na interface da direita, a mesma tabela com os dados cadastrados através do aplicativo do módulo de coleta de dados. 104 FIGURA 35 - Resultado da etapa de coleta de dados com o aplicativo do módulo de coleta no PDA O cadastro de atividades realizadas tem algumas diferenças com relação ao cadastro de abastecimento de veículos. A primeira delas é a possibilidade de filtrar as atividades e mostrar na tela apenas as encerradas, as não encerradas ou todas as atividades, conforme as necessidades do usuário. A figura 36 mostra a primeira interface do cadastro de atividades. A alteração ou inserção de novas atividades ocorre de forma semelhante aos demais cadastros, conforme apresentado na figura 37. Outra diferença com relação ao cadastro de abastecimento de veículos, é que atrelados às atividades realizadas, estão os cadastros de funcionários por atividades, utilização de veículos, utilização de máquinas, utilização de materiais e utilização de insumos. Para realizar o cadastro de uma dessas funções, o usuário deve primeiro selecionar uma atividade e depois clicar no botão Opções para atividades ou manter pressionado na tela para que o menu apareça, conforme a figura 38. Na figura 39 é mostrada a interface para a alteração ou inserção de funcionários em uma atividade. O registro de utilização de máquinas, veículos, materiais e insumos em uma atividade é feito de forma similar ao registro de funcionários. 105 FIGURA 36 - Tela inicial para cadastro de atividades FIGURA 37 - Interface para a inserção ou alteração de uma atividade 106 FIGURA 38 - Menu de opções para atividades FIGURA 39 - Interface para inserção de funcionário em atividade 107 5.2.3 Cópia de segurança A função de cópia de segurança tem por objetivo proporcionar ao usuário do aplicativo a possibilidade de efetuar uma cópia fiel do banco de dados do PDA. Essa funcionalidade é de grande importância, pois a cópia pode ser feita em uma mídia removível (cartão SD, por exemplo) que pode ser guardada e recuperada em outro PDA, no caso de qualquer avaria do equipamento. A interface apresentada quando o usuário efetua uma cópia de segurança é gerada automaticamente pelo componente SaveFileDialog do Visual Studio. A linguagem das etiquetas mostradas respeita a língua da verão do Windows Mobile (no caso do emulador do Visual Studio tem-se a língua inglesa). A figura 40 mostra essa interface, que tem os seguintes campos: • Name: Nome do arquivo de cópia de segurança; • Folder: Diretório de destino da cópia de segurança; • Type: Tipo do arquivo, essa opção não pode ser alterada, é sempre do tipo Banco de dados; • Location: Dispositivo no qual é efetuada a cópia de segurança (PDA, cartão SD). Para restaurar uma cópia de segurança é usada uma interface (figura 41) gerada a partir do componente OpenFileDialog, que apresenta os seguintes campos: • Folder: Nesse campo é possível escolher um diretório específico para procurar por arquivos de cópia; • Type: Tipo de arquivo a qual se procura, esse campo não pode ser alterado, é sempre do tipo Banco de dados. Após escolher as opções de busca é mostrada uma relação de todos os arquivos encontrados, para concretizar a restauração da cópia basta clicar sobre o arquivo desejado. 108 FIGURA 40 - Interface para efetuar uma cópia de segurança FIGURA 41 - Interface para restaurar uma cópia de segurança 109 Para comprovar o funcionamento da cópia de segurança, a figura 42 mostra o cadastro de abastecimento de veículo com dois registros (primeira interface). Em seguida foi efetuada uma cópia de segurança e foram excluídos os registros (segunda interface). Após restaurada a cópia, os dois registros são mostrados novamente (terceira interface). FIGURA 42 - Resultado do teste de cópia de segurança 5.3 Conclusão O desenvolvimento deste capítulo tem grande importância no que diz respeito à demonstração do sistema desenvolvido. Com os testes de coleta e comunicação de dados foi possível demonstrar o sistema e todas as suas funcionalidades. Além de demonstrar o sistema em questão, tem-se o aprendizado adquirido com relação ao sistema operacional Windows Mobile, sistema operacional do dispositivo PDA ao qual o sistema é designado. 110 6 CONSIDERAÇÕES FINAIS Este trabalho teve como principal enfoque o desenvolvimento de um sistema para coleta de dados baseado em dispositivos móveis, nesse caso especificamente, dispositivos PDA (Personal Digital Assistant). Além da coleta dos dados, o sistema deve proporcionar a comunicação e transferência dos dados coletados para um banco de dados em um servidor não móvel. O primeiro objetivo específico foi fazer um levantamento dos modelos e características dos computadores de mão disponíveis no mercado, a fim de auxiliar na escolha de tal dispositivo para a implantação do sistema desenvolvido. Este objetivo envolveu uma grande pesquisa em web sites, artigos científicos, revistas e livros do gênero. Uma dificuldade enfrentada nesta etapa foi a obtenção de materiais para pesquisa, pois a utilização de dispositivos dessa natureza ainda é recente e existem poucas publicações sobre esse assunto. Apesar desta dificuldade, foram estudados diversos modelos de dispositivos PDA, bem como ferramentas para o desenvolvimento de aplicativos para tal. Essa etapa resultou em um quadro comparativo entre os modelos (quadro 2, mostrado no item 2.4. deste trabalho), auxiliando na escolha de um modelo para a implantação do sistema, o que leva a concluir que esse objetivo foi atingido com sucesso. O estudo sobre PDA se fez priorizando dois sistemas operacionais distintos, o Palm OS e o Wndows Mobile. Para a escolha do dispositivo mais adequado à implantação do sistema forma observados, além do sistema operacional, os seguintes requisitos: processador; memória total; memória para armazenamento; conexão wireless; conexão bluetooth; dimensões da tela; possibilidade de utilização de cartão 111 de expansão de memória; e preço médio. Tendo alguns modelos com requisitos muito parecidos, o item que pesou na escolha final foi o preço médio. O segundo objetivo específico do trabalho foi desenvolver um aplicativo para computadores de mão, para ser utilizado na coleta, tratamento, armazenamento e exportação de dados. Este objetivo envolveu uma pesquisa sobre o desenvolvimento para dispositivos PDA e um grande empenho no desenvolvimento do aplicativo. Nesta etapa também enfrentou-se dificuldades na obtenção de materiais bibliográficos com relação ao desenvolvimento para esse tipo de dispositivo, dificuldade esta que foi suprida com o uso de web sites e revistas técnicas do gênero. Apesar disto, foram desenvolvidos dois aplicativos para dispositivos PDA, o primeiro responsável por coletar e armazenar os dados no dispositivo e o segundo responsável pela exportação dos dados. Ambos os aplicativos tiveram um funcionamento correto, como demonstra o capítulo 5, o que leva a concluir que esse objetivo também foi atingido com sucesso. A utilização do padrão MVC (Model, View, Controller) somou muito ao sistema e ao aprendizado do autor, uma vez que esse tipo de projeto vem sendo utilizado cada vez mais no desenvolvimento de sistemas. Com o MVC é possível organizar o sistema em camadas independentes, facilitando alterações e a reutilização de código. O terceiro e último objetivo específico foi desenvolver um aplicativo, que possa ser acessado via Internet, para receber os dados oriundos dos computadores de mão e inseri-los em um banco de dados. Este objetivo envolveu uma pesquisa sobre a melhor forma de desenvolvimento, sendo escolhidos os aplicativos do tipo web service. Após definir a forma de desenvolvimento também foi feito um estudo sobre como desenvolver esse tipo de aplicativo e foram implementados os web services necessários. O funcionamento correto destes leva a concluir que o objetivo também foi atingido com sucesso. O estudo sobre web services envolveu um aperfeiçoamento sobre sistemas distribuídos, formas de comunicação entre eles e o envio de mensagem de uma máquina à outra. Esse estudo vem a somar ao desenvolvimento técnico do autor, uma 112 vez que, atualmente, o mercado de trabalho exige cada vez mais conhecimento em diversas áreas da tecnologia da informação. Com o sucesso do sistema desenvolvido almejam-se futuros aperfeiçoamentos a este, como um aplicativo de análise dos dados coletados. Com esse aplicativo pode-se oferecer ao usuário a possibilidades de verificar os dados coletados a autorizar ou não a inserção no banco de dados de destino. Ainda podem-se maximizar os aplicativos para PDA, possibilitando a instalação dos mesmos em outros tipos de dispositivos móveis, como celulares, por exemplo. 113 REFERÊNCIAS BIBLIOGRÁFICAS ALVES, W. P. Palm OS e Windows CE: desenvolvimento de aplicações. São Paulo: Érica, 2002. 252 p. CRIARWEB. Sistemas Operacionais para PDA’s: Comparação entre os s.o’s mais usados para PDA’s: Palm OS e Pocket PC. Disponível em: <http://www.criarweb. com/artigos/611.php>. Acessado em: 10 out. 2008. CONHEÇA A HISTÓRIA DA HP desde sua fundação em uma garagem. Folha Online, set. 2001. Informática. Disponível em: <http://www1.folha.uol.com.br/folha/ informatica/ult124u7818.shtml>. Acessado em: 01 abr. 2008. DEITEL, H. M. et al. C#: Como programar. São Paulo: Personal Education, 2005. 1153 p. FIREBIRD. Firebird .NET Data Providers downloads. Disponível em: < http://www.firebirdsql .org/index.php?op=files&id=netprovider>. Acessado em: 15. ago. 2008. IBGE. PDAs e questionários eletrônicos. In: IBGE. Inovações e impactos nos sistemas de informações estatísticas e geográficas do Brasil. Rio de Janeiro: IBGE, 2008. p. 33-34. ISAM. Motivação. Site oficial do projeto Infra-estrutura de Suporte às Aplicações Móveis - ISAM. Disponível em: <http://www.inf.ufrgs.br/~isam/#apresentacao>. Acessado em: 18 mar. 2008. LAUDON, K. P.; LAUDON, J. P. Sistemas de informação: com Internet. 4. ed. Rio de Janeiro: LTC, 1999. 389 p. LELES, A. D. Sistemas de informação. São Paulo. Disponível em: <http://www.sypnet.com.br/content/view/25/2/>. Acessado em: 08 out. 2008. LOPES, R. R. F. PALMTOPS: Programabilidade e Conectividade. Rio Claro, 2006. 102 p. Disponível em: <http://www.sohand.icmc.usp.br/~rigolin/downloads/ palestra_JavaME_PalmOS_20060929.pdf>. Acessado em: 26 mar. 2008. MATEUS, G.R.; LOUREIRO, A. A. F. Introdução à Computação Móvel. In: Escola de Computação, COPPE/Sistemas, 11. 1998, Rio de Janeiro. Anais... Rio de Janeiro: NCE/UFRJ, 1998. 189 p. 114 MICROSOFT. SQL Server 2005 Mobile Edition. Disponível em: <http://www.microsoft.com/brasil/servidores/sql/editions/sqlmobile/default.mspx>. Acessado em: 30 mar. 2008. MICROSOFT. Como definir e utilizar propriedades no Visual C#. 2006. Disponível em: < http://support.microsoft.com/kb/319265/pt>. Acessado em: 10 ago. 2008. MSDN. .NET Framework. Dev Center - .NET Framework. Disponível em: <http://www.microsoft.com/brasil/msdn/framework/default.mspx>. Acessado em: 26 mar. 2008a. MSDN. Descrição: Herança da classe WebService. Visual Studio 2008. Disponível em: <http://msdn.microsoft.com/pt-br/library/44cad698.aspx >. Acessado em: 11 ago. 2008b. NETBEANS. O que é o NetBeans?. Bem vindo ao NetBeans e ao site www.netbeans.org. Disponível em: <http://www.netbeans.org/index_pt_BR.html>. Acessado em: 28 mar. 2008. PALM. About Palm, Inc.. Disponível em <http://www.palm.com/us/company/>. Acessado em: 08 out. 2008. PAULI, G. Curso de ADO.NET e BDP – Parte I: introdução ao ado.net. Disponível em: <http://www.devmedia.com.br/articles/viewcomp.asp?comp=586&hl=*Ado. net*>. Acessado em: 24 jul. 2008. PEREIRA, R. Introdução ao SuperWaba. 15 p. Disponível em: <http://www.superwaba.org/etc/wm_introducao_ao_SuperWaba.pdf>. Acessado em: 23 mar. 2008. PIMENTA, L. A. Trabalhando com Firebird no Visual Studio: provider para o Firebird. Disponível em: <http://www.devmedia.com.br/articles/viewcomp.asp? comp=1218&hl=*Firebird*%20and%20*Visual*%20and%20*Studio*>. Acessado em: 24 jul. 2008. SCHAAL, D. Porque Atualizar para o SQL Server 2005?. 2005. 13 p. Disponível em: <http://download.microsoft.com/download/6/6/5/665c5f78-326a-449c-84dac42ce489f233/Why_Upgrade.doc>. Acessado em: 30 mar. 2008. SILVA, A. Ecrã táctil vs. Operação exclusivamente com teclado. Como escolher um equipamento Windows Mobile. Portugal, out. 2007. Disponível em: <http://www.microsoft.com/portugal/windowsmobile/artigos/artwm.mspx>. Acessado em: 26 mar. 2008. SILVA, C. J. O. da. Para que serve o Web.Config?: web.config:. Disponível em: < http://www.devmedia.com.br/articles/viewcomp.asp?comp=4498&hl=*Web.config*>. 115 Acessado em: 23 jul. 2008. SOCRIA.NET. Produtos. Site de uma loja virtual com produtos diversos. Disponível em: <http://loja.socria.net/images/ PDA%20ACER%20N30.jpg>. Acessado em: 30 mar. 2008. SOUZA, M. M. SisComPM: uma proposta de comunicação entre COPOM e viaturas policiais militares utilizando comunicação wireless. 2004. 102 f. Monografia (Bacharelado em Ciência da Computação) – Departamento de Ciência da Computação, Universidade Federal de Lavras – UFLA, Lavras. TROIS, J. Palmtops para iniciantes e experts. São Paulo: Visual Books, 2003. 158 p. UNITO SISTEMAS. Desenvolvimento no molde MVC. Disponível em: <http://www.unito.com.br/6676>. Acessado em: 08 out. 2008. ZENI, C. et al. Panorama do uso de computação móvel com conexão Wireless. In: CONGRESSO BRASILEIRO DE INFORMÁTICA EM SAÚDE, 9., 2004, Ribeirão Preto. Anais... Ribeirão Preto: CBIS, 2004. p. 1. Disponível em: <http://www.sbis.org.br/cbis9/arquivos/625.pdf >. Acessado em: 20 mar. 2008. WAZLAWICK, R. S. Análise e projeto de sistemas de informação orientados a objetos. Rio de Janeiro: Elsevier, 2004. 298 p. 116 BIBLIOGRAFIA COMPLEMENTAR OGLIARI, R. Programação para PDA. Disponível em: <http:// www.mobilidadetudo.com/2006/07/programao-para-pda.html>. Acessado em: 01 out. 2007. APÊNDICES APÊNDICE A – MODELAGEM CONCEITUAL DO SISTEMA ......................118 APÊNDICE B – DIAGRAMA DE CLASSES DO SISTEMA ..............................119 APÊNDICE C – DIAGRAMA DE ESTADO DE NAVEGAÇÃO DO APLICATIVO DO MÓDULO DE COLETA DE DADOS NO PDA ...................120 APÊNDICE D – DIAGRAMA DE ESTADO DE NAVEGAÇÃO DO APLICATIVO DO MÓDULO DE COMUNICAÇÃO NO PDA .........................121 APÊNDICE E - ARTIGO .........................................................................................122 APÊNDICE A – MODELAGEM CONCEITUAL DO SISTEMA APÊNDICE B – DIAGRAMA DE CLASSES DO SISTEMA CE C – DIAGRAMA DE ESTADO DE NAVEGAÇÃO DO APLICATIVO DO MÓDULO DE COLETA DE DA APÊNDICE D – DIAGRAMA DE ESTADO DE NAVEGAÇÃO DO APLICATIVO DO MÓDULO DE COMUNICAÇÃO NO PDA APÊNDICE E - ARTIGO Sistema para coleta de dados baseado em dispositivos móveis Cleiton Fernando Remor1 e Wilson Castello Branco Neto2 1 2 Curso de Sistemas de Informação da Universidade do Planalto Catarinense (UNIPLAC) – Lages – SC – Brasil Departamento de Ciências Exatas e Tecnológicas Universidade do Planalto Catarinense (UNIPLAC) – Lages – SC – Brasil [email protected], [email protected] Abstract. This paper presents an information system for data collection based on mobile devices, this system aims to replace the current method of data collection from a company that works with fruits, that is not computerized. The system should provide for user the data collection using a mobile device, in this case a PDA, it’s also necessary do the transfer of data collected to the company's database. At the end of the work, we can conclude that the objectives have been achieved, and the system was collected the data and transmitted them successfully. Resumo. Este trabalho apresenta um sistema de informação para coleta de dados baseado em dispositivos móveis, esse sistema tem por objetivo substituir o método de coleta de dados atual de uma empresa do ramo de produção de frutas, que é feito de maneira não informatizada. O sistema deve proporcionar ao usuário a coleta de dados utilizando um dispositivo móvel, neste caso um PDA, também é necessário efetuar a transmissão dos dados coletados ao banco de dados da empresa. Ao término do trabalho pode-se concluir que os objetivos foram atingidos, tendo o sistema coletado dados e transmitido com sucesso. 1. Introdução Com o avanço da concorrência entre as empresas, aumenta cada vez mais a necessidade de obter-se dados sobre o funcionamento e trabalho de uma instituição com a maior freqüência possível. Dessa maneira pode haver um gerenciamento de determinada instituição com maior eficácia, neste contexto apresenta-se a coleta de dados. Em instituições com trabalho descentralizado há a necessidade da obtenção dos dados das atividades de cada unidade, a coleta dos dados pode ser feita de forma não informatizada, através de planilhas em papel ou de maneira informatizada, como é mostrado neste artigo. A informática tem, cada vez mais, tomado conta do universo dos negócios e as empresas sentem a necessidade de informatizarem suas atividades para não perderem clientes e mercado. Em um mundo de extrema concorrência como o atual, saem na frente as empresas com um sistema de informação baseado em computadores [Laudon e Laudon 1999]. É uma necessidade que as empresas se adaptem às novas tecnologias e à utilização de sistemas de informação, pois todas estão passando por um momento de extrema concorrência por recursos de toda ordem, como fornecedores, clientes, matéria prima e tecnologia [Laudon e Laudon 1999]. A coleta de dados não informatizada, feita basicamente com o uso de formulários em papel e utilizada há muitos anos, traz consigo algumas dificuldades e problemas, como a chance de perda de um determinado formulário, o mau preenchimento ou até mesmo a má caligrafia, o que pode ocasionar o não entendimento ou distorção das informações. Com a informatização de um sistema de coleta de dados, os problemas supracitados são superados, uma vez que não há o manuseio de formulários em papel e a entrada de dados se dá de maneira padronizada (não há a diferença entre caligrafias). Soma-se a isso a possibilidade de análise e crítica dos dados através de um sistema computacional, o que pode garantir ao usuário que os dados tenham sido coletados corretamente. Este artigo apresenta um sistema para coleta de dados baseado em dispositivos móveis, concebido para uma empresa que atua na produção de frutas em diversos municípios da Serra Catarinense, essa empresa tem um grande fluxo de atividades em diferentes setores e unidades de produção. Os dados oriundos destas atividades são coletados e centralizados em um único banco de dados na matriz. Neste artigo são abordados os temas relevantes à implantação do sistema. A seção 2 mostra uma introdução sobre dispositivos móveis, com ênfase maior no dispositivo PDA (Personal Digital Assistant) e o sistema operacional Windows Mobile. A seção 3 trata da descrição do sistema, mostrando o sistema atual utilizado pela empresa, bem como apresenta o sistema de informação proposto para a substituição deste. A seção 4 aborda a implementação do sistema, mostrando o paradigma de programação utilizado, a arquitetura e o desenvolvimento do sistema. Finalizando, a seção 5 traz as considerações finais, com algumas possibilidades de trabalhos futuros que possam enriquecer o sistema mostrado. 2. Dispositivos móveis Para que o desenvolvimento, bem como a implantação do sistema tenham uma base sólida, é preciso fazer um estudo teórico sobre dispositivos móveis, dando ênfase ao dispositivo PDA com a plataforma Windows Mobile, pois é nesse dispositivo que o sistema é implantado. Com o avanço da tecnologia e a necessidade cada vez maior de acesso contínuo a dados, temse um cenário evolutivo de comunicação entre dispositivos móveis com bancos de dados e redes fixas, bem como com outros dispositivos móveis [Mateus e Loureiro 1998]. Nesse cenário encontra-se a computação móvel, que, conforme [ISAM 2008], é “a computação onde todos os elementos do sistema têm a propriedade de mobilidade”. Pode-se, então, definir computação móvel como um paradigma de computação em que os elementos têm a propriedade de mobilidade, bem como a possibilidade de conexão com outros elementos, sejam eles fixos ou móveis. 2.1. PDA O Assistente Pessoal Digital, conhecido pela sigla em inglês PDA (Personal Digital Assistant), é um dispositivo móvel com características similares às de um computador de mesa, pois possibilita ao usuário executar várias funções que há tempos atrás não eram possíveis sem que se estivesse em frente a um microcomputador. O PDA existe desde os anos 90, quando a Apple lançou o primeiro PDA do mundo, o Newton, porém esse não foi um grande sucesso de vendas. Em 1992 nasceu a Palm Inc., adquirida em 1995 pela US Robotics, que lançou os primeiros Palmtops (PDA) que realmente foram um sucesso, são eles: o Pilot 1000 e o Pilot 5000. Em 1997 a 3Com adquiriu a US Robotics e, a partir desse ano, o mercado teve um expansão gigantesca [Trois 2003]. Na atualidade, existem dois sistemas operacionais que se destacam no mundo dos PDA: o Palm OS e o Windows Mobile. Existem ainda outros sistema operacionais, como o Linux e os sistema da Apple, porém é inegável que os mais utilizados sejam os primeiros citados [Criarweb 2008]. 2.3. Windows Mobile A empresa de Softwares Microsoft entrou no mercado dos dispositivos móveis lançando a primeira versão do seu consagrado sistema operacional de computadores de mesa Windows para esse tipo de dispositivo, denominado Windows CE, e o ofereceu aos fabricantes, fazendo com que logo surgissem PDA e Handles PC com esse sistema [Alves 2002]. O sucessor do Windows CE, denominado Windows Mobile, é um sistema operacional que conta com o Windows Office Mobile Edition¸ além de uma gama de aplicativos da empresa, como o Outlook para a leitura de e-mail. Até a versão 5.0 existem três categorias desse sistema, são elas: Windows Mobile 2003/5.0 for Pocket PC, utilizada em equipamento com características de organizadores pessoais, tais como PDA; Windows Mobile 2003/5.0 for Pocket PC Phone Edition, com as mesmas características do primeiro, acrescido de uma opção de comunicação de dados e voz sobre GSM/GPRS/3G; e, Windows Mobile 2003/5.0 for SmartPhone, sistema que se adéqua a uma utilização intensiva de telefone e com algumas características de organizador pessoal [Silva 2007]. A partir da versão 6.0, a nomenclatura do Windows Mobile deu lugar respectivamente à: Windows Mobile 6 Classic, equivalente ao Windows Mobile 2003/5.0 for Pocket PC; Windows Mobile 6 Professional, equivalente ao Windows Mobile 2003/5.0 for Pocket PC Phone Edition; e, Windos Mobile 6 Standard, equivalente ao Windows Mobile 2003/5.0 for SmartPhone [Silva 2007]. É em um PDA com o sistema operacional Windows Mobile em que os aplicativos móveis do sistema proposto devem ser implantados. 3. Descrição do sistema O sistema proposto visa substituir o método atual de coleta de dados da empresa, que é feito de forma manual. A empresa utiliza planilhas em papel em que os gerentes de cada unidade preenchem com os dados necessários e encaminham ao setor de informática para serem digitados, esse encaminhamento e digitação demandam de recursos e levam um tempo considerável para serem concluídos. Informações de suma importância ao gerenciamento da empresa, como, por exemplo, as atividades realizadas em cada unidade de negócio, a utilização de veículos, máquinas, materiais e insumos, que deveriam estar sempre atualizados no banco de dados, tem sua atualização realizada com muita demora por meio do sistema manual de coleta. Somam-se a isso, os problemas comuns a esse tipo de coleta, como por exemplo, o risco de perda de alguma planilha, o mau preenchimento ou caligrafia deselegante, que podem ocasionar distorções nas informações, além dos recursos demandados com a compra de papel e transporte das referidas planilhas. A idéia central para a informatização desse sistema é, desenvolver um aplicativo para ser utilizado em um dispositivo móvel (PDA), capaz de coletar os dados necessários, bem como transmiti-los ao banco de dados da empresa sempre que preciso. O sistema deve ser capaz de coletar dados referentes às seguintes atividades que são executadas nas unidades de negócio da empresa: abastecimento de veículos; abastecimento de máquinas; atividades realizadas; participação de funcionários, utilização de materiais, insumos veículos e máquinas em uma determinada atividade. Outra função importante a qual o sistema deve desempenhar de maneira eficiente e rápida é a transmissão desses dados ao banco de dados da empresa, para isso o meio mais eficaz e com melhor custo/benefício encontrado é o envio dos dados através da rede mundial de computadores (Internet). O envio através da Internet pode ser realizado de qualquer ponto de conexão à rede, estando ou não localizado na unidade de negócio. Além das funções de coleta e transmissão dos dados, o sistema deve proporcionar a possibilidade de se fazer cópias de segurança dos dados já coletados, dessa forma, qualquer avaria que possa ocorrer ao dispositivo não ocasiona a perda dos dados, garantindo assim a integridade destes. Com a proposta do sistema apresentado, podem-se obter resultados significativos com relação à melhoria no processo de coleta de dados da empresa, pois a utilização de um PDA padroniza a forma de coleta e, com a transmissão de dados pela rede mundial de computadores, pode-se ter o banco de dados da empresa atualizado com a temporalidade desejada pela instituição. 4. Implementação do sistema Um sistema de informação é um tipo especializado de sistema, que pode ser definido como um conjunto de componentes inter-relacionados trabalhando juntos para coletar, recuperar, processar, armazenar e distribuir a informação. Geralmente um sistema de informação computadorizado tem implementado uma grande quantidade de código e que necessita de alterações constantes conforme as necessidades dos usuários e a legislação vigente. Por exemplo, um sistema de vendas, por estar fortemente atrelado à legislação fiscal, em caso de mudanças nas leis tem que ser adequado [Leles 2008]. Os sistemas de informação podem ser classificados como elegantes e deselegantes. Um sistema elegante é aquele cuja estrutura é intrinsecamente mais fácil de compreender, que é autodocumentado e pode ser compreendido em nível macro ou em detalhes. Ele é mais fácil de modificar: quando alguma de suas características é mudada ele continua funcionando. Já um sistema deselegante é feito sem uma estrutura clara, sem a utilização de padrões e sem planejamento, um sistema deselegante não pode ser alterado sem que isso afete seu funcionamento [Wazlawick 2004]. O sistema de informação para coleta de dados baseado em dispositivos móveis começou a ser desenvolvido após o levantamento e organização de requisitos e a definição de alguns pontos importantes sobre ele, tais como: o sistema deve ser orientado a objetos; o padrão de arquitetura de software utilizado é o MVC (Model View Controller); o sistema é divido em dois módulos, um para coleta de dados e outro para comunicação; e, para o módulo de comunicação é utilizado a tecnologia de web services. 4.1 MVC (Model View Controller) O MVC, que traduzido para o português significa Modelo, Visão e Controlador, consiste em dividir uma aplicação em três camadas. A camada de modelo (Model) é a representação específica da informação operada pela aplicação. A camada controladora (Controller) é responsável por processar e responder a eventos, geralmente ações do usuário. A camada de visão (View) é responsável pela interação com o sistema, essa camada envia eventos com as ações a serem executadas para a camada controladora. Normalmente a camada de visão trabalha como uma interface para o usuário do sistema. Utilizar o MVC em aplicações orientadas a objetos traz algumas vantagens, como a facilidade de manutenção do aplicativo, uma vez que as camadas são independentes uma das outras. Sendo assim, havendo necessidade de alteração de uma camada, isso pode ser feito sem que, necessariamente, seja preciso alterar as demais. Outra vantagem é a possibilidade de reutilização das camadas, pois cada camada de modelo pode ser utilizada em quantos controladores possa servir, bem como a camada controladora pode servir para quantas camadas de visão seja necessário [Unito Sistemas 2008]. 4.2 Web service Um web service, ou serviço web, é um aplicativo armazenado em uma máquina que pode ser acessado em outra máquina, através de uma rede. A máquina em que o web service reside é comumente referida como máquina remota. O aplicativo que acessa o web service envia uma chamada para a máquina remota, que processa a chamada e envia uma resposta ao aplicativo [Deitel 2005]. Em um web service, os procedimentos são chamados pelo cliente de maneira remota, utilizando uma chamada RPC. Os métodos no web service são marcados pelo atributo WebMethod, tornando-se, dessa maneira, acessíveis para qualquer aplicativo por meio de uma chamada RPC. A maioria das requisições e respostas de web service é transmitida por SOAP, sendo assim, qualquer cliente capaz de processar mensagens SOAP pode utilizar o serviço, independente da linguagem em que o web service esteja escrito [Deitel 2005]. 4.3 Arquitetura do sistema Para o desenvolvimento do sistema proposto, é preciso avaliar como tal sistema deve trabalhar. Para coletar os dados necessários, o aplicativo do módulo de coleta deve ter em seu banco de dados os registros essenciais ao seu funcionamento, por exemplo: ao coletar dados referentes a um abastecimento de veículo é preciso que o aplicativo de coleta tenha em seu banco tal veículo cadastrado. O módulo de coleta recebe os dados já cadastrados no banco de dados da empresa através do módulo de comunicação. Com os dados recebidos, pode-se efetuar a coleta de dados nas unidades da empresa, utilizando o módulo de coleta. Por fim, os dados coletados são enviados ao banco de dados da empresa através do módulo de comunicação, esse fluxo de trabalho do sistema é mostrado na figura 1. Figura 1. Fluxo de trabalho do sistema Antes de iniciar o desenvolvimento dos módulos de comunicação e coleta, tem-se o desenvolvimento da biblioteca responsável pela estrutura de classes do sistema. A biblioteca, denominada ModelagemSistema implementa a camada de modelo do sistema e é utilizada em todos os aplicativos dos módulos que o compõem. Assim como as outras bibliotecas desenvolvidas neste trabalho, ModelagemSistema após compilada torna-se em um arquivo do tipo DLL (Dynamic Link Library) que pode ser acessado de qualquer aplicação desenvolvida para a plataforma .Net, dessa forma basta desenvolver a biblioteca uma única vez, pois o mesmo arquivo serve para todos os aplicativos do sistema. O sistema é constituído por dois módulos, um denominado módulo de coleta de dados, que é responsável por efetuar a coleta dos dados da empresa em campo, utilizando um dispositivo PDA. O outro módulo, denominado módulo de comunicação, é responsável por efetuar a comunicação e transferência de dados entre o dispositivo PDA e o banco de dados da empresa. Os aplicativos dos dois módulos do sistema têm como camada de modelo a mesma biblioteca (ModelagemSistema). No módulo de comunicação, os dois web services tem como camada de visão os arquivos ServicoRetornaDados.asmx e ServicoRecebeDados.asmx e utilizam como camada controladora a biblioteca WebServiceComunicacao.Control. O aplicativo do módulo de comunicação do PDA tem como camada de visão as interfaces presentes no arquivo executável PDA.Comunicacao.exe. Já o aplicativo do módulo de coleta tem como camada de visão as interfaces do arquivo executável PDA.Coleta.exe. Estes dois aplicativos utilizam a mesma camada controladora, disponível na biblioteca PDA.Control. Na figura 2 e quadro 1 é mostrado a estrutura de camadas do sistema. Figura 2. Estrutura de camadas do sistema Quadro 1. Estrutura de camadas do sistema Modulo Aplicativo Comunicação Comunicação Comunicação Coleta Web service Provedor Web service Receptor PDA.Comuni cacao PDA.Coleta Camada de visão ServicoRetorn aDados.asmx ServicoRecebe Dados.asmx PDA.Comunic acao.exe PDA.Coleta. exe Camada de controle WebService Comunicacao.Control WebService Comunicação.Control PDA.Control PDA.Control Camada de modelo Modelagem Sistema Modelagem Sistema Modelagem Sistema Modelagem Sistema 4.4 Módulo de coleta de dados O módulo de coleta de dados do sistema tem por objetivo possibilitar ao usuário o cadastro de informações de interesse da empresa em um PDA. Esse módulo consiste em um aplicativo para PDA, desenvolvido com a ferramenta Visual Studio e a linguagem C#. As informações coletadas ficam temporariamente armazenadas no banco de dados do PDA, até que sejam transmitidas ao banco de dados da empresa através do módulo de comunicação. Assim como os demais aplicativos do sistema, o módulo de coleta faz uso das camadas de modelo (biblioteca ModelagemSistema) e controladora (biblioteca PDA.Control). O módulo de coleta tem três funções básicas, que são apresentadas a seguir. A primeira função é designar unidade de negócio. Essa função tem por objetivo atribuir uma unidade de negócio da empresa ao PDA em uso, dessa maneira é possível efetuar filtros nos dados, evitando o uso desnecessário de recursos do dispositivo, como memória, por exemplo. Ao ser iniciado, o aplicativo verifica no banco de dados do PDA qual unidade de negócio está designada como a pertencente a este dispositivo. Após feita a verificação, o aplicativo armazena em memória o número de identificação da unidade de negócio e utiliza-o para filtrar os dados quando necessário. Caso não haja nenhuma unidade de negócio designada ao PDA, o aplicativo não permite que o usuário faça algum cadastro sem antes designar uma unidade de negócio para o PDA. A segunda função é a coleta de dados. Essa função possibilita ao usuário cadastrar os dados referentes às atividades da empresa, esses dados ficam armazenados no PDA até que sejam transmitidos ao banco de dados da empresa. Para ilustrar a coleta de dados, na figura 3 é mostrada a interface de cadastro de abastecimento de veículos. Na primeira interface são mostrados todos os registros já efetuados, bem como as opções de ação sobre esses registros e na segunda interface é mostrada a janela de alteração e inclusão de registros. Figura 3. Interfaces para cadastro de abastecimento de veículos A terceira função é a cópia de segurança. Essa função tem por objetivo criar uma cópia do arquivo de banco de dados do PDA para qualquer outro diretório (inclusive em cartões de memória), bem como restaurá-la se necessário. Em caso de qualquer tipo de problema com o PDA, tendo a cópia de segurança, essa pode ser utilizada em um outro PDA, evitando a perda de dados. 4.5 Módulo de comunicação O módulo de comunicação faz a comunicação (envio e recebimento) dos dados entre o banco de dados da empresa e o PDA. Ele é composto por dois web services, um denominado web service provedor, que provê os dados essenciais para o funcionamento do módulo de coleta do sistema, e o outro denominado web service receptor, que recebe os dados coletados no módulo de coleta e insere-os no banco de dados da empresa. Além dos dois web services¸ o módulo de comunicação ainda tem um aplicativo instalado no PDA responsável pelo envio e recebimento de dados nesse dispositivo. O web service provedor, denomidado ServicoRetornaDados tem por objetivo buscar no banco de dados da empresa os dados necessários para que o usuário possa usar o módulo de coleta no PDA. Seguindo o padrão MVC, o web service faz uso da biblioteca ModelagemSistema como camada de modelo. A camada de visão é o próprio web service, através do arquivo ServicoRetornaDados.asmx, e a camada controladora é a biblioteca WebServiceComunicacao.Control. A figura 4 mostra o resultado de uma busca desse web service utilizando o programa de navegação na internet Microsoft Internet Explorer. Figura 4. Resultado de uma busca com o web service provedor O web service receptor, denominado ServicoRecebeDados tem por objetivo receber os dados do PDA e inseri-los no banco de dados da empresa. Seguindo o padrão MVC, o web service faz uso da biblioteca ModelagemSistema como camada de modelo. A camada de visão é o próprio web service, através do arquivo ServicoRecebeDados.asmx, e a camada controladora é a biblioteca WebServiceComunicacao.Control. O módulo de comunicação ainda tem um aplicativo no PDA, esse tem o objetivo de receber do web service provedor, os dados essenciais à utilização do módulo de coleta, bem como buscar todos os dados armazenados no PDA e enviá-los ao web service receptor. O aplicativo utiliza como camada de modelo a biblioteca ModelagemSistema. A camada de visão é a interface apresentada no executável PDA.Comunicacao.exe, e a camada controladora é a biblioteca PDA.Control. A figura 5 mostra a interface do aplicativo. Figura 5. Interface do aplicativo do módulo de comunicação no PDA 5. Considerações Finais Este artigo é uma síntese do Trabalho de Conclusão de Curso com o mesmo tema, do curso de Sistemas de Informação da Universidade do Planalto Catarinense – UNIPLAC – Lages/SC. De forma concisa abordaram-se temas com relação à coleta de dados em organizações, apresentando uma alternativa à coleta manual, por meio de dispositivos móveis, nesse caso PDA, além da transferência de dados entre o dispositivo e um banco de dados central, com a utilização de web services. Ao término da implementação do sistema, verificou-se que esse funcionou da maneira esperada, pois com o sistema é possível coletar, armazenar e transferir os dados para o banco de dados da empresa em questão. Assim, pode-se concluir que todos os objetivos do trabalho de conclusão de curso forma atingidos com sucesso. Com a utilização do sistema, problemas encontrados com a coleta manual de dados (utilizando planilhas em papel) foram sanados, problemas esses que variavam desde o mau preenchimento de uma planilha ou a perda da mesma, até a demora na atualização do banco de dados e a dificuldade para o transporte das planilhas. Utilizando o sistema, todos os dados ficam armazenados em um único dispositivo PDA, que proporciona a realização de cópias de segurança para garantir a integridade dos dados. A transmissão e inserção no banco de dados se da através da rede mundial de computadores (Internet) e com a freqüência e temporalidade desejada pelo usuário. Após o termino do desenvolvimento do sistema, pôde-se verificar a possibilidade de melhorias no mesmo, o que leva a incentivar futuras pesquisas para efetuar tais melhorias. Almeja-se o desenvolvimento de um aplicativo para ser instalado na sede da empresa em que um funcionário possa analisar os dados antes que esses sejam inseridos no banco, e melhorias nos aplicativos do PDA, adaptando-os para outros tipos de dispositivos móveis, como telefones celulares por exemplo. 6. Referências Bibliográficas Alves, W. P. (2002) Palm OS e Windows CE: desenvolvimento de aplicações, Érica. São Paulo. Criarweb. (2008) “Sistemas Operacionais para PDA’s: Comparação entre os s.o’s mais usados para PDA’s: Palm OS e Pocket PC” http://www.criarweb. com/artigos/611.php. Deitel. H. M. et al. (2005) C#. Como programar.Personal Education, São Paulo . ISAM. Motivação. (2008) “Site oficial do projeto Infra-estrutura de Suporte às Aplicações Móveis – ISAM”, http://www.inf.ufrgs.br/~isam/#apresentacao. Laudon, K. P.; Laudon, J. P. (1999) Sistemas de informação: com Internet, LTC, Rio de Janeiro, 4. ed. Leles, A. D. (2008) “Sistemas de informação”, São Paulo,http://www.sypnet.com.br/ content/view/25/2/. Mateus, G. R.; Loureiro, A. A. F. (1998) “Introdução à Computação Móvel”. In: XI Escola de Computação, COPPE/Sistemas, Rio de Janeiro. Silva, A. (2007) “Ecrã táctil vs. Operação exclusivamente com teclado. Como escolher um equipamento Windows Mobile”, http://www.microsoft.com/portugal/ windowsmobile/artigos/artwm.mspx. Trois, J. (2003) Palmtops para iniciantes e experts, Visual Books, São Paulo. Unito Sistemas, “Desenvolvimento no molde MVC”, http://www.unito.com.br/6676. Wazlawick, R. S. (2004) Análise e projeto de sistemas de informação orientados a objetos, Elsevier, Rio de Janeiro. ANEXOS ANEXO A – PLANILHA DE COLETA DE ATIVIDADES................................135 ANEXO B – PLANILHA DE COLETA DE UTILIZAÇÃO DE VEÍCULO......136 ANEXO C – PLANILHA DE COLETA DE ABASTECIMENTO DE VEÍCULOS................................................................................................................137 ANEXO A – PLANILHA DE COLETA DE ATIVIDADES ANEXO C – PLANILHA DE COLETA DE ABASTECIMENTO DE VEÍCULOS