Cartão de Crédito Eletrônico

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