Centro Universitário Positivo – UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação Zorday Teixeira Cavalcanti Cartão de Crédito Eletrônico Curitiba 2005 ii Centro Universitário Positivo – UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação Zorday Teixeira Cavalcanti Cartão de Crédito Eletrônico Monografia apresentada à disciplina de Projeto Final, como requisito à conclusão do Curso de Engenharia da Computação. Orientador: Prof. Luiz C. Albini. Curitiba 2005 iii TERMO DE APROVAÇÃO Zorday Teixeira Cavalcanti Cartão de Crédito Eletrônico Monografia aprovada como requisito à conclusão do curso de Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca examinadora: Prof. Luiz Carlos Pessoa. Albini (Orientador) Prof. Adriana Cursino Thomé Prof. Marcelo Mikosz Gonçalves Curitiba, 12 de dezembro de 2005 iv AGRADECIMENTOS Agradeço a Deus por ter me dado tantas oportunidades, e ter iluminado meu caminho em todos os momentos de minha vida. Agradeço aos meus pais, Vânia e Elias, e avó, Vanda, pelos conselhos e ajudas prestados em momentos exatos, que me ajudaram a crescer e vencer na vida. Agradeço a minha irmã Suemar e meus amigos, Deise, Mei, Roberto, Rogério, Fabio, Grecco, etc., por sempre acreditarem e apoiarem minhas tarefas, mesmo quando eu mesmo já havia desacreditado. Agradeço minha namorada Beatriz pela compreensão e apoio no desenvolvimento deste projeto, mesmo sendo necessárias tantas privações e várias noites inteiras de trabalho. SUMÁRIO 1 - INTRODUÇÃO ................................................................................................................. 11 1.1 - MOTIVAÇÃO............................................................................................................. 12 1.2 - DEFINIÇÃO DO TRABALHO.................................................................................. 13 1.3 - CONTEXTUALIZAÇÃO NOS DIAS ATUAIS ........................................................ 14 1.4 - DESCRIÇÃO DAS PRINCIPAIS FUNCIONALIDADES....................................... 14 2 - FUNDAMENTAÇÃO TEÓRICA ..................................................................................... 17 2.1 - TEORIA DO SOFTWARE........................................................................................ 17 2.1.1 – LINGUAGEM C................................................................................................. 17 2.1.2 – LINGUAGEM VISUAL BASIC......................................................................... 18 2.1.3 – MYSQL............................................................................................................... 18 2.1.4 - CRIPTOGRAFIA................................................................................................ 22 2.2 - TEORIA DO HARDWARE ....................................................................................... 23 2.2.1 – COMPUTADORES DE MÃO........................................................................... 23 2.2.2 – MICROPROCESSADOR RABBIT.................................................................. 24 2.2.3 – IRDA................................................................................................................... 25 2.2.4 – ETHERNET........................................................................................................ 25 2.2.5 – DISPLAY LCD................................................................................................... 26 2.2.6 – TECLADO.......................................................................................................... 26 2.2.7 – COMUNICAÇÃO SERIAL ............................................................................... 27 3 - ESPECIFICAÇÃO............................................................................................................ 28 3.1 - COMPUTADOR DE MÃO: ...................................................................................... 28 3.2 - SISTEMA AUXILIAR:............................................................................................... 30 3.3 - COMPUTADOR: ....................................................................................................... 33 4 - PROJETO......................................................................................................................... 35 4.1 – REQUISITOS MÍNIMOS PARA O FUNCIONAMENTO DO PROJETO ............ 35 4.2 – REQUISITOS DESEJADOS PARA O FUNCIONAMENTO DO PROJETO ..... 35 4.3 - HARDWARE ............................................................................................................. 36 4.4 - SOFTWARE .............................................................................................................. 37 4.4.1 - COMPUTADOR DE MÃO................................................................................. 38 4.4.2 - SISTEMA AUXILIAR......................................................................................... 42 4.4.3 - COMPUTADOR ................................................................................................. 45 5 - TESTES DE VALIDAÇÃO DO PROJETO.................................................................... 52 6 – RESULTADOS ................................................................................................................ 53 6.1 – COMPUTADOR DE MÃO........................................................................................... 53 6.2 – SISTEMA AUXILIAR................................................................................................... 56 6.3 – COMPUTADOR ........................................................................................................... 60 7 - CONCLUSÕES ................................................................................................................ 61 8 - CRONOGRAMA DE DESENVOLVIMENTO ................................................................ 62 9 - ESTUDO DE VIABILIDADE TÉCNICO-ECONÔMICA................................................ 63 10 – APÊNDICE .................................................................................................................... 64 11 - REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................... 67 6 LISTA DE FIGURAS Figura 1 - Diagrama de Bloco Geral do Sistema................................................................ 14 Figura 2 - Diagrama de Blocos do Módulo do Computador de Mão ................................ 30 Figura 3 - Diagrama de Blocos do Sistema Auxiliar........................................................... 33 Figura 4 - Diagrama de Blocos do Computador ................................................................. 34 Figura 5 - Esquemático de interligação Rabbit/teclado e display LCD ............................ 37 Figura 6 - Legenda do DFD .................................................................................................. 38 Figura 7 - Interface para cadastro de cartões..................................................................... 39 Figura 8 - Interface para edição e eliminação de cadastro ............................................... 39 Figura 9 - Interface principal para escolha de cartão para pagamento............................ 40 Figura 10 - DFD nível 0 do computador de mão ................................................................ 41 Figura 11 - DFD nível 1 do computador de mão ................................................................ 41 Figura 12 - Repositório de dados de cartões no computador de mão ............................. 42 Figura 13 - DFD nível 0 do sistema auxiliar........................................................................ 44 Figura 14 - DFD nível 1 do sistema auxiliar........................................................................ 44 Figura 15 - Interface para cadastro de clientes .................................................................. 46 Figura 16 - Interface para cadastro cartões dos clientes................................................... 46 Figura 17 - Interface para consulta de faturas dos cartões............................................... 47 Figura 18 - Interface para cadastro de estabelecimentos ................................................. 47 Figura 19 - Interface para consulta de pagamentos dos estabelecimentos .................... 48 Figura 20 - Interface para consulta de operações realizadas ........................................... 48 Figura 21 - DFD nível 0 do computador .............................................................................. 50 Figura 22 - DFD nível 1 do computador .............................................................................. 50 Figura 23 - Modelo relacional do banco de dados do computador .................................. 51 Figura 24 - Visão geral do sistema montado ...................................................................... 53 Figura 25 - Interface principal do computador de mão ...................................................... 54 Figura 26 - Interface de cadastro de cartões do computador de mão ............................. 55 Figura 27 - Interface para edição e eliminação de registros do computador de mão..... 55 Figura 28 - Visão geral do sistema auxiliar ......................................................................... 57 Figura 29 - Protótipo do sistema auxiliar............................................................................. 57 Figura 30 - Vista frontal do protótipo ................................................................................... 58 Figura 31 - Vista traseira do protótipo ................................................................................. 58 Figura 32 - Comprovante de compra ainda na miniimpressora........................................ 59 Figura 33 - Comprovante impresso de pagamento............................................................ 59 Figura 34 - Interface de histórico de operações ................................................................. 60 7 LISTA DE TABELAS Tabela 1 – Estimativa de Custos....................................................................................65 8 LISTA DE SIGLAS OS – Operational System; LCD – Liquid Crystal Display; ANSI – American National Standards Institute; SQL – Linguagem Estruturada para Pesquisa; DES – Data Encryption Standard; RSA – Rivest-Shamir-Adleman; MHz – Mega Hertz; IRDA – Infrared Data Association; IRLAP – Link Access Protocol; IRLMP – Link Management Protocol; IAS – Information Access Service; DNS – Domain Name System; TCP – Transmission Control Protocol; IP – Internet Protocol; IHM – Interface Homem-Máquina; CNPJ – Cadastro Nacional de Pessoa Jurídica; CPF – Cadastro de Pessoa Física; CI – Circuito Integrado; DFD – Diagrama de Fluxo de Dados. 9 RESUMO Este projeto tem o objetivo de promover a virtualização dos cartões de crédito utilizando-se os mesmos através de computadores de mão do tipo Palm®. Esta utilização é realizada através da transferência de dados do computador de mão para um sistema auxiliar baseado no microprocessador Rabbit®, com o uso da tecnologia do conexão infravermelha. O projeto simula a utilização real do sistema de compras através do uso de cartões de crédito, inclusive tendo um servidor dedicado de dados para registro de todas as informações necessárias. O benefício trazido por este projeto é para os usuários de sistemas Palm®, pois este tipo de pessoas está interessada em ter o maior número de funcionalidades ao seu dispor, tendo que carregar para isto, a menor quantidade de objetos possíveis. Portanto, com este projeto, em determinados casos, a carteira poderia ser deixada em casa, e se carregaria apenas o computador de mão. Palavras-chave: computador de mão, cartão de crédito, conexão infravermelha, microprocessador Rabbit, servidor de dados 10 ABSTRACT This project has the purpose of make credit cards become electronics, using handhelds of kind Palm® This utility is made transferring data between the Palm® and an auxiliary system based on the microprocessor Rabbit, using an infrared connection. The project simulates the real system of buys with credit cards, having until a dedicated server to keep all the needed data. The benefit of this project is for Palm® users, because this kind of people wants to have the bigger number of features, taking a less number o objects. So this project can, in some cases, give the option for the user to leave the wallet in house. Keywords: handheld, credit card, infrared connection, microprocessor Rabbit, data server 11 1 - INTRODUÇÃO Com o passar dos anos várias tecnologias foram desenvolvidas, porém, em diversos casos, estas tecnologias são desenvolvidas de forma separada e dificilmente vêem a ser integradas para que se possa obter o maior proveito das mesmas. Duas tecnologias que foram desenvolvidas e até o presente, não possuem nenhuma ligação, são os cartões de crédito e os computadores de mão. Os cartões de crédito são utilizados cada vez mais para realização de compras pela internet, pelo telefone e nos próprios estabelecimentos, proporcionando assim uma maior segurança e agilidade nas compras realizadas. E cada vez mais são desenvolvidos aparelhos e métodos que tornem a utilização desta forma de pagamento mais atrativa. Por outro lado, os computadores de mão, têm cada vez mais assumido a função de extensão do desktop, oferecendo mais recursos e com isto ganhando maiores funcionalidades do que servirem apenas como agenda eletrônica, além, claro, dos diversos programas que aparecem para este tipo de plataforma a cada dia. Temos então estas duas tecnologias que trabalham muito bem separadamente. Este trabalho busca justamente a união delas, ou seja, a utilização de cartões de crédito, eletronicamente, através de computadores de mão. Durante o decorrer da especificação deste trabalho serão apresentados fatores ligados ao conceito do trabalho, como, a motivação para realização do mesmo, a definição formal do trabalho, como o mesmo foi desenvolvido e qual o objetivo alcançado com este desenvolvimento, e neste estágio serão apresentados os três grandes módulos nos quais se divide o trabalho. Posteriormente será apresentada a contextualização deste trabalho nos dias atuais, ou seja, qual benefício pode trazer para as pessoas na atualidade e para finalizar a parte introdutória serão apresentadas as principais funcionalidades do sistema módulo a módulo. Passada esta parte introdutória serão apresentadas as teorias das tecnologias que foram utilizadas durante a implementação do trabalho, dividindo a explicação destas teorias em teorias de software e de hardware. Logo após apresentadas as teorias envolvidas no desenvolvimento do trabalho, será apresentada diretamente a especificação do trabalho em si. Apresentando módulo a módulo todos os componentes que fazem parte dos mesmos, definindo assim todas as ferramentas que foram necessárias para a concretização deste trabalho. Posteriormente, será apresentado o projeto de forma mais detalhada e com seus componentes definidos segundo métodos formais. 12 Após esta definição de tudo que esta presente, será definido como foram feitos os testes de verificação e validação do sistema, para comprovar a funcionalidade do mesmo. Baseado nos testes realizados serão apresentados os resultados obtidos no desenvolvimento do projeto e logo após, serão apresentadas as conclusões obtidas a partir destes resultados. Encerrando este documento, será apresentado o cronograma de desenvolvimento do trabalho, desde a fase de aprovação da proposta do projeto final, até a fase de entrega da documentação final do projeto. Além disso, um breve estudo de viabilidade técnico-econômica da realização do projeto, apenas levando em consideração os equipamentos essenciais para o desenvolvimento do mesmo. 1.1 - MOTIVAÇÃO Com a invenção dos cartões como forma de dinheiro (cartão de crédito, débito e etc.), muitas pessoas têm dado prioridade a esse tipo de recurso para a realização de compras. Isso ocorre devido às vantagens que a utilização dos mesmos proporciona, como agilidade e segurança. Antigamente dispúnhamos apenas de recursos como dinheiro e cheque. Isto fazia com que as pessoas andassem com grandes quantias de dinheiro ou talões de cheques no bolso, proporcionando assim, certa falta de segurança, pois estes meios significava grandes atrativos para ladrões e pessoas mal intencionadas. Por outro lado, para os comerciantes, aceitar pagamentos em cheque significava um outro perigo, pois os mesmos não tinham, e não tem até hoje, a garantia de pagamento. Sem contar que o tempo gasto com o preenchimento de cheques, dependendo do tipo de estabelecimento, causa um aborrecimento muito grande aos outros clientes. Já com o dinheiro plástico, esses problemas não acontecem. Pois se carrega apenas o cartão e, no caso do cartão de débito, ele é protegido por senha e o crédito/débito do valor da compra ocorre no ato da realização da mesma. Liberando o cliente da obrigação de andar com o dinheiro para realização da compra, e garantindo o recebimento ao estabelecimento. Com o cartão de crédito, o crédito/débito não ocorre no ato da compra, mas a garantia do pagamento também é certa. Para a pessoa o valor fica vinculado a sua próxima fatura e para o comerciante o recebimento deste 13 valor é garantido pela administradora do cartão na data de contrato. Portanto o cliente ganha um “prazo” para pagar a dívida e o comerciante têm a garantia de recebimento. Outra tecnologia que ganhou grande mercado nos últimos anos foi o computador de mão. Que trás grande número de funcionalidades, como entretenimento e extensão de desktops. Porém estes dispositivos foram criados com o intuito de diminuírem o volume dos objetos carregados por seus portadores e isto, atualmente, não é possível, pois as pessoas necessitam de suas carteiras para realizarem suas compras. Portanto o projeto visa à busca deste conceito dos computadores de mão, possibilitando assim a utilização dos mesmos para a realização de compras, através da virtualização de seus cartões. 1.2 - DEFINIÇÃO DO TRABALHO O sistema proporciona a virtualização do cartão do crédito através de computadores de mão do tipo Palm®. Portanto os usuários deste tipo de sistema poderão utilizar o próprio computador de mão para realizar compras através de seus cartões de crédito. O sistema será composto de três grandes módulos, são eles: • Computador de mão: Para este módulo foi desenvolvido um software, o qual servirá para toda a interação do usuário final. Nele os usuários devem cadastrar seus cartões de crédito e poderão utilizá-los posteriormente na realização de compras. Para este trabalho foi utilizado um computador de mão do tipo Palm®; • Sistema auxiliar: O sistema auxiliar serve para realizar a validação do trabalho. Este faz a simulação das máquinas de compra via cartão existente nos estabelecimentos, onde são validadas e realizadas as compras efetivas. Este sistema auxiliar conta ainda com certos dispositivos que as máquinas atuais não possuem. O desenvolvimento foi realizado em hardware, baseado no microprocessador Rabbit® com seu kit de desenvolvimento, e faz conexão, tanto com o computador de mão quanto com o computador; 14 • Computador: Existe um computador que serve para fazer a simulação do servidor de dados da operadora de cartão de crédito, onde o sistema auxiliar consulta a veracidade dos dados recebidos. Através do diagrama de blocos da Figura 1, obtem-se uma visão de como é o funcionamento do trabalho como um todo. Computador de mão Computador para validação dos dados Kit do Rabbit RCM3000/RCM3100 Comunicação Infravermelha Comunicação Ethernet Figura 1 - Diagrama de Bloco Geral do Sistema 1.3 - CONTEXTUALIZAÇÃO NOS DIAS ATUAIS Através da utilização do sistema, os portadores de computadores de mão podem optar pela eliminação da carga de suas carteiras, utilizando o mesmo para realização de suas compras. Pode-se, portanto crer numa grande aceitação do sistema entre o público alvo. Pois este público geralmente procura o maior número de utilidades em seus computadores de mão, e este sistema poderá proporcionar a eliminação de um elemento a mais que é carregado pelo usuário, já que a própria Palm® têm quase o tamanho de uma carteira. 1.4 - DESCRIÇÃO DAS PRINCIPAIS FUNCIONALIDADES Para que serve cada bloco que compõe o trabalho? Quais os componentes destes blocos? Estas são, basicamente, as perguntas respondidas neste tópico. 15 Computador de Mão: Tem a função de realizar as compras utilizando-se dos dados dos cartões de crédito do usuário cadastrados no software que roda no mesmo. O usuário é o responsável por cadastrar os dados de seus cartões, para posteriormente poder utilizálos em compras. Foi desenvolvido um software que roda no sistema operacional PalmOS®, e faz acesso aos recursos disponíveis na plataforma. Como por exemplo, o recurso de conexão infravermelho disponível neste tipo de computadores, ao menos na maioria dos modelos. Sistema Auxiliar: O sistema auxiliar é o responsável pela conexão direta via infravermelho com o computador de mão, recendo através desta os dados do cartão de crédito do cliente. Após recebidos os dados, uma conexão do tipo ethernet deverá ser estabelecida com o computador. Nesta conexão são transmitidos os dados do cartão e do estabelecimento para serem verificados com a base de dados. Além dos dispositivos que tornam estas conexões possíveis, alguns dispositivos auxiliares devem estar presentes neste sistema, como: • display LCD; • teclado; • miniimpressora; • memória flash. Tudo isto para que o funcionamento deste sistema auxiliar possa se equiparar ao máximo com as máquinas de compras via cartões de crédito disponíveis atualmente. Antes que o sistema auxiliar possa funcionar de forma automática, os dados de cadastro do estabelecimento devem ser gravados na memória flash do sistema. Isto para que o mesmo possa ser identificado posteriormente, tanto em suas conexões, quanto em seus comprovantes emitidos. Este sistema foi desenvolvido com base no kit de desenvolvimento do processador Rabbit®, que dispõe de grande parte dos recursos necessários para desenvolvimento do trabalho, como as conexões e acesso aos recursos descritos. 16 O kit de desenvolvimento será detalhado posteriormente na especificação do sistema auxiliar. Computador: O computador tem a função de verificar a veracidade dos dados enviados pelo computador de mão para o sistema auxiliar. Similarmente ao que acontece com as compras feitas com o próprio cartão\ em terminais de compras convencionais com leitores de tarjas magnéticas. Portanto o computador tem a função do servidor de dados da operadora de cartão de crédito, porém aplicado especificamente para verificação de dados recebidos pelo sistema auxiliar. Como se pode observar, o sistema é um espelhamento do sistema real utilizado atualmente pelas operadoras de cartões de crédito, porém com parâmetros internos especificados para este trabalho. Além de obter proporções bem inferiores. Neste módulo está presente uma conexão ethernet, um software responsável pela realização de todas as operações necessárias, e um banco de dados que serve para armazenamento dos dados dos “clientes”, “estabelecimentos” e todas as operações que ocorrem no mesmo. Ou seja, através deste banco de dados, pode-se observar que comprou o quê, aonde e de quem, além de tentativas de utilização não permitidas dos cartões de crédito, como em caso de roubo. 17 2 - FUNDAMENTAÇÃO TEÓRICA Serão apresentadas agora as teorias das tecnologias que serão citadas posteriormente na especificação do trabalho em si. Deste modo a especificação ficará mais clara e limpa. 2.1 - TEORIA DO SOFTWARE 2.1.1 – LINGUAGEM C A linguagem C é uma linguagem derivada da linguagem B, criada na década de 70. Ela foi desenvolvida em sistemas operacionais UNIX, e era distribuída junto a este sistema em sua versão 5. Porém com o aparecimento, e popularidade dos microcomputadores, várias implementações da linguagem foram aparecendo, e que quase por milagre eram compatíveis entre si. Em 1983 foi criado um padrão para a linguagem para acabar com as discrepâncias, chamado de C ANSI [16]. A linguagem C é considerada de nível médio, o que não significa que ela tem menos recursos que uma linguagem de nível alto, nem que ela é menos poderosa que uma linguagem de nível baixo. Ao contrário disto, esta linguagem é considerada de nível médio por ter vários recursos dos dois grupos e com algumas vantagens. Por exemplo, um conceito que pertence as linguagens de alto nível e que está presente na linguagem C é a definição de tipos de dados. Esta linguagem tem ainda recursos que possibilitam a manipulação de bits, bytes e endereços, elementos básicos do funcionamento de computadores. O que a aproxima de uma linguagem de baixo nível [16]. A linguagem C ainda é muito portátil entre diversas plataformas, ou seja, com apenas pequenas modificações, um programa escrito em linguagem C pode rodar em um sistema diferente daquele em que foi escrito [16]. Outra característica da linguagem C é que esta linguagem é estruturada, não em blocos, pois a mesma não permite a criação de funções dentro de outras funções, como em linguagens de nível alto, mas tem a principal característica desta classificação que é a compartimentalização do código e dos dados. Ou seja, a linguagem consegue seccionar e esconder do resto do programa todas as informações 18 necessárias para se realizar uma tarefa específica. Isto é feito através do uso de subrotinas que empregam variáveis locais. Com isto, os eventos ocorridos dentro das subrotinas causam efeito apenas nelas mesmas, isolando-as de outras partes do programa, e evitando efeitos inesperados em funções separadas. Com isto os programas em linguagem C podem compartilhar facilmente seções de código, precisando-se saber apenas o que determinada função faz, e não como ela faz [16]. Graças a esta grande variedade de atributos, que esta linguagem pode ser empregada a diversos tipos de aplicações, sem deixar a desejar em nenhum aspecto. 2.1.2 – LINGUAGEM VISUAL BASIC O Visual Basic® é uma combinação de ferramentas visuais no ambiente Windows® com a combinação Basic®. Portanto os programas em Visual Basic® são compostos de dois componentes principais, o componente visual (interface) e o componente de código (o que torna possível a execução de tarefas pelo programa) [17]. 2.1.3 – MYSQL O programa MySQL® é um servidor robusto de bancos de dados SQL (Structured Query Language - Linguagem Estruturada para Pesquisas) muito rápido, multi-tarefa e multi-usuário [15]. O MySQL é um banco de dados relacional, ou seja, ele armazena dados em tabelas separadas ao invés de colocar todos os dados em um só local. Isto proporciona velocidade e flexibilidade. Já o SQL é a linguagem padrão mais utilizada para acesso a bancos de dados. É definida pelo Padrão ANSI/ISSO SQL [15]. Juntado estas funcionalidades básicas do MySQL (banco de dados relacional, rápido e que utiliza a linguagem SQL), o que dá total confiança de utilização deste sem temer perdas bancos de dados conhecidos, ao fato deste ser livre, portanto, sem acarretar custos adicionais ao projeto, sua utilização fica evidente como a melhor escolha. A seguinte lista descreve algumas características mais importantes do Programa de Banco de Dados MySQL [15]. 19 - Portabilidade • Escrito em linguagem C e C++; • Testado com uma ampla faixa de compiladores diferentes; • Funciona em diversas plataformas; • Utiliza o GNU Automake, Autoconf, e Libtool para portabilidade; • APIs para linguagem C, C++, Eiffel, Java, Perl, PHP, Python, Ruby e Tcl estão disponíveis; • Suporte total a multi-threads usando threads diretamente no kernel. Isto significa que se pode facilmente usar múltiplas CPUs, se disponível; • Fornece mecanismos de armazenamento transacional e não transacional; • Tabelas em disco (MyISAM) baseadas em árvores-B extremamente rápidas com compressão de índices; • É relativamente fácil se adicionar outro mecanismo de armazenamento. Isto é útil para adicionar uma interface SQL a um banco de dados caseiro; • Um sistema de alocação de memória muito rápido e baseado em processo (thread); • Joins muito rápidas usando uma multi-join de leitura única otimizada; • Tabelas hash em memória que são usadas como tabelas temporárias; • Funções SQL são implementadas por meio de uma biblioteca de classes altamente otimizada e com o máximo de performance. Geralmente não há nenhuma alocação de memória depois da inicialização da pesquisa; • O código do MySQL foi testado com Purify (um detector comercial de falhas de memória) e também com o Valgrind, uma ferramenta GPL; • Disponível como versão cliente/servidor ou embutida (ligada). - Tipos de Coluna • Aceita diversos tipos de campos: tipos inteiros de 1, 2, 3, 4 e 8 bytes com e sem sinal, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET e ENUM; • Registros de tamanhos fixos ou variáveis; • Comandos e Funções; • Completo suporte a operadores e funções nas partes SELECT e WHERE das consultas. Por exemplo: mysql> SELECT CONCAT(first_name, " ", last_name) -> FROM nome_tbl -> WHERE income/dependents > 10000 AND age > 30; 20 • Suporte pleno às cláusulas SQL GROUP BY e ORDER BY. Suporte para funções de agrupamento (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX() e MIN()); • Suporte para LEFT OUTER JOIN e RIGHT OUTER JOIN com as sintaxes SQL e ODBC; • Alias em tabelas e colunas são disponíveis como definidos no padrão SQL92; • DELETE, INSERT, REPLACE, e UPDATE retornam o número de linhas que foram alteradas (afetadas). É possível retornar o número de linhas com padrão coincidentes configurando um parâmetro quando estiver conectando ao servidor; • O comando específico do MySQL SHOW pode ser usado para devolver informações sobre bancos de dados, tabelas e índices. • O comando EXPLAIN pode ser usado para determinar como o otimizador resolve a consulta; • Nomes de funções não conflitem com nomes de tabelas ou colunas. Por exemplo, ABS é um nome de campo válido. A única restrição é que para uma chamada de função, espaços não são permitidos entre o nome da função e o '(' que o segue; • Você pode misturar tabelas de bancos de dados diferentes na mesma pesquisa. - Segurança • Um sistema de privilégios e senhas que é muito flexível, seguro e que permite verificação baseada em estações/máquinas. • Senhas são seguras porque todo o tráfico de senhas é criptografado quando se conecta ao servidor; • Escalabilidade e limites; • Lida com bancos de dados enormes. Usamos o Servidor MySQL com bancos de dados que contém 50.000.000 registros e sabemos de usuários que usam o Servidor MySQL com 60.000 tabelas e aproximadamente 5.000.000.000 de linhas; • São permitidos até 32 índices por tabela. Cada índice pode ser composto de 1 a 16 colunas ou partes de colunas. O tamanho máximo do índice é de 500 bytes (isto pode ser alterado na compilação do MySQL). Um índice pode usar o prefixo de campo com um tipo CHAR ou VARCHAR. 21 - Conectividade • Os clientes podem se conectar ao servidor MySQL usando sockets TCP/IP, em qualquer plataforma. No sistema Windows na família NT (NT, 2000 ou XP), os clientes podem se conectar usando named pipes. No sistema Unix, os clientes podem se conectar usando arquivos sockets; • A interface Connector/ODBC fornece ao MySQL suporte a programas clientes que usam conexão ODBC (Open-DataBase-Connectivity). Por exemplo, você pode usar o MS Access® para conectar ao seu servidor MySQL. Os clientes podem ser executados no Windows ou Unix. O fonte do Connector/ODBC está disponível. Todas as funções ODBC são suportadas, assim como muitas outras. - Localização • O servidor pode apresentar mensagem de erros aos clientes em várias línguas; • Suporte total para vários conjuntos de caracteres, que incluem ISO-8859-1 (Latin1), big5, ujis e mais. Por exemplo, os caracteres Escandinavos 'â', 'ä', 'ö' são permitidos em nomes de tabelas e colunas; • Todos os dados são armazenados no conjunto de caracteres escolhido. Todas as comparações em colunas de seqüências caso-sensitivo; • A ordenação é feita de acordo com o conjunto de caracteres escolhido (o modo sueco por padrão). É possível alterar isso quando o servidor MySQL é iniciado. Para ver um exemplo de várias ordenações avançadas, procure pelo código de ordenação Tcheca. O Servidor MySQL suporta diversos conjuntos de caracteres que podem ser especificados em tempo de compilação e execução. - Clientes e Ferramentas • O servidor MySQL foi construído com suporte para instruções SQL que verificam, otimizam e reparam tabelas. Estas instruções estão disponíveis a partir da linha de comando por meio do cliente myisamcheck. O MySQL inclui também o myisamchk, um utilitário muito rápido para realizar estas operações em tabelas MyISAM; 22 • Todos os programas MySQL podem ser chamados com as opções --help ou -? para obter ajuda online. 2.1.4 - CRIPTOGRAFIA A criptografia é um recurso utilizado para proteção de dados. Este recurso pode ser utilizado no armazenamento dos dados no computador de mão, ou na comunicação dos dados entre os módulos do trabalho. A criptografia é uma ciência complexa que estuda meios de guardar dados de forma segura, para que estes possam ser acessados e entendidos apenas pelas pessoas desejadas. E para realização desta tarefa difícil, existem diversas maneiras diferentes, porém somente duas são interessantes neste momento, visto que uma delas pode ser implementada neste trabalho. • A criptografia simétrica baseia-se na utilização da mesma chave para cifrar e decifrar a mensagem, e pode-se observar este tipo de criptografia através do algoritmo DES (Data Encryption Standard) [1] [2]. • A criptografia assimétrica utiliza chaves diferentes para cifrar e decifrar as mensagens, e pode-se observar este tipo de criptografia através do algoritmo RSA (Rivest-Shamir-Adleman) [1] [2]. A criptografia DES existe desde 1977 [1], porém apresenta uma segurança considerável até hoje. Este sistema é baseado em chaves de 64bits. Neste tipo de criptografia, é utilizado um encadeamento de permutas, onde a mensagem em determinado momento é divida em duas partes e permutada separadamente. Posteriormente estas partes são reunidas, o que causa uma grande modificação na mensagem original. Este tipo de criptografia é ideal para utilização em dados que são armazenados localmente. Entretanto para os dados que são comunicados esta criptografia não é indicada, pois seria necessário que todo bloco que necessitasse reconhecer estes dados conhecessem estas chaves e procedimentos utilizados na realização da cifragem da mensagem. A criptografia RSA consiste na utilização de chaves públicas e privadas diferentes para cifrar e decifrar as mensagens, isto ocorre por causa de toda a matemática que está envolvida por trás deste algoritmo. Como este algoritmo está baseado em regras matemáticas, claro que ele torna-se vulnerável no sentido teórico de sua aplicabilidade, porém o que o torna tão eficiente e seguro é que as chaves selecionadas são 23 extremamente grandes. Mesmo utilizando computadores de grande potência demorase um tempo proibitivo para descobri-las. Isto atende a, talvez, a mais importante e aplicável, até hoje, das regras de Kerckhoffs do século XIX definidas em seu livro La Cryptographie Militaire [1], que diz “o sistema deve ser, se não teoricamente (matematicamente) inquebrável, inquebrável na prática”, e é isto que este sistema propõe utilizando chaves deste tamanho. No trabalho os dados devem obrigatoriamente estar protegidos em apenas um estágio, no armazenamento dos dados, ou na comunicação entre dois módulos, através de técnicas de criptografia desenvolvidas ou através de ferramentas já existentes que proporcionem esta proteção. Outras formas de proteção de dados são consideradas módulos adicionais do projeto, com objetivo de maior segurança do mesmo. 2.2 - TEORIA DO HARDWARE 2.2.1 – COMPUTADORES DE MÃO Como o próprio nome já sugere, são sistemas completos, mais próximos possíveis de computadores, porém com tamanhos reduzidos, feitos para serem carregados e manuseados apenas com uma mão. Existe uma gama muito grande de programas direcionados para este tipo de sistema, deixando-os com maior número de funcionalidades, e assim, se equiparando cada vez mais com um computador de mesa. Grande parte destes sistemas utiliza arquitetura ARM[12], porém diversas outras arquitetura são encontradas, o que gera um grande número de plataformas existentes. Isto gera diversas particularidades no desenvolvimento de softwares para cada tipo de plataforma. O que justifica o porquê que foi necessário escolher um tipo específico como base para o projeto. Quase todos os computadores de mão, principalmente os mais atuais, já dispõem de dispositivo para conexão infravermelha. Neste projeto, não foi desenvolvido, em hardware, nada de novo para este tipo de sistema, apenas foram utilizadas, via software, as funcionalidades já disponíveis. 24 2.2.2 – MICROPROCESSADOR RABBIT O microprocessador Rabbit® é fabricado pela companhia Z-World®, que está no mercado desde 1983 e é pioneira na criação de controles industriais embarcados [10]. Este processador tem uma arquitetura de 8-bit, e é muito eficiente, muito completo e foi desenvolvido especificamente para aplicações embarcadas de controle, comunicações e conexões com redes ethernet. É um processador rápido com desempenho comparável ao de um processador de 16-bit. Opera com relógios de até 55.5 MHz. Oferece grade rapidez para cálculos matemáticos, lógicos e acessos de entrada/saída. Tem ainda 4 níveis de prioridade para interrupções, favorecendo assim respostas rápidas à eventos de tempo real [13]. O desenvolvimento para este processador é feito em C, o que facilita sua programação para conhecedores desta linguagem, e torna o processador muito eficiente e aplicável os projetos mais variados e complexos. E como existente na linguagem C, possibilita a utilização de alguns comandos em Assembler [13]. Este processador não necessita de memória externa. Com suas 20 linhas de endereçamento, 8 de dados, 3 de chip-enable, 2 de output-enable, e 2 de write-enable, podem ser controladas até 6 memória Flash/SRAM. Até 1MB de memória pode ser acessado diretamente pelo software de desenvolvimento Dynamic C®, e com ajustes de software este número pode chegar a 6MB [13]. Podem ser criados sistemas multi-processados, graças a existência de uma porta slave no processador, portanto o mesmo pode atuar como master ou slave, permitindo assim a implementação de tarefas dedicas para cada um dos processadores. A comunicação entre os processadores é facilitada devido ao fato de existirem linhas especificas e dedicadas a este fim [13]. As principais vantagens, ou características desde processador são [13]: • 8 portas paralelas, que totalizam 56 linhas de entrada/saída; • 6 portas seriais, que podem ser configuradas de modos assíncrono ou síncrono (SPI, SDLC ou HDLC); • 4 saídas independentes PWM, que podem ser configurados como um D/A de 10-bit capaz de controlar motores ou solenóides; • 10 relógios de 8-bit e 1 de 10-bit com 2 registradores de comparação; • Relógio de tempo real; 25 • Relógios programáveis para modos 1x, 2x, /2, /3, /4, /6 e /8. Estas são funcionalidades existentes e possíveis de implementação no processador, porém, àquelas que exigem utilização de linhas externas, fazem consumo das 56 linhas de entrada/saída disponíveis, impossibilitando demais funções [13]. 2.2.3 – IRDA Este tipo de conexão tem uma série de protocolos e especificações para utilização na comunicação padronizada com outros dispositivos. Estes padrões, físicos e lógicos, são definidos pelo IrDA Consortium [5]. Neste trabalho a conexão estabelecida será do padrão IrDA Data que serve para comunicação de dados do tipo ponto-a-ponto, de curtas distâncias e altas-velocidades. Estas distâncias podem chegar a 1 metro e as velocidades variam de 9.600 bps a 16 Mb/s. Dentro deste padrão existe uma pilha de protocolos, utilizados para fazer a comunicação efetiva de modo a ser entendida por ambas as partes. Os protocolos necessários são: • Physical layer, que especifica as características óticas para a transmissão de dados através da radiação de ondas infravermelhas; • IrLAP (Link Access Protocol), semelhante ao IP, serve para estabelecimento da conexão; • IrLMP (Link Management Protocol), que serve como o socket na comunicação TCP/IP, fazendo a distribuição de serviços e aplicativos fornecidos pelos LAP’s; • IAS (Information Access Service), que semelhante ao DNS, provém informações sobre protocolos e serviços [7]. 2.2.4 – ETHERNET A ethernet é uma tecnologia utilizada na interconexão de redes locais baseada no envio de pacotes. Ela quem define todos os aspectos relacionados as redes locais, tanto na parte física (cabeamento, sinais elétricos, etc.), quanto na parte lógica (protocolos, pacotes, etc.) [14]. 26 Este é o padrão mais utilizado em todo o mundo para implementação de redes locais. Como vários aspectos estão envolvidos na especificação completada deste padrão, a partir de aspectos físicos, e elétricos de comunicação entre meios até níveis mais altos como manipulação de pacotes e protocolos via software, e devido ao vasto conhecimento já adquirido por todos sobre este padrão, maiores especificações são desnecessárias. 2.2.5 – DISPLAY LCD Displays LCD são muito úteis como IHM’s (interface homem máquina) de saída. Atualmente, existem diversos tipos de displays LCD, gráficos, e de caracteres, que variam entre si basicamente em seu tamanho, e controlador. Displays gráficos, são aqueles formados por diversos pontos dispostos separadamente, formando assim uma grande matriz de pontos, conforme são configurados, para ficarem acessos ou apagados, estes pontos podem formar diversos desenhos ou mesmo letras. Já os displays de caracteres, são formados por diversas colunas onde podem, basicamente, ser construídas apenas letras. Apesar das diversas marcas e modelos de tipo de interface, todos seguem um mesmo padrão de funcionamento e controle. 2.2.6 – TECLADO Assim como existem os displays LCD para servirem como IHM’s de saída, os teclados servem como IHM’s de entrada. Tem uma grande utilização em diversos dispositivos e projetos, devido ao seu grande número de funcionalidades agregadas e ao pequeno espaço ocupado, e também a sua grande facilidade de utilização. Existem diversas formas de implementação de teclados. Eles podem ser construídos mapeando-se um a um os botões do mesmo, como se o mesmo fosse um grande conjunto de botoeiras funcionando separadamente, que tivessem um controlador comum. Este é um método de implementação que funciona, porém demanda que o controlador tenha um número de portas de entrada/saída igual ou maior ao número de teclas para que funcione, o que torna sua utilização impraticável. 27 Outra forma de implementação, e que foi utilizada neste projeto, é o mapeamento por linhas e colunas. Todas as linhas são ligadas a todas as colunas, de modo que cada botão do teclado pertença a apenas uma linha e uma coluna. Feito isto, em determinados intervalos de tempos, joga-se um sinal em uma coluna, e lêem-se todas as linhas a qual aquela coluna está ligada, caso encontre-se este sinal em uma linha, o botão correspondente àquela linha e coluna é o que foi pressionado, e isto é feito com todas as colunas. 2.2.7 – COMUNICAÇÃO SERIAL A comunicação serial baseia-se na troca de dados bit a bit através de um canal de comunicação que liga o receptor e o transmissor, ou um barramento de computador. Diferentemente da comunicação paralela onde a troca de dados ocorre simultaneamente pelas diversas linhas de dados do canal de transmissão [12]. Este tipo de comunicação é utilizada na maior parte das comunicações de longas e médias distâncias, devido ao menor custo e maior facilidade de implementação das mesmas [12]. Existem diversas arquiteturas de comunicações seriais, por exemplo, RS-232, RS485, USB, FireWire, etc. Cada uma tem diversas definições de aspectos físicos, lógicos e implementações. Este padrão de comunicação pode ser encontrado em diversos equipamento tanto de uso domésticos, quanto de uso industriais, portanto, também eliminando maiores explicações do mesmo. Apenas são apresentadas as diferenças básicas que tem relevância a este projeto. Portanto, existem dois tipos básicos de comunicação serial, as síncronas e as assíncronas. As síncronas fazem com que o transmissor e o receptor trabalhem com o mesmo relógio, portanto o receptor deve ter uma linha de entrada para sincronização a partir de um relógio externo vindo do transmissor. Já na conexão assíncrona, cada uma das partes trabalha com um relógio próprio, porem respeitando a taxa de transmissão, os tamanhos e padrões dos pacotes. Nestas conexões, os pacotes têm um padrão a seguir. Os casos mais comuns são 8 bits de dados sem paridade e 8 bits de dados com 1 de paridade, com 1 bit de inicio e 1 ou 2 de parada. 28 3 - ESPECIFICAÇÃO Na especificação, primeiramente é apresentada uma visão geral do sistema, posteriormente, são detalhados os blocos que compõem o sistema, especificando cada componente que foi utilizado, inclusive as ferramentas e dispositivos. 3.1 - COMPUTADOR DE MÃO: Existe um software para utilização no computador de mão, e neste software é onde ocorre toda a interação do usuário final com o sistema. O usuário realiza o cadastro das informações de seus cartões de crédito, necessárias para a realização de compras com os mesmos, como número do cartão e digito de segurança, nome presente no cartão, data de validade, bandeira, instituição financeira emitente e nome desejado para identificação do cadastrado. Posteriormente ao chegar a um estabelecimento que disponha de aparelhos com recepção infravermelha, o usuário seleciona um de seus cartões cadastrados, aponta o infravermelho do computador de mão para o receptor da máquina de processamento de compras por cartões de crédito, simulada pelo sistema auxiliar que será descrito posteriormente, e autoriza o débito do valor da compra para àquele cartão. O software dispõe ainda de uma interface para consulta, edição e eliminação dos dados cadastrados, ou seja, para administração dos dados cadastrados. Esta interface pode ser protegida por senha, para evitar que pessoas que estejam manuseando o computador de mão possam ter acesso aos dados sigilosos do software. Esta proteção por senha aos dados cadastrados, será considerada como módulo adicional ao projeto, já que isto não impede, nem atrapalha os testes de validação do sistema. Como os dados cadastrados são de extrema importância, é necessário que os mesmos sejam protegidos contra acessos de forma maliciosa. Para promover esta segurança, estes dados podem ser criptografados. Esta criptografia pode ser feita através do próprio software, com uma técnica totalmente própria do sistema baseada no DES, ou ainda através de um banco de dados próprio para este tipo de plataforma, que faça o gerenciamento dos dados. O tipo de criptografia que pode ser implementada nesta parte do projeto é a criptografia simétrica utilizada para proteger os dados que foram cadastrados localmente, conforme descrição anterior. 29 Como existem diversas partes do projeto que exigem a proteção dos dados apenas em uma delas a mesma era de obrigatória presença, sendo que outras formas de proteção de dados serão tratadas como módulos adicionais ao projeto. Posteriormente serão apresentados os métodos de proteção de dados utilizados, que ficaram restritos ao módulo do computador. Para desenvolvimento de aplicativos para a plataforma PalmOS® existem diversas ferramentas disponíveis, como CodeWarrior®, AppForge® e Palm OS Developer Suite®, entre outras. Porém a escolhida foi a segunda opção, a ferramenta AppForge®, pelos seguintes aspectos: • Programação realizada com base na linguagem Visual Basic®, porém, com recursos reduzidos da linguagem, e adaptações da mesma para a plataforma Palm®; • Pode-se desenvolver diretamente interfaces gráficas através do software, sem a necessidade de softwares adicionais, ou implementações em linhas de código para isto; • É baseada na ferramenta Microsoft Visual Studio®. Esta funciona como um plug-in desta outra ferramenta de desenvolvimento, sem necessidade de outros plug-in’s para que possa funcionar corretamente. Existem diversos ingot’s (pacotes de funções disponibilizados com a ferramenta). Portanto diversas atividades realizadas pelo sistema foram diretamente implementadas utilizando estes ingot’s, por exemplo, o acesso ao recurso de infravermelho e a utilização do mesmo para conexão direta com o sistema auxiliar. Neste caso foi feito o uso destes ingot’s para redução no tempo de desenvolvimento. Existe ainda uma tabela gerada para armazenamento dos dados deste módulo, porém, esta não pode ser considerada como método de segurança para proteção de dados, pois a mesma não necessita de senha para ser acessada. Ou seja, é uma tabela aberta. Esta tabela foi gerada inicialmente na Microsoft Access®, e posteriormente transformada em um .PDB (arquivo de banco de dados para a plataforma), através de uma ferramenta disponibilizada junto com o AppForge®. Para a realização do projeto o computador de mão Palm Zire 72s® foi o dispositivo principal de base de teste e desenvolvimento. Isto por que o mesmo dispõe de todas as funcionalidades necessárias para estes testes do sistema. Um esboço de como funciona o módulo do computador de mão está na Figura 2. 30 Software do trabalho Envio de dados para realização de pagamentos Cadastro de dados dos cartões de crédito Banco de dados da plataforma Palm Busca de dados para realização de pagamentos Conexão infravermelha Figura 2 - Diagrama de Blocos do Módulo do Computador de Mão 3.2 - SISTEMA AUXILIAR: O sistema auxiliar é utilizado para fazer a validação do projeto como um todo, pois o mesmo simula a máquina de processamento de compras através de cartões de crédito, disponíveis em estabelecimentos que aceitam compras desta natureza. Para o desenvolvimento do sistema auxiliar, foi utilizado o microprocessador Rabbit 3000® [3] [9] [10], juntamente com seu kit de desenvolvimento, onde as funções do processador já estão mapeadas de forma usual, como portas já configuradas e disponibilizadas para uso em funções seriais, e PWM. Inclusive, uma das portas seriais já está montada para utilização da função infravermelha, com o chip que realiza este tipo de conexão e o receptor/transmissor da mesma. Este sistema dispõe dos seguintes dispositivos: • Receptor de infravermelho, que serve para receber os dados enviados pelo software existente no computador de mão, e que são necessários para a validação das compras realizadas; • Memória flash, que serve para gravação de dados gerais, como os dados do estabelecimento ao qual o sistema pertence, e para o qual devem ser creditadas as compras daquele aparelho. O módulo RCM3000 utilizado tem 2 memórias flash. A primeira destinada ao armazenamento do código que será executado, e a segunda para a criação do filesystem onde são gravados os dados desejados; • Conexão ethernet, que serve para comunicação com o computador que simula o servidor de dados da operadora de cartões de crédito. Onde é 31 verificada a veracidade dos dados recebidos do computador de mão, e a partir desta verificação que as compras são ou não aprovadas; • Display de LCD, que é utilizado para exibição do estado atual do sistema e também para interações com usuário operador deste sistema; • Teclado, que serve para entrada de dados no sistema; • Miniimpressora [8], que serve para impressão do comprovante de compra, que será impresso em duas vias, como em qualquer compra feita com cartões de crédito. Onde uma via fica com o cliente e outra com o estabelecimento. O acesso a esta impressora pelo sistema auxiliar, será feito através de uma comunicação serial direta. O sistema auxiliar tem duas formas de operação, na primeira, modo normal, ele funciona totalmente independente do computador, como um sistema completamente embarcado, realizando compras de clientes. No segundo modo, manutenção, o técnico responsável pelo equipamento pode realizar a manutenção do mesmo, caso estejam sendo detectados problemas pelos operadores, ou o mesmo pode realizar a troca de dados cadastrados do estabelecimento. Neste modo a manutenção é possível, pois o sistema fica ligado diretamente ao computador de programação do mesmo, e ele retorna mensagens mais completas do que esta ocorrendo internamente ao técnico. Apenas o modo normal de operação era de implementação obrigatória, portanto, o modo manutenção é considerado módulo adicional. Para o sistema base de testes apenas o dado CNPJ do estabelecimento, esta gravado na memória flash do sistema auxiliar, já que este dado é o principal dado do estabelecimento no servidor de dados, e o que diferencia os estabelecimentos neste servidor. A operação do sistema auxiliar ocorre da seguinte maneira, quando um “cliente” deseja realizar um pagamento com seu cartão de crédito, o operador do sistema auxiliar liga o mesmo, entra com o valor da compra, e fica com o sistema parado, de uma maneira que possa receber o sinal infravermelho, do computador de mão do cliente. Assim que o cliente aponta seu computador de mão para o sistema e estabelece a conexão infravermelha, caso ocorra erro no recebimento destes dados, o sistema exibe a seguinte mensagem no display LCD “Novamente cartao cliente”. Depois de terminada esta recepção de dados, é finalizada a conexão infravermelha. Então o sistema muda a mensagem do display para “Conectando...”, e neste passo o mesmo começa a trocar informações com o computador pela conexão ethernet para validação dos dados recebidos. O sistema envia para o computador os dados 32 recebidos, e o número de cadastro do estabelecimento para o qual será feito o crédito da compra, e fica esperando a resposta do mesmo, que deve aprovar ou não a compra depois de consultar e verificar se os dados recebidos são válidos, e se a compra é permitida (se o cartão e o estabelecimento existem, se o cartão não está bloqueado, se tem limite disponível suficiente para a realização da compra, etc.). Depois de recebida a resposta do computador, o sistema deverá exibir a mensagem de finalização da compra no display. Caso esta tenha sido aprovada, será exibida a mensagem “Imprimindo...”, e impresso o comprovante de compra através da impressora do sistema. Caso a compra venha a ser reprovada, o sistema deve exibir a mensagem “Erro XXXXXXXXXXXX”, onde XXXXXXXXXXXX é o problema ocorrido, que veio a impedir a realização da compra, este erro é informado pelo computador, e apenas exibido no sistema auxiliar. No caso de aprovação da compra são impressos no comprovante dados que podem identificar e diferenciar um comprovante de outro como o CNPJ do estabelecimento, o valor, o código da operação realizada junto ao servidor de dados, o número do cartão de credito utilizado, e ainda um local para assinatura do cliente. Como se pode notar, o sistema apenas dispensará a posse real do cartão, que estará cadastrado no computador de mão, porém ainda será necessária a assinatura do cliente no comprovante, mostrando que o mesmo está ciente e de acordo com o débito realizado em seu cartão. O microprocessador Rabbit 3000® utiliza programação na linguagem C, através de sua ferramenta o Dynamic C® [3], além do suporte às funções do RCM2000. O Dynamic C® é uma ferramenta desenvolvida para programação de sistemas embarcados, e possui algumas características especiais para este tipo de desenvolvimento como debug interativo em tempo real. Outro detalhe importante é que não foram utilizados todos os dados existentes nos cadastros para a validação das compras. Este procedimento foi adotado apenas para agilizar o desenvolvimento do projeto, pois para que um maior número de dados fossem checados, as mudanças seriam mínimas. Atualmente o computador de mão envia pela conexão infravermelha apenas o número do cartão de crédito escolhido, juntamente com seu dígito de segurança. O sistema auxiliar pega estes dados e junta ao CNPJ do estabelecimento que está gravado em sua memória flash, passando este pacote pela conexão ethernet. Para que a mudança ocorresse, o computador de mão deveria enviar um maior número de dados pela conexão infravermelha, o que não seria problema, pois seu 33 cadastro interno já dispõe de mais dados do cartão. O sistema auxiliar deveria ter um maior número de dados cadastrados em sua memória flash para que estes fossem enviados para o computador, que por sua vez apenas necessitaria de um maior número de consultas ao banco de dados para validar ou não a compra. O diagrama de blocos exibido na Figura 3, mostra todos os blocos citados, além de uma breve noção de interação entre os mesmos. Kit de desenvolvimento do Rabbit Conexão infravermelha Dados a serem validados no servidor Dados fornecidos pelo computador de mão Exibição de status do sistema Gravação de dados gerais Entrada de dados no sistema auxiliar Display LCD Memória flash Conexão ethernet Impressão do comprovante de compra Teclado Impressora Figura 3 - Diagrama de Blocos do Sistema Auxiliar 3.3 - COMPUTADOR: Existe um software rodando em um computador, que serve para simular o servidor de dados da operadora de cartões de crédito. Este software fica esperando a solicitação de validação de dados do sistema auxiliar. Quando esta solicitação chega, o software pega estes dados e faz a verificação da seguinte maneira, do pacote recebido pega-se o número do cartão de crédito e outros dados recebidos, e realiza a consulta ao banco de dados local para verificar se os dados estão corretos. Caso estes estejam de acordo, o software credita o valor recebido para a “conta” cadastrada como do estabelecimento, e debita o valor da “conta” do usuário. 34 Logicamente, antes do sistema ser colocado no ar, devem ser cadastrados os dados dos clientes e dos estabelecimentos. Nas contas dos clientes devem ser cadastrados os dados que serão posteriormente consultados para realização dos débitos, além de dados adicionais, como os de qualquer cadastro de clientes. Ainda existe um campo que identificará o limite de crédito do cartão do usuário, e é deste limite que são abatidos os valores das compras do cliente, portanto o cliente é limitado a um valor máximo de gastos por fatura. No cadastro de estabelecimentos, são cadastrados dados como, o CNPJ, endereço, telefone, e etc. A distinção do estabelecimento para o qual deverá ser feito o crédito da compra será através do número do CNPJ passado durante a troca de dados do sistema auxiliar e o computador. O computador é conectado ao sistema auxiliar por uma conexão ethernet comum, ponto-a-ponto, trabalhando com o protocolo TCP/IP. O protótipo já é configurado internamente com um cabeamento CrossOver, portanto o cabo de rede utilizado para conexão do sistema auxiliar com o computador deve ser um cabo comum, com ligação igual nas duas pontas. Para o desenvolvimento do software do computador a linguagem escolhida foi novamente a linguagem C, sendo utilizada a ferramenta Borland Builder C++®, devido ao maior número de funcionalidades existentes e à maior facilidade no desenvolvimento de aplicativos. O banco de dados utilizado para armazenamento dos dados cadastrados para consultas do sistema foi o MySQL [6], que é um banco de dados relacional, tem suporte a comandos SQL e é livre. Portanto, atende todas as necessidades técnicas e sem custos adicionais ao trabalho. Na Figura 4 pode-se ter uma noção da descrição do sistema. Software do computador Banco de dados MySQL Recebimento dos dados do Rabbit Comunicação ethernet Verificação dos dados recebidos com os dados cadastrados Figura 4 - Diagrama de Blocos do Computador 35 4 - PROJETO Serão detalhados requisitos mínimos e desejados para o funcionamento do projeto. Posteriormente, serão apresentados os módulos do sistema mais detalhadamente, definindo-os segundo métodos formais. 4.1 – REQUISITOS MÍNIMOS PARA O FUNCIONAMENTO DO PROJETO Para o funcionamento inicial do sistema todos os módulos deverão encontrar-se em suas versões beta. Ou seja para: • Computador de mão: uma interface inicial onde apenas o botão de enviar informações através da conexão infravermelha deve estar presente, os dados devem ser fixos, e pré-determinados; • Sistema Auxiliar: este sistema terá sua primeira versão, apenas recebendo as informações da conexão infravermelha, juntando dados quaisquer gravados em seu código fonte e passando este adiante pela conexão ethernet; • Computador: o software deste sistema deverá poder receber os dados vindos pela conexão ethernet, fazer uma verificação básica com dados contidos em seu código fonte, e enviar uma resposta pela mesma conexão ethernet. Tendo estes elementos básicos em cada um dos módulos, pode-se considerar que o sistema tem o mínimo necessário para seu funcionamento mais básico. 4.2 – REQUISITOS DESEJADOS PARA O FUNCIONAMENTO DO PROJETO Este é o funcionamento onde os módulos já conseguem operar de forma autônoma, porém sem os módulos adicionais. O próximo nível de aperfeiçoamento do projeto já seria o modo completo, com todos os módulo implementados da forma mais completa possível, inclusive com os módulos adicionais. Ou seja para: 36 • Computador de mão: interfaces de cadastro e utilização do software, desenvolvidas e com os dados sendo gravados em uma base de dados. Cadastros podendo serem modificados e eliminados; • Sistema Auxiliar: sistema conseguindo gravar dados em memória flash, realizado as conexões infravermelha e ethernet diretamente. Recebendo a resposta do computador e podendo interpretá-la. Interações realizadas através do teclado e do display LCD e com impressão do comprovante na miniimpressora; • Computador: deverá existir um banco de dados implementado, onde serão gravados os dados, e o software realizar a consulta para validação dos dados. Deve poder receber sozinho os dados da conexão ethernet e realizar a verificação dos mesmos. Tendo estes elementos em cada um dos módulos, pode-se considerar que o sistema tem o funcionamento desejável de funcionamento para o período restrito de tempo disponível para realização do mesmo. 4.3 - HARDWARE Todo o hardware utilizado no projeto na parte do computador de mão e do computador, já está pronto, portanto não existem esquemáticos para serem apresentados. Para o sistema auxiliar, os esquemáticos dos circuitos que estão sendo manipulados do kit de desenvolvimento do Rabbit® [4] [5], fornecidos pela Rabbit Semiconductor, serão apresentados posteriormente na secção “apêndice”. Nesta secção são apresentados os esquemáticos do Port F do processador com os elementos necessários para a conexão infravermelha, a conexão ethernet, desde o processador até o conector passando pelo CI responsável pelo gerenciamento desta conexão. Já o esquemático da interligação do kit de desenvolvimento do Rabbit®, através dos Ports B e F, com o teclado e o display LCD, e o desenvolvimento do próprio teclado utilizado estão representados na Figura 5. 37 Rabbit 0..7 DISPLAY LCD 7 8 9 10 11 12 13 14 PORT F 7 6 5 4 3 2 1 0 6 5 4 3..6 D7 D6 D5 D4 D3 D2 D1 D0 GND VO VCC 1 3 10K 2 RS R/W EN 0..2 Teclado 1 2 3 74LS244 PORT B 18 16 14 12 9 7 5 3 1 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 1OE A1 A2 A3 A4 A5 A6 A7 A8 2OE 2 4 6 8 11 13 15 17 19 2,2K 4 5 6 2,2K 7 8 VCC 7 6 5 4 3 2 1 0 9 2,2K L 0 E 2,2K Figura 5 - Esquemático de interligação Rabbit/teclado e display LCD 4.4 - SOFTWARE Para os módulos do sistema auxiliar e do computador, foi utilizada a linguagem de programação C, já para o módulo do computador de mão, foi utilizada a linguagem Visual Basic®. Portanto todos os programas são estruturados. Devida a utilização deste tipo de programação serão apresentados basicamente 3 componentes para cada módulo, a interface (exceto para o sistema auxiliar, onde não existe este recuso), a lógica do programa e dos dados. A lógica dos programas serão apresentadas através de Diagramas de Fluxo de Dados (DFD). O DFD é uma técnica gráfica que descreve o fluxo de informação e transformações que são aplicadas à medida que os dados se movimentam da entrada para a saída. Ou seja a informação é modificada a partir de uma série de transformações que esta sofre ao percorrer o software [11]. A legenda deste tipo de diagrama é apresentada na Figura 6. 38 ! " # $ % $ Figura 6 - Legenda do DFD Antes do DFD propriamente dito, é apresentada uma narrativa do processamento em questão. Este ilustra o que efetivamente o processamento realiza, e dá uma visão geral do mesmo. Após esta narrativa, o DFD é apresentado em dois níveis. Primeiramente o nível 0, também conhecido com diagrama de contexto, que apresenta uma visão macro do processamento. E logo após o nível 1, onde este DFD é expandido, para apresentar uma idéia mais específica de cada parte do processamento. A lógica dos dados será representada graficamente pelo diagrama relacional do banco de dados. Apenas no módulo do computador foi implementado um banco de dados relacional, nos outros módulos, uma tabela apenas já satisfaz a necessidade de gravação de dados, haja vista que estes dados não estão interligados com outros. 4.4.1 - COMPUTADOR DE MÃO Interface: Três interfaces fazem parte deste módulo, a interface para cadastro dos cartões de crédito do cliente, onde o mesmo deve realizar o cadastro de todos os dados de seus cartões que podem ser utilizados posteriormente para a realização das compras. Estes dados são, a instituição financeira, a bandeira, a data de validade, o nome impresso no cartão, o número do cartão, o dígito de segurança do cartão, a descrição 39 do cartão (campo pelo qual o cliente distinguirá seus cartões cadastrados) e um campo observações, onde o podem ser armazenadas qualquer informação desejada, como por exemplo, o número de contato com a operadora daquele cartão. A interface para edição e eliminação de determinado cadastro, onde o usuário pode ajustar os dados de um cadastro incorreto ou apagar àqueles que não deseja mais. E a interface para utilização destes cartões para pagamento de contas, que é muito básico, intuitivo e de fácil manuseio. Nesta última, existe apenas um combo box onde o usuário seleciona o cartão que deseja utilizar, neste combo aparecem os cartões cadastrados, identificados com os nomes cadastrados no campo “Descrição” da interface de cadastro. Depois que o usuário seleciona o cartão desejado para a compra no combo, basta que o mesmo aponte a Palm® para o sistema auxiliar e pressione o botão “Utilizar - Pagar”. Estas interfaces podem ser observadas nas Figuras 7, 8 e 9 respectivamente. Figura 7 - Interface para cadastro de cartões Figura 8 - Interface para edição e eliminação de cadastro 40 Figura 9 - Interface principal para escolha de cartão para pagamento Lógica do Programa: O software cartão de crédito eletrônico necessita que o usuário cadastre os dados de seus cartões que deseja utilizar posteriormente. Quando o usuário está em determinado estabelecimento e deseja utilizar o software para pagar determinada conta, ele inicia o software, seleciona seu cartão desejado através do combo box existente na interface de pagamento e envia os dados deste cartão para o pagamento através da porta infravermelha. O software se encarrega de encaminhar os dados necessários para a realização do pagamento. Nas Figuras 10 e 11 estão representados os DFD’s de nível 0 e 1 respectivamente desde módulo do sistema. 41 Figura 10 - DFD nível 0 do computador de mão Figura 11 - DFD nível 1 do computador de mão Conforme já foi informado anteriormente, a questão da interface de senha neste módulo é considerada módulo adicional, porém já está contida nos diagramas para ser analisada. Lógica dos Dados: No computador de mão existem poucos dados cadastrados, e os mesmos não fazem ligações com outros dados, portanto, a lógica de dados deste modulo traz apenas uma tabela como representação. Esta serve como um repositório de dados 42 geral, que não sofre alterações, com a utilização do sistema, apenas por vontade própria do usuário de atualização, ou eliminação dos dados já cadastrados. A Figura 12 traz a representação desta tabela de dados, que está representada no DFD do módulo como o repositório de dados “Informações de cartões”. Figura 12 - Repositório de dados de cartões no computador de mão 4.4.2 - SISTEMA AUXILIAR Lógica do Programa: No sistema auxiliar o segundo modo de operação, que constava como módulo adicional, foi desenvolvido. Portanto, o mesmo pode entrar em funcionamento de duas formas, a primeira é a do modo de operação normal, onde o técnico responsável pela instalação do mesmo grava os dados do estabelecimento no modulo, e o coloca para rodar com os dados cadastrados. Neste modo de operação, o sistema funciona completamente de forma embarcada, recebendo dados da porta infravermelha, conectando com o servidor, recebendo dados do teclado, exibindo as mensagens no display LCD e imprimindo na miniimpressora. O outro modo de operação desenvolvido foi o modo para manutenção do sistema auxiliar. Neste modo, o técnico responsável pelo equipamento pode chegar ao estabelecimento, ligar o cabo de programação do Rabbit® e rodar o programa de manutenção do módulo. Neste programa o técnico pode trocar os dados cadastrados do estabelecimento, ou rodar em modo normal, porém acessando o módulo em tempo real e obtendo respostas mais completas sobre o que esta acontecendo com sistema, já que estas respostas são passadas para o monitor diretamente. 43 Logo após o técnico realizar sua manutenção no equipamento e ajustar um possível problema, o mesmo deve reprogramar o sistema para que este retorne ao modo de operação normal. O sistema auxiliar necessita que o técnico cadastre os dados do estabelecimento na qual ele está instalado. A operação do sistema auxiliar funciona da seguinte maneira, quando um cliente deseja realizar um pagamento, o operador deve interagir com o sistema através do display LCD conforme os dados solicitados. Portanto, ele pede para realizar uma nova compra, pressionando o botão 1, após isto lhe é solicitado o valor da operação, através da mudança da mensagem do display LCD para “Valor: 0,00”. Após a entrada do valor pelo teclado, o sistema espera receber através da porta infravermelha, os dados do cartão de crédito para realizar este pagamento. A mensagem exibida neste momento pelo display LCD é a seguinte, “Solicitar dados cartão via IrDA”. Caso ocorra algum problema durante a transmissão e os dados recebidos não estejam no formato “c1111111111111111s111”, que é o formato esperado do pacote, a mensagem do display LCD muda para “Novamente cartão cliente” e o cliente precisa novamente enviar os dados do cartão. Sobre o formato do pacote, a letra “c” que aparece no início, significa que a partir daquela letra até a letra “s”, estará o número do cartão de crédito, e os números após a letra “s” indicarão o dígito de segurança do cartão. Tendo os dados do estabelecimento (que estão na memória), do cartão e da conta a ser paga, o sistema empacota eles e envia para o servidor de dados que faz a validação desta compra. Durante esta operação o display LCD exibe a seguinte mensagem “Conectando...”. O novo pacote formado tem o seguinte formato, “dc1111111111111111s111e11111111111111”, onde a letra “d” indica que a operação é de débito para o cliente, a partir da letra “c” até a letra “e” são os mesmos dados recebidos do computador de mão, e os números localizados após a letra “e” indicam o CNPJ do estabelecimento. Caso a compra seja aceita, o sistema realiza a impressão do comprovante. Alterando a mensagem do display LCD para “Imprimindo...”. Caso a compra não seja aprovada, o sistema apenas apresenta no display LCD a mensagem “Erro XXXXXX”, onde XXXXXX indica o erro que ocorreu e impossibilitou a realização da operação. Esta mensagem vem diretamente do computador e é apenas mostrada pelo sistema auxiliar. Nas Figuras 13 e 14 estão representados os DFD’s de nível 0 e 1 do sistema auxiliar. 44 ) , -* $ & ' ( + * * & ' Figura 13 - DFD nível 0 do sistema auxiliar Figura 14 - DFD nível 1 do sistema auxiliar ' 45 4.4.3 - COMPUTADOR Interface: Para a operação deste módulo, foram desenvolvidas 6 interfaces. 3 delas são de cadastro de dados manualmente, e portanto requerem interação direta do operador. Estas interfaces de cadastro são as de cadastro de clientes, cadastro de cartões dos clientes, e cadastro de estabelecimentos. A navegação pelos registros cadastrados, a inclusão e a eliminação de registros, deve ser realizada através da barra de navegação. Outras duas interfaces são para visualização de faturas, tanto as faturas dos cartões dos clientes, quanto às faturas de pagamento para os estabelecimentos. A interface de faturas dos cartões pode ser aberta a partir da tela de visualização do cartão desejado, e a interface de faturas dos estabelecimentos, a partir da tela de visualização do estabelecimento desejado. A outra interface será para observação das operações realizadas por este módulo. Existem três filtros possíveis dentre os inúmeros registros mostrados. O primeiro filtra pelo número do cartão desejado, o segundo pelo número do cliente desejado, e o terceiro pelo número do estabelecimento desejado. Também qualquer combinação destes filtros pode ser utilizada. A Figura 15 mostra a interface de cadastro de dados do cliente, se a partir desta interface clica-se no botão “Cartões”, chega-se a interface mostrada na Figura 16. Clicando-se nesta interface no botão “Faturas”, chega-se a interface mostrada na Figura 17, onde estão as faturas daquele cartão. A Figura 18 mostra a interface de cadastro de dados dos estabelecimentos, se a partir desta interface clica-se no botão “Pagamentos”, chega-se a interface mostrada na Figura 19, que serve para visualização das faturas de pagamentos do estabelecimento selecionado. Por fim a Figura 20 mostra a interface de consulta de operações realizadas pelo módulo. 46 Figura 15 - Interface para cadastro de clientes Figura 16 - Interface para cadastro cartões dos clientes 47 Figura 17 - Interface para consulta de faturas dos cartões Figura 18 - Interface para cadastro de estabelecimentos 48 Figura 19 - Interface para consulta de pagamentos dos estabelecimentos Figura 20 - Interface para consulta de operações realizadas 49 Lógica do Programa: O software do servidor de dados necessita que um operador cadastre os dados dos clientes e estabelecimentos, para posteriormente fazer os créditos/débitos das compras. Pela conexão ethernet chega o pacote de dados (conforme formato descrito no módulo anterior) da compra para serem processados. Este processamento ocorre da seguinte maneira, primeiramente é verificado se o número do cartão recebido existe, em caso afirmativo, verifica-se se o mesmo encontra-se desbloqueado. Em seguida é verificado se o estabelecimento existe. Depois checa-se se o dígito de segurança está correto. Para finalizar, verifica-se se na fatura do cliente que está aberta, o mesmo ainda tem um valor igual ou superior ao valor da compra como limite disponível. Se todas as verificações forem positivas, a operação é tida como aprovada, é gerado um número de operação para a mesma e o valor é creditado na fatura aberta do estabelecimento e debitado na fatura aberta do cliente. O número da operação junto a uma mensagem de confirmação é enviado para o sistema auxiliar pela conexão ethernet. Caso ocorra algum erro nas verificações, o processamento é interrompido e uma mensagem de erro relacionada a etapa de onde ocorreu o erro é retornada pela conexão ethernet. Por exemplo, se na verificação do estabelecimento, o número identificador recebido não constar no banco de dados, a mensagem “Estabelecimento inexistente” é retornada para sistema auxiliar. Ainda é gerado um novo número de operação e registrado o erro ocorrido no banco de dados, juntamente com o pacote recebido. Este registro é gravado como se fosse uma operação aprovada, porém, sem estar ligado a nenhuma fatura, e com o campo “Erro” preenchido. Existe ainda um outro processamento realizado pelo software chamado de “Fechamento”, que ocorre todos os dias entre as 23:30 e 24:00 horas. Este processamento tem as funções de gerenciamento de faturas e cartões, e ocorre da seguinte maneira, primeiramente são fechadas as faturas que tem sua data de fechamento naquele dia e abertas novas faturas para estes cartões. Depois são abertas faturas para os cartões que foram desbloqueados no decorrer daquele dia, e a partir deste momento o cliente pode utilizar seu cartão. Logo após são fechadas as faturas que estavam abertas para cartões que tiveram seu bloqueio solicitado no decorrer do dia. 50 Caso o fechamento esteja ocorrendo no dia 1, todas as faturas de pagamento de estabelecimentos são fechadas com data de vencimento no dia 5. Para finalizar são abertas novas faturas de pagamentos de estabelecimentos para àqueles cadastrados no decorrer do dia, e se for dia 1, para os que acabaram de ter suas faturas fechadas. Nas Figuras 21 e 22 estão representados os DFD’s de nível 0 e 1 deste módulo do sistema. Figura 21 - DFD nível 0 do computador Figura 22 - DFD nível 1 do computador Lógica dos Dados: A Figura 23 representa o diagrama relacional do banco de dados do servidor de dados. A ponta da seta indica a tabela que pode ter apenas um registro relacionado a muitos da tabela de onde nasce a seta. Como dicionário de dados para explicação deste diagrama, temos duas tabelas de cadastro básicas, uma para os dados dos clientes e outra para os dados dos estabelecimentos. Através dos clientes podem 51 existir diversos cartões, que podem se abrir ainda em diversas faturas para cada um destes cartões. Já pelo lado dos estabelecimentos, cada um deles podem ter diversas faturas de pagamento, na tabela Pgto_Estab. Porém, apenas uma fatura pode estar aberta para cada estabelecimento e para cada cartão. Para juntar todas as operações, ligando os estabelecimentos, e os clientes nas operações realizadas pelo sistema, existe a tabela débitos_creditos, e nesta tabela são registrados todas as transações realizadas pelo sistema, inclusive as mal sucedidas. Portanto, pode-se saber quem comprou que e aonde. O campo nr_credeb, é o número da operação que será enviado junto à reposta para o sistema auxiliar. Figura 23 - Modelo relacional do banco de dados do computador 52 5 - TESTES DE VALIDAÇÃO DO PROJETO Os testes de validação do projeto foram realizados módulo a módulo durante o desenvolvimento do mesmo. Portanto, primeiramente foi testada a interface do servidor de dados para verificar se o software atendia as necessidades dos operadores. Também foi testado se o mesmo realizava as operações necessárias durante a simulação de recebimento de dados pela conexão ethernet. Este segundo teste foi realizado através de uma conexão local, porém já com uso de socket para o mesmo. Posteriormente, foi desenvolvido o elementar do sistema auxiliar para utilização do projeto, portanto foram testadas as conexões ethernet e IrDA. A conexão com o computador já pode ser validada, pois o mesmo já estava pronto, e a conexão IrDA foi testada diretamente com outro kit de desenvolvimento do Rabbit. Após o término destas funções foram desenvolvidos e testados os componentes ligados ao módulo um-a-um e refinado o funcionamento dos mesmos, pois cada um apresentou diversos problemas inesperados. Para o computador de mão o desenvolvimento foi realizado de forma parecida com o do servidor, porém, com menor complexidade. As interfaces foram desenvolvidas e testadas primeiro, e posteriormente a conexão com o sistema auxiliar foi finalizada, já que o mesmo estava pronto. Neste momento que foram descobertas as dificuldades neste tipo de conexão, pois os protocolos de conexão que já existem são proprietários e, portanto foi necessário buscar uma forma de troca de dados própria, pois um custo desta natureza inviabilizaria o projeto. Já para a comercialização do sistema, este tipo de protocolo é uma boa alternativa. Para fechamento dos testes de validação do projeto foi realizada a simulação de utilização real do mesmo, portanto todos os dados que servem como requisitos para o funcionamento foram cadastrados previamente. Quando esta tarefa estava concluída e, portanto, o sistema estava em condições de assumir sua configuração inicial para funcionamento no modo automático, foram realizadas “compras” com o computador de mão através do sistema auxiliar. Depois foi verificado, através de consultas ao banco de dados do computador, se todas as modificações necessárias haviam sido realizadas, créditos, débitos, etc. 53 6 – RESULTADOS Serão apresentados a seguir os resultados obtidos em cada um dos módulos do sistema. Na figura 24 tem-se uma visão geral de como o sistema foi montado, e portanto, está em seu estado inicial para utilização em modo normal. Figura 24 - Visão geral do sistema montado 6.1 – COMPUTADOR DE MÃO Neste módulo foi desenvolvido um software conforme especificado na seção “Especificação” deste documento, porém, sem os módulos adicionais mencionados. O armazenamento dos dados é feito através de uma tabela que foi inicialmente gerada no Microsoft Access®, e posteriormente, transformada para uma tabela que poderia ser lida na plataforma Palm®, com um conversor que está disponível juntamente com o 54 software AppForge®. Software este que foi o utilizado para o desenvolvimento deste sistema. Nas Figuras 25, 26 e 27, pode-se observar o software desenvolvido rodando na plataforma especificada, que tem o recurso infravermelho para conexão com o sistema auxiliar. Cada figura traz uma das interfaces presentes no programa, em execução real. Respectivamente, interface inicial/principal, interface para cadastro de novos registros, e interface de edição e eliminação de registros já cadastrados. Portanto, o computador de mão teve seu desenvolvimento completo, conforme especificações. Figura 25 - Interface principal do computador de mão 55 Figura 26 - Interface de cadastro de cartões do computador de mão Figura 27 - Interface para edição e eliminação de registros do computador de mão 56 6.2 – SISTEMA AUXILIAR Para o sistema auxiliar, o necessário para o teste de validação do sistema está presente. Com o adicional de um módulo, que é o segundo modo de execução do mesmo. Para futuras versões deste módulo, estão previstas as inclusões de mais dados do estabelecimento em sua memória flash, para que os comprovantes impressos pelo módulo tenham maior número de informações, e se assemelhem mais as comprovantes existentes. Portanto, neste módulo também o desenvolvimento do mesmo foi completo, e ainda com um módulo adicional. Nas Figuras 28, 29, 30 e 31 pode-se observar, respectivamente, visão geral do sistema auxiliar inclusive com a miniimpressora, protótipo do sistema auxiliar, vista frontal do protótipo, onde pode-se observar o receptor infravermelho, e vista traseira do protótipo, onde pode-se observar os conectores de energia, rede (que deve ser um cabo crossover), impressora, e um conector serial para programação e manutenção do módulo. Maiores informações sobre o cabo de programação do kit de desenvolvimento do Rabbit®, consultar a seção apêndice. Nas Figuras 32 e 33 pode-se observar a saída do sistema auxiliar, ou seja, o comprovante de impressão. A primeira com o comprovante ainda miniimpressora e a segunda somente do comprovante. 57 Figura 28 - Visão geral do sistema auxiliar Figura 29 - Protótipo do sistema auxiliar 58 Figura 30 - Vista frontal do protótipo Figura 31 - Vista traseira do protótipo 59 Figura 32 - Comprovante de compra ainda na miniimpressora Figura 33 - Comprovante impresso de pagamento 60 6.3 – COMPUTADOR Neste módulo, foi seguido todas as informações e funções necessárias para a validação dos dados e do sistema como um todo. Como pressuposto anteriormente, neste modulo que temos as implementações de segurança que eram obrigatórias para a validação do sistema. Primeiramente no armazenamento dos dados, feito pelo MySQL, que como especificado anteriormente, tem a função de guardar sigilosamente os dados internos a este. E ainda, na comunicação dos dados entre o sistema auxiliar e o computador, foi realizada a implementação com uso de socket’s de conexão. Estes elementos também garantem a segurança dos dados comunicados, pois os mesmos geram canais exclusivos de comunicação, e enquanto estes estão abertos, apenas os dois lados da conexão conseguem ouvir o que está acontecendo. Portanto, os elementos especificados como partes deste módulo foram implementados, e a segurança esta garantida em pelo menos duas partes do sistema, se não por instrumentos próprios, desenvolvidos diretamente, por instrumentos já existentes e vastamente utilizados em diversas aplicações. Na Figura 34 podemos observar a interface de exibição de operações realizadas, onde pode-se comprovar a veracidade das operações realizadas, e portanto comprovar o real funcionamento do sistema como um todo. Figura 34 - Interface de histórico de operações 61 7 - CONCLUSÕES Conforme pôde-se observar, os testes de validação do sistema foram realizados com êxito, e todos os módulos tiveram seu desenvolvimento conforme descritos na “Especificação”, portanto o funcionamento desejado do sistema foi alcançado e com superação. Portanto, a conclusão obtida com este trabalho é que a virtualização, ou seja, a idéia do Cartão de Crédito Eletrônico pode ser realizada na prática. Basta que um dispositivo de recepção de dados via conexão infravermelha seja adicionado as atuais máquinas de compras via cartão de crédito, e o software de utilização na plataforma Palm®, ou outra que tenha acesso a conexão infravermelha, seja desenvolvido porém, é necessário que uma maior segurança dos dados, tanto no armazenamento destes, quanto na passagem pela conexão infravermelha, seja implementada, através de técnicas de criptografia, e bancos de dados seguros por exemplo, ou seja, para que o sistema possa se tornar realmente comercial e utilizável, os módulos adicionais do computador de mão devem ser implementados. E este seria justamente o próximo passo do sistema, a implementação de maior segurança no sistema. Esta maior segurança deve ser priorizada no computador de mão, pois os restos dos módulos já existem e têm uma vasta história de desenvolvimento, portanto, nestes módulos as empresas de cartões de crédito já detêm o conhecimento de segurança. Além deste próximo passo que pode ser aplicado diretamente ao sistema desenvolvido neste projeto, novas versões do sistema seriam o intuito da continuação da idéia do Cartão Eletrônico. Portanto, novas plataformas deveriam ser exploradas, por exemplo, PocketPC®, e mais a frente, o sistema poderia ser baseado na linguagem Java, e implementado para celulares e outros equipamentos que suportem esta linguagem. Já no quesito conexão, o próximo passo para o sistema seria a utilização também da tecnologia Bluetooth®, que está cada vez mais presente em sistema pessoais e celulares, e tem um ótimo desempenho em transmissão de dados de curtas distâncias. 62 8 - CRONOGRAMA DE DESENVOLVIMENTO Data Atividade a ser desenvolvida 28/2/2005 Entrega das propostas de projeto para avaliação do colegiado 28/3/2005 Entrega das especificações técnicas do projeto aprovado 7/3/2005 Levantamento de ferramentas possíveis para implementações na plataforma Palm® 14/3/2005 Levantamento das especificações possibilidades de utilização do Rabbit® 21/3/2005 Levantamento das ferramentas necessárias para desenvolvimento do software que deverá rodar no computador 2/5/2005 Entrega do projeto (monografia) e do resumo/abstract do artigo para congresso 10/10/2005 Apresentação do projeto implementado e qualificação para a fase final 10/5/2005 Implementação do software para Palm® 10/7/2005 Implementação do sistema auxiliar 10/8/2005 Implementação do software do computador 10/9/2005 Junção de todos os módulos 9/10/2005 Ajustes para apresentação 24/10/2005 Segunda apresentação do projeto implementado, para os que não o fizeram no dia 10/10/05, com decréscimo de 30% da nota, bem como a qualificação para a fase final. 7/11/2005 Entrega da documentação completa em espiral para a banca examinadora, em 3 vias, contendo a monografia, manual técnico, manual do usuário e artigo científico. 21 e Defesa formal dos projetos, com apresentação oral para a banca 28/11/2005 examinadora. Manhã – dois dias com duas seções paralelas; Noite - dois dias com três seções paralelas. 12/12/2005 Entrega da documentação completa, revisada e corrigida, encadernada no padrão da biblioteca (capa dura) em duas vias, contendo a monografia, manual técnico, manual do usuário e artigo científico; Entrega do CD contendo, no formato WEB, todo o conteúdo dos manuais. 63 9 - ESTUDO DE VIABILIDADE TÉCNICO-ECONÔMICA Este breve estudo de viabilidade de custos leva em consideração apenas os componentes de maior custo que foram utilizados no desenvolvimento do projeto. Porém para a comercialização do mesmo estes custos seriam diferentes. Neste caso não foi possível a estimativa de custos, pois seria necessário um levantamento de componentes e ajustes que deveriam ser feitos em terminais de compras existentes no mercado, e infelizmente o acesso a este tipo de equipamento não é fácil. Outro detalhe importante é que o custo do computador de mão também não existe na comercialização, pois ele é do cliente que, com base no público alvo, fica obrigado a obter o seu. Portanto, para a comercialização os custos ficariam baseados em horas de trabalho e componentes necessários para adaptação dos terminais de compras atuais para que os mesmos tenham um receptor infravermelho. Porém, como este estudo tem por objetivo demonstrar os custos envolvidos com o desenvolvimento do projeto conforme o mesmo foi apresentado, a Tabela 1 mostra esta estimativa de custos. Tabela 1 – Estimativa de custos Recurso Microprocessador Quantidade Custo Unit. (R$) Custo (R$) 1 240,00 240,00 desenvolvimento 1 1.000,00 1.000,00 Palm Zire 72s® 1 899,00 899,00 660 13,00 8.580,00 Rabbit RCM 3000® Kit de Horas de trabalho TOTAL 10.719,00 64 10 – APÊNDICE Estes esquemáticos relacionados nesta secção fazem parte do manual do kit de desenvolvimento do Rabbit RCM3000® [3] [9] [10]. 65 66 67 11 - REFERÊNCIAS BIBLIOGRÁFICAS [1] CARVALHO, Daniel Balparda de. Segurança de dados com criptografia. 2 ed. Rio de Janeiro, Book Express, 2001. [2] SCHNEIER, Bruce. Applied cryptography. 2 ed. New York, John Wiley & Sons, 1996. [3] Z-WORLD. RabbitCore RCM3000 Getting Started Manual. California, 2005. [4] www.Palmsource.com [5] www.irda.org [6] www.mysql.com [7] www.lisha.ufsc.br/~guto/teaching/dos/ine5357-2002-1/work/irda/ [8] www.bematech.com.br [9] www.rabbitsemiconductor.com [10] www.zworld.com [11] PRESSMAN, Roger S. Engenharia de Software. São Paulo, Makron Books, 1995. [12] www.wikipedia.org [13] Z-WORLD. Rabbit 3000 Microprocessor. Califórnia, 2005. [14] http://pt.wikipedia.org/ [15] Manual de Referência para o Sistema de Banco de Dados MySQL para versão 5.0.4-beta. MySQL AB, 2003. 68 [16] SCHILDT, Herbert. C, Completo e Total. 2 ed. São Paulo, Makron, McGraw Hill (versão traduzida), 1990. [17] FORNARI, Miguel Rodrigues. Introdução à programação com Visual Basic. Rio Grande do Sul, Ulbra, 2001.