sábado, 31 de março de 2007

Pergunta do Rodrigo

Qual é a relevância de se fazer uma análise dos modelos conceitual, relacional e do modelo de implementação na criação de um novo SGBD para uma empresa? Qual relação existe entre todo esse processo e os custos de transação incorridos nas empresas?
Rodrigo
Vamos começar fazendo, em poucas palavras, algumas considerações "primitivas". O que é modelagem? Podemos dizer que é o processo de construção de um modelo. E o que é modelo? Digamos que é uma tentativa de retratar, de maneira organizada e inteligível, uma determinada realidade observada.
Vamos lá: digamos que você é o feliz possuidor de vários parafusos que vão ser usados na construção de uma ponte. Você acha que no futuro vai precisar de outros parafusos iguais para usar na construção de outra(s) ponte(s). E você (inteligente e sagaz como poucos) desconfia que desmontar a primeira ponte para verificar os atributos de cada parafuso, a cada vez que precise encomendar um outro, é procedimento bem pouco prático. Belo problema, hein?
Como preservar a informação sobre os parafusos adequados, mantendo-a disponível e facilmente acessível, sem incorrer nos exorbitantes custos de desmontagem de uma ponte?
Muito bem! Ao fazer a pergunta na frase anterior, seu cérebro entrou no que poderíamos chamar de modo conceitual: você está procurando identificar quais atributos informacionais são relevantes para particularizar um parafuso.
Você saca da algibeira seu bloquinho e caneta, e começa a anotar: Diâmetro da cabeça? A cabeça é circular ou sextavada? Qual o tamanho da haste? Quantas estrias ("roscas") existem por milímetro de haste? Qual o ângulo de inclinação da estria? Etc, etc.
E começam a aparecer as primeiras idéias sobre como preservar estas informações: Você pode manter "arquivado" um exemplar de cada parafuso. Opa! Mas isso implica em carregar um custo de "estoque" que você não tem dinheiro para bancar. Então, é uma solução, mas não uma boa solução! Mas se eu fizer uma réplica em gesso de cada parafuso o custo vai ser bem menor! É, e na primeira chuva minha informação "derrete"... não bom. Ora, eu posso criar uma lista com os atributos que já anotei, para cada parafuso, e guardá-la numa pasta. Humm! Parece uma boa solução! Você pensa mais um pouco, e lembra: "Ah! Mas nesse caso, o peso do parafuso é importante! E o material de que ele é feito também!". E anota isso no bloquinho. "Epa! A quantidade de cada parafuso, também". E ... lá vai bloquinho.
E aí, num daqueles momentos sublimes de iluminação, você faz a grande "sacada": "Putz! Se ao invés de uma lista de papel, eu fizer uma lista no computador eu vou ter um banco de dados informatizado". (Agora, todos juntos: "Oooohhhhhhhhh!!!!!").
Note que até agora só o que você gastou foi um pouquinho de seu privilegiado cérebro, tinta de caneta e umas folhas de papel.
Os procedimentos acima podem ser generalizados para uma miríade de situações e informações que pululam naquilo que chamamos de mundo real. E o que você estava fazendo era procurar descrever conceitualmente coisas que você observou na realidade. Você estava desenhando um modelo conceitual. Vantagens e relevância de começar por aí? Ora, se você tivesse ficado com a primeira idéia, teria possivelmente falido. Com a segunda idéia, mesmo sem chuva, você poderia ter especificado uma réplica sem estrias (e portanto sem valor para uso futuro), além de "perder" a informação sobre peso e material. Não apenas isso: você tem uma representação mais "próxima" da realidade retratada, ainda não mascarada pelas regras e ditames impostas por processos e ferramentas que sejam utilizados para traduzir esta representação em estruturas manuseáveis por um computador. Em outras palavras, se alguma coisa der errado, fica mais fácil descobrir se o erro está na maneira de capturar a informação ou se na maneira de traduzi-la.
É sempre útil identificar a informação disponível, quanto dela se quer preservar, quais atributos a singularizam, e assim por diante, antes de definir e se comprometer com um próximo passo: qual tipo de processo vou utilizar para tratar as informações identificadas, tipificadas e estratificadas na fase conceitual?
Qual modelo arquetípico é mais útil para armazenar, recuperar, manipular e reportar os dados (informações e seus atributos) que identifiquei e categorizei em meu modelo conceitual? Um post-it de lembrete grudado na minha xícara de café? Hierárquico? Relacional? Matrizes relacionais?
Nesta segunda fase, optando pela adoção do modelo relacional, você vai obedecer os fundamentos traçados em seu modelo conceitual (as informações que você julgou relevantes e suficientes para representar um parafuso), e transcrevê-lo em termos de tabelas, índices e chaves, conexões entre as tabelas (os relacionamentos), sua cardinalidade (1:1, 1:N, N:N), etc. Esta fase tem sido tratada com bastante clareza em nossas aulas de TI, e por isso não vou me estender em outras considerações.
Daí partimos para a terceira fase, que acaba sendo melhor identificada se a chamarmos de implementação do modelo (no caso, relacional) ao invés de modelo de implementação. É onde você vai "traduzir" as especificações traçadas na sua modelagem relacional adaptando-as às idiossincrasias de uma determinada ferramenta (um SGBD "comercial").
Por exemplo, se nas especificações de seu modelo relacional surgiram muitas instâncias de relacionamento N:N, e sua ferramenta de escolha for o Access, tenha certeza de que vais ter uma trabalheira insana para implementar estes relacionamentos. Também no caso do Access, se suas especificações contemplam acesso multi-usuário e transaction roll-back (peça explicação para a professora, caso queira) a implementação pode facilmente se transformar num pesadelo gótico! Felizmente existem outras ferramentas (Oracle, MS-SQL Server, Adabas ...) que permitem, nesses casos, uma implementação menos dolorosa.
Quanto aos custos de transação, vamos lá. Lembrando da Teoria da Firma, todos nós somos elos interconectados numa grande teia de contratos explícitos e implícitos. A efetivação dos contratos que respaldam estas interligações está fundada no intercâmbio de informações entre dois elos quaisquer. Cada transação entre dois elos embute troca de informações, e isto não é geralmente gratuito, ou melhor, nunca é gratuito para ambos os elos envolvidos. Um paga tudo e o outro não paga nada, um paga mais que o outro, ambos pagam igualmente, mas alguém sempre tem de arcar com o custo de obtenção, tratamento ou transmissão da informação embutida na transação. Este custo pode ser um valor monetário ou simplesmente de tempo e esforço dispendido nos trâmites da informação. Daí, mecanismos que agilizem a recuperação de informações (como os SGBD) tem um impacto redutor sobre os custos de transação, ao diminuir, por exemplo, o tempo de busca pelas mesmas. Por outro lado, este mesmo mecanismo pode "complicar" a obtenção da informação (intencionalmente ou não) tornando tais custos maiores. Reportando-nos a um parágrafo anterior, lembra que na fase conceitual você só havia "gastado" tempo, cérebro, tinta e papel? Esta é uma pista de como custos de transação podem ser impactados (palavrinha da moda essa, hein?): uma correção durante a fase conceitual usará um pouco mais dos insumos mencionados. Mas durante a implementação, por exemplo, pode envolver uma troca de ferramenta ao custo de alguns milhares de reais. Ou seja, os infalíveis podem se dar ao luxo de dispensar a modelagem conceitual sem se preocupar com possíveis impactos nos custos de transação. Aqueles que, como eu, são obrigados a carregar o fardo da fabilidade de nossa humana existência, precisam abordar a grande teia de transações com perspectiva calcada em obrigatória humildade, decorrente de uma limitada racionalidade.
Agora, algumas considerações práticas: a modelagem de um banco de dados não é coisa simples, podendo atingir facilmente graus de complexidade muito além do que supõe nossa vã filosofia. Um contador que se aventurar sozinho na área da modelagem de grandes e extensos bancos de dados corre o risco de se "afogar em números". É um trabalho que requer idealmente um bom e afinado time de profissionais qualificados (analistas, engenheiros de software, contadores, advogados, médicos, etc), cada qual contribuindo com o melhor de sua expertise para que se atinja um bom resultado final. Nosso maior percalço acaba sendo a aceitação pelos demais componentes do time: engenheiros de software abominam a participação de contadores na fase conceitual ("esses caras não sabem o que querem"); contadores acham os engenheiros muito complicados ("que mané relacionamento coisa nenhuma, eu quero é a receita lançada A-U-T-O-M-A-T-I-C-A-M-E-N-T-E na DRE"); advogados entram em pânico com ambos ("pelamordeDeus, assim nós vamos acabar todos na cadeia"); médicos vão adorar dizer para o contador "mas, meu caro, afinal quanto vale uma vida", e assim por diante. Por isso nunca é demais ressaltar que a modelagem de um grande banco de dados é um processo eminentemente cooperativo (e não puramente competitivo) e interativo. Não cabe exigir de cada membro do time conhecimento completo sobre todas as áreas, mas sim um mínimo de conhecimento capaz de levar a uma comunicação através de eficiente linguagem comum a todos. Cabe-nos como contadores deixar queimar na fogueira das vaidades nossos conceitos do ativo, passivo e patrimônio líquido, em prol de um balanço final lucrativo e uma demonstração de resultados positiva. Cândido Mariano da Silva Rondon, marechal, desbravador, indianista e, na minha opinião, uma das mais espetaculares figuras que a história de nosso país conheceu, costumava repetir uma frase sobre o contacto com indígenas: "Morrer se preciso for, matar nunca". Uma adaptação a ser usada como rule-of-thumb para bancos de dados poderia ser: "Informação imperfeita ou incompleta se preciso for, informação falsa nunca".
E para finalizar, recomendo aos que quiserem se aprofundar no tema, o recurso ao livro "Introdução a Sistemas de Bancos de Dados" de C.J. Date (um alerta: o Date tem uma alma profundamente relacional), ou a qualquer outro que misture no título as palavras "introdução" e "bancos de dados", onde vocês poderão encontrar esclarecimentos sobre como utilizar modelagem entidade-relacionamento, abstração e independência de dados, normalização de dados, e muitos outros tópicos interessantes.
Inté...

quinta-feira, 22 de março de 2007

[2] Redes de Computadores

Inicialmente foi traçado um breve histórico do desenvolvimento do uso de computadores, desde os tempos do processamento em lote, passando pelo tempo compartilhado e chegando à época em que interligar computadores (e seus usuários) começou a parecer uma boa idéia, capaz de economizar recursos computacionais e azeitar o fluxo de informações. Nascia a "ligação em rede", que ainda por cima se coadunava melhor com os novos modelos de organização que também começavam a ser experimentados por empresas e outras entidades. A partir daí a idéia evoluiu em abrangência (LAN's, WAN's, etc), tipos (hierárquica, cliente-servidor, peer-to-peer) e escopo (intranet's, internet). O compartilhamento dos recursos e informações propiciado pela idéia de interligação, exigiu a criação de regras que organizassem, tanto no aspecto do hardware quanto no do software, o intercâmbio das informações. Estabeleceram-se padrões físicos (ethernet, token-ring, UTP, etc) e os protocolos de comunicação (como o TCP/IP por exemplo) delimitando as maneiras que um computador "conversaria" com outro. Estes padrões foram fundamentais para a disseminação do uso prático das redes.

sexta-feira, 16 de março de 2007

[5] Negócios em Rede

O caso que nos coube analisar (eu, Juan e Tissiana), discorre sobre a atuação da Dell Computadores no mercado de vendas de computadores pessoais, enfocando principalmente a atuação da mesma no mercado americano.
Nossa resposta para as perguntas colocadas ao fim do texto são:
1) Quais as principais diferenças do modelo de negócios da Dell em relação a negócios de venda de computadores?
A Dell procurou oferecer produtos e oportunidades de customização diferenciadas para cada segmento de clientes, além de oferecer no website uma estrutura básica de suporte técnico e ajuda. As lojas varejistas tem diminuído este diferencial com o passar do tempo, mas agora o nome Dell já é uma marca de referência.
2) Que outros tipos de negócios, poderiam se beneficiar de um modelo semelhante a esse?
Vários tipos de negócio que possuam um mercado numericamente amplo e segmentado, especialmente aqueles onde as necessidades de particularização dos produtos seja importante.
3a) O modo como o site da Dell é organizado condiz com as políticas apregoadas pela Dell?
Sim. Na entrada se apresentam links para os 3 segmentos focados pela Dell: Segmento Corporativo e Público, Pequenas e Médias Empresas e Usuários Domésticos. Depois apresenta seus produtos em categorias (notebooks, desktops, ...) e dá oportunidade de customização para cada modelo básico oferecido.
3b) O que é o programa de afiliados da Dell?
É um programa onde um desenvolvedor em particular disponibiliza em seu site um link para o site de vendas da Dell, que esta última controla, pagando uma "comissão" ao site caso realize alguma venda a partir daí. Certamente representa o aproveitamento de um canal de marketing e disseminação de informações que não é comumente usado por seus concorrentes.

quarta-feira, 14 de março de 2007

[4] Antes é depois ...

Bom, preciso dar um jeito de me organizar melhor e tentar postar os textos na ordem em que são feitos. Mas, alas, por enquanto vai desse jeito mesmo, que o tempo é bem escasso!
Outra coisa: êta editorzinho furreca esse do blogger! Assim que arrumar tempo vou testar copiar/colar código html para ver se a formatação original se mantém.
Seguem as respostas referentes à "leitura crítica" do Contrato de Termos de Uso entregue pela Profª Renata. São opiniões pessoais minhas e do Juan e não necessariamente são "as corretas".
Porque é necessário haver "Termos de Uso" para ferramentas web?
Não é "necessário". Páginas de ajuda, instruções, botões de "fale conosco" e outros artifícios poderiam resolver as necessidades de usuários e propiciar feed back a desenvolvedores / mantenedores / webmasters de sites, estando ambos imbuídos de boa-fé. Os "Termos ..." servem mais como proteção para-jurídica aos webmasters (já que sua efetividade carece ainda de embasamento legal) contra litigância de boa ou má-fé por parte de usuários, e muitas vezes parecem tentar acobertar preventivamente certos impulsos ao estelionato por parte destes webmasters.
Quem se beneficia com essa espécie de contrato?
Basicamente os autores do mesmo, já que são unilaterais até a medula. No ambiente legal normal (fora da internet) o conteúdo leonino de suas cláusulas seria provavelmente rechaçado em juízo.
Em geral você (como usuário) lê cuidadosamente os termos de uso?
Tanto eu quanto Juan nos demos ao trabalho de ler o primeiro desses contratos com que nos deparamos. Depois do primeiro, nunca mais ... Isso provavelmente acontece com os demais usuários (se é que chegam a completar a leitura do primeiro!). São contratos extensos e "enrolados" e, depois da "primeira vez", você já sabe que se discordar não vai poder prosseguir e utilizar o site, suas funcionalidades ou ferramentas. Ou seja: sabe que a leitura é inútil, pois se trata de uma situação de "pegar ou largar", sem abertura sequer para testar. Por outro lado, essa é uma situação comum no dia-a-dia, similar, por exemplo, à dos contratos de adesão de cartões de crédito. A diferença é que estes últimos, apesar do viés pró-administradora, já possuem limitações aos abusos por parte da mesma forçados até pela legislação.
O que deveria mudar quanto à criação e ao uso desses "Termos ..."?
Nossa opinião é de que deveria ser criado um organismo independente, nos moldes, por exemplo, do Conselho Nacional de Auto-Regulamentação Publicitária (CONAR), reunindo representantes (civis) de usuários, desenvolvedores, mantenedores, etc, para definir um "código de posturas regulatórias" mínimo, que procurasse proteger os usuários de abusos, e os demais contra litigância de má-fé. A inclusão de políticos e governos seria de pouca valia, pois a imposição de regras por executivo, legislativo ou judiciário alcança no máximo as próprias fronteiras, bastando hospedar o site em outro país para escapar a sanções. Um conselho independente poderia ter representatividade multi-nacional e ampliar as possibilidades de aplicação de "sanções regulatórias" além das fronteiras nacionais.

sexta-feira, 9 de março de 2007

[3] Segurança em redes

Procuramos responder as perguntas do exercício proposto em aula (laboratório), buscando na Internet duas definições para cada termo:

1.a) Criptografia
Wikipedia: “do grego kryptós, "escondido", e gráphein, "escrever". Estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, a menos que seja conhecida uma "chave secreta".(...) Na prática, é um ramo especializado da teoria da informação com muitas contribuições de outros campos da matemática. (...) A criptografia moderna é basicamente formada pelo estudo dos algoritmos criptográficos que podem ser implementados em computadores”.
Clube do Hardware: “Criptografia é o ato de codificar dados em informações aparentemente sem sentido, para que pessoas não consigam ter acesso às informações que foram cifradas. Há vários usos para a criptografia em nosso dia-a-dia: proteger documentos secretos, transmitir informações confidenciais pela Internet ou por uma rede local, etc”.

1.b) Assinatura Digital
Wikipedia: “... a assinatura digital é um método de autenticação de informação digital tipicamente tratada, por vezes com demasiada confiança, como análoga à assinatura física em papel ...”.
www.safeweb.com.br: “A assinatura digital é um mecanismo criado para atribuir confiabilidade a um documemto eletrônico, da mesma forma que uma assinatura de punho (ou firma) atribui confiabilidade a um documemto papel. (...) Para assinar digitalmente qualquer tipo de informação eletrônica, a fim de comprovar inequivocamente a autoria, o autor deverá possuir um certificado digital, único e pessoal, que comprove indubitavelmente a sua identidade no mundo eletrônico e que tenha sido emitido por uma autoridade certificadora de confiança”.

1.c) Firewall
Wikipedia: “... é o nome dado ao dispositivo de uma rede de computadores que tem por função regular o tráfego de rede entre redes distintas e impedir a transmissão de dados nocivos ou não autorizados de uma rede a outra. Dentro deste conceito incluem-se, geralmente, os filtros de pacotes e os proxy de protocolos”.
www.infowester.com: “... pode ser definido como uma barreira de proteção, que controla o tráfego de dados entre seu computador e a Internet (ou entre a rede onde seu computador está instalado e a Internet). Seu objetivo é permitir somente a transmissão e a recepção de dados autorizados. Existem firewalls baseados na combinação de hardware e software e firewalls baseados somente em software”.

1.d) SSL
Wikipedia: “Secure Sockets Layer (SSL) e seu sucessor Transport Layer Security (TLS) são protocolos criptográficos que provêem comunicação segura na Internet para serviços como email (SMTP), navegação por páginas (HTTP) e outros tipos de transferência de dados. Há algumas pequenas diferenças entre o SSL 3.0 e o TLS 1.0, mas o protocolo permanece substancialmente o mesmo”.
www.bradesco.com.br: “O Secure Socket Layer (SSL) é um protocolo de segurança que criptografa todos os dados trafegados entre o seu computador e o do Bradesco, ou seja, transforma informação sigilosa em código secreto. Dessa forma, ao acessar os serviços disponíveis pelo Bradesco Internet Banking, você tem a garantia de segurança e sigilo das informações”.
1.e) WEP
Wikipedia: “WEP significa Wired Equivalent Privacy, e foi introduzido na tentativa de dar segurança na autenticação, proteção e confiabilidade na comunicação entre os dispositivos Wireless. Porém é inseguro devido a sua arquitetura. Wired Equivalent Privacy (WEP) é parte do padrão IEEE 802.11 (ratificado em Setembro de 1999), e é um protocolo que costumava proteger redes sem fio (WiFi).
www.wiki.freespire.org: “WEP ("Wired Equivalent Privacy") é um protocolo para proteger redes sem fio (wireless). Ele encripta cada pacote TCP/IP antes de enviá-lo e faz a desencriptação quando ele alcança o outro lado do link. No entanto, sua credibilidade ficou abalada quando várias vulnerabilidades foram encontradas. Essas falhas propiciam a crackers caminhos para se apossar da rede”.

2) As páginas retornadas pela busca via Yahoo e via Google são em grande parte as mesmas (mas nem de longe correspondem exatamente), porém em ordem completamente diferente. A mudança de preferências amplia ou reduz o escopo da busca, ampliando ou reduzindo a quantidade de páginas retornadas pela mesma. Navegação via diretório é mais fácil se você já tem idéia de qual categoria pesquisar. Mesmo assim, traz muito menos páginas como opção para consulta. É também menos flexível que a busca pelo mecanismo “normal”.

3.a) Encriptação SSL, teclado virtual para introdução de informações (rodando em plataforma Java), cadastramento de computadores.

3.b) Está sendo usada encriptação SSL (no caso do BB, 128 bits).

3.c) Ferramentas usadas: Bloqueio Automático de Senha, Certificado Digital, Teclado Virtual, Browser Defense (tipo de firewall) e Cadastramento de Computadores. São adequadas mas é bom lembrar que os hackers estão sempre criando novas ameaças e é preciso estar sempre atento para produzir contra-medidas e melhorar a segurança.

[1] Introdução à TI e Organização da Informação

Informação: Estruturada (Banco de Dados) / Não Estruturada (Sistema de Arquivos).

Banco de Dados – Modelo Relacional

Dados >> Base de Dados (coleção de dados) >> Sistema Gerenciador (SGBD).

SGBD
• Simplifica desenvolvimento. Permite realizar entrada, examinar e manipular dados. Dados e Meta-Dados (descrição dos dados) são armazenados na própria Base de Dados. Permite: independência entre dados e programas ; abstração dos dados ; múltiplas visões.
• SGBD é como Bombril: tem 1001 utilidades, mas não serve para TUDO.
• Principais serviços: Controle de Redundância (repetição desnecessária) ; Reconstrução (backups) ; Segurança (acesso / criptografia) ; Restrições de Integridade (depuração na entrada / armazenamento).
• Dados são armazenados em Tabelas (colunas e linhas).
• Colunas da Tabela >> Atributos (Campos).
• Linhas da Tabela >> Tuplas (Registros) – conjunto com mesmos atributos.
• Atributos (Campos) podem ser designados como Chaves (fins de identificação / ordenação).
• Chave primária: identifica o Registro. Deve ser única (sem repetição).
• Chave estrangeira (secundária): usada para identificar atributos em outra tabela.
• Tabelas podem ser relacionadas associando atributos (campos) iguais entre elas.
• Operações sobre Banco de Dados: Seleção, Projeção. Junção ...
• Linguagem de Consulta / Manipulação: SQL (Structured Query Language).