Ensaios


Através de contato com a Assessoria de Imprensa da Oracle Brasil, obtive entrevista exclusiva com Fernando Galdino, especialista em Soluções da Oracle do Brasil, sobre os produtos, estratégias e perspectivas da Oracle relacionados à tecnologia Java e aos principais produtos comerciais e projetos open source de ambiente de desenvolvimento integrado (IDE) e servidores de aplicação Java liderados pela Oracle.

De acordo com a entrevista, a Oracle sinaliza firme intenção em continuar mantendo o investimento e apoio aos projetos de software livre como os IDEs NetBeans e Eclipse e servidor de aplicação Java Glassfish, enquanto avança também com sua linha de produtos e soluções comerciais Java.

Nas estratégias de sinergia entre produtos, a dupla de software livres NetBeans e Glassfish caminha bem alinhada, ambos suportando em primeira mão as mais novas especificações das plataformas Java SE, EE e ME. O Glassfish é, inclusive, a Implementação de Referência (R.I.) da plataforma Java EE.

Já o IDE Oracle JDeveloper está estrategicamente alinhado para suportar e se integrar com produtos e tecnologias comerciais da Oracle e parceiros, em especial a família de produtos Fusion Middleware, o servidor WebLogic, o Oracle Application Development Framework (ADF) e o banco de dados Oracle Database Server.

Mas há estratégias da Oracle para promover alinhamento do suporte de produtos entre as linhas open source e comercial. Assim, a Oracle mantém iniciativas de suporte e integração ao WebLogic no NetBeans e no Eclipse, bem como suporte ao Glassfish no JDeveloper.

Passados mais de dois anos desde que a Oracle comprou a Sun, e com isso incorporou ao seu portfólio de soluções Java os projetos de software livre NetBeans e Glassfish anteriormente liderados pela Sun, as estratégias de continuidade e integração da Oracle vem se tornando mais claras e consistentes e, com isso, diluindo as dúvidas e incertezas da comunidade de desenvolvedores Java.

Veja a íntegra da entrevista concedida por Fernando Galdino a seguir.

1. Quais são as frentes atuais da Oracle sobre integração e aproximação entre o GlassFish e o Oracle WebLogic Server? Permanece a diretriz de ter uma Plataforma de Servidor Comum no GlassFish 4, que compartilhe conceitos e tecnologias com o WebLogic Server? Quais aspectos específicos de integração tem sido foco de atenção da Oracle?

Galdino: O Glassfish tem recebido especial atenção por parte da Oracle e a integração com outros produtos continua cada vez mais forte. Como exemplos, temos o ActiveCache, a integração com Oracle Access Manager, extensão da console de monitoramento e recursos para clusterização e alta disponibilidade.

Em relação aos esforços de integração entre Glassfish e Weblogic encontram-se a uniformização de APIs e de sua implementação; Integração com JRockit (Máquina virtual Java de alto desempenho) e Coherence (grid de dados em memória). Com isso, ambas as ferramentas (Weblogic e Glassfish) tendem a se valer de um mesmo núcleo comum. Com o Glassfish 4 pretende-se compatibilidade com Java EE 7 e melhor suporte a virtualização. Lembrando que o release final da especificação Java EE 7 deve sair em Q3 de 2012, conforme indicado em http://jcp.org/en/jsr/detail?id=342.

2. A IBM encampou o projeto de software livre do servidor de aplicação Apache Geronimo e o oferece como uma espécie de versão gratuita de entrada, Community Edition, para a família de produtos do IBM WebSphere Application Server. Qual a estratégia da Oracle na orientação de seus clientes iniciantes quanto à escolha entre GlassFish ou WebLogic Server?

Galdino: O Glassfish é o melhor servidor de aplicações open source com suporte da Oracle e é também a implementação de referência para Java EE. Possui integração com outros componentes do Oracle Fusion Middleware. Ele pode ser utilizado para aplicações mais leves ou que queiram utilizar as novas versões da especificação, que serão inicialmente disponibilizadas nesta ferramenta antes do Weblogic.

O Weblogic é um produto que oferece uma série de benefícios em termos de gestão, escalabilidade e performance. Ele é também o servidor de aplicações base para o Fusion Middleware e também para os aplicativos Fusion. Além disso, ele também é a base das soluções de hardware e software do Exalogic, que é uma solução da Oracle para atender a infraestrutura de computação em nuvem requerida pelas aplicações atuais.

3. O WebLogic Server 11g (10.3.x) é formalmente compatível com Java EE 5, mas incorpora suporte a algumas APIs da plataforma Java EE 6. Há planos definidos para quando o WebLogic Server deve ser totalmente compatível com Java EE 6, como já é o GlassFish v3?

O suporte a Java EE 6 no Weblogic encontra-se em desenvolvimento.

Em relação ao IDE de Desenvolvimento Java, com a aquisição da Sun, a Oracle também incorporou o projeto de software livre do ambiente integrado de desenvolvimento (IDE) NetBeans, que vem agregar o portfólio de ferramentas de desenvolvimento Java da Oracle, compostas basicamente do Oracle JDeveloper e do Oracle Application Development Framework (ADF).

A Oracle também tem apoiado o projeto de software livre do IDE Eclipse. Enquanto NetBeans e Eclipse têm se popularizado como plataformas abertas e extensíveis de IDE com suporte a Java, C/C++ e outras tecnologias de desenvolvimento de aplicações, o JDeveloper teve origem no motor do JBuilder, fruto de acordo com a antiga Borland e desde então vem sendo desenvolvido pela Oracle, que tem provido suporte e integração a tecnologias e produtos Oracle, como ADF, Oracle Database Server, Oracle WebLogic e Fusion Middleware.

4. Oracle JDeveloper, NetBeans e Eclipse. Quais são as estratégias, visões e planos da Oracle em relação ao suporte a estas três plataformas de desenvolvimento de aplicações?

Galdino: A Oracle continuará investindo no ambiente Eclipse por meio do Oracle Enterprise Pack for Eclipse. Trata-se de uma plataforma de desenvolvimento amplamente utilizada pelos desenvolvedores que, inclusive, teve adicionados recursos como Toplink e ADF. O foco do OEPE está em integrar ferramentas Oracle com o ambiente Eclipse, suportar a plataforma Weblogic e focar em facilidades para o desenvolvimento em ambiente Java Enterprise Edition.

O Netbeans é uma ferramenta estratégica para a incorporação e utilização das mais recentes funcionalidades adicionadas para as plataformas Java SE, EE e ME. A ferramenta continuará a ser desenvolvida e aprimorada e será a primeira a introduzir as mais recentes atualizações para a linguagem Java. É uma plataforma focada na comunidade e podemos dizer que é uma implementação de referência para ferramentas Java.

O JDeveloper é um componente fundamental para todo o conjunto de aplicativos (Oracle ou não) baseado no Fusion Middleware. Interessante que foi relembrado que o JDeveloper foi baseado no JBuilder. Desde 2001, porém, não há mais nenhum código da antiga Borland na ferramenta. E, ao longo do tempo, diversas funcionalidades foram sendo acrescentadas à ferramenta para o desenvolvimento Java. Hoje é uma ferramenta essencial para o desenvolvimento, utilizando-se das ferramentas Fusion Middleware. Isso inclui o desenvolvimento de ponta-a-ponta para projetos Webcenter e SOA e BPM com foco em um ambiente declarativo, visual e de alta produtividade.

5. Como está sendo vista e trabalhada a integração, interoperabilidade e sinergia entre Oracle JDeveloper e NetBeans? Há planos para uma plataforma base comum no futuro?

Galdino: Netbeans é um projeto open source e os planos são de que continue sendo uma ferramenta sendo desenvolvida pela comunidade e que receba as novidades da linguagem o mais rápido possível. O JDeveloper é um ambiente de alta produtividade para o ambiente Fusion Middleware como um todo.

Os principais pontos de sinergia e interoperabilidade residem nos servidores de aplicação Weblogic e Glassfish e na utilização do Coherence. Pontos esses que estão sendo tratados. Por exemplo, fazer com que os deployment descriptors do Weblogic sejam reconhecidos pelo Glassfish e vice-versa. Hoje, os planos são de que cada ferramenta continue caminhando independentemente da outra, porém tendo em mente a interoperabilidade entre componentes do Fusion Middleware.

6. Quais são as iniciativas atuais e planos futuros para maior integração e suporte a tecnologias e produtos Oracle no NetBeans?

Galdino: A próxima versão do NetBeans ainda encontra-se em uma fase de planejamento. Logo, ainda é um tanto incerto falar em torno de iniciativas e planos futuros, já que elas ainda não se materializaram em termos de ações ou projetos. Essas iniciativas serão analisadas com cuidado, sempre tendo em mente a ideia de ter o NetBeans como uma ferramenta com as mais recentes atualizações da linguagem Java e uma plataforma focada na comunidade de desenvolvedores.

7. Recentemente a Oracle lançou o JDeveloper 11g Release 2, com suporte a JavaServer Faces 2.0 (JSF 2), tecnologia para aplicações web integrante da plataforma Java EE 6. Como está caminhando o pleno suporte às APIs do Java EE 6 no JDeveloper?

Galdino: Hoje, a Oracle possui o Glassfish como o servidor de aplicações compatível com a plataforma Java EE 6. Temos também o Weblogic, componente essencial de toda a arquitetura de produtos Oracle para middleware e aplicativos. O Weblogic é compatível com a versão Java EE 5. A compatibilidade com a especificação Java EE 6 está planejada para as próximas versões. E o JDeveloper, como principal IDE para o Oracle Fusion Middleware, precisa estar equacionado em relação a como atender esses dois lados do desenvolvimento. O lançamento do JDeveloper 11gR2 já permite trabalharmos com alguns desses recursos.

8. A Oracle já doou vários produtos e participou de iniciativas relacionadas ao projeto de software livre Eclipse e à Eclipse Foundation. Podemos destacar a doação do TopLink Essentials — versão open source do Oracle TopLink — que se tornou EclipseLink e implementação de referência de Java Persistence API (JPA); a doação do projeto de software livre Hudson Continuous Integration para a Eclipse Foundation; e a proposição em conjunto com a SpringSource do projeto Gemini baseado nos padrões OSGi. O projeto Eclipse porém, envolve a participação de empresas que tem pontos de concorrência no mercado com a Oracle, como IBM, RedHat e VMWare/SpringSource. Qual o posicionamento, visão e planos atuais da Oracle em relação ao projeto Eclipse?

Galdino: A Oracle continuará participando ativamente do projeto Eclipse. Consideramos que esse projeto é bastante importante para toda uma comunidade de desenvolvedores que utiliza o Eclipse como ambiente de desenvolvimento no dia-a-dia. Como comentado anteriormente, ao falarmos sobre as três IDEs de desenvolvimento, o Eclipse recebe uma atenção especial por parte da Oracle. No último release do OEPE – Oracle Enterprise Pack for Eclipse a Oracle – inclusive adicionou uma maior integração com a stack de produtos Fusion Middleware. Como exemplos, nós temos os recursos para facilitar a criação de scripts WLST utilizados pelo Weblogic e o suporte ao Coherence, um grid de dados em memória para melhorar a utilização de memória, bem como auxiliar na escalabilidade dos aplicativos.

A própria doação do Hudson para a Fundação Eclipse, como colocada na pergunta, já demonstra todo um compromisso que a Oracle possui com esse projeto e que continuará tendo com o lançamento de novos recursos nas próximas versões.


Agradeço à Clezia Gomes, Relações Públicas responsável pelo contato com a Assessoria de Imprensa da Oracle Brasil, que intermediou essa entrevista, e ao Fernando Galdino (@LinkedIn, @SlideShare), especialista da Oracle Brasil que concedeu a entrevista.

Dia 24, recebi mais uma fraude tipo phishing scam (pesacaria de otários), dessa vez fingindo ser do banco CitiBank. Vamos à análise e comentários das características de mais essa fraude.

A isca: o e-mail fraudulento

Como toda fraude, a isca básica é enviar uma mensagem fraudulenta de spam (envio em massa) para uma lista não autorizada de milhões de e-mails, com um tema de mentira chamativo, que possa ser inadvertidamente tomado como legítimo e verdadeiro por uma parcela de destinatários incautos.

O princípio de proliferação dessa isca é simples: tentativa em larga escala. Ao enviar uma fraude para, digamos, um milhão de endereços de e-mail, se apenas 0,1% destas mensagens chegarem a alguém desavisado e inocente que acredite na fraude, o fraudador já conseguirá pescar 1.000 (1 mil) otários!

– PERGUNTA: Onde o fraudador consegue essa lista de e-mails? — RESPOSTA: Na internet ou até mesmo em um camelô. Pessoas mal intencionadas podem construir mecanismos de busca especializados em varrer a internet em busca de endereços de e-mail válidos. Essas buscas podem até ter inteligência de categorizar cada e-mail encontrado por temas (através de expressões ou palavras chave existentes no local onde o endereço de e-mail foi encontrado), país ou idioma (do site ou serviço), e até buscar também o nome do indivíduo associado ao endereço de e-mail.

– PERGUNTA: Como posso me proteger, impedindo meu endereço de e-mail ser roubado? — RESPOSTA: Impedir completamente é difícil, mas alguns cuidados básicos podem reduzir imensamente as chances de seu e-mail ser obtido indevidamente. Cito dois:

  1. Antes de fornecer seu e-mail (e nome!) em sites e serviços interativos na internet, como fóruns, blogs, redes sociais, comércio eletrônico etc., procure se informar sobre a idoneidade, seriedade, segurança e proteção de privacidade deste. É um local confiável? O endereço de e-mail seu (ou de qualquer participante/usuário do serviço) fica visível publicamente ou para pessoas desconhecidas? A política de privacidade do serviço garante que seu e-mail não pode ser fornecido a terceiros? Ao se cadastrar, você concordou com a divulgação de seu e-mail a “parceiros” ou qualquer outro terceiro?
  2. Evite reenviar mensagens de e-mail a diversos contatos seus, e se o fizer, coloque o nome dos diversos destinatários no campo cópia-carbono-oculta (CCO ou BCC). Ao reenviar mensagens a outras pessoas, procure apagar do cabeçalho e texto da mensagem original transcrita endereços de e-mail de terceiros. Assim você zela em não revelar indevidamente e-mail dos outros. Oriente seus amigos igualmente a zelar pela privacidade dos outros, pois um dos “outros” pode ser você.

O tema, neste caso, foi o de “Informações financeiras e cadastrais”, um dos seis temas comuns que cito em meu artigo Phishing Scam – A fraude inunda o correio eletrônico.

A fraude finge ser uma “solicitação de atualização de segurança do banco CitiBank Online”. Veja uma imagem reproduzindo a aparência da mensagem fraudulenta:

Agora vamos avaliar os cinco Indícios de phishing scam que também cito no meu referido artigo:

Apresentação descuidada: NÃO. Essa fraude tem uma aparência visual verossímil e um texto sem erros grosseiros de português. Esse indício a fraude evitou.

Link destino não confiável: SIM, mas pode gerar dúvida. Há um link clicável no e-mail, prática que praticamente todos os bancos estão evitando, aponta para um endereço sem segurança (é http comum, e não https, o HTTP-Seguro) e o nome do domínio citibank.acessocliente.com não é no Brasil (não é .com.br, mas sim .com internacional) nem é, como se deveria esperar, o domínio principal do banco no país, como www.citibank.com.br. Contudo, a fraude ainda conseguiu usar um um domínio com um nome genérico que pode parecer com algo bancário — “acesso cliente” — e ainda precedido por um subdomínio com o nome do banco. Ou seja, nesse quesito a fraude pode gerar suspeita, mas também não é tão grosseira.

Informação improvável: SIM. Os mais inocentes e desavisados podem achar que um banco oferecer atualização de segurança por e-mail seja plausível, mas nenhum banco faz isso porque é algo muito inseguro e tema recorrente de fraudes. E se você tem dúvida, ligue para o banco antes de clicar em qualquer coisa.

Impessoalidade: SIM. O seu nome real aparece no cabeçalho ou no texto da mensagem? Não. Então provavelmente quem fraudou não sabia o seu nome, como o banco (se você for cliente) deveria saber. Como boa prática, mensagens desse tipo deveriam ser enviadas de forma personalizada, citando o seu nome completo. Infelizmente, essa boa prática nem sempre é seguida nas mensagens legítimas, e também as listas de spam mais “sofisticadas”, como já mencionei, podem obter e utilizar também o seu nome real, junto com seu endereço de e-mail. Veja meu artigo Cuidado – A fraude evoluiu.

Remetente suspeito: NÃO. Esse é o erro mais fácil de um fraudador evitar, porque o endereço do remetente, infelizmente, pode ser facilmente forjado.

Ou seja, vários indícios de fraude, mesmo que alguns deles sutis.

O golpe

Espero que, com tantos avisos, orientações e exemplos que posto, você meu leitor nunca seja um desses inocentes e desavisados incautos que clicam em um link duvidoso em uma mensagem de e-mail. Nunca clique!

Para analisar também o ataque, investiguei também o que havia no link destino, em um ambiente controlado e com cuidado e cautela extremos. Não faça isso em casa, nem muito menos no trabalho nem lugar nenhum.

O link leva diretamente ao download de um arquivo executável chamado Cadastro_CitiBank.exe para sistema operacional Windows. Trata-se de um programa espião roubador de senhas bancárias. Se executado, o programa silenciosamente se instala para ficar em execução contínua e reativado automaticamente toda vez que o sistema operacional for iniciado. Fica monitorando permanentemente o uso do computador e, se você digitar dados bancários, ele os captura e tenta enviar ao fraudador via internet.

Utilizando o serviço VirusTotal.com, enviei o arquivo para análise pelos 43 mecanismos antivírus disponíveis no serviço. No dia do envio, nenhum antivírus em VirusTotal detectou o executável como malicioso. Pelo menos três dias depois da fraude ativa, apenas o antivírus Kaspersky 9.0.0.837 (com atualização de 2011.07.26) passou a detectar como o malware Trojan-Banker.Win32.Banker.skab. E decorrido mais um dia, ainda eram apenas seis os antivírus que detectavam o perigo: AntiVir (TR/Banker.Banker.skab), Antiy-AVL (Trojan/Win32.Banker), eTrust-Vet (Win32/Banker.GPF), Kaspersky, TrendMicro-HouseCall (TROJ_BANKER.FGR) e ViRobot (Trojan.Win32.Banker.1064448.A).

O que quero mostrar com isso é que a proteção dos antivírus nem sempre é efetiva e imediata na detecção de novos códigos maliciosos, pois a notificação/descoberta e análise toma algum tempo. Dessa forma, os usuários ficam ainda mais vulneráveis nos primeiros dias de existência de toda nova fraude, pois provavelmente as ferramentas de antivírus/proteção ainda não a reconhecem e, portanto, não nos protegem de imediato.

É importante lembrar que os antivírus basicamente trabalham com o princípio de um “policial com uma lista de procurados e suspeitos”. Quando surge um novo “criminoso” (código malicioso), se ele não tiver um padrão previamente identificado como suspeito, precisará ser “denunciado” (detectado e analisado) pela empresa de antivírus até que entre na “lista de procurados”.

É uma guerra de “polícia e ladrão” onde as únicas armas realmente efetivas para todos sempre são a atenção, o cuidado e a precaução. Fique alerta, cuide-se! Evite as fraudes.

Assim como no trânsito existe a máxima de “Na dúvida, não ultrapasse.“, na internet você pode seguir a precaução “Na dúvida, não clique.

A autenticação multifator é algo que tem se popularizado rapidamente nos sistemas de internet banking (transações bancárias pela internet) e outras aplicações de identidade digital no Brasil e no mundo.

Espero que com esse artigo você tenha uma visão prática e abrangente dos fatores de autenticação, um aspecto da segurança que a maioria das pessoas utiliza de alguma forma em seu dia a dia.

Vamos começar definindo autenticação e seus fatores.

Autenticação

Autenticação, no âmbito da segurança digital, é o procedimento que confirma a legitimidade do usuário que realiza a requisição de um serviço, para o controle de acesso identificado. Este procedimento é baseado na apresentação de uma identidade junto com uma ou mais credenciais de confirmação e verificação.

Na definição objetiva de Wel. R. Braga, o processo de autenticar usuários consiste em determinar se um usuário é quem ele afirma ser.

A identidade ou identificador do usuário pode ser um nome criado especificamente para determinado ambiente, serviço ou aplicação, que se costuma denominar login ou logname. O login pode ser textual (um codinome) ou numérico (similar a um número de identidade).

Em algumas situações, pode-se aproveitar um identificador que o usuário já possui como login. Logins textuais muitas vezes permitem que se utilize o nome de uma conta de e-mail do usuário. Logins numéricos podem utilizar um número de documento de identidade como CPF, número do título de eleitor, RG, número de registro profissional (OAB, CRM, CREA etc.), número de inscrição do usuário no serviço, matrícula funcional etc.

Para confirmar a credencial, usa-se um elemento que deve casar unicamente com o identificador do usuário. É aí que entra o fator de autenticação.

Os fatores de autenticação para humanos são normalmente classificados em três casos:

  • algo que o usuário sabe: senha, PIN (número de identificação pessoal), frase de segurança ou frase-passe, que normalmente deve ser apenas memorizada e não escrita, para garantir o segredo que torna o fator seguro;
  • algo que o usuário possui/tem: certificado digital A3 (token ou smart card), cartão de códigos numéricos, token de segurança (gerador eletrônico de senhas únicas temporais), token por software, códigos enviados por telefone celular (SMS) etc.;
  • algo que o usuário é: impressão digital, padrão de retina, sequência de DNA, padrão de voz, padrão de vasos sanguíneos, reconhecimento facial, reconhecimento de assinatura, sinais elétricos unicamente identificáveis produzidos por um corpo vivo, ou qualquer outro meio biométrico.

A autenticação mais comum é a combinação de login e senha, ou seja, utilizando apenas um fator. A senha memorizada, contudo, tem sua fragilidade. Tanto a identificação (login) quanto a senha (este fator “algo que você sabe”) podem ser revelados ou descobertos, permitindo a fraude de utilização ilegítima de identidade de uma pessoa por outra. Pode ainda ser esquecida, causando transtornos ao usuário, pois exigirão alguma forma de redefinição ou reposição de uma nova senha.

Por isso, bancos e outras instituições têm cada vez mais recorrido à utilização de mais um fator, como veremos na seção seguinte.

Referências:

Fatores de autenticação e aplicações bancárias

Vistos os conceitos básicos, vamos comentar os fatores de autenticação exemplificados por sua utilização pelos bancos, em caixas eletrônicos e, principalmente, nas aplicações de internet banking.

O cartão magnético sempre foi utilizado pelos bancos. Além de armazenar a identificação numérica do usuário (banco, agência e conta), que é automaticamente lida nos caixas eletrônicos, ele é um fator de autenticação física do tipo “algo que você possui”. É combinado com a senha do cartão, fator do tipo “sabe”.

Com o aumento das fraudes e golpes em caixas eletrônicos, desde malfeitores próximos que observavam a senha digitada até o uso de equipamentos eletrônicos de fraude instalados nos caixas, os bancos começaram a inovar.

Algo que você sabe

Primeiro, vieram as técnicas de fornecimento indireto da senha. Menus de escolha mostrando mais de um dígito em cada opção. Isso faz com que um observador não saiba qual dos dígitos de cada opção é o da senha, sem reduzir a segurança — em termos matemáticos, em uma senha de 6 algarismos, escolhê-los em pares reduz as possibilidades de 10 dígitos para 5 pares, mas cada escolha (par) contém 2 opções de dígitos, então 106 = 56 * 26 = 1 milhão.

Depois, veio o uso de mais de um fator na autenticação, o que caracteriza a chamada autenticação multifator que intitula este artigo. Primeiro, a criação de mais de uma senha, como senha do cartão, senha eletrônica de internet, senha de telefone, código mnemônico de letras. Em internet banking, o banco costuma solicitar uma senha eletrônica para autenticar no início, e depois pede a senha do cartão para confirmar uma transação bancária.

Ainda assim, os fatores do tipo “sabe” têm o problema de serem basicamente um segredo único memorizado, que pode ser descoberto involuntariamente, ou mesmo repassado voluntariamente. Saber algo não é um fator intrinsecamente único e individual. Ainda tem o problema de que quando são escolhidos pelo próprio usuário, este pode por comodidade ou preguiça escolher para senha um dado comum (como usar uma data de aniversário como senha numérica) e que pode ser conhecido por outras pessoas.

Algo que você possui

Então, os bancos passaram a acrescentar um fator do tipo “possui”. O fator desse tipo costuma ter o objetivo de transpor códigos que antes eram escolhidos e memorizados para dispositivos que transportam códigos seguros.

O primeiro fator desse tipo costuma ser o cartão de códigos. Um cartão impresso com vários códigos numerados (em geral, são 50 a 70 códigos de três ou quatro dígitos) é fornecido pelo banco e, na autenticação ou confirmação de uma transação, ele solicita um desses códigos. Bancos como Bradesco, Itaú e Real utilizam este fator. As fraudes sobre esses cartões são mais fáceis do usuário identificar, pois em geral solicitam que o usuário forneça todos os códigos numéricos do cartão ao mesmo tempo, e não apenas um por vez como o banco faz. O caso típico desse tipo de fraude é se travestir de uma operação de recadatro ou confirmação de segurança do próprio banco.

Outro fator que alguns bancos passaram a utilizar foi um dispositivo físico de geração de senhas únicas a intervalos de tempo. Tecnicamente conhecidos como dispositivos OTP (one time password), eles funcionam assim: em um mecanismo eletrônico, o dispositivo gera um código numérico válido por um período de tempo, em geral um minuto. Depois desse período, o dispositivo automaticamente gera outro código. A fórmula matemática utilizada para a geração desses números é conhecida pelo banco e sincronizada com seus computadores centrais, mas é um técnica complexa e praticamente imprevisível, denominada função pseudo-aleatória.

Bancos como antigo Unibanco (“multisenha”) e Itaú (“iToken”) utilizaram este fator (ilustrações a seguir). Apesar de seguro, ele tem alguns inconvenientes práticos. Para o banco, representa um custo extra da aquisição desse dispositivo para cada cliente, o que tem que compensar frente à redução de prejuízo em fraudes. Para o usuário (cliente), é um penduricalho a mais que ele tem que guardar e transportar consigo para onde precisar usar.

Multisenha Unibanco iToken Itaú pessoa física iToken Itaú pessoa jurídica (RSA SecurID)

Outra variante do fator “possui” tem sido o envio de códigos para o celular do cliente via SMS. Similar ao dispositivo OTP, esse fator permite que um código diferente seja gerado a cada uso. O que o cliente deve efetivamente possuir de forma única é o seu telefone celular. Como hoje em dia as pessoas em geral portam consigo o celular, isso evita ter que se carregar o dispositivo OTP. Essa técnica exige uma abrangência e eficiência da rede celular da operadora, pois o usuário terá de receber o código via SMS no momento em que está realizando uma operação bancária eletrônica. Bancos como Citibank, Itaú e Banco do Brasil tem utilizado esse fator.

Para que um fator do tipo “possui” utilizando um dispositivo físico como o OTP ou celular seja utilizado indevidamente, é preciso que o pretenso usuário ilegítimo (fraudador) consiga obter o dispositivo, minimizando o risco de fraudes eletrônicas à distância.

Certificação digital

Merece destaque o fator de autenticação usando certificado digital. Certificado digital é um mecanismo genérico, padronizado e amplamente utilizado para identificação e assinatura digital seguras nas mais diversas aplicações. Funciona como uma carteira de identidade digital. São emitidos por entidades credenciadas confiáveis chamadas autoridades certificadoras (AC) e autoridades de registro (AR). Exigem a comprovação de documentos do usuário titular para emissão, e uma série de procedimentos técnicos e operacionais de segurança.

O governo Brasileiro definiu a estrutura nacional de emissão de certificados digitais, a ICP Brasil (Infraestrutura de Chaves Públicas Brasileira), seguindo o padrão mundial já estabelecido. Através da ICP Brasil, pessoas físicas podem emitir o seu e-CPF e pessoas jurídicas (empresas) o e-CNPJ. O uso de certificados digitais tem sido impulsionado no Brasil pelo governo, em especial:

Entre aplicações de internet banking de pessoa física em geral, só tenho conhecimento do Banco do Brasil que atualmente permite a utilização de certificado digital como forma de autenticação do cliente. (Podem haver outros bancos utilizando, mas desconheço.)

Este fator não é necessariamente emitido pelo banco (para o banco emitir, deve ser AR devidamente credenciada a uma AC), mas sendo um padrão mundial estabelecido, ele consegue identificar seu cliente pelo nome completo e pelo CPF contidos na identidade digital.

O certificado digital tem diversas vantagens. Sendo um dispositivo de identidade universal amplo, serve não apenas para aplicações bancárias mas para qualquer uso de identificação digital da pessoa que seja disponibilizado.

O certificado do tipo A3 utiliza um dispositivo físico — um chip que pode ser em um token USB similar a um pen drive, ou em um cartão inteligente smart card (que exige uma leitora própria) — funcionando portanto como fator tipo “possui”. Existe também um certificado tipo A1 via software que é gravado no disco do computador, mas é considerado um pouco menos seguro.

Token da marca Alladin Smart card

O certificado digital é baseado na técnica de segurança digital chamada criptografia de chave pública, onde existe um código secreto (chave privada) que fica inviolável dentro do dispositivo físico do certificado A3, e uma contraparte para identificação pública do titular do certificado (chave pública), preservando o segredo da chave privada.

O uso da chave privada é protegido por uma senha (PIN) ou mesmo por um leitor biométrico (atualmente, os certificados digitais com biometria mais difundidos acoplam um leitor de impressão digital). Ou seja, o do certificado digital embute múltiplos fatores de autenticação.

O empecilho essencial para popularizar o certificado digital como fator de autenticação é o custo. Atualmente, a emissão de um certificado A3 com validade de três anos custa algo entre 100 e 300 reais, incluindo o custo do dispositivo (token ou smartcard). Por medida de segurança, essa identidade digital precisa ser renovada ou reemitida ao término de cada período de vigência, a um custo que hoje gira em torno de 100 reais.

No sistema da novo documento de identidade brasileiro, o Registro de Identidade Civil (RIC), há a possibilidade de ele incorporar um certificado digital. Iniciativas como essa para popularização de meios de armazenamento de certificado digital, mais a disseminação de serviços públicos (governamentais) com uso destes, podem levar nos próximos anos a uma grande popularização que leve a um aumento de escala e consequente redução drástica do custo. Essa é uma grande esperança!

Para saber mais:

Algo que você é

E a biometria como fator de autenticação? Teoricamente, parece ser o mais seguro e prático. Seguro porque parece difícil fraudar características físicas pessoais exclusivas como padrões de impressão digital, retina, veias, face etc. Prático porque você não precisa memorizar nem possuir nada, são características físicas que existem em seu corpo.

Mas dos três fatores, este é o que ainda possui os maiores desafios. Na prática, padrões biométricos ainda são sujeitos a problemas de abrangência e precisão. Não reconhecimento de uma pessoa legítima (“falso negativo”), a possibilidade mesmo que remota de identificar uma pessoa como a característica biométrica de outra (“falso positivo”), e a dificuldade de se estabelecer padrões biométricos que funcionem de forma efetiva para todos. Só para se ter ideia, na impressão digital, que é um dos padrões biométricos mais conhecidos e utilizados, uma pessoa muito jovem, idosa, que utiliza produtos químicos ou que faça trabalhos manuais duros que desgastem a pele podem simplesmente não ter uma digital legível de forma precisa.

Outro desafio preponderante de decisão da viabilidade e popularização no mercado é o alto custo. Dispositivos de leitura biométrica ainda são muito caros para se popularizar em larga escala atualmente.

A revista Veja desta semana tem como capa uma reportagem sobre “Falar e escrever bem” (Veja edição 2177, ano 43, nº 32, 11 de agosto de 2010, páginas 94 a 101).

Esse tema já foi capa de outras edições da revista. Pesquisando no Acervo Digital VEJA em anos recentes, encontrei por exemplo:

  • “Falar e escrever certo”, edição 2025, ano 40, nº 36, 12 de setembro de 2007.
  • “Falar e escrever bem” , edição 1725, ano 34, nº 44, 7 de novembro de 2001.

Como assinante de Veja há mais de 25 anos, é fácil observar os temas recorrentes em capas da revista. Quando não há furos de reportagem nem fatos emergentes ou de comoção nacional na semana — escândalos e destaques na política e na economia, o falecimento ou outro fato marcante de figuras notórias etc. –, temas coringas são sacados do cesto: Corpo e Mente, Alimentação, Avanços da Medicina, Plástica e Estética, Sexualidade, Ecologia, Casamento, Pais e Filhos. E no Natal, o tradicional tema Religião e Fé. Observo que a maioria gira em torno de saúde e comportamento.

Temas recorrentes não são necessariamente um sinal de falta de conteúdo. É saudável retomar assuntos de interesse geral de tempos em tempos, e acompanhar a sua evolução ao longo do tempo, em função das mudanças no mundo e no comportamento da sociedade, bem como nas descobertas da ciência.

Falar e escrever bem, por sinal, é um algo que me interessa muito. Tomara que continue sempre assunto recorrente nessa e em outras publicações. A atual reportagem de Veja teve como ponto de partida os tropeços de clareza e gramática dos candidatos à Presidência, no primeiro debate da Band.

Vejo com imensa tristeza como o brasileiro mediano realmente lê pouco, tem preguiça em ler e escrever, não domina o português como deveria nem na escola nem no cotidiano e, como consequência, frequentemente escreve e fala mal.

Isso sem falar na praga das mensagens curtas e instantâneas na internet e nos celulares, o que dá brecha à meninada da “nova geração conectada” para escrever errado, abreviado, truncado, sem nem pontuação.

Escrita e oratória falhas levam a comunicação e informação falhas. Quem não dá o devido valor a isso não percebe que informação e comunicação são, provavelmente, a maior riqueza e um dos principais instrumentos de poder da humanidade, em todos os tempos.

Qualidade de software é um tema que vem sendo abordado e evoluído há muito tempo em engenharia e arquitetura de software, tanto em relação à qualidade do processo (da concepção à construção e à manutenção) quanto em relação à qualidade do produto, o software em si.

Nas décadas de 70 a 90, organizações internacionais de normatização e padronização — como ISO/IEC, ANSI, IEEE e outros — definiram qualidade de produto como:

A totalidade dos recursos, aspectos e características de um produto ou serviço que suportam a sua capacidade de satisfazer os requisitos dados, as expectativas e as necessidades explícitas e implícitas.

Em seu estudo sobre qualidade de software, Software Quality: Definitions and Strategic Issues (PDF, abril 1996), o pesquisador Ronan Fitzpatrick propõe uma visão mais moderna e ousada de qualidade do produto de software, definindo assim:

Qualidade de software é a medida em que um conjunto definido pela indústria de características desejáveis são incorporadas em um produto, de modo a aprimorar seu desempenho durante sua existência.

O Modelo de Qualidade de Software proposto por James A. McCall e outros, em 1977, foi um dos primeiros largamente difundidos neste campo. Ele organiza os critérios de qualidade de software em três pontos de vista, a saber:

  • Operação: características relativas ao uso do produto.
  • Revisão: capacidade do produto ser modificado e evoluído.
  • Transição: adaptabilidade a novos e diferentes ambientes.

Os critérios de qualidade elencados no Modelo de McCall em cada ponto de vista estão listados na tabela a seguir.

Operação Revisão Transição
Correção Manutenibilidade Portabilidade
Confiabilidade Flexibilidade Reusabilidade
Eficiência Testabilidade Interoperabilidade
Integridade
Usabilidade

Atualmente existem outros modelos de avaliação da qualidade do produto de software, em especial o padrão internacional de engenharia de software ISO/IEC 9126, que trata da Qualidade do Produto. A norma se divide em quatro partes, sendo a primeira uma visão geral do modelo de qualidade, e as outras três, os grupos de métricas definidas para este modelo:

  • Parte 1: Modelo de qualidade.
  • Parte 2: Métricas externas.
  • Parte 3: Métricas internas.
  • Parte 4: Métricas de qualidade em uso.

Qualidade externa diz respeito ao produto final como percebido pelo usuário, enquanto qualidade interna se refere à estrutura e às características do produto em seu projeto e construção.

Mais recentemente, desde 2005, as normas ISO/IEC 9126 e a série ISO/IEC 14598, de avaliação de produto de software, tem sido integradas na nova Série de normas ISO/IEC 25000 – Software Engineering — Software product Quality Requirements and Evaluation (SQuaRE), que tem seu núcleo principal composto por cinco divisões:

  • ISO/IEC 2500n – Divisão Gestão da Qualidade;
  • ISO/IEC 2501n – Divisão Modelo de Qualidade;
  • ISO/IEC 2502n – Divisão Medição da Qualidade;
  • ISO/IEC 2503n – Divisão Requisitos de Qualidade;
  • ISO/IEC 2504n – Divisão Avaliação da Qualidade.

Além deste núcleo principal, o SQuaRE contempla extensões, que tratam de temas específicos, como ISO/IEC 25051, SQuaRE Requisitos para qualidade de produtos comerciais de prateleira (Commercial Off-The-Shelf – COTS), e ISO/IEC 2506n, SQuaRE Common Industry Format (CIF) para usabilidade.

Os critérios de qualidade no Modelo de McCall são muito similares aos preconizados por outros modelos para classificação de atributos de qualidade de software, como o FURPS+ (Robert Grady e Deborah Caswell, HP, 1987-1992) e o da própria ISO/IEC 9126, quanto a requisitos não funcionais:

FURPS+ ISO 9126 McCall
Functionality (Funcionalidade) Funcionalidade - (n/a, funcional)
Usability (Usabilidade) Usabilidade Usabilidade (Operação)
Reliability (Confiabilidade) Confiabilidade Correção,
Confiabilidade,
Integridade (Operação)
Performance (Desempenho) Eficiência Eficiência (Operação)
Supportability (Suportabilidade) Manutenibilidade Manutenibilidade,
Flexibilidade,
Testabilidade (Revisão)
+ (outros requisitos/restrições) Portabilidade Portabilidade,
Interoperabilidade,
Reusabilidade (Transição)

.

Vale ressaltar que qualidade do software, abordada aqui, se entende por qualidade do produto de software em si, o que é distinto de qualidade do processo de software, que diz respeito à qualidade das atividades e forma pelas quais se produz software.

Para saber mais:

Há 16 anos, o Standish Group estuda projetos de TI. Ao longo desse tempo, a pesquisa CHAOS já estudou mais de 70 mil projetos de TI realizados.

O CHAOS Report é frequentemente citado em artigos e apresentações sobre gerenciamento de projetos de TI. Essa pesquisa classifica o resultado de cada projeto de TI em uma destas três situações:

  • Bem sucedido: O projeto é concluído dentro do prazo e orçamento planejados, com todos os recursos e resultados originalmente especificados.
  • Deficitário: O projeto é concluído e operacionalizado, mas com atraso, acima do custo estimado ou com menos recursos e resultados que o especificado.
  • Falho: O projeto é cancelado antes de ser concluído ou nunca é implementado.

A evolução dos percentuais de cada resultado, nas pesquisas CHAOS de 1994 até 2008, está representada no gráfico a seguir.

Há quem critique os critérios utilizado pelo Standish Group. No artigo The Rise and Fall of the Chaos Report Figures, por J. Laurenz Eveleens e Chris Verhoef, Universidade Vrije de Amsterdam, 2009-09-04, publicado na IEEE Software, vol. 27, num. 1, p 30-36, jan/fev 2010, os autores afirmam que “seus estudos apontam que as definições de sucesso e de desvio de projetos tem quatro problemas principais: são ambíguas, unilaterais, pervertem a prática de estimativa, e resultam em números pouco significativos“.

Contudo, o Standish Group tem repetido as pesquisas de forma consistente a cada dois anos desde 1994. Desta forma, os resultados apresentados no Chaos Report são, no mínimo, um referencial histórico para análises e considerações sobre a evolução do sucesso em projetos.

Um paralelo com o Guia PMBOK e processos estratégicos

Interessante notar que o Instituto de Gerenciamento de Projetos (PMI) lançou a primeira versão oficial do Guia PMBOK em 1996. Este Guia pode ser considerado um marco na formalização e ampla divulgação dos conceitos e das melhores práticas em gerenciamento de projetos, e vem contribuindo para a profissionalização e evolução da atividade de gerenciamento de projetos em todo o mundo.

O Guia PMBOK tem sido atualizado e publicado pelo PMI em ciclos de quatro anos, com novas edições tendo sido lançadas em 2000, 2004 e 2008, inclusive com traduções em português e diversos outros idiomas.

De 1994 para 1996, o sucesso em projetos medido no CHAOS Report teve um considerável salto positivo, de 16% para 27%. Igualmente, a partir de 1996, a taxa de sucessos cresceu pouco, mas até 2002 a taxa de fracassos decaiu consideravelmente, de 40% chegando a 15%.

A disseminação dos conceitos e práticas de planejamento e controle no gerenciamento de projetos, com a participação de organizações profissionais como o próprio PMI (de origem americana), o IPMA (de origem europeia) e outras, neste período, provavelmente contribuiu para o aumento do sucesso e redução do fracasso em projetos.

A oscilação de sucessos e fracassos desde 2002 deve levar em conta as crescentes abrangência, complexidade e criticidade dos projetos de TI, com a tecnologia sendo impelida a atuar imersa e alinhada cada vez mais no cerne dos processos de trabalho e das estratégias institucionais.

Fatores críticos de sucesso

Mesmo que o paralelo apresentado seja interessante e coerente, seria um tanto simplista tentar resumir a poucos pontos os determinantes da evolução no resultado dos projetos.

O próprio Standish Group aponta um conjunto mais consistente de fatores críticos de sucesso para projetos de TI:

  • Envolvimento efetivo e positivo dos usuários.
  • Apoio da alta gestão, ou patrocínio executivo.
  • Objetivos de negócio claros, bem definidos.
  • Maturidade emocional das partes envolvidas (stakeholders), controlando as “Cinco Sinas Mortais” no gerenciamento de projetos: ambição excessiva, arrogância, ignorância, abstinência e fraudulência.
  • Otimização, visando obter o máximo de valor para o negócio com o mínio de riscos.
  • Processos ágeis, com desenvolvimento iterativo.
  • Expertise em gerenciamento de projetos, onde aí entra a importante contribuição do Guia PMBOK e das organizações profissionais de gestão de projetos.
  • Equipe capacitada, consistindo na habilidade de adquirir, gerenciar e controlar os recursos certos no momento certo, lidando com turnover, bem como desenvolver e manter competências.

Para saber mais:

Houve um tempo — passado “remoto” da informática — em que notebook e smartphone (que era quase sinônimo de BlackBerry) era coisa cara, usada só por altos executivos, profissionais que realmente dependiam da mobilidade, e viciados em tecnologia. Hoje, existe uma profusão de notebooks, netbooks e smartphones para todos os gostos, necessidades e bolsos. Os notebooks vem inclusive tomando o lugar dos computadores desktop nas casas e nas empresas.

A principal inteligência de um celular “smart”, além das funções convencionais de um telefone celular, era lidar com correio eletrônico (e-mail). Atualmente, telefones celulares topo de linha são munidos de processadores e sistemas operacionais poderosos, cartões de memória com grande capacidade de armazenamento e conectividade total, se tornando verdadeiros computadores que se carrega no bolso.

O preço dos smartphones ainda é salgado em relação a um celular simples, mas tome-se o exemplo da Apple que induz uma fascinação no mercado fazendo um iPhone se tornar objeto de desejo de boa parte dos mortais, pelo simples fato de que “é muito legal”.

Caos da segurança

Com todo esse imenso poder dos dispositivos móveis, com custos cada vez menores e escala crescente em ritmo acelerado, vem o caos da segurança da informação.

Cada vez mais, altos executivos e funcionários em geral querem trabalhar remotamente e dispor de todos os recursos em qualquer lugar, pressionando as empresas a disponibilizar notebooks, redes sem fio (Wi-Fi, 3G etc.), acesso remoto e outros recursos de mobilidade corporativa. Querem usufruir dessa comodidade e poder, mas a TI tem que se virar para continuar garantindo segurança, controle e disponibilidade neste audacioso ambiente ilimitado e diverso.

Muitas empresas impõem restrições ao uso de notebooks e outros equipamentos pessoais e de prestadores de serviço dentro da rede corporativa, devido à dificuldade para as áreas gestoras de tecnologia da informação (TI) em garantir as políticas e mecanismos de segurança, o controle e os demais padrões corporativos nestes dispositivos que, além de móveis, são de propriedade e responsabilidade externas.

Quando se chega aos smartphones, então, a fronteira entre o particular e o corporativo fica ainda mais difusa e complexa. Se o CEO adquire um iPhone particular e quer acessar o e-mail corporativo através dele, até quando é razoável a TI dizer não?

Os riscos de vazamento de informação se multiplicam em escala exponencial diante de toda essa mobilidade. Se há redes sem fio ou acesso remoto, o controle para evitar acessos indevidos por invasores precisa ser redobrado.

Além disso, dispositivos móveis são mais suscetíveis a extravio, furto e roubo, e com eles se vai toda a informação contida, que tende a ser muito mais valiosa do que o próprio aparelho. Lembra-se do rebuliço gerado pelo furto de laptops da Petrobras com informações sigilosas em 2008?

Reflexões

Há como a TI garantir o uso de senhas, certificados digitais, biometria, criptografia, antivírus, firewall, VPN e outros recursos de segurança, controle e proteção da informação, de forma contínua, prática, efetiva e viável? E há como conscientizar e preparar os usuários para manterem sempre regras e procedimentos seguros neste mundo móvel? Em geral segurança anda na contramão da comodidade. E tem complexidade e custos, muitos custos.

Para os profissionais de gestão de tecnologia e de segurança das empresas continuarem sua reflexão — e preocupação, beirando o desespero — recomendo ler a série de matérias da IT Web no Especial smartphones, por Richard Dreger e Grant Moerschel, da InformationWeek EUA, 15/06/2010. As reportagens são oriundas do estudo sobre gerenciamento de dispositivos móveis e segurança da InformationWeek Analytics 2010.

Este artigo apresenta e diferencia os dois tipos básicos de busca e recuperação de informação por nome ou descrição, a consulta e a pesquisa, e aborda técnicas e ferramentas típicas para cada caso, tomando como base banco de dados Oracle e plataforma de programação Java.

Quando se disponibiliza buscas para uma quantidade grande e diversificada de usuários, é cada vez mais frequente utilizar um nome como parâmetro de identificação para a busca, ao invés de um código.

Códigos são mais eficientes como critério de busca, porém pressupõem um grupo especializado de usuários que tenha familiaridade com estes códigos. Nome ou descrição textual é mais natural e intuitivo, por isso mais adequado para um público amplo e diversificado.

Contudo, é importante diferenciar os dois tipos de busca possíveis: a consulta e a pesquisa.

Consulta

Na consulta, o pressuposto é que o usuário sabe especificamente o que procura, e deve fornecer uma identificação o mais completa e precisa possível. Nessa situação, o objetivo da busca é ser restritiva de forma a trazer, idealmente, apenas o registro específico desejado.

Quando se trata de uma pessoa, instituição ou outro item que possua nome (ou razão social etc.) que pode ser composto (várias palavras), a identificação precisa textual é o nome completo.

Para busca por um nome completo, as ferramentas de facilidade devem apenas evitar pequenos equívocos e diferenças irrelevantes. Falando especificamente em dados armazenados em tabelas de banco de dados, em geral usa-se uma coluna ou índice de busca em que o nome completo tenha um tratamento de homogenização, como:

  • eliminar acento, cedilha e outros modificadores, convertendo para a letra simples correspondente;
  • converter todas as letras para maiúscula;
  • substituir caracteres especiais (apóstrofo, aspas etc.) por espaço em branco;
  • suprimir espaços em branco no início e no fim e espaços duplicados entre palavras.

Dependendo da situação, outros critérios mais amplos e flexíveis de homogenização podem ser usados, como:

  • eliminação de conectivos ou termos secundários como “de”, “da”, “e”, “Ltda” etc.;
  • conversão de abreviaturas e numerais para extenso como “Cia” para “Companhia”, “Ind” para “Indústria”, “15″ para “quinze” etc.

A regra geral, portanto, de uma consulta por nome completo é fazer uma comparação direta do tipo:
normalizar(nome_fornecido) =? tabela de normalizar(nome_armazenado)

Técnicas ou ferramentas típicas:

1) No banco de dados, é recomendável criar uma função (procedimento armazenado / stored procedure) para realizar as operações de normalização do nome, e disponibilizar para uso geral. Uma função SQL Oracle que pode ser usada para remover acentos é TRANSLATE(), como translate(nome, 'âàãáÁÂÀÃéêÉÊíÍóôõÓÔÕüúÜÚÇç', 'AAAAAAAAEEEEIIOOOOOOUUUUCC'). É importante lembrar que nomes estrangeiros podem ter acentuações não existentes na língua portuguesa, como “ñ”, “ä”, “è” e outros. Para maiúsculas usa-se UPPER(nome), e brancos antes e depois podem ser removidos com TRIM(nome) ou LTRIM(RTRIM(nome)), e no meio com repetidos REPLACE(nome, ‘__’, ‘_’) de 2 brancos por 1, ou no Oracle 10g usando REGEXP_REPLACE(nome, ‘[[:space:]][[:space:]]+’, ‘_’).

2) Igualmente, na linguagem de programação é recomendado criar um método para normalização e torná-lo disponível para as aplicações em uma biblioteca. Em Java e outras linguagens, expressões regulares são excelentes para substituição de acentos, caracteres especiais e espaços em branco repetidos. Veja este exemplo sobre Remover acentuação.

3) Criar uma coluna adicional na tabela, como o nome completo homogenizado, e indexar e utilizar essa coluna no momento da busca, gerando a coluna dinamicamente (via gatilho) na inserção ou atualização do nome.

4) Criar um índice por função (disponível no Oracle 9i em diante) aplicando no índice a função de normalização do nome. Isso dispensa a criação de uma coluna adicional como em (3), delegando isso para o índice.

Pesquisa

Diferente da consulta, o objetivo da pesquisa é maximizar a capacidade de busca. A busca não precisa ser exata (ou quase exata), mas sim permite imprecisões, erros ou falhas.

A pesquisa tipicamente traz uma lista ou conjunto de resultados possíveis, de acordo com os critérios de busca.

O usuário não necessariamente deve conhecer previamente o que especificamente procura, muitas vezes se quer descobrir informação (e não apenas recuperar informação, como no caso da consulta).

No caso de pesquisa por nome, o caso típico é o usuário não ser obrigado a conhecer o nome completo, podendo em geral omitir ou errar partes:

  • omitir uma ou mais palavras (de um nome composto);
  • errar a grafia correta/exata;
  • permitir também expressões com o uso de símbolos “curinga” ou de lacuna/substituição, que demarcam um ou mais caracteres indefinidos ou não conhecidos (? e * em expressões regulares, ou _ e % no Oracle).

Em alguns casos, pode-se ser ainda mais tolerante na combinação de palavras fornecidas, permitindo que a ordem exata de palavras seja alternada ou até retornar resultado em que parte das palavras ou expressões procuradas exista, mas outra parte não.

Técnicas e ferramentas típicas:

1) Combinar o uso das técnicas de homogenização usadas em consulta com o uso de máscaras como _ e % e pesquisa SQL com LIKE. Esta técnica, porém, é bastante ineficiente e limitada, por isso tipicamente inadequada para o uso mais geral.

2) Usar o recurso Oracle Text do banco de dados Oracle (9i em diante), que cria índices complexos e flexíveis de pesquisa ampla em texto (full text search), do tipo árvore de pesquisa, aceita operadores e expressões complexos de
pesquisa no estilo “Google”, e tem mais uma infinidade de recursos (veja referências a seguir).

3) Usar mecanismos de busca fonética e múltiplas combinações de palavras. Nesse sentido, um artigo muito interessante da revista Mundo Java de junho/2010 (edição 41) apresenta esse tipo de técnica e o demonstra utilizando uma biblioteca Java brasileira disponível como software livre (licença GPL), desenvolvida pelo INCOR (Instituto do Coração, SP) utilizando um algoritmo fornecido pela PROCEMPA (Companhia de Processamento de Dados do Município de Porto Alegre, RS) e aperfeiçoada pela empresa P2D.

Os fontes da reportagem estão disponíveis no site da revista em http://www.mundojava.com.br/NovoSite/codigos.shtml: BuscaFonetica.rar.
E a biblioteca GPL aperfeiçoada está disponível na P2D e a original no InCor.

Li um artigo do Correio Braziliense on-line, Contratar terceirizado já não é unanimidade — Empresas absorvem mão de obra avulsa e apontam uma nova tendência no mercado. Sindicatos dizem que o fenômeno ainda é discreto –, por Karla Mendes e Luciano Pires, publicado em 14/03/2010.

A matéria é interessante e foca recursos humanos terceirizados, mas remeteu minha atenção a um fenômeno recorrente.

De tempos em tempos terceirização — ou outsourcing para os adeptos à terminologia em inglês — é vista como a tábua da salvação ou panaceia para todos os males, alternando entre o oposto como buraco negro devorador ou bola de neve incontrolável.

Creio que terceirização, assim como quase tudo na vida, não deve ser colocada em termos extremos de tudo ou nada, paraíso ou inferno. A adequação e o sucesso  de terceirização dependem do que, porque e como terceirizar.

De acordo com os objetivos de uma organização, com seu nível de maturidade e com o cenário atual do mercado, a boa terceirização em geral deve:

  • Ser economicamente viável e vantajosa. O capital move a economia e o mercado. Dessa forma, o objetivo mais comum da terceirização costuma ser redução de custos. Em outros casos, pode representar um reequilíbrio orçamentário através da conversão de custos fixos e despesas com pessoal em custos com a contratação de serviços — nos órgãos públicos, por exemplo, a Lei de Responsabilidade Fiscal limita o percentual do orçamento destinado a pessoal. Mesmo que economia não seja o principal foco na opção por terceirização, deve-se avaliar a projeção de custos para garantir que antes de tudo ela seja economicamente viável e sustentável, com os custos sob controle ao longo do tempo.
  • Estar fora do core business do negócio. Definir e gerenciar o negócio principal de uma organização é algo que não faz sentido ser feito fora dela. Uma organização deve investir principalmente naquilo que é sua missão, aquilo que é seu maior domínio, que sabe e deve fazer melhor, que é seu diferencial competitivo. Atividades, recursos e necessidades comuns, secundários ou periféricos podem ser commodity disponível no mercado e providos na forma de serviço, e são estes os serviços passíveis de melhor terceirização.
  • Ser medida e remunerada por resultados e por qualidade. Nas contratações mensuradas em postos de trabalho (body shop) ou homem-hora, por exemplo, paga-se pelo meio, e não pelo fim. Faça analogia ao táxi cujo taxímetro cobra pela distância percorrida, não por chegar rapidamente ao destino, sendo este último o que realmente importa. Ao invés de terceirizar atendentes, terceirize atendimentos satisfatórios. Ao invés de terceirizar faxineiros, terceirize área limpa. Caso contrário, de nada adiantará uma aparente redução de custos se não forem obtidos resultados com qualidade; essa redução será mero corte, e não efetiva economia. O instrumento típico de medida e remuneração (e penalidades) priorizando resultados e qualidade é o ANS/SLA (acordo de nível de serviço / service level agreement).
  • Tirar proveito da economia de escala. Se sua organização deve prover um serviço de, digamos, manutenção de computadores para atender uma filial onde trabalham 20 funcionários em outra cidade, poderia se ver obrigada a ter custos fixos em manter toda uma estrutura de atendimento, logística e pessoal para este serviço na filial, e ficar em um dilema entre pagar por certa ociosidade ou correr o risco de não conseguir atender rapida e eficientemente. Um fornecedor que preste este serviço a vários clientes na cidade da filial tem seus custos fixos, incluindo infraestrutura e pessoal, compartilhados e rateados entre os clientes, dando-lhe condições de oferecer um serviço melhor a custos menores por cliente.
  • Permitir alocação de recursos sob demanda. A escala, além do rateio de custos fixos, também pode trazer outro benefício. O fornecedor pode manter uma margem de recursos de infraestrutura e de pessoal tal que possam ser rapidamente alocados e desalocados de forma dinâmica e sazonal entre seus clientes, na medida da necessidade momentânea de cada um. Os princípios de cloud computing (computação na nuvem) e virtualização dos provedores de data center representa bem este aspecto: estes fornecedores oferecem a possibilidade de se ampliar a capacidade de servidores de rede a um cliente de acordo com a demanda. Da mesma forma, um serviço de call center pode oferecer a alocação de mais atendentes em épocas de picos de atendimento, enquanto que para uma organização mantendo este serviço internamente implicaria na contratação ou demissão de pessoal nesses períodos, o que é bem mais complexo e às vezes inviável.
  • Trazer valor agregado e know how. Ao terceirizar determinado serviço, busca-se contratar um empresa especializada e altamente qualificada neste serviço e segmento de mercado, tal que o fornecedor tenha condições de agregar conhecimentos, capacidades, recursos, técnicas, inovações e melhoria contínua que dificilmente sua organização alcançaria prontamente ou seria capaz de manter tendo outro foco de negócios.

Por fim, é importante lembrar que terceirização é uma troca. Trocam-se os custos, complexidades, prós e contras da realização interna pelos de uma aquisição. Deixa-se de ter a execução interna do serviço, que passa a ser desempenhado pelo fornecedor. Por outro lado, o planejamento prévio à contratação se torna fator crítico de sucesso, e cria-se uma inevitável atribuição interna à organização: o gerenciamento da terceirização, envolvendo as responsabilidades pela contratação, fiscalização e acompanhamento regulares do serviço prestado e de sua efetividade.

A oferta e variedade no mercado de banda larga do Brasil tem crescido muito. Com isso, aumenta a concorrência, as promoções e ofertas de provedores.

Mas tenha muito cuidado com estas promoções. Os famosos micro preços anunciados “Banda larga por apenas R$ X*” têm sempre o famigerado asterisco no final, que aponta para as reais condições em letras miúdas.

Via de regra, as letras miúdas indicam que aquele preço é promocional apenas nos primeiros 3 — ou no máximo 6 — meses.

Por isso, recomendo fortemente que o usuário avalie o custo real considerando um prazo acumulado de no mínimo 36 meses (três anos).

Veja o que uma pequena comparação de provedores banda Oi Velox (ADSL) em Minas Gerais me revelou (sem o custo do meio de conexão, apenas o provedor de acesso):

Provedor Condições mensais ofertadas 24 m. R$ 36 m. R$ 48 m. R$
Terra 6 meses a R$ 5,90 + 18 meses a R$ 8,90; depois R$ 14,90 195,60 374,40 553,20
Uai 6 meses a R$ 3,90; depois R$ 14,90 291,60 470,40 649,20
Globo.com 3 meses a R$ 3,90; depois R$ 19,90 429,60 668,40 907,20
Oi Internet 3 meses a R$ 3,90; do 4º ao 24º mês R$ 8,50; depois R$ 29,90 190,20 549,00 907,80
UOL 3 meses a R$ 9,90; depois R$ 19,90 447,60 686,40 925,20

Valores encontrados nos URLs apontados na tabela acima, na data de hoje, para acesso Oi Velox residencial em Belo Horizonte, MG.

Análise: Antes de mais nada, não se deixe enganar pelo preço promocional dos primeiros meses. Em seguida, note que dadas as condições promocionais vigentes, até o final do segundo ano (24 meses), algumas promoções podem tornar transitoriamente o preço de alguns provedores mais vantajoso, mas no terceiro ano em diante é que a situação de longo prazo dos custos se define.

Conclusão: A menos que você pretenda usar um provedor por menos de dois anos, ou ficar todo ano horas no telefone renegociando com o provedor (com direito à tradicional ameaça do “quero cancelar!”), avalie os custos acumulados no horizonte de 36 meses ou mais. Acrescente à avaliação de custos outros benefícios oferecidos que podem ser realmente úteis a você, como conteúdo exclusivo, descontos em outros produtos e serviços etc. Estes benefícios adicionais eu não abordei aqui, pois são muito variados e sua relevância é subjetiva, depende de perfil, necessidades e interesses de cada um.

Este artigo não tem a pretensão de ser um comparativo de preços nem avaliação criteriosa. Apenas tomo uma pequena amostra para embasar o seguinte conselho: Não deixe de pesquisar suas opções!

Próxima Página »