Translate

Mostrando postagens com marcador automação. Mostrar todas as postagens
Mostrando postagens com marcador automação. Mostrar todas as postagens

domingo, 10 de julho de 2011

CIAB 2011

Olá leitores,

Estive presente a mais uma edição do CIAB (Congresso Internacional de Automação Bancária), e vou contar um pouco do que ví.

O CIAB é principal evento brasileiro para o setor de automação bancária. É tão importante, que é quase obrigatório para uma empresa desse setor, participar do evento, seja com stand próprio, ou via parceria com outras empresas. Ele é promovido pela FEBRABAN (Federação Brasileira de Bancos), e ocorre todos os anos no mês de Junho no Transamérica Expo Center. Na edição de 2011 o CIAB trouxe o tema: "A tecnologia além da Web".

A escolha do tema foi acertada, das 56 bilhões de transações bancárias realizadas em 2010, 23% foram realizadas via Internet Banking. Por outro lado, Mobile Banking teve um avanço de 72%, com 2,2 milhões de contas (clientes que se cadastraram para acessar as contas via celular). Embora o canal de Internet Banking, e suas variações, ainda não seja o canal mais importante, o crescimento que tem sido experimentado sugere que logo ele desbancará o canal ATMs. Vejam o gráfico que mostra as transações bancárias por origem:



Por isso mesmo, muitas empresas levaram e mostraram soluções para esse canal. Eu ví soluções para desenvolvimento de aplicações para celular, implementação de segurança junto a esses dispositivos, e até como levar essas mesmas aplicações para outros dispositivos como a TV de sua sala, explorando bem o conceito de "Internet das Coisas".

Uma característica comum que eu notei nas soluções todas apresentadas nos stands foi: Convergência Tecnologica. Isso sempre foi desejável e necessário quando se fala em tecnologia (já que reinventar a roda nem sempre faz sentido). A novidade agora é a grande quantidade de novas tecnologias em diversas áreas, todas elas ligadas a conectividade ou interação homem-máquina e daí a convergências dessas coisas todas criou soluções conceituais que tiveram grande destaque durante o evento. Um exemplo disso foi um ATM exposto pela Itautec, onde o cliente podia controlar a aplicação sem tocar no ATM. Ou seja, utilizou a nova tecnologia de sensor de movimento introduzida pelos consoles de games (como Kinect e Playstation Move), e criaram um conceito interessante. Já a Diebold trouxe um "ATM like iPhone", onde a experiência touch screen foi elevada a um nível muito maior do que até então se via em ATMs, e o cliente podia interagir com uma aplicação muito mais interativa, em um terminal com um design realmente futurista (você não via de onde saia o dinheiro ou onde se introduzia o cartão, até o momento derradeiro em que esses dispositiviso eram acionados). Muitas dessas coisas que vemos nesse tipo de evento, são apenas conceitos mas, assim como na indústria automobilistica, apresentar conceitos é importante! Pois é a partir desses conceitos e de sua aceitação junto ao público, é que novos produtos e soluções são efetivamente criados, empacotados e vendidos.

Visitei os stands dos principais fornecedores de ATMs do país que, em geral, mostraram poucas novidades em termos de equipamentos novos. Na verdade, fora a parte de conceitos (no caso da Diebold e Itautec), ví muito do que já tinha vistos em 8 edições anteriores da CIAB das quais participei, que é uma base de ATMs com funcionalidades que pouco se alteram. O que para uns foi novidade, como equipamentos com a funcionalidade de deposito inteligente e recicladores (equipamentos onde o dinheiro depositado é utilizado na dispensa), na verdade existem há anos.

No Espaço Inovação foi onde encontrei novidades, como por exemplo, a solução da DWS Sistemas. Ela criou uma solução que permite dispensar, simultâneamente, folhas avulsas de cheque, numerário (dinheiro), e outros documentos personalizados para o cliente. Tudo isso usando a base já instalada de equipamentos, com baixíssimo impacto em ajustes de hardware e software para implantação da solução. A solução foi tão inovadora, que eles ganharam o Prêmio Espaço Inovação desta edição.

