Pesquisar no blog

terça-feira, 2 de novembro de 2010

Governança de TI

História

            Para entendermos o que é Governança de TI, devemos tratar da questão de governança corporativa nas empresas, pois governança de TI é parte integral da governança corporativa. A governança corporativa tornou-se um tema dominante nos negócios devido aos escândalos corporativos em meados de 2002, como Enron, Worldcom e Tyco. A gravidade dos impactos financeiros das fraudes executadas pelas empresas já citadas abalou a confiança dos investidores, e isso contribuiu para a pressão descendente nos preços das ações, estimulando as empresas a tomarem uma atitude para contornar esta situação.


            Uma boa governança corporativa é importante para os investidores profissionais. Grandes instituições atribuem à governança corporativa o mesmo peso que aos indicadores financeiros quando avaliam decisões de investimento. Em sua essência a governança corporativa tem como principal objetivo recuperar e garantir a confiabilidade em uma determinada empresa para os seus acionistas.
            Para que haja aderência ao negócio e sua estratégia é citada seis ativos principais com os elementos essenciais de cada ativo:
  1. Ativos humanos: pessoas, habilidades, treinamento, competências etc.
  2. Ativos financeiros: dinheiro, investimentos, fluxo de caixa, contas a receber etc.
  3. Ativos físicos: prédios, fábricas, equipamentos, manutenção, etc.
  4. Ativos de PI: Propriedade Intelectual (PI), incluindo o know-how de produtos, serviços e processos devidamente patenteado, registrando ou embutindo nas pessoas e nos sistemas da empresa.
  5. Ativos de informação e TI: dados digitalizados, informações e conhecimentos sobre clientes, desempenho de processos, finanças, sistemas de informação e assim por diante.
  6. Ativos de relacionamento: relacionamentos dentro da empresa, bem como relacionamentos, marca e reputação junto a clientes, fornecedores, unidades de negócio, órgãos reguladores, concorrentes, revendas autorizadas etc.
            Controlar e monitorar estes ativos não é tarefa fácil, e necessita de uma forte receptividade da direção de sua empresa. Dentro de todos estes se destaca os “Ativos de informação e TI”, uma vez que as informações disponibilizadas pela tecnologia da informação sustentarão a sua empresa, pois todos os controles, processos, procedimentos e métricas partirão de TI.

Definição

            Governança de TI é um conjunto de práticas, padrões e relacionamentos estruturados, assumidos por executivos, gestores, técnicos e usuários de TI de uma organização, com a finalidade de garantir controles efetivos, ampliar os processos de segurança, minimizar os riscos, ampliar o desempenho, otimizar a aplicação de recursos, reduzir os custos, suportar as melhores decisões e conseqüentemente alinhar TI aos negócios.
            Governança de TI é de responsabilidade da alta administração, incluindo Diretores e Gerentes. É em sua essência uma parte integral da governança da empresa e consiste da liderança, processos e estruturas organizacionais que assegurem que a TI sustente e estenda as estratégias e objetivos da organização.
            O grande desafio do Governante de TI é o de transformar os processos em "engrenagens" que funcionem de forma sincronizada a ponto de demonstrar que a TI não é apenas uma área de suporte ao negócio e sim parte fundamental da estratégia das organizações.
            A implementação efetiva da Governança de TI só é possível com o desenvolvimento de um framework (modelo) organizacional específico. Para tanto, devem ser utilizadas, em conjunto, as melhores práticas de modelos existentes como o BSC, PMBok, CobiT, ITIL, CMMI e ISO 17.799, de onde devem ser extraídos os pontos que atinjam os objetivos do programa de Governança. Além disso, é imprescindível levar em conta os aspectos culturais e estruturais da empresa, devido à mudança dos paradigmas existentes.
            Se a implantação da governança de TI for encarada de forma semelhante à de uma tecnologia ou sistema específico. “Encarar a instituição da governança como se fosse a implantação de um ERP, pensando em trocar tudo, não resolve, pode é haver um descompasso entre expectativa e resultado Governança é um projeto, não um programa. Tem começo, mas nunca tem fim, e modifica as ações de acordo com o que chegar.

Gerenciamento VS Governança

            A diferença entre o gerenciamento de serviços de TI e a Governança de TI tem causado grande confusão. O gerenciamento foca em fornecer serviços de TI e produtos de forma eficiente e eficaz e o gerenciamento das operações. Já a governança se preocupa com as operações e desempenho dos negócios transformando e posicionando a TI para alcançar os requisitos dos negócios. A governança é responsável pela auditoria enquanto o gerenciamento seria o responsável pelo controle.
            Observe a figura e observe o posicionamento do gerenciamento e da governança em duas dimensões: negócio e tempo.


Governança de TI
           
            A governança de TI pode ter até cinco tipos de estruturas de tomadas de decisão, são elas:
  1. Monarquia de Negócio: Os diretores seniores tomam as decisões, afetando toda organização
  2. Monarquia de TI: Os profissionais de TI podem tomar a decisão;
  3. Feudalismo: As unidades de negócios tomam decisões para as áreas de responsabilidade;
  4. Federalismo: Decisão coordenada envolvendo a organização e os departamentos;
  5. Duopólio: Acordo bilateral entre executivos de TI e outro grupo.

        Como pode ser visto na figura abaixo, a Governança de TI engloba três pontos fundamentais, que serão discutidos neste tópico.








                               


         O primeiro seria princípio de governança que apresenta dois conceitos chaves: direção e controle. Na direção, o diretor fornece uma direção para implementar uma mudança entendida por ele. Já o controle assegura que o objetivo seja alcançado e que nenhum incidente indesejável aconteça.



         Já o segundo ponto fundamental é os stakeholders que é nada mais que qualquer elemento que tem responsabilidade relacionada a TI ou usufrui algum serviço gerado pela função da TI, como por exemplo: clientes, usuários, fornecedores, acionistas, diretores, executivos, gerentes, entre outros.
            E o terceiro ponto fundamental seria o Escopo da governança que pode ser classificado em cinco áreas conforme a figura:


1.      Alinhamento Estratégico: Refere-se em alinhar a TI com as estratégias do negócio. Para isso é necessário especificar os objetivos, para então desenvolver as estratégias e desenhar planos de ações para implementá-las.
2.      Entrega de Valor: Entregar com a qualidade apropriada dentro do prazo e custo, atingindo os benefícios que foram prometidos. A governança de TI procura estabelecer um modelo de valor entregue pela TI ao negócio antes de embarcar em grandes projetos.
3.      Gerenciamento de Riscos: Está ligada a boa governança e envolve a identificação de riscos sistêmicos, tecnológicos e da informação, a fim de dar maior proteção aos ativos. O gerenciamento busca preservar o valor, que foi criado na entrega de valor e orientado pelo alinhamento estratégico. Os riscos são gerenciados de quatro formas: mitigação de riscos, transferência de riscos, aceitação de riscos e evitar riscos.
4.      Gerenciamento de Recursos: O ponto chave do sucesso do desempenho da TI é o investimento otimizado, uso e alocação de recursos de TI (pessoas, tecnologia, informação) para atender as necessidades da organização.
5.      Monitoração da Performance: É a área fundamental do processo, é nele que irá assegurar o alinhamento, valor entregue, gerenciamento de riscos e o uso adequado dos recursos, para assim gerenciar o processo, monitorando as atividades de TI. Para a monitoração ter sucesso, métricas eficientes devem ser definidas e aprovadas pelos stakeholders.

Benefícios da Governança de TI
           
l  Custo baixo cada vez menor (devido sua universalização)
l  Ganho de escala
l  Redução nos custos da organização
l  TI torna-se mais comprometida com o negocio
l  Retorno sobre o investimento (ROI) maior
l  Serviços mais confiáveis
l  Mais transparência