Por fim, não posso deixar de citar a iniciativa da FEBRABAN, em premiar jovens talentos. Pelo segundo ano consecutivo o evento realizou o Prêmio CIAB FREBRABAN, que neste ano premiou o trabalho intitulado 2Wish, de André Martins (meu colega de curso no IPT). A proposta do sistema concebido pelo André, é um extrato bancário associado a uma lista de desejos, o qual ajuda planejar os gastos e planejar os investimentos. Bastante interessante a idéia, e com grande potencial de se transformar em um utilitário das novas versões de Internet Banking dos principais bancos do país.

Como eu estava a trabalho, eu realmente não pude visitar cada um dos mais de 136 stands do evento este ano. Mas,o que eu ví me agradou muito.

Bem, é isso :)

domingo, 14 de novembro de 2010

Java no Auto-atendimento

Olá leitores,

Vou falar hoje um pouco sobre o uso cada vez mais crescente de aplicações front-end escritas em Java para os terminais de auto-atendimento em geral. Farei também um paralelo sobre as especificações bancárias (WS/XFS e J/XFS), e também de um recurso bastante útil chamado JNI, disponibilizado pela plataforma Java. Por fim, falarei como lidar com código nativo quando a necessidade é uma solução multi-plataforma. Este artigo, como sempre, é bem superficial pois é o que permite o espaço de um blog. Mas, para quem nunca ouviu falar dessas coisas, e nem sabia que era possível, serve de introdução. Vamos lá :)

Contextualizando
Há algum tempo atrás, dificilmente se encontrava alguma aplicação de auto-atendimento baseada em uma plataforma de desenvolvimento que não fosse o Microsoft Visual Basic ou alguma outra usando a linguagem C/C++, como o Microsoft Visual C++ e o Borland Visual C++ Builder. Isso era natural, até porque nessa época a maioria dos terminais de auto-atendimento executavam sistemas operacionais como o Windows NT, e o que se tinha disponível nas especificações bancárias era o antigo Wosa (hoje WS/XFS), dependente do sistema operacional da Microsoft.

Esse panorama mudou com o advento do Linux, e seu fenômeno de escala mundial. O fato é que o Linux passou a ser visto de uma maneira mais séria por empresas, instituições e até governos. Muitos governos no mundo todo iniciaram projetos baseados em software livre, tendo o Linux como plataforma base, com uma forte substituição de sistemas Windows por sistemas Linux. Bem, isso também ocorreu no Brasil no início do atual governo. Instituições governamentais foram orientadas pelo governo a darem preferência para a plataforma de software livre, e isso alavancou o uso do Linux em bancos como Caixa Econômica Federal, Banco do Brasil, Banrisul e outros.

Foi mais ou menos nessa mesma época que o Java já tinha ocupado uma posição de destaque entre as principais plataformas de desenvolvimento de software, e também foi mais ou menos nessa época que a especificação J/XFS foi lançada. Como o Java sempre teve a proposta de geração de soluções de software multi-plataforma, o trio J/XFS+Java+Linux, passou a ser uma ótima opção estratégica para os bancos e demais empresas, no momento de compor suas soluções de auto-atendimento.

Agora, será que realmente representa vantagem a substituição de sistemas operacionais da Microsoft, por sistemas Linux? Bom, os gerentes de negocio na Microsoft certamente devem ter inúmeros argumentos, mas o fato é que qualquer grande banco possui uma base de ATMs e outros terminais de auto-atendimento, na ordem numérica dos 20 mil terminais. Imagine, seriam 20 mil licenças para uso do Windows Vista, por exemplo. E alguns bancos brasileiros têm quase o dobro desse número em quantidade de terminais de auto-atendimento, e isso realmente representa um enorme argumento financeiro (além de outros tantos argumentos de ordem técnica). A verdade é que, embora o Linux talvez jamais consiga superar seus concorrentes junto aos computadores pessoais em geral, é certo que ele é uma ótima escolha para aplicações específicas, como servidores, celulares, consoles de games, e também, terminais de auto-atendimento.


No Brasil hoje, todos os principais bancos já tem, em execução ou em fase adiantada de desenvolvimento, sistemas front-end baseado na plataforma Java para seu canal de auto-atendimento nos terminais bancários. Caixa Econômica Federal e outros importantes bancos brasileiros, apostaram na estratégia de ter uma aplicação que possa executar em qualquer plataforma de sistema operacional, mesmo que alguns desses bancos não tenham optado ainda por substituir o sistema operacional da Microsoft. Na verdade, é a liberdade de escolha da plataforma de sistema operacional que faz a estratégia de uso do Java ser tão atraente para o contexto do auto-atendimento.

Sistemas multi-plataforma: desafios e soluções
De fato, nem tudo é azul quando tratamos de auto-atendimento. Se você pegar um case conceitual, você encontrará a solução de auto-atendimento escrita inteiramente em Java, executando em um ambiente Linux, "embarcado" em um ATM dotado de infra-estrutura J/XFS. É perfeito, pois nesse caso a aplicação de auto-atendimento codificada em Java, executará sem necessidades de alterações, mesmo se instalada em um sistema Windows no mesmo ATM (lembrando que a infra-estrutura J/XFS, deve funcionar sem problemas tanto no Windows quanto no Linux). Ocorre porém, que nem tudo funciona conforme o conceito escrito.

Nem sempre os fornecedores dispõe de infra-estrutura J/XFS para todos os dispositivos do ATM. É muito comum que algum dispositivo mais específico não tenham um driver J/XFS, ou por falta de suporte da própria especificação J/XFS, ou porque o fornecedor simplesmente não dispõe ainda de um driver para aquele dispositivo, e o que ele fornece nesses casos é apenas a sua solução de driver proprietário escrito em código nativo (normalmente está escrito em C/C++). Esses são os casos típicos dos dispositivos: Leitor Biométrico - PalmView e também das Impressoras de Cheque. No caso desses dois dispositivos o mais comum é encontrar drivers proprietários.

Além desse infortúnio aí descrito, existe também outros da mesma natureza, mas associados ao código legado dos bancos. É muito comum que os bancos tenham alguns componentes especializados para execução de tarefas bem específicas como a geração de dados cifrados e etc. E às vezes os bancos consideram muito importante manter o uso desses componentes sem portá-los para o Java. Isso pode até ser estratégico, já que nem todos os bancos desenvolvem diretamente suas aplicações de auto-atendimento, e nesse caso transferir para terceiros um componente sensível para a segurança do banco, realmente pode não ser uma alternativa.

A primeira vista, essas situações configuram um enorme problema. Afinal, o objetivo era um sistema multi-plataforma. Como se consegue isso se existem drivers e demais componentes em código nativo envolvidos? Bem, o problema é sério e não possui solução "elegante". O fato é que para casos assim, terá que se conviver realmente com um código nativo junto ao seu sistema multi-plataforma. Será necessário fazer uso do JNI para acessar de dentro do Java, aos comportamentos servidos pelos componentes nativos.

JNI: Java Native Interface
O JNI é um poderoso recurso do Java que permite que você acesse comportamentos exportados em componentes nativos, como .dll (para Windows, significa Dynamic Link Library) e .so (para Linux, significa Shared Object), diretamente a partir da aplicação escrita em Java. Esse recurso permite uma sobre-vida maior para componentes nativos sensíveis como os que eu citei anteriormente, mas exige uma atenção maior na arquitetura da solução, para que não se tenha mais problemas do que o necessário durante a manutenção do sistema.


Para acessar ao componente nativo, você precisará construir um driver JNI. Esse driver é construído em duas camadas, com uma parte definida em uma classe Java e a outra definida em uma .dll ou .so escrito em C/C++.  A parte escrita em Java, será integrada a sua aplicação, e a parte escrita em C/C++, fará acesso ao componente nativo. Segue abaixo um exemplo de driver JNI para uma impressora térmica, rodando em um sistema Windows. A imagem mostra os binários gerados:


Veja a seguir como ficaria a definição da classe CommJNI.java. Note que a classe é singleton, pois não faria sentido existir mais de uma instância dessa classe JNI  no sistema. Note também que o método print está sincronizado, para impedir que duas threads acionem o processo de impressão ao mesmo tempo (nem sempre há um controle de fila nesses dispositivos):


E a seguir, a definição do código JNIThermicPrinter.c. O header printer_CommJNI.h pode ser gerado automaticamente com a ferramenta javah presente na plataforma Java. É necessário apenas uma classe compilada, e esse header foi gerado a partir da classe CommJNI mostrada anteriormente. O código C segue abaixo:


Em termos de arquitetura é muito bom que se trate a classe JNI como um componente externo ao sistema. Uma boa estratégia é definir em arquivos .jar (Java ARchive) as classes JNI e qualquer outro recurso necessário a sua execução (exceto a parte relativa a .dll ou .so). É fácil perceber que o sistema poderá ficar amarrado a uma solução bastante específica. Assim, o melhor que é se defina uma interface genérica para acesso ao componente nativo, de modo que chamadas específicas do componente sejam mapeadas para métodos genéricos, o que permitirá mudar o componente mais tarde, sem afetar a aplicação.

Existem outros desafios envolvidos, como por exemplo, tentar criar algum mecanismo de "convivência" com o código nativo, utilizando bibliotecas cross-compiler. No entanto, esse é um assunto para um próximo post ;)

Até mais.


domingo, 12 de setembro de 2010

Guia da Automação Bancária para iniciantes

Olá leitores,

Hoje vou falar um pouco sobre onde conseguir informações a cerca da nossa área de atuação: Automação Bancária. Nesse post você encontrará referências para os principais sites dos fornecedores de ATMs, para as especificações internacionais, e também outros links para fontes importantes de informações sobre nosso setor.

O setor de automação, em especial a bancária, é um setor nobre e carente de novos talentos. Haja vista o tempo que eu levo para encontrar novos aprendizes na empresa que trabalho atualmente. Às vezes sinto um pouco de pânico pois eu raramente encontro jovens atuando nessa área, normalmente somente pessoas muito acima dos 30 anos, e muitas delas já prestes a se aposentar, ou então focadas em outros desafios da área, não diretamente ligado a parte técnica.

Ocorre que os jovens estão cada vez mais preocupados com a camada de apresentação e de aplicação...lembram do modelo OSI? Pois é, todos os dias surgem novas tecnologias para lidar com banco de dados e a interface com o usuário. São as camadas de apresentação e de aplicação! Tudo muito bonito, pois são centenas de novas maneiras de se acessar um banco de dados, de exibir as informações em um sistema stand-alone ou em uma página web e etc. Tudo perfeito e necessário, mas assim como no modelo citado acima, temos outras camadas que são igualmente importantes, e que não têm recebido a devida atenção das novas safras de jovens saídos das universidades. A culpa talvez sejam das instituições de ensino, dos professores e mestres, ou sei lá, talvez até do governo que nunca se interessou em regulamentar nossa profissão. Enfim, em função de tudo isso, e também porque graças à Deus de vez em quando eu encontro algum jovem interessado em aprender sobre essa área, segue o post:

Não conheço nenhuma apostila sobre Automação Bancária em linhas gerais (até para responder a pergunta do leitor que sugeriu este post), mas o fato é que existem alguns sites onde podemos nos informar e também aprender:

Site dos fabricantes: São as empresas fabricantes dos ATMs, terminais de consulta e demais equipamentos que servem de base para o nosso setor. É muito importante de quando em quando, dar uma olhadinha nos sites desses fabricantes, para ficar por dentro dos novos modelos de equipamentos, que indicam tendências (ex.: reciclador de cédulas, leitor biométrico), ou até mesmo para vislumbrar a balança de poder entre as empresas do setor no mundo e principalmente no Brasil. Seguem alguns dos principais:

  • Perto S/A - Fabricante nacional e uma das principais empresas do setor aqui no Brasil. Seu site permite ter um fácil vislumbre de toda a linha de produto que a empresa comercializa aqui no Brasil e também no exterior;
  • Diebold - Empresa americana que é a principal fornecedora de ATMs do Brasil, e uma das maiores do setor no mundo. Em meados de 2000 ela comprou uma fabricante nacional chamada Procomp. Utilizou por alguns anos o nome Diebold Procomp e, como é comum nesses casos, suprimiu totalmente o nome Procomp. Ainda é comum encontrarmos no mercado os equipamentos da antiga Procomp;
  • Itautec - Fabricante nacional, ligado ao grupo Itaúsa. É um dos fortes nomes do setor no Brasil, e se destaca por atuar em todas as áreas ligadas ao setor bancário, desde dos ATMs e Kiosks, passando por servidores e estações de trabalho das agências.
  • NCR - Empresa americana que também é uma das maiores do mundo. Essa empresa tem 126 anos de fundação, e uma longa história com a automação e o auto-atendimento em geral. Recentemente a empresa tomou a sábia decisão de investir mais fortemente no mercado brasileiro, já dominado pelas empresas Diebold, Perto e Itautec. Com essa decisão, foram inauguradas uma fábrica em Manaus e também foi reestruturada a seu escritório de engenharia em São Paulo.
  • Wincor-Nixdorf - Empresa Alemã que é o principal fornecedor de ATMs na europa e um dos maiores do mundo. Recentemente vem concentrando esforços e investimento aqui no Brasil, reconhecendo a importância de nosso mercado. Com isso, tem alcançado penetração em importantes bancos nacionais.


Sites das Especificações Internacionais e seus middlewares: São os middlewares criados para o setor de automação bancária e comercial, com o intuito de dirimir as diferenças entre as diversas implementações dos dispositivos utilizados na automação, facilitando assim a integração junto às aplicações de auto-atendimento, monitoração e etc. É muito importante para qualquer profissional de nossa área, mas é principalmente importante para àqueles que lidam diretamente com a área técnica, principalmente nas diversas fases do desenvolvimento de software. Nos sites abaixo é possível baixar as diversas versões de especificação e SDK desses middlewares:

  • WS/XFS: originalmente era um projeto da Microsoft com o intuito de criar um framework para os dispositivos de automação em geral. Mais tarde o projeto foi abandonado pela Microsoft e passou a ser gerido pelo Comitê Europeu de Normas técnicas, mais conhecido como CEN. Por isso é comum encontrar referências à CEN/XFS, que trata-se da mesma coisa, já que a sigla WS deriva de WorkShop. É largamente utilizado pelos bancos no Brasil e sua especificação e SDK são atualizados constantemente (ultima atualização data de 2008); Os principais fabricantes de ATMs são core members desse Workshop, e normalmente são eles os demandantes de evoluções da especificação, quando precisam incluir um novo tipo de dispositivo de automação e etc;
  • J/XFS: concebido a partir do WS/XFS e do JavaPos, seu objetivo principal foi o de criar um framework multi-plataforma, em face ao advento do Java e do Linux. Conseguiu efetivamente atender ao seu objetivo primário, mas ainda não é utilizado com tanta força aqui no Brasil. No entanto, bancos importantes como a Caixa Econômica Federal fizeram forte uso desse middleware em seus canais de serviço, incluindo auto-atendimento, loteria e etc; A maioria dos fabricantes de ATMs também são core member do grupo controlador desse middleware. Sua ultima atualização data de 2006;
Serviços de notícias: Aos invés de ir atrás da informação, você pode programar para que a informação venha até você :). É o caso do serviço de notícias da Google. Eu mesmo programei para receber diáriamente qualquer notícia na internet associada com as palavras chaves: automação, auto-atendimento, e etc.Com isso, sempre que uma novidade for publicada, você saberá e estará por dentro.

Blogs e demais canais: Eu não conheço nenhum outro blog sobre o assunto de Automação Bancária mas, olha que legal: vocês podem contar com o meu blog! Afinal, a escassez é um poço de oportunidades, e este blog contará sempre com posts fresquinhos para saciar a sede de informação e conhecimento daqueles que quiserem se aventurar pelo mundo da Automação Bancária e do auto-atendimento. 

Aproveitando o assunto, segue abaixo a lista das plataformas de desenvolvimento e sistemas operacionais, importantes para qualquer profissional que quiser trabalhar com desenvolvimento para automação bancária e auto-atendimento:
  • Windows e todos os seus sabores: é e continuará sendo o sistema mais utilizado nas casas das pessoas, nas empresas e, adivinhem, nos ATMs e demais terminais. Ele pode até estar virtualizado, mas a maior parte dos sistemas operacionais em uso nos terminais de auto-atendimento é mesmo o do sr. Bill Gates. Assim, é muito importante não engasgar nas principais características desse sistema;
  • Linux e todas as suas tribos: na área de servidor ele já é um ícone, e embora não seja a primeira escolha dos usuários domésticos, ele tem sido cada vez mais considerado na Automação Bancária. Grandes bancos nacionais embarcaram em projetos importantes junto a esta plataforma, e pelo menos um deles implantou com sucesso esse sistema na maioria de seus canais, incluindo o de auto-atendimento. Então, se você é programador ou lida diretamente com o sistema, é bom que esteja afiado também nesse sistema; 
  • C\C++: o que seria do acesso à dispositivos se não existissem linguagens flexíveis e dinâmicas, como o C e sua evolução o C++? Pois é, décadas se passaram, mas essas continuam sendo as principais escolhas para desenvolvimento quando se precisa escrever um driver para acessar qualquer que seja o dispositivo de automação, seja para a plataforma Windows ou seja para Linux. Portanto, embora em franca extinção, os programadores dessas plataformas são ainda muito necessários;
  • Java: pois bem, evoluir é preciso, e se os middlewares evoluiram para consolidar um framework multi-plataforma, então também os profissionais o precisam! Assim, saber desenvolver em Java é muito importante, mas na maioria dos casos não é necessário conhecer àquelas dúzias de siglas associadas a essa linguagem: JSF, Hibernate e sei lá mais o quê. No entanto, uma sigla é fundamental: JNI. Essa você precisa conhecer e dominar pois, java não faz tudo!
Bem, é isso. Não serve de apostila, mas acho que brinca bem no papel de guia para quem quiser conhecer mais de Automação Bancária e auto-atendimento.

Té mais!

Nota do autor: esse post foi sugerido por Luiz Neto.



quarta-feira, 4 de agosto de 2010

Fraudes em ATMs na Mídia

Um breve comentário sobre as fraudes expostas pelo profissional na reportagem abaixo:

Hacker faz caixas eletrônicos 'cuspirem' dinheiro remotamente

Primeiramente, os ATMs no Brasil seguem normas de segurança infinitamente superiores a de qualquer país no mundo. Para que tenham idéia, as chaves mecânicas utilizadas em um ATM no Brasil são geralmente do tipo multiponto para as áreas de segurança média (acesso para abastecimento de consumíveis), e tubulares com adição de fechadura eletrônica para áreas de segurança alta (onde se localiza o numerário: dinheiro, moeda, cheques e etc). Além do mais, todos os ATMs utilizados nos bancos brasileiros são dotados de placa de sensores que monitoram uma infinidade de pontos críticos no ATM: abertura da porta, violação do teclado, violação da leitora de cartões, presença de fumaça, vibração, calor e etc. E ainda mais recentemente, a segurança foi incrementada com a adição de dispositivo anti-skimmer, que consegue identificar a presença de qualquer dispositivo eletrônico no painel frontal do ATM, como chupa-cabras, robocops e etc.

Infelizmente, o que a engenharia brasileira ainda não conseguiu resolver é o maior problema de segurança em nossa área: as pessoas que lidam com ATM! É exatamente aqui que existe uma falha no sistema. Basicamente para se aplicar fraudes em ATMs, ou o bandido ataca ATMs antigos, que ainda não contam com todos esses recursos de segurança mencionados acima (são poucos agora), ou então aliciam técnicos das empresa que fazem manutenção nos caixas eletrônicos (na maioria das vezes pertencentes às próprias empresas fornecedoras desses equipamentos). Daí esse técnico que tem acesso ao ATM, pode por exemplo, deslocar os sensores de um dispositivo anti-skimmer, instalar chupa-cabras ou instalar os chamados robocops (que são essencialmente chupa-cabras). Eles podem também instalar software maliciosos no sistema que auxiliam seus comparsas na efetivação da fraude (contra isso existe o Checker distribuido no Brasil pela empresa Dynasty TG).

Té mais :)