Modelos
            Modelos são alguns padrões de práticas de governança de TI, abaixo alguns dos principais modelos:
  1. ITIL
            A ITIL (Information Technology Infrastructure Libray) foi desenvolvida no final dos anos 80 pela CCTA (Central Computer and Telecommunications Agency) e atualmente sob custódia da OGC (Office for Government Commerce) da Inglaterra. Tem o foco na operação e na infra-estrutura de TI. Não se preocupa com desenvolvimento de software e tampouco com alinhamento estratégico de negócios.
            É um conjunto de recomendações e melhores práticas para a gestão da infra-estrutura, desenvolvido pelo governo inglês. Não é uma metodologia restrita e não possui uma certificação, o que não compromete a qualidade do conteúdo integrante da biblioteca. Quaisquer aplicações das práticas que compõem o ITIL resulta em uma grande mudança cultural por parte das organizações. Envolve reorganização de equipes, participação da alta direção, etc., assim como qualquer projeto estrutural.
            A ITIL endereça estruturas de processos para a gestão de uma organização de TI apresentando um conjunto abrangente de processos e procedimentos gerenciais, organizados em disciplinas, com os quais uma organização pode fazer sua gestão tática e operacional em vista de alcançar o alinhamento estratégico com os negócios.
  1. CobiT
            O CobiT (Control Objectives for Information and related Technology), foi desenvolvido pelo IT Governance Institute, inclui o framework CobiT que define 34 processos de TI.  É uma ferramenta eficiente para auxiliar o gerenciamento e controle das iniciativas de TI nas empresas.
            O CobiT é um guia para a gestão de TI recomendado pelo ISACF (Information Systems Audit and Control Foundation, www.isaca.org). Inclui recursos tais como um sumário executivo, um framework, mapas de auditoria, controle de objetivos. O CobiT define um nível mais alto de objetivos de controle para cada processo e de 3 a 30 objetivos de controle mais detalhados.
            Os objetivos de controle contém declarações dos resultados desejados ou metas a serem alcançadas na implementação de procedimentos de controle específicos dentro de uma atividade de TI e fornecem uma política clara para o controle de TI na empresa. As práticas de gestão do CobiT são recomendadas pelos peritos em gestão de TI que ajudam a otimizar os investimentos de TI e fornecem métricas para avaliação dos resultados.
            O CobiT independe das plataformas de TI adotadas nas empresas. É orientado ao negócio. Fornece informações detalhadas para gerenciar processos baseados em objetivos de negócios. É projetado para auxiliar três audiências distintas: gerentes que necessitam avaliar o risco e controlar os investimentos de TI em uma organização; usuários que precisam ter garantias de que os serviços de TI que dependem os seus produtos e serviços para os clientes internos e externos estão sendo bem gerenciados e auditores que podem se apoiar nas recomendações do CobiT para avaliar o nível da gestão de TI e aconselhar o controle interno da organização.
            O CobiT está dividido em quatro domínios (um conjunto de processos para garantir a completa gestão de TI):
            Planejamento e Organização - Define o plano estratégico de TI, a arquitetura da informação, a organização de TI e seus relacionamentos; determina a direção tecnológica; gerencia o investimento de TI, a comunicação das direções de TI, os recursos humanos, os projetos, a qualidade; assegura o alinhamento de TI com os requerimentos externos e avalia os riscos
            Aquisição e implementação - Identifica as soluções de automação; adquire e mantém os softwares, a infra-estrutura tecnológica; desenvolve e mantém os procedimentos; instala e certifica softwares e gerencia as mudanças
            Entrega e suporte - Define e mantém os acordos de níveis de serviços (SLA); gerencia os serviços de terceiros, a performance e capacidade do ambiente; assegura a continuidade dos serviços, assegura a segurança dos serviços; identifica e aloca custos;
treina os usuários; assiste e aconselha os usuários; gerencia a configuração, os problemas e incidentes, os dados, a infra-estrutura e as operações.
            Monitoração - Monitora os processos; analisa a adequação dos controles internos e prova auditorias independentes e segurança independente.
            Os mapas de controle fornecidos pelo CobiT auxiliam os auditores e gerentes a manter controles suficientes para garantir o acompanhamento das iniciativas de TI e recomendar a implementação de novas práticas, se necessário. O ponto central é o gerenciamento da informação com os recursos de TI para garantir o negócio da organização.
  1. CMM
            CMM (capability matury model) é uma certificação concedida pela Software Engeneering Institute (SEI), da Universidade Carnegie Mellon (EUA), que mede o grau de maturidade no processo de desenvolvimento de software em uma organização. O CMM fornece às organizações orientação sobre como ganhar controle do processo de desenvolvimento de software e como evoluir para uma cultura de excelência na gestão de software, que considera o fator de produção com maior potencial de melhoria a prazo mais curto. 
            Outros fatores, como tecnologia e pessoas, só são tratados pelo CMM na medida em que interagem com os processos. Para enfatizar que o escopo do CMM se limita aos processos de software, o SEI passou a denominá-lo de SW-CMM, para distingui-lo de outros modelos de capacitação aplicáveis a áreas como desenvolvimento humano, engenharia de sistemas, definição de produtos e aquisição de software. Entretanto, esta denominação evolui para CMMI, adotada atualmente.
            O objetivo principal nas transições desses níveis de maturidade é a realização de um processo controlado e mensurado como a fundação para melhoria contínua. Cada nível de maturidade possui um conjunto de práticas de software e gestão específicas, denominadas áreas-chave do processo. Estas devem ser implantadas para a organização atingir o nível de maturidade em questão. Este caminho de melhoria é definido por cinco níveis de maturidade:
            Inicial - No nível um de maturidade os processos são geralmente caóticos. A organização geralmente não dispõe de um ambiente estável. O sucesso nestas organizações depende da competência e heroísmo dos seus funcionários e não no uso de processos estruturados. Devido ao imediatismo, um ambiente caótico, o nível um de maturidade geralmente produz produtos e serviços que funcionem; entretanto, freqüentemente excedem o orçamento e o prazo de seus projetos.
            Repetível - No nível dois de maturidade, gerencia de requisitos, de subcontratação e de configuração; planejamento de projetos; acompanhamento e supervisão de projetos e garantia de qualidade de software.  A adoção de um processo de desenvolvimento ajuda a garantir que práticas existentes são utilizadas em momentos de stress. Quando estas práticas são adotadas, os projetos decorrem e são gerenciados de acordo com o planejamento inicial.
            Técnicas de gerenciamento de projetos são estabelecidas para mapear custos, prazos, e funcionalidades. Um mínimo de disciplina nos processos é estabelecido para que se possa repetir sucessos anteriores em projetos com escopo e aplicação similar. Ainda há um risco significante de exceder os custos e estimativas de prazo de desenvolvimento.
            Definido - No nível três de maturidade, processos são bem caracterizados e entendidos, e são descritos utilizando padrões, procedimentos, ferramentas e métodos.
            A organização possui um conjunto de processos padrões, os quais são a base do nível três. Estes estão estabelecidos e são melhorados periodicamente. Estes processos padrões são usados para estabelecer uma consistência dentro da organização. Projetos estabelecem seus processos definidos pelo conjunto de padrões processuais da organização de acordo com guias.
            O gerenciamento da organização estabelece os objetivos dos processos baseado no conjunto de padrões pré-definidos e garante que estes objetivos sejam encaminhados de forma apropriada.
            Uma crítica distinção entre os níveis dois e três é o escopo dos padrões, descrição dos processos e procedimentos. No nível dois, os padrões, descrições de processos e procedimentos podem ser bem diferentes em cada instância específica do processo (por exemplo, em um projeto particular). No nível três, os padrões, descrições de processo e procedimentos para o projeto são guiados pelo conjunto padrão de processos da organização. O conjunto de padrões de processo da organização inclui os processos do nível dois e três. Como resultado, os processos que são realizados através da organização são consistentes exceto pelas diferenças permitidas pelos guias manufaturados.
            Outra distinção crítica é que no nível três, processos são tipicamente descritos em mais detalhes e com mais rigor do que no nível dois. No nível três, processos são gerenciados mais proativamente utilizando um entendimento de inter-relacionamentos das atividades dos processos e medidas detalhadas do processo, seus produtos, e seus serviços
            Gerenciado – No nível quatro de maturidade, utiliza métricas precisas, o gerenciamento pode efetivamente controlar os esforços para desenvolvimento de software. Em particular, o gerenciamento pode identificar caminhos para ajustar e adaptar o processo para projetos particulares sem perda de métricas de qualidade ou desvios das especificações. Organizações neste nível conseguem metas quantitativas para o processo de desenvolvimento de software e de manutenção.
            Subprocessos são selecionados conforme a importância na performance total do processo. Esses subprocessos selecionados são controlados usando técnicas estatísticas e quantitativas.
            Uma crítica distinção entre o nível de maturidade três e quatro é a previsibilidade do desempenho do processo. No nível quatro, o desempenho do processo é controlado usando técnicas estatísticas e quantitativas, e é previsível quantitativamente. No nível três, os processos são somente previsíveis qualitativamente.
            Otimização - O nível de maturidade cinco foca no contínuo progresso do desempenho dos processos através de melhorias de inovação tecnológica e incremental. Objetivos de melhoria quantitativa dos processos para a organização são estabelecidos, continuamente revisados, refletindo as mudanças nos objetivos da organização, e usando critérios de melhoria na gerência de processos. Os efeitos da melhora da revisão dos processos são medidas e acompanhadas, utilizando-se de processos de melhoria de qualidade. Os processos definidos e o conjunto de processos padrões da organização são alvos de melhoria de métricas.
            Uma distinção crítica entre os níveis quatro e cinco é o tipo de variação do processo. No nível quatro, processos estão preocupados com causas especiais de variação de processo e em fornecer resultados estatísticos. No nível cinco, processos estão preocupados com causas comuns de variação de processo e mudança no processo para melhorar a performance do processo para adquirir objetivos de melhoria quantitativa de processos.
   
  1. CMMI
            O CMMI (Capability Maurity Model Integration) é um modelo de referência que contém práticas (genéricas ou específicas) necessárias à maturidade em disciplinas específicas. Desenvolvido pelo SEI (Software Engineering Institute) da Universidade Carnegie Mellon, o CMMI é uma evolução do CMM e procura estabelecer um modelo único para o processo de melhoria corporativo, integrando diferentes modelos e disciplinas. Esse modelo tem como objetivo estabelecer - com base em estudos, históricos e conhecimento operacional - um conjunto de "melhores práticas" que devem ser utilizadas para um fim específico.
            O CMMI possui representações que permitem a organização utilizar diferentes caminhos para a melhoria de acordo com seu interesse. Estas representações se dividem em duas: 
            Representação Continua - Possibilita à organização utilizar a ordem de melhoria que melhor atender os objetivos de negócio da empresa. É caracterizado por Níveis de Capacidade (Capability Levels):
  1. Nível 0: Incompleto (Ad-hoc)
  2. Nível 1: Executado (Definido)
  3. Nível 2: Gerenciado / Gerido
  4. Nível 3: Definido
  5. Nível 4: Quantitativamente gerenciado / Gerido quantitativamente
  6. Nível 5: Em otimização (ou Optimizado)
            Representação Por Estágios - Disponibiliza uma seqüência pré-determinada para melhoria baseada em estágios que não deve ser desconsiderada, pois cada estágio serve de base para o próximo. É caracterizado por Níveis de Maturidade (Maturity Levels):
  • Nível 1: Inicial (Ad-hoc)
  • Nível 2: Gerenciado / Gerido
  • Nível 3: Definido
  • Nível 4: Quantitativamente Gerenciado
  • Nível 5: Em Otimização

segunda-feira, 11 de outubro de 2010

Arquitetura MMX

1.    Introdução

A tecnologia MMX é a inclusão de 57 novas instruções ao conjunto de instruções no processador. Grande parte do aumento de desempenho desse processador não está apenas no aumento do número de instruções, está também no aumento da freqüência do clock e no uso de técnicas de micro-arquitetura, como a previsão de desvios e uso de execução superescalar e superpipeline.
Somente se beneficiarão ao máximo dessa tecnologia os programas que utilizam instruções MMX, como é o caso do PhotoShop.
A Intel, criadora dessa obra-prima, aumentou o tamanho da memória cache L1(interna) de 16KB para 32KB no Pentium MMX. Só isto faz com que o MMX seja mais rápido que o Pentium não MMX, mesmo não utilizando programas escritos para o MMX e sob uma mesma freqüência de clock.
As vantagens são muitas. O MMX representa a maior revisão no conjunto de instruções desde a criação do 386. Para manter a compatibilidade com todo o hardware e software existente a Intel não alterou a estrutura do processador. O MMX utiliza os mesmos registradores do co-processador matemático. As chances de incompatibilidade simplesmente não existem e um programa pode utilizar as instruções MMX a qualquer momento em que desejarem.



As instruções MMX são basicamente de soma, subtração, multiplicação e comparação de bits. A grande vantagem é para multimídia, onde os dados manipulados pelo processador não são grandes.
O MMX trabalha com um novo conceito: SIMD (Instruções Simples para Múltiplos Dados). De uma só vez, diversas operações simples e de dados curtos podem ser feitas simultaneamente. Cada registrador utilizado pelo MMX comporta 64 bits, podendo ser dividido em 8 grupos de 8 bits, ou 4 grupos de 16 bits, ou ainda em 2 grupos de 32 bits.

2.    Arquitetura

As extensões de mídia para a arquitetura MMX foram projetadas para aumentar o desempenho das mídias avançadas e das aplicações de comunicação. A tecnologia MMX introduz novas instruções de propósito gerais, onde operam em paralelo sobre elementos de dados múltiplos em pacotes de 64 bits. Elas executam operações lógicas e aritméticas sobre diferentes tipos de dados e aceleram o desempenho da aplicação, possuem algoritmos que são computados intensivamente e realizam operações sobre tipos de dados nativos e pequenos. Isto inclui aplicações voltadas para mídias, aplicações gráficas e de comunicações.
O conjunto de instruções MMX é completamente compatível com todos os microprocessadores da arquitetura Intel. Assim, todo software existente continua executando corretamente em microprocessadores que incorporam a tecnologia MMX.

3.    Desempenho

A tecnologia MMX vai diretamente ao encontro das necessidades de modernas aplicações gráficas, de comunicação e mídia que incluem sofisticados algoritmos que executam repetidas operações sobre tipos de dados pequenos.
As instruções MMX podem operar simultaneamente sobre quatro palavras com apenas uma instrução. Por exemplo, informações de vídeos ou gráficas são representadas normalmente por 8 bits, uma instrução MMX pode operar simultaneamente sobre 8 informações dessas.
Para garantir o desempenho do MMX, a Intel implantou novos tipos de dados e 8 registradores MMX. Além disso, aumentou o conjunto de instruções.


4.    Dados

O principal tipo de dado da tecnologia MMX é o inteiro de ponto fixo packed. O ponto decimal dos valores é implícito e é deixado ao controle do usuário para uma maior flexibilidade. Os novos tipos de dados de 64 bits são:
1.    Packed byte à 8 bytes empacotados em 64 bits.
2.    Packed word à 4 words empacotados em 64 bits.
3.    Packed doubleword à 2 doublewords empacotados em 64 bits.
4.    Quadword à 1 word de 64 bits.

Quanto ao formato, os dados podem ter:
1.    Formato de dados de memória
A tecnologia MMX introduz novos tipos de dados packed. Os 64 bits do packed são numerados de 0 a 63, onde o bit 0 é o menos significativo.
Os bits de baixa ordem é a parte inferior do elemento de dados. Bytes em um formato de multi-byte têm endereços de memórias sucessivos. A ordenação é sempre realizada de acordo com a significância.

2.    Formato de dados de registradores
Valores dos registradores MMX têm o mesmo formato que um dado de 64 bits na memória. Registradores MMX tem dois modos de acessar os dados: através de acesso de 64 bits ou de 32 bits.
O modo de acesso de 64 bits é usado para acesso a memória em 64 bits, transferência em 64 bits em registradores MMX, todas as instruções packed, instruções lógicas e aritméticas e algumas instruções comuns.
Já o acesso de 32 bits é usado para acessar memória em 32 bits, transferências de 32 bits entre registradores MMX que trabalham com inteiros e algumas instruções comuns.

5.    Instruções

O conjunto de instruções MMX fornece um rico conjunto de instruções que operam em paralelo sobre todos os elementos de dados do tipo packed. Essas instruções podem operar sobre os elementos de dados com ou sem sinal.
As instruções MMX implementam dois novos princípios:
1.    Operações sobre dados packed: As instruções MMX podem operar em grupos de 8 bytes, 4 palavras e duas doublewords.
2.    Aritmética de Saturação: A tecnologia MMX suporta uma nova capacidade aritmética conhecida como aritmética de saturação. Na saturação, resultados que geram overflow ou underflow são cortados (saturados), para um dos limites de faixa do tipo de dado em uso. A saturação fornece uma característica útil: não indicam ocorrência de overflow.
Observe agora os grupos de Instruções MMX:

6.    Registradores

A tecnologia MMX fornece 8 registradores de 64 bits de uso geral. Esses registradores são mapeados sobre os registradores de ponto flutuante, sendo manipulados pelo Sistema Operacional.
Os registradores do MMX podem manipular tipos de dados empacotados em 64 bits. As instruções MMX acessam diretamente os registradores MMX usando os nomes MM0 a MM7.
Os registradores MMX podem ser usados para executar cálculo sobre os dados. Eles não podem ser usados para endereçar a memória, o endereçamento é realizado usando os registradores inteiros e os modos de endereçamento padrão da arquitetura Intel.

7.    Comparação

Utilizando um Pentium Clássico e um Pentium MMX, em um micro com 32 MB de RAM e placa-mãe com 512 KB de cache externa (L2). Foram tiradas as seguintes conclusões:
Por causa do aumento do cache L1 e uma melhoria no sistema de previsão de desvio do controlador de cache, o Pentium MMX consegue ser mais rápido que o Pentium Clássico mesmo quando não estamos utilizando programas que possuam instruções MMX. Ocorre um ganho de performance do Pentium-200 MMX sobre o Pentium-200 Clássico de, em média 11,3 %.
Para a utilização do conjunto de instruções MMX do processador, os programas deverão ser escritos utilizando instruções MMX. Neste caso, o ganho de performance fica na média 239 %. Mas ainda são poucos programas que utilizam as instruções MMX. O mais conhecido que possui versão MMX é o PhotoShop.
Para compensar a demora no desenvolvimento de novos programas que utilizam à tecnologia MMX, é bem provável que os fabricantes desenvolvam drivers MMX para que o próprio sistema operacional converta instruções não - MMX em instruções MMX sempre que possível.

8.    Desvantagens

  • Ausência de um multiplicador ou multiplicador-somador para operandos de 32 bits. Isto faz com que essa multiplicação passe a ser realizada com a instrução de multiplicação de inteiros padrão levando a gastar 6 ciclos a mais do que o Pentium Pro;
  • Não utiliza o pipeline;
  • O multiplicador de inteiros não consegue executar cálculos em paralelo.

quarta-feira, 15 de setembro de 2010

Protocolos da Camada de Aplicação

SMTP (Simple Mail Transfer Protocol)

O protocolo SMTP é um mecanismo padrão de correio eletrônico da Internet. Este protocolo é dividido em duas partes: O envelope que contem os endereços do transmissor e receptor, e a mensagem que é formada por cabeçalhos (definem o transmissor, o receptor, o assunto e outras informações) e o corpo (informação de fato a ser enviada ao receptor).
O SMTP utiliza um esquema de endereçamento único que consiste de duas partes: a parte local que define um arquivo especial onde serão guardados os e-mails e o nome do domínio que é o nome atribuído ao servidor de e-mail, ambas as partes são separadas pelo caractere @.
O primeiro componente de um sistema de correio é o User Agent é um programa que cria, lê, responde, encaminha as mensagens e controla a caixa de correio. Existem dois tipos de User Agents: Os orientados a Comandos, desenvolvidos nos primórdios do correio eletrônico, e os Baseado em Interface Gráfica GUI, como por exemplo, o Outlook.
O SMTP por si só, apenas transfere e-mails simples no formato de 7-bits do ASCII. Para acabar com essa limitação, é utilizada uma extensão do SMTP: o MIME, que tem como função converter os dados no formato Não-ASCII em formato ASCCII e vice-versa. O MIME define 5 tipos de cabeçalhos que podem ser adicionados ao cabeçalho das mensagens SMTP, são eles: MIME-Version que contem a versão do MIME, o Content Type que define o tipo de dados usados no corpo da mensagem,  o Content Transfer-Encoding, que define o método de codificação, O Content ID que identifica uma mensagem em um ambiente de múltiplas linhas e o Content Description, que define se o corpo da mensagem é imagem, áudio ou vídeo.
Para transmitir um e-mail real um sistema deve possuir o MTA (Mail Transfer Agents) no cliente e no servidor. O SMTP usa comandos e respostas para transferir mensagens entre um cliente MTA e um servidor MTA. Para realizar uma transferência é necessário antes, estabelecer uma conexão SMTP, que só se inicia após concluir a conexão TCP, após estabelecer a conexão inicia-se a transferência de mensagens, que após o fim da transmissão é fechada a conexão.
A transferência de mensagens consiste de três estágios, sendo que no primeiro, o e-mail é enviado do cliente SMTP para o servidor local, que usa um software servidor SMTP. Já no segundo estágio, o servidor local usa um software cliente SMTP que envia o e-mail até o servidor remoto que deve está rodando infinitamente. Já no terceiro estágio o User Agent remoto usa outros protocolos para acessar a caixa de correio e verificar correspondências. Atualmente existem 2 tipos de protocolos: POP3 e IMAP4.


POP3(Post Office Protocol 3) e IMAP4(Internet Mail Access Protocol 4)

Esses dois protocolos são responsáveis pelo terceiro estágio da transferência de mensagens, ou seja, eles são responsáveis pelo acesso à caixa de correio e pela verificação das correspondências.
O POP3 é bastante simples tendo assim funcionalidade limitada. O acesso a caixa começa quando precisa baixar os e-mails da caixa de correio baseada no servidor. Para isso, o cliente abre uma conexão com o servidor na porta TCP 110, enviando o user name e o password. Assim o usuário pode acessar uma a uma, as suas mensagens de e-mail. O POP3 tem dois modos de operação: O Keep, onde as mensagens são mantidas após o processo de downloading, e o Delete, que é usado quando deseja-se apagar as mensagens da caixa de correio após downloading.
Toda vez que um cliente acessa o servidor utilizando o POP3 toda a caixa de correio é transferida, tornando assim o POP3 inconveniente, já que não permite organizar os e-mails no próprio servidor, nem ver os e-mails parcialmente. Foi procurando acabar com essa deficiência do POP3, que criaram o IMAP4, que é bem mais complexo, porém muito mais poderoso, como por exemplo: Verificar e-mails antes de baixá-los e selecionar quais serão baixados.


FTP (File Transfer Protocol)

O protocolo FTP é o mecanismo padrão oferecido pela internet para transferir arquivos de um host para outro. Embora pareça simples, a transferência de arquivos apresentam alguns problemas tratados de forma elegante pelo FTP, como: diferença na convenção de nomes, diferença nas formas de representação de texto e dados e diferença nas estruturas de diretórios.
Diferente de outras aplicações cliente-servidor, o FTP estabelece duas conexões, uma para informação de controle (porta TCP 21) e outra para transferência de dados (porta TCP 20). Com duas conexões a eficiência do FTP melhora bastante. A conexão de controle usa regras de comunicação simples, onde se transfere uma única linha por vez, no qual essa linha pode ser de comando ou de resposta. Já a conexão de dados usa regras complexas devido a diversidade de tipos de dados.
A conexão de controle é mantida durante toda iteração, enquanto a conexão de dados é aberta e fechada para cada arquivo transferido, porem só pode abrir uma conexão de dados caso já esteja aberta a conexão de controle. A comunicação na conexão de controle é dada de forma simples, utilizando apenas caracteres ASCII. Já a comunicação na conexão de dados, o cliente deve definir o tipo de dado, a estrutura de dados e o modo de transferências do arquivo a ser transferido. Após estabelecida a conexão, a transferência do arquivo pode ser efetuada, podendo realizar um downloading, uploading ou recuperação de uma lista de arquivos.


HTTP (HiperText Transfer Protocol)

O HTTP é um protocolo para facilitar a transferência de arquivos projetados para facilitar acesso à WWW, o protocolo permite transferência de dados na forma de textos simples, hipertexto, áudio, vídeo, entre outras formas. O HTTP funciona como uma combinação do FTP com o SMTP, mas usa apenas uma conexão TCP (porta 80).
No HTTP, o cliente envia um pedido ao servidor e o servidor responde ao cliente, onde o pedido e a resposta são feitas na forma de mensagem e ambas podem transportar dados. Porém o HTTP não é um protocolo com estados, ou seja, ele não guarda os pedidos anteriores.
O pedido no HTTP consiste de uma linha de pedido, cabeçalhos e corpo. A linha de pedido define o tipo de pedido, a versão do HTTP e o recurso URL que é formado da seguinte maneira: Protocolo://Host:Porta/path.
Já a resposta do HTTP consiste de uma linha de status, cabeçalhos e o corpo. A linha de status define o status da mensagem de resposta e é formado pela versão do HTTP, do código e da frase do status.
O corpo, tanto da resposta como do pedido, não é obrigatório. Enquanto os cabeçalhos das mensagens de respostas ou pedidos podem ser formados por uma ou mais linhas. Onde cada linha pertence há um dos 4 tipos: cabeçalho geral, cabeçalho de pedido, cabeçalho de resposta e cabeçalho de entidade.
Na versão HTTP 1.0 o protocolo estabelece uma conexão não-persistente ao TCP para cada pedido/resposta. Já na versão 1.1 a conexão permanece aberta para outros pedidos, encerrando a conexão após time-out ou um pedido de encerramento.
O protocolo HTTP suporta servidores Proxy, podendo assim manter um histórico das respostas aos pedidos solicitados, aumentando assim a eficiência na resposta e a latência da rede, alem de diminuir o tráfego.


HTTPS (HiperText Transfer Protocol Security)

O HTTPS é uma implementação do protocolo HTTP com uma camada adicional de segurança que torna a navegação da internet mais segura. Essa camada permite que os dados sejam transmitidos através de uma conexão criptografada e que se verifique a autenticidade do servidor e do cliente através de certificados digitais. O HTTPS utilizada a porta TCP 443.
O HTTP não oferece a mesma segurança do HTTPS porque as informações que navegam numa rede são transmitidas de forma muito parecida com a apresentada na tela. Ou seja, quando você envia uma senha junto com um numero de cartão, seus dados estão submetidos à interceptação por terceiros durante o caminho. Já com o HTTPS isso não é possível, pois esses dados são criptografados.
O HTTPS também garante que o site que o usuário está visualizando é quem diz ser. O dono do local na web cria um certificado e o submete a uma empresa certificadora, que verifica a autenticidade do mesmo e o assina.
É importante entender que o HTTPS protege apenas o caminho que os dados trafegam,ou seja, o protocolo não protege o cliente nem o servidor. 

quinta-feira, 9 de setembro de 2010

UML

A Unified Modeling Language (UML) é uma linguagem de modelagem e não uma metodologia de desenvolvimento, o que significa que ela não diz para você o que fazer primeiro e em seguida ou como projetar seu sistema, mas ela lhe auxilia a visualizar seu desenho e a comunicação entre objetos.
Basicamente, a UML permite que desenvolvedores visualizem os produtos de seus trabalhos em diagramas padronizados. Junto com uma notação gráfica, a UML também especifica a semântica. É uma notação independente de processos, embora o RUP  tenha sido especificamente desenvolvido utilizando a UML.
É importante distinguir entre um modelo UML e um diagrama UML. O último é uma representação gráfica da informação do primeiro, mas o primeiro pode existir independentemente.
Os objetivos da UML são a especificação, a documentação e a estruturação para sub-visualização e maior visualização lógica do desenvolvimento completo de um sistema de informação. A UML é um modo de padronizar as formas de modelagem.
Embora a UML defina uma linguagem precisa, ela não é uma barreira para futuros aperfeiçoamentos nos conceitos de modelagem. O desenvolvimento da UML foi baseado em técnicas antigas e marcantes da orientação a objetos, mas muitas outras influenciarão a linguagem em suas próximas versões. Ela é base para muitas ferramentas de desenvolvimento, incluindo modelagem visual, simulações e ambientes de desenvolvimento.

Diagramas Estruturais

·         Diagrama de classes - mostra classes e os relacionamentos entre elas;
·         Diagrama de objetos - variação do diagrama de classes só que mostra os objetos instanciados;
·         Diagrama de componentes - mostra os componentes de programação de alto nível;
·         Diagrama de instalação - descreve os componentes de hardware e software e sua interação com outros elementos de suporte ao processamento;
·         Diagrama de pacotes - descreve os pacotes e seus agrupamentos lógicos mostrando as dependências entre estes;
·         Diagrama de estrutura - descreve a colaboração interna de classes, interfaces ou componentes para especificar uma funcionalidade;

            Diagramas Comportamentais

·         Diagrama de Caso de Uso - mostra atores (usuários do sistema), casos de uso (os cenários onde usam o sistema), e seus relacionamentos;
·         Diagrama de estados - mostra estados, mudanças de estado e eventos  (Máquina de Estado);
·         Diagrama de atividade - mostra  atividades e as mudanças de uma atividade para outra com os eventos ocorridos em alguma parte do sistema;

            Diagramas de Interação

·         Diagrama de sequência - mostra objetos e uma sequência das chamadas do método feitas para outros objetos;
·         Diagrama de Interatividade - é uma variação do diagrama de atividades mostrando como elas trabalham em uma sequência de eventos;
·         Diagrama de colaboração - mostra objetos e seus relacionamentos, de troca de mensagens;
·         Diagrama de tempo - apresenta o comportamento dos objetos e sua interação em uma escala de tempo