sábado, 29 de outubro de 2011

Introdução ao Oracle

A Família de Bases de Dados Oracle

A base de dados Oracle 11g é a versão mais recente da família de Sistemas de Gerenciamento de Bases de Dados Relacionais Oracle, produtos que compartilham código fonte comum. Essa família de produtos inclui: 

Oracle Edição Empresarial (Enterprise Edition)
 
Produto mais importante, é a nau capitânia da empresa, destinada a implementações de larga escala que requeiram o conjunto completo de características e opções da base de dados Oracle. Para segurança avançada, apenas esta edição inclui suporte para Bases de Dados Privadas Virtuais, auditoria detalhada, e opções que incluem o Átrio de base de dados, segurança avançada e Segurança por Rótulo.

As características para Data Warehousing incluídas apenas nesta edição incluem a compactação de valores armazenados repetidamente, os espaços transportáveis de tabelas entre múltiplas plataformas, o Gerenciamento de Tempo de Vida de Informação, a reescrita de consulta de visualizações materializadas, as opções de particionamento, o OLAP, e o aplicativo de mineração de dados.

As características para criar ambientes de alta disponibilidade exclusivas dessa versão incluem a Guarda de Dados e as base de dados, tabelas e consultas transacionais Flashback.

Como inovações nessa versão, temos uma Opção de Compactação Avançada para todas as cargas de trabalho esperadas, incluindo o processamento de transações, o armazenamento de Objetos Grandes e as cópias de segurança.

Uma Opção de Teste Real de Aplicativos inclui o Reprodutor de Base de Dados e o Analisador de Performance SQL, e uma Opção de Relembrar Completamente usada para permitir o Arquivo de Dados Fashback que mantém dados para consultas históricas.

Oracle Edição Padrão (Standard Edition)

Destinada a pequenas e médias implementações, ela pode ser utilizada em configurações de servidores contendo até 4 CPUs num único sistema ou num agrupamento de computadores usando Agrupamentos Reais de Aplicativos.

Oracle Edição Padrão Um (Standard Edition One)

Destinada a implementações pequenas, essa base de dados pode suportar até 2 CPUs e não inclui o RAC. A lista de características, exceto essa, é semelhante à da Edição Padrão.

Oracle Edição Pessoal (Personal Edition)

Base de dados usada por desenvolvedores individuais para criar código para implementações em bases multiusuário Oracle. Exige uma licença, diferente da Edição Expressa, mas possui todas as funcionalidades da Edição Empresarial.

Oracle Edição Expressa (Express Edition)

Base de dados que serve de introdução para o Oracle disponível gratuitamente para Windows e Linux. Essa base é limitada a 1GB de memória e 4GB no disco. Ela contém um subconjunto das funcionalidades da Edição Padrão Um e não possui características como a Máquina Virtual Java, as cópias de segurança e recuperação baseadas em servidor e o Gerenciamento Automático de Armazenamento. Embora essa edição não possa ser gerenciada pelo Gerenciador Empresarial Oracle, pode-se usar a interface de administração dos Aplicativos Expressos Oracle.

Resumo das Características da Base de Dados Oracle

A base de dados Oracle é um produto amplo. Para dar alguma perspectiva inicial, começaremos descrevendo o Oracle de um ponto de vista de alto nível das áreas básicas de funcionalidade.

Características de Desenvolvimento de Aplicativos para Bases de Dados

A base de dados Oracle é tipicamente usada para armazenar e recuperar dados através de aplicativos. As características dessa base de dados e dos produtos descritos neste texto são usadas para criar aplicativos.

Programação para Bases de Dados

Todas as implementações da base de dados Oracle incluem linguagens e interfaces que permitem que programadores acessem e manipulem os dados. Características de programação para bases de dados geralmente interessam aos desenvolvedores que estão criando aplicativos baseados em Oracle para serem comercializados ou àqueles em departamentos de TI programando aplicativos para atender necessidades exclusivas de suas empresas. Os dados em Oracle podem ser acessados usando SQL, ODBC, JDBC, SQLJ, OLE DB, ODP.NET, SQL/XML, Xquery e WebDav. Programas instalados dentro da base de dados podem ser escritos em PL/SQL e Java.

SQL

O padrão ANSI para a SQL possui funções básicas para manipulação de dados, controle de transações e recuperação de registros na base de dados. A maior parte dos usuários empresariais de bases de dados interage com o Oracle através de aplicativos ou ferramentas de inteligência de negócios que disponibilizam interfaces que escondem o SQL subjacente e sua complexidade. 

PL/SQL

Essa linguagem da Oracle, uma extensão procedural ao SQL, é muito usada para implementar módulos de programação lógica para aplicativos. Ela pode ser usada para criar procedimentos armazenados e gatilhos, controles em laço, consultas condicionais e tratamento de erros. Pode-se compilar e armazenar procedimentos PL/SQL na base de dados. Pode-se também executar blocos PL/SQL usando o SQL Plus, uma ferramenta interativa incluída em todas as versões do Oracle. As unidades de programas PL/SQL podem ser pré-compiladas.

Java

O Oracle 8i introduziu o uso de Java como linguagem procedural e uma máquina virtual java na base de dados. A JVM disponibiliza suporte para procedimentos armazenados, métodos e gatilhos em Java, para os JavaBeans Empresariais para o CORBA, o IIOP e o HTTP. A inclusão de Java dentro da base permitiu que desenvolvedores dessa linguagem utilizassem seus conhecimentos para criar aplicativos Oracle. Estes podem ser distribuídos nos clientes, no Servidor de Aplicativos ou na base de dados, o que for mais apropriado. A base Oracle 11g inclui um compilador Java JIT ativado por padrão.

Oracle e Serviços Web

A partir da versão 11g, a base de dados pode ser usada como servidora de serviços web implementados usando XML DB. Serviços Web permitem que SQL ou XQuery sejam usados para efetuar consultas e receber os resultados como XML, ou invocar funções PL/SQL ou de compactação e receber os resultados. XQuery na base Oracle 11g dá suporte para o padrão emergente JSR-225 e inclui uma boa quantidade de melhorias de performance. 

Objetos Grandes

O interesse no uso de Objetos Grandes está crescendo, particularmente para o armazenamento de tipos de dados não tradicionais, como por exemplo: imagens. A base Oracle é capaz de armazenar objetos grandes já faz algum tempo. O Oracle 8 introduziu a capacidade de usar múltiplas colunas LOB numa mesma tabela. Já o Oracle 10g essencialmente eliminou a limitação de tamanho para esses objetos. E a versão 11g melhorou muito a performance de consultas e operações de inserção usadas com LOBs ao introduzir os SecureFiles. Criptografia de dados transparente está disponível para dados LOB em SecureFiles.

Programação Orientada a Objetos

Suporte para estruturas de objetos existe desde o Oracle 8i para permitir o uso de uma abordagem orientada a objetos para a programação. Por exemplo, desenvolvedores podem criar tipos de dados personalizados, completos com seus próprios métodos e atributos. O suporte para objetos no Oracle inclui uma característica chamada Visualização de Objetos através da qual programas orientados a objeto podem fazer uso de dados relacionais já armazenados na base. Pode-se também armazenar objetos na base de dados como matrizes variantes, tabelas aninhadas ou tabelas organizadas por índices.

Linguagens de Terceira Geração (3GLs)

Programadores podem interagir com a base de dados Oracle em C, C++, Java ou COBOL, ao incluir SQL nos aplicativos. Antes de compilá-los usando ferramentas nativas de plataformas específicas, deve-se executar o código SQL incluído usando-se um pré-compilador. Ele substitui os comandos SQL com chamadas para bibliotecas de código que o compilador pode aceitar. O Oracle dá suporte para essas características através de pré-compiladores “programadores” para C e C++ usando Pro C e, para COBOL, usando Pro COBOL. Em versões recentes do Oracle, foi incluído o SQLJ, um pré-compilador para Java que substitui comandos SQL incluídos em código nessa linguagem com chamadas para a biblioteca SQLJ de tempo de execução, também escrita em Java.

Acesso a Dados

Todas as versões do Oracle incluem drivers para a base de dados que permitem que aplicativos efetuem acesso usando ODBC ou JDBC. Também disponíveis estão fornecedores de dados para OLE DB e .NET.

A Interface de Chamada Oracle

Se você é um programador experiente que procura otimizar performance, pode escolher definir seus comandos SQL dentro de sequências de caracteres contidas em linguagens de programação e então explicitamente forçar a análise dessas sequências, vincular variáveis ao resultado e, então, executar a consulta usando a Interface de Chamada Oracle. A OCI é uma interface muito mais detalhada que exige mais tempo e esforço de programação para criação e depuração. Desenvolver um aplicativo que use a OCI pode consumir muito tempo, mas a funcionalidade adicional e o ganho incremental de performance conseguidos em alguns cenários podem fazer valer a pena empregar esse tempo extra. Em outros cenários, pode-se conseguir somente uma vantagem ou outra. Por exemplo, numa implementação de ambiente que exija alta disponibilidade em que múltiplos sistemas compartilhem discos usando os Agrupamentos Reais de Aplicativos, poderia-se escrever programas usando a OCI para permitir que usuários sejam conectados de forma transparente num segundo servidor se a primeira conexão falhar.

Suporte para Linguagens Nacionais

O Suporte para Linguagens Nacionais providencia conjuntos de caracteres e funcionalidades associadas, como formatos de data e hora, para uma série de linguagens. A base de dados Oracle 11g dá suporte para o Unicode 5.0. Todos os dados podem ser armazenados em Unicode, ou colunas selecionadas podem ser incrementalmente armazenadas dessa forma. A codificação UTF-8 e UTF-16 dão suporte a mais de 57 linguagens e 200 conjuntos de caracteres. Capacidade de localização extensiva está disponível, e locais personalizados podem ser adicionados através de Construtor de Locais Oracle. Também está incluso um Kit de Ferramentas de Globalização para criar aplicativos que serão usados em múltiplas linguagens.

Extensão de Base de Dados

A Internet e as intranets corporativas criaram uma crescente demanda por armazenamento e manipulação de tipos de dados não tradicionais dentro das bases de dados. Existe uma necessidade de adicionar extensões à funcionalidade padrão de uma base de dados para armazenar e manipular imagens, áudio, video e uma série de informações espaciais e de tempo. Essas capacidades são possibilitadas através de extensões ao SQL tradicional.

Multimídia Oracle

A Multimídia Oracle permite manipulação de texto e adiciona funções para imagens, áudio, vídeo e de localização na base de dados. As seguintes principais funções ficam disponíveis:
     - a porção de texto da Multimídia pode identificar a essência de um documento ao pesquisar por temas e frases chave dentro dele;
     - a porção de imagem da Multimídia pode armazenar e recuperar imagens em vários formatos. A partir da versão 11g, o tipo de imagem média DICOM foi incluído;
     - as partes de áudio e vídeo da Multimídia podem armazenar e recuperar trechos desses tipos de mídia;
     - a porção de localização da Multimídia pode recuperar dados que incluem informações sobre coordenadas espaciais. 

Gerenciamento de Conteúdo Oracle

As soluções de gerenciamento de conteúdo incluem uma Opção de Base de Dados de Conteúdo usada para armazenar e gerenciar documentos na base de dados e aplicativos de gerenciamento de conteúdo da Stellent, que foi comprada pela Oracle em 2007. Esses aplicativos incluem Gerenciamento de Conteúdo Universal, Gerenciamento Universal de Registros e Gerenciamento de Direitos Autorais.

Capacidade de Pesquisa do Oracle

O Servidor de Aplicativos e de Base de Dados Oracle inclui uma ferramenta de pesquisa chamada Ultra Search. A Ultra Search é tipicamente usada para pesquisar e recolher informações de localização para dados de texto armazenados dentro da rede de uma empresa. Recuperação de documentos é baseada em direitos de acesso de usuários. Adicionalmente, o Oracle oferece a Pesquisa Empresarial Segura como alternativa, e esta é mais flexível em ambientes externos ao Oracle.

Opção Espacial Oracle

A Opção Espacial está disponível na Edição Empresarial do Oracle. Ela pode otimizar a exibição de recuperação de dados associados a coordenadas e é usada no desenvolvimento de sistemas espaciais de informações. Muitos produtos de vendedores de Sistemas de Informações Geográficas agora incluem essa opção e a utilizam como seu sistema primário de pesquisa e recuperação.

XML DB

O Oracle adicionou suporte nativo para tipos de dados XML na base de dados 9i e interoperação entre XML e SQL para pesquisa. O objeto XML estruturado é mantido nativamente no armazenamento de objetos relacionais, o que atende os requisitos para a DOM da W3C. A sintaxe do Xpath para pesquisar em SQL é baseada nas especificações do grupo SQLX, e XQuery também é aceita.

Características de Conexão com Bases de Dados

A conexão entre o cliente e o servidor de base de dados é um componente chave da arquitetura geral. Ela é responsável por todas as comunicações entre um aplicativo e os dados usados. O Oracle possui várias características para estabelecer e ajustar conexões com bases de dados.

Bancos de Dados em Rede

O Oracle disponibiliza uma série de características para estabelecer conexões entre usuários e bases de dados e/ou entre servidores, conforme descrito a seguir.

Rede Oracle: Pode-se utilizar a Rede Oracle sobre diversos protocolos de rede, embora TCP/IP seja de longe o mais comum em uso atualmente. Características associadas com a Rede Oracle, como por exemplo, os servidores compartilhados, são conhecidas como Serviços de Rede Oracle.

Diretório de Internet Oracle:  O Diretório de Internet Oracle dá aos usuários uma forma de se conectar com um servidor oracle sem a necessidade de um arquivo de configuração no lado do cliente. O OID é um diretório LDAP e suporta a Rede Oracle e outros protocolos que aceitam LDAPs.

Gerenciador de Conexões Oracle: O Gerenciador de Conexões Oracle, ilustrado na figura a seguir, reduz o número de conexões para clientes de Rede Oracle através do uso de concentradores, que permitem multiplexação de conexões com bases de dados, implementando múltiplas delas usando apenas uma única conexão de rede. Multiplexação de conexões é mais benéfica quando existe um grande número de usuários ativos.
Concentradores com Gerenciadores de Conexões para grande número de usuários

Pode-se também usar o Gerenciador de Conexões para conseguir conectividade entre vários protocolos se, por exemplo, existirem clientes e servidores que não estejam usando TCP/IP e outros que estejam.

Servidor de Aplicativo Oracle

A popularidade de aplicativos para Internet e intranet conduziu a uma mudança nos modelos de distribuição de cliente/servidor para uma arquitetura de três camadas. O Servidor de Aplicativos Oracle permite distribuir a camada intermediária em soluções de três camadas para aplicativos baseados na web, para os baseados em componentes, e também permite a integração de aplicativos empresariais. É um componente chave do Middleware Fusion e pode ser empregado através de múltiplos servidores de camada intermediária.

O produto inclui um listener baseado no popular listener Apache, e também servlets e JavaServer Pages, lógica de negócios, e/ou componentes de acesso a dados. A lógica de negócios frequentemente é distribuída como Enterprise JavaBeans. Componentes de acesso a dados podem incluir JDBC, SQLJ, e EJBs. Uma ferramenta, TopLink, permite mapeamento que associa objetos Java com a base de dados via JDBC de forma que o desenvolvedor Java não precisa usar chamadas SQL nem ter que enfrentar aplicativos Java que falham depois que um esquema de base de dados é alterado.

O Servidor de Aplicativos Oracle oferece soluções adicionais nas áreas de cache, portal, inteligência de negócios e conexão sem fio:
     Cache - O Web Cache do Servidor de Aplicativo Oracle introduz uma camada intermediária para cache de páginas ou de parte delas.
     Portal - O Application Server Portal é também parte do Ferramental do Desenvolvedor Oracle e é usado para criar painéis de controle empresariais fáceis de usar. O portal desenvolvido é distribuído pelo Servidor de Aplicativos.
     Inteligência de Negócios - Componentes da Application Server Business Intelligence incluem o Portal, bem como as ferramentas de inteligência de negócios originais do Oracle:
          - relatórios Oracle, que servem como uma camada intermediária escalonável para relatar os resultados de consultas construídas previamente;
          - o Descobridor Oracle, para consultas instantâneas e análise;
          - uma plataforma de distribuição para OLAP JDeveloper personalizado e para aplicativos de mineração de dados.

     Comunicação Sem Fio Oracle - A Comunicação Sem Fio Oracle inclui:
          - adaptadores para transformar conteúdo em XML;
          - transformadores de dispositivo para converter XML para linguagens de marcação específicas de certos aparelhos;
          - portais de personalização para configuração pessoal de serviços de alerta, de endereços de alerta, marcas de posição e perfis. O portal de personalização sem fio é também usado para criar, servir, testar e publicar serviços de URL e para gerenciamento de usuários.

O Servidor de Aplicativos Oracle está disponível em diversas edições: na Empresarial, Padrão, Padrão Um e edição Java, e esta inclui componentes chave para desenvolvedores Java. Incluídos na Edição Padrão e na Padrão Um estão o Portal, o TopLink com o Framework de Devenvolvimento de Aplicativos e o WebCache. A edição empresarial acrescenta as seguintes capacidades: Serviços de Formulário, Serviços de Relatórios, Visualizador de Descobridor, Diretórios de Internet Oracle, Interconexão de Aplicativos Oracle, Opção Sem Fio e integração com o Barramento de Serviços Empresariais. A edição Java inclui um servidor HTTP, OC4J e o TopLink com o Framework de Desenvolvimento de Aplicativos.

A edição Empresarial do Servidor de Aplicativos Oracle tem muitas opções disponíveis incluindo:

     Opção BPEL de Gerenciador de Processos:  A Linguagem de Execução de Processos Empresariais da Oracle é uma ferramenta projetada para embientes utilizando a Arquitetura Orientada a Serviços e é usada para criar, gerenciar e distribuir processos empresariais usados através da fronteira de aplicativos. Ela suporta padrões como Serviços Web, XML, XSLT, Xpath, JMS e JCA.

     Monitoramento de Atividades de Negócios: O Monitoramento de Atividades de Negócios é usado para criar painéis de controle em tempo real que exibem indicadores chave de performance e que sejam povoados com dados retirados de alertas monitorados via Internet.

     Publicador BI: Uma ferramenta de criação e publicação de relatórios usada para gerar informes de alta fidelidade a partir de dados XML.

     Registro de Serviços: O Registro de Serviços Oracle permite publicar e informar a respeito de serviços e fornece um Sistema de Registro para serviços SOA.

     Ferramental SOA para o Middleware Oracle: Agrupa os itens do Middleware Fusion da Oracle, os de SOA incluindo BPEL, BAM, sistema de regras de negócios, Barramento de Serviços Empresariais, Gerenciamento de Serviços Web, Registro de Serviços Web e adaptadores de aplicativos e tecnologias.

     Servidor de Comunicação e Mobilidade: Esse pacote inclui o TimesTen, e também um Contêiner de Servlets SIP, framework para instâncias de habilitadores, acessos via voz e móvel.

     WebCenter: O WebCenter é o framework de portal mais recente da Oracle usado para desenvolver portlets e componentes baseados em Ajax, especialmente em ambientes Web 2.0. Ele inclui fóruns de discussão, servidores de presença, clientes de mensagens instantâneas, Wiki, configuração e finalização de chamadas VOIP, Contêiner de Servlets SIP, APIs para Serviços Web e Java, integração Click-2-dial e cliente com reconhecimento de voz.

     Adaptadores para o Middleware Fusion: Incluem Aplicativos, Monitores de Processamento de Transações, EDI e outros.

O Ferramental SOA do Middleware Fusion serve como base para a Arquitetura de Integração de Aplicativos Oracle. A AIA também possui objetos de negócios e processos empresariais conhecidos como Pacotes de Integração de Processos e fornece alicerces chave usados para integrar aplicativos atuais e futuros da Oracle.

Características de Bases de Dados Distribuídas

A base de dados Oracle é conhecida por sua capacidade de lidar com volumes de dados e número de usuários extremamente altos. O Oracle não apenas se escalona através da distribuição de plataformas unitárias cada vez mais poderosas, mas também pode ser usado em configurações distribuídas. O Oracle distribuído em múltiplas plataformas pode ser combinado para agir como uma única base de dados lógica.

Transações e Consultas Distribuídas

Consultas distribuídas podem recuperar dados de múltiplas bases. Transações distribuídas podem inserir, atualizar ou apagar dados em bases de dados distribuídas. O mecanismo de efetivação de duas fases da Oracle garante que todos os servidores de bases de dados, que façam parte de uma transação, ou efetivem ou voltem atrás e desfaçam a transação. Processos de recuperação executando ao fundo garantem consistência nas bases de dados caso algum sistema seja interrompido durante uma transação distribuída. Assim que o sistema que falhou retornar, o mesmo processo vai completar a transação.

Transações distribuídas podem também ser implementadas usando os populares monitores de transações que interagem com o Oracle via XA, um padrão empresarial de interface. Pode-se também implementar uma transação coordenada iniciada sob controle do MTS através de uma base de dados Oracle.

Serviços Heterogêneos

Serviços Heterogêneos permitem que serviços e dados externos ao Oracle sejam acessados a partir de uma base de dados Oracle usando formas de conectividade genéricas como ODBC e OLE DB.

Portais Opcionais Transparentes usam agentes especificamente criados para uma variedade de sistemas alvos. Eles permitem que usuários executem comandos SQL do Oracle para fontes de bases de dados distribuídas que não sejam da Oracle, fazendo com que eles sejam automaticamente traduzidos para o dialeto SQL dos sistemas alvos, o que é transparente para o usuário. Os Serviços Heterogêneos também funcionam de maneira similar ao prestar serviços relativos a transações utilizando a efetivação de duas fases do Oracle para outras bases de dados e também serviços procedurais que chamam rotinas em linguagens de terceira geração em sistemas que não sejam da Oracle. Os usuários interagem com a base Oracle como se todos os objetos estivessem armazenados nela, e os Serviços Heterogêneos permitem, para benefício desses usuários, interação transparente com bases externas. 

Características de Deslocamento de Dados

Mover dados de uma base Oracle para outra é frequentemente uma necessidade quando usando bases distribuídas, ou quando um usuário quer implementar múltiplas cópias da mesma base em vários locais para reduzir o tráfego de rede ou aumentar a disponibilidade dos dados. Pode-se exportar dados e metadados de uma base e importá-los em outra.

O Oracle também oferece muitas outras características avançadas nesta categoria, incluindo espaços transportáveis de tabelas, Enfileiramento Avançado/Fluxos Oracle e soluções de Extração, Transformação e Carga.

Espaços Transportáveis de Tabelas

Pode-se colocar um espaço de tabela em modo apenas leitura, movê-lo ou copiá-lo de uma base de dados para outra, e então reativá-lo. O mesmo dicionário de dados descrevendo o espaço de tabelas deve existir na fonte e no destino. Essa característica pode poupar muito tempo uma vez que simplifica a movimentação de grandes quantidades de dados.

Pode-se mover dados com os espaços transportáveis de tabelas entre plataformas ou sistemas operacionais heterogêneos.

Enfileiramento Avançado e Fluxos Oracle

O Enfileiramento Avançado, fornece os meios para enviar mensagens assíncronas de uma base Oracle para outra. Já que as mensagens são armazenadas numa fila de uma base e enviadas assincronamente quando uma conexão é estabelecida, a quantidade de trabalho computacional e de tráfego de rede é muito menor do que seria usando métodos de entrega garantida através do protocolo de efetivação de duas fases entre a fonte e o destino. Ao armazenar as mensagens na base de dados, o AQ oferece uma solução com grande capacidade de recuperação no caso de erros do que qualquer outra solução de enfileiramento de mensagens que armazenam seus dados nos sistemas de arquivos.

O sistema de mensagens do Oracle ainda oferece a capacidade de desenvolver e distribuir soluções de inscrição e publicação baseadas em conteúdo usando um sistema de regras para determinar aplicativos relevantes para inscrição. Conforme novos conteúdos são publicados para uma lista de inscritos, as regras dessa lista determinam quais dos inscritos devem receber esse conteúdo. Essa abordagem implica que uma única lista pode atender eficientemente as necessidades de diferentes comunidades de assinantes.

O AQ se tornou parte dos Fluxos Oracle. Estes tem três componentes principais: replicação baseada em logs para captura de dados, enfileiramento para staging de dados, e regras definidas pelo usuário para consumo de dados. Os Fluxos também apresentam suporte para captura de alteração de dados e soluções de transferência de arquivos. Os Fluxos são gerenciados usando o Gerenciador Empresarial.

Extração, Transformação e Carga

O Criador de Centros de Dados Oracle é uma ferramenta usada na criação de bases de dados, especialmente de armazenamento de dados empresariais de análise, e fornece um repositório de metadados. Entretanto, é mais conhecido como uma ferramenta baseada em GUI usada para criar mapeamentos entre fonte e destino e gerar scripts de extração, transformação e carga. O OWB se utiliza de características nativas chave de ETL na base de dados Oracle.

Opcionalmente, a Oracle também oferece uma ferramenta de integração de dados, o Integrador de Dados Oracle, que não é tão centrada em dados de bases Oracle como é o OWB. O Integrador de Dados Oracle é baseado num produto chamado Sunopsis. Além de acrescentar capacidades de ETL, o ODI pode gerar código como serviço web para distribuição SOA e é uma parte chave da estratégia de integração SOA da Oracle.

Características de Performance de Base de Dados

O Oracle inclui muitas características especialmente projetadas para melhorar a performance em certas situações. Dividimos a discussão nas seguintes subseções em duas categorias: paralelismo de base de dados e centros de dados.

Paralelismo de Base de Dados

Tarefas de bases de dados implementadas em paralelo aumentam a velocidade de enfileiramento, ajuste e manutenção da base. Ao dividir uma tarefa única em partes menores e atribuindo cada subtarefa para um processo independente, pode-se melhorar dramaticamente a performance de certos tipos de operações de base de dados. Exemplos de características de consulta implementadas em paralelo incluem:
     - escaneamento de tabelas;
     - laços aninhados;
     - ordenação de junções de dados;
     - agrupamento usando GROUP BY;
     - sub-consultas do tipo NOT IN;
     - funções definidas pelo usuário;
     - escaneamento de índices;
     - uso de select distinct UNION e UNION ALL;
     - junções de hash;
     - uso de ORDER BY e agrupamento;
     - junções de mapas de bits em consultas estrela;
     - junções em nível de partição;
     - procedimentos armazenados.

Além de consultas em paralelo, muitas outras características do Oracle apresentam paralelismo. 

Centros de Dados e Inteligência de Negócios

Características paralelas melhoram a performance geral da base de dados Oracle, mas melhorias particulares de performance para inteligência de negócios e centros de dados também existem na base.

Mapas de Bits Índices

O Oracle tem um suporte para mapas de bits índices armazenados como uma maneira de providenciar uma forma rápida de selecionar e recuperar alguns tipos de dados. Os mapas de bits índices tipicamente funcionam melhor para colunas que tenham poucos valores diferentes com relação ao número geral de linhas numa tabela.

Em vez de armazenar o valor em si, um índice mapa de bits usa um bit individual para cada valor em potencial, e ele pode estar ativo indicando que a linha contém um valor, ou desligado, para mostrar que a linha não contém um valor.

Otimização de Consultas Estrela

Consultas típicas em centros de dados ocorrem contra uma grande tabela de fatos com chaves estrangeiras para tabelas de dimensão muito menores. O Oracle utiliza um mecanismo chamado junção estrela paralela de mapa de bits, que usa bits índices nas chaves estrangeiras para as tabelas de dimensão para acelerar as junções estrela envolvendo um grande número de tabelas de dimensão.

Visualizações Materializadas

Visualizações materializadas são outra forma de conseguir um aumento significativo de velocidade de consulta. Informação sumarizada derivada de uma tabela de fatos e agrupada ao longo de valores de dimensão é mantida como uma visualização materializada. Consultas que podem usar essa visualização são redirecionadas para ela, de forma transparente para o usuário e para o SQL da consulta inicial.

Funções Analíticas

Uma tendência crescente no Oracle e em outras bases de dados é a inclusão de funções estatísticas e analíticas acessíveis via SQL. O Oracle apresenta as funções CUBE, ROLLUP, classificação, agrupamento por janelas, análise de resultado/desempenho, agrupamento de relatórios, agrupamento estatístico, regressão linear, estatística descritiva, correlação, tabulação cruzada, teste de hipótese, enquadramento em distribuições e análises Pareto.

Opção OLAP

A Opção OLAP fisicamente armazena cubos cientes de dimensão na base de dados relacional Oracle. Esses cubos são mais frequentemente acessados usando SQL, embora uma API Java também exista. O otimizador do Oracle reconhece os níveis dentro desses cubos. Como resultado, qualquer ferramenta de inteligência de negócios que envie SQL para uma base de dados Oracle pode se aproveitar de forma transparente da melhoria de performance oferecida por essa opção. A atualização dos valores nesses cubos são mantidos de forma similar à atualização das visualizações materializadas.

Opção de Mineração de Dados

Algoritmos populares de mineração de dados tem sido incluídos na base de dados através da Opção de Mineração de Dados e são expostos através do PL/SQL ou da API de mineração de dados Java. Aplicativos de mineração de dados que usem esses algoritmos são frequentemente feitos usando o Minerador de Dados Oracle ou outras ferramentas para isso de parceiros da Oracle como InforSense ou SPSS. Algoritmos disponíveis nessa opção da versão 11g incluem análise de Associações Bayesianas ingênuas, Redes Bayesianas Adaptivas, Agrupamento, Máquinas de Vetor de Suporte, Fatoração Não Negativa de Matrizes, Árvores de Decisão e Modelos Lineares Generalizados.

Ferramentas de Inteligência de Negócios

O produto principal da Oracle nessa área é o Ferramental Edição Empresarial de Inteligência de Negócios Oracle, que inclue Respostas Oracle, Painéis de Controle, Entregas, Publicador de BI, componentes para o Office, Serviços Fundamentais, Relatórios Interativos, relatórios de produção SQR, Relatórios Financeiros, SmartView para o Office e Web Analysis.

Como uma opção para providenciar um cubo OLAP e funcionalidade independente das capacidades para centros de dados da base temos a Essbase. Um subconjunto do OBI EE faz parte do Inteligência de Negócios Edição Padrão Um, junto com a base de dados Oracle Edição Padrão Um e o Criador de Centros de Dados Oracle.

A Oracle também oferece aplicativos de inteligência de negócios que incluem modelos de dados e relatórios e análises com metadados de negócios pré-criados. Aplicativos importantes que podem ser citados são os Aplicativos de Inteligência de Negócios Oracle e os aplicativos de Gerenciamento de Performance Financeira Hyperion.

Características de Gerenciamento de Base de Dados

O Oracle inclui muitas características que fazem a base de dados mais fácil de gerenciar.

As estatísticas são automaticamente reunidas num Repositório Automático de Carga de Trabalho dentro da base de dados. O Monitor Automático de Diagnóstico de Base de Dados da Oracle faz avaliações das estatísticas em intervalos regulares e envia alertas de potenciais condições problemáticas para o Gerenciador Empresarial Oracle, onde a condição pode ser analisada em mais detalhes e ações corretivas podem ser adotadas. Algumas das características novas totalmente automáticas, como o Gerenciamento Automático de Memória também se aproveitam de dados do AWR.

O Oracle apresenta uma visualização atualizada quase em tempo real das condições atuais da base de dados conforme vai fazendo recomendações automáticas.

Gerenciador Empresarial Oracle

O Gerenciador Empresarial Oracle serve como um ferramental de gerenciamento de base de dados e uma interface baseada em HMTL usada para gerenciar usuários, instâncias e características de bases de dados. O EM pode também gerenciar o Servidor de Aplicativos Oracle, os Aplicativos Oracle, a versão do Oracle para Linux, e produtos de software de outros fabricantes.

O console de base de dados na versão atual do Oracle fornece informações sobre o estado da base de dados, sua disponibilidade, esquema, configuração de movimentações de dados e manutenção de software. O Balcão de Atendimento e a infra-estrutura de diagnósticos servem para relatar problemas para o Suporte Oracle. Vários administradores de bases de dados podem acessar o repositório do EM todos ao mesmo tempo.

O EM pode ser distribuído de muitas formas: como um console central para monitorar múltiplos agentes de suporte de base de dados, como um “console de produtos”, ou através de acesso remoto, também conhecido como “modo estúdio”. Quando distribuído como um console central, o Gerenciador Empresarial é chamado de “Controle de Grade”, e pode ser usado para instalação rápida de programas da Oracle, para provisionamento e instalação automática de atualizações de correção de softwares ativos.

Um subconjunto da funcionalidade do Gerenciador Empresarial é acessível através do Internet Explorer para Computadores de Bolso da Microsoft em PDAs sem fio usando o EM2Go. O EM2Go pode monitorar o estado da base de dados Oracle e do Servidor de Aplicativos.

Gerenciamento de Tempo de Vida de Informação e Assistente ILM

O Gerenciamento de Tempo de Vida de Informação fornece os meios para definir classes de dados e armazená-las em camadas e mover os dados para essas camadas que providenciam a combinação correta de performance e custo.

Cópias de Segurança e sua Recuperação

Como todo administrador de base de dados sabe, fazer cópias de segurança de bases de dados é uma tarefa comum e necessária. Uma cópia mal feita torna a recuperação difícil, se não impossível. Infelizmente, frequentemente se percebe a importância dessa tarefa diária apenas depois de perder dados críticos para negócios ao experimentar falhas de sistemas relacionados.

A seção seguinte descreve algumas das características usadas para realizar operações de cópia de segurança em bases de dados.

Gerenciador de Recuperação

Opções típicas de cópias de segurança incluem copiar a base inteira, cópias de espaços de tabelas, de arquivos de dados, de arquivos de controle e de arquivos de log. O Oracle dispõe do Gerenciador de Recuperação para cópias de segurança e recuperação de bases de dados baseadas em servidores, que pode automaticamente localizar, copiar, recuperar dados e restaurar arquivos de dados, de controle e de logs de repetição. O RMAN pode reiniciar cópias de segurança e implementar políticas de janelas de recuperação quando as cópias expiram. O Gerenciador Empresarial providencia uma interface gráfica para o RMAN. O agendador de tarefas do EM pode ser usado em conjunto com o RMAN para gerenciar cópias de segurança automáticas para o disco.

Cópias de segurança incrementais e sua recuperação

O RMAN pode fazer cópias de segurança incrementais nas bases de dados da Edição Empresarial. Esse tipo de cópia salva somente os blocos modificados desde a última vez que a operação foi efetuada em bases de dados, espaços de tabela ou arquivos. Dessa forma, as cópias serão menores e mais rápidas do que cópias completas. O RMAN pode também executar recuperações de pontos no tempo, o que permite que dados sejam recuperados até exatamente antes de um evento indesejado.

Cópia Segura Oracle

Muitos vendedores de programas de gerenciamento de mídia se apóiam no RMAN da Oracle, mas a a base de dados também inclui uma solução extra de gerenciamento de armazenamento em nível de entrada em fita totalmente independente conhecida como Cópia Segura Oracle XE. Opcionalmente, a Oracle oferece uma solução empresarial simples para cópias de segurança chamada Cópia Segura Oracle.

Disponibilidade de Base de Dados

A disponibilidade de bases de dados depende da confiança e do gerenciamento da base, do sistema operacional e de componentes de hardware específicos do sistema físico. O Oracle tem melhorado a disponibilidade reduzindo o tempo de cópia de segurança e sua restauração ao:
     - providenciar cópias e recuperação online em paralelo;
     - melhorando o gerenciamento de dados online através de faixas de particionamento;
     - se aproveitando de capacidades de hardware para melhorias de monitoramento e de recuperação de falhas.

Opção de Particionamento

A Oracle tem o particionamento como opção para providenciar um alto grau de capacidade de gerenciamento e disponibilidade. Pode-se deixar partições específicas desativadas para manutenção enquanto outras permanecem ativas para acesso pelos usuários. Em implementações de centros de dados, particionamento é algumas vezes usado para implementar janelas móveis baseadas em faixas de datas. Outros tipos de particionamento incluem particionamento de hash e particionamento de listas. Intervalos de particionamento podem também ser usados para automaticamente criar novas faixas fixas conforme elas forem se tornando necessárias durante inserções de dados.

Muitos desses tipos de particionamento podem ser usados em combinação em partições “compostas”. Exemplos incluem faixa-faixa, faixa-hash, faixa-lista, lista-faixa, lista-hash e lista-lista.

Guarda de Dados

A base de dados de salva-guarda é uma cópia da base de produção que pode ser usada se a base de dados primária for perdida. Bases primárias e de salva-guarda podem estar separadas geograficamente. A base de dados de salva-guarda é criada a partir de uma cópia da de produção e é atualizada através do aplicativo de arquivamento de logs de repetição também gerados pela cópia de produção. A Guarda de Dados automatiza completamente esse processo. Antes dela, era preciso copiar e aplicar os logs manualmente. Agentes são distribuídos tanto na base de produção quanto na de salva-guarda, e um Coordenador de Guarda de Dados coordena os comandos. Um comando único da Guarda de Dados invoca os oito passos necessários para recuperação de falhas.

Além de providenciar suporte físico para a base de salva-guarda, a Guarda de Dados pode criar uma base desse tipo, mas lógica. Nesse cenário, os logs de arquivo do Oracle são transformados em transações SQL e aplicados numa base de dados de salva-guarda aberta.

A Guarda de Dados suporta também aplicação de dados de repetição em tempo real, integração com a característica de base de dados conhecida como Flashback, compactação de arquivos de log, atualizações em softwares ativos, consultas, ordenação e relatórios mesmo quando alterações na base de dados de produção estão em curso.

Recuperação de Falhas

A característica de Recuperação de Falhas dá um alto grau de confiabilidade para uma base de dados Oracle. A recuperação é implementada através de um segundo sistema ou nó que permite acesso aos dados contidos num disco compartilhado quando o primeiro sistema ou nó falha. A Recuperação de Falhas Oracle para Windows, em combinação com o Sistema de Agrupamentos Microsoft, constituem uma solução para a ocorrência de problemas no evento de uma falha de sistema.

A Recuperação de Falhas é principalmente uma ferramenta para recuperação de desastres, então o sistema é desativado como parte de uma operação de recuperação. A solução recomendada para disponibilidade de servidor é o Agrupamento Real de Aplicativos.

Agrupamento Real Oracle de Aplicativos

O Agrupamento Real de Aplicativos pode disponibilizar suporte para recuperação de falhas bem como aumentar a escalabilidade em agrupamentos de máquinas Unix, Linux e Windows. A chave para a melhoria de escalabilidade foi a introdução do Cache Fusion, que diminui muito a quantidade de operações de escrita em disco que era usada anteriormente para controlar travamentos de dados.

Com o Agrupamento Real de Aplicativos, pode-se distribuir múltiplas instâncias do Oracle em diversos nós de uma solução em agrupamentos de máquinas ou numa configuração de grade. O RAC coordena o tráfego entre os sistemas ou nós, permitindo que as instâncias funcionem como se fossem uma única base de dados. Como resultados, a base se provou capaz de aumentar de escala por até dezenas de nós. Uma vez que os agrupamentos de computadores funcionam como um meio onde múltiplas instâncias podem acessar os mesmos dados, a falha de uma instância em particular não causa demasiada demora enquanto o sistema se recupera. Pode-se simplesmente redirecionar os usuários para outra instância que ainda esteja operando. Aplicativos podem se aproveitar da Interface de Chamadas Oracle para se recuperar de falhas e redirecionar usuários para outras instâncias de forma transparente.

Guarda de Dados e o RAC

A Guarda permite correção automática com tempo de recuperação determinado em conjunto com o Agrupamento Real Oracle de Aplicativos. Adicionalmente, permite redirecionar clientes para fora das instâncias com falha para outras que estejam disponíveis com reconexão rápida e captura automática de dados de diagnóstico.

Gerenciamento Automático de Armazenamento

O Gerenciamento Automático de Armazenamento permite taxas ótimas de divisão e repetição de dados em função da performance e disponibilidade. Já que o ASM é gerenciado através do Gerenciador Empresarial, o administrador de base de dados agora pode controlar essa tarefa crítica de gerenciamento. A necessidade de coordenar essa atividade com um administrador de sistema é, portanto, mínima.

Opção de Teste Real de Aplicativos

Essa opção inclui um Reprodutor de Base de Dados e o Analisador de Performance de SQL. O Repetidor captura informações de carga de trabalho da base de dados, incluindo acessos simultâneos, dependências e tempos de resposta. Ele transforma os arquivos de dados de informações capturadas em arquivos de repetição, disponibiliza um Cliente de Repetição para processar esses arquivos, e fornece os meios para relatar estatísticas de performance e qualquer erro encontrado. O Analisador de Performance de SQL captura uma carga de trabalho de SQL para ser analisada, mede a performance antes e depois de alterações na base de dados e identifica alterações de performance com relação a comandos SQL.

Características de Segurança de Base de Dados

O Oracle possui segurança básica para gerenciar acesso de usuários através de competências e privilégios. Eles podem ser gerenciados usando o Gerenciador Empresarial de forma local ou global se aproveitando da segurança empresarial do Oracle, uma característica da Opção de Segurança Avançada.

As características de segurança de base de dados permitem que se implementem Bases de Dados Privadas Virtuais usando o Oracle para criar e associar políticas para tabelas, visualizações ou sinônimos. Essas políticas são mantidas colocando-se uma cláusula predicativa WHERE em comandos SELECT, INSERT, UPDATE, DELETE e INDEX.

Muitas empresas enfrentam a necessidade de empregar esquemas mais restritivos para melhorar a proteção de dados, ainda mais que o uso das bases de dados atualmente pode se estender além dos limites da empresa. A Oracle adicionou muitas opções nas bases para permitir distribuição segura em tais ambientes desafiadores. Essas opções incluem a Opção de Segurança Avançada, a de Segurança por Rótulo, o Átrio de Base de Dados e o Átrio de Auditoria.

Opção de Segurança Avançada

As características chave para permitir uma Rede Oracle mais segura incluem o uso de serviços de criptografia como Segurança de Dados RC4 da RSA, o DES, o DES Triplo e o AES. A autenticação pode ser através do Kerberos, RADIUS ou do Ambiente de Computação Distribuída. Checagens de integridade de dados em redes usam o MD5 ou o SHA-1.

Opção de Segurança de Rótulo

A Segurança de Rótulo Oracle controla acesso a dados ao comparar rótulos associados com linhas de dados com autorizações que também usam rótulos atribuídos aos usuários através de seus privilégios. Múltiplos níveis de autorização são possíveis dentro de uma mesma base de dados. Autorizações de segurança de rótulo são gerenciadas através de um Gerenciador de Políticas. Políticas são mantidas diretamente na base de dados em vez de através de visualizações, dessa forma simplificando muito o gerenciamento de acesso a dados e permitindo uma implementação mais segura.

Opção de Átrio de Base de Dados

A Opção de Átrio de Base de Dados Oracle permite controle refinado de acesso a dados para todos que possam interagir com a base, incluindo os administradores. O administrador de segurança pode criar fatores para definir capacidade de acesso à base e auditar dimensões específicas de segurança. Num nível ainda mais detalhista, domínios de dados podem ser definidos para limitar o acesso para esquemas e competências específicos.

Servidor de Átrio de Auditoria

O Servidor de Átrio de Auditoria Oracle monitora as tabelas de auditoria da base de dados, os logs de repetição de dados e os arquivos de auditoria do sistema operacional à procura de atividades suspeitas. Ele pode gerar relatórios ou enviar alertas quando essas atividades incomuns ocorrerem.

Ferramentas de Desenvolvimento Oracle

Muitas ferramentas da Oracle estão disponíveis para desenvolvedores para ajudar a apresentar dados e desenvolver aplicativos Oracle mais sofisticados.

JDeveloper Oracle

O JDeveloper permite o desenvolvimento de aplicativos Java básicos sem a necessidade de escrever o código. Ele inclui um assistente de Formulário de Dados, um assistente rápido para Beans para criar JavaBeans e classes BeanInfo e um assistente de Distribuição. Inclui também características de desenvolvimento de bases de dados como os diversos drivers Oracle, um Editor de Conexões para ocultar a complexidade da API JDBC, componentes de dados para vincular a controles visuais e um pré-compilador SQLJ para embutir SQL no código Java de forma a possibilitar seu uso com as bases Oracle. Pode-se também distribuir aplicativos desenvolvidos usando o JDeveloper usando o Servidor de Aplicativos Oracle. Embora o JDeveloper use assistentes para permitir que programadores criem objetos Java sem escrever o código, o resultado final é gerado através de código desse tipo.

Desenvolvedor de SQL Oracle

O Desenvolvedor de SQL Oracle pode ser usado para conectar qualquer base de dados Oracle. Ele pode criar conexões para as bases, navegar pelos objetos nelas, criar e modificar objetos, consultar e atualizar dados, exportar dados e comandos de definição de dados, importar dados, processar comandos e criar e executar relatórios. As ferramentas do produto suportam edição, depuração e execução de scripts PL/SQL. Além disso, o Desenvolvedor SQL pode ser apontado para bases que não sejam da Oracle para visualizar seus objetos particulares e dados e tem a capacidade de iniciar uma migração para uma base de dados Oracle.

Desenvolvedor de Formulários Oracle

O Desenvolvedor de Formulários Oracle é uma ferramenta para criar aplicativos baseados em formulários e gráficos para distribuição no padrão tradicional cliente/servidor ou como programas em arquiteturas de três camadas baseados em navegadores, tudo através do Servidor de Aplicativos. Ele é uma linguagem de desenvolvimento de quarta geração. Com uma 4GL, define-se aplicativos ao atribuir valores para propriedades, em vez de escrever código procedural. O produto suporta uma ampla variedade de clientes, incluindo programas comuns do padrão cliente/servidor e baseados em Java. Ele também inclui uma JVM embutida para executar previamente aplicativos destinados à Internet.

Desenvolvedor de Relatórios Oracle

O Desenvolvedor de Relatórios Oracle fornece um ambiente para desenvolvimento e distribuição rápidos de relatórios baseados na Internet usando o Relatórios para o Servidor de Aplicativos Oracle. Os dados podem ser formatados em tabelas, matrizes, relatórios de grupos, gráficos e em combinações destes. Apresentação de alta qualidade é possível usando CSS.

Designer Oracle

O Oracle Designer fornece uma interface gráfica para Desenvolvimento Rápido de Aplicativos para todo o processo de desenvolvimento de bases de dados. Projetos e alterações são mantidos num repositório multiusuário. Essa ferramenta pode fazer engenharia reversa em tabelas e esquemas de bases de dados existentes para reutilização e re-projeto com bases da Oracle e de outras empresas.

O Designer também inclui geradores para criar aplicativos para o Desenvolvedor Oracle, clientes HTML que usam o Servidor de Aplicativos, e em C++. O Designer pode gerar aplicativos ou fazer engenharia reversa em programas existentes ou outros que tenham sido alterados por desenvolvedores. Essa capacidade permite um processo chamado engenharia em ciclos, no qual um desenvolvedor gera um aplicativo, modifica-o, e então faz a engenharia reversa dessas alterações e as armazena no repositório do Designer.

Edição de Administração do Descobridor Oracle

A Edição de Administração do Descobridor Oracle permite que administradores configurem e mantenham a Camada de Usuário Final do Descobridor para as gerações anteriores de ferramentas de inteligência de negócios da Oracle. Essa camada serve para proteger da complexidade do SQL as análises de negócios que usam o Descobridor como uma ferramenta de análise de consultas instantâneas. Assistentes guiam o administrador através do processo de criar um EUL. Além disso, os administradores podem estabelecer limites para os recursos disponíveis para analistas, o que é monitorado pelo controlador de consultas Descobridor.

Portal Oracle

O Portal Oracle é uma ferramenta baseada em HTML para desenvolver aplicativos que se aproveitam da Internet e para páginas de Internet baseadas em conteúdo. Sistemas de aplicativos Portal são desenvolvidos e distribuídos num ambiente simples de navegador. O Portal inclui assistentes para desenvolver componentes de aplicativos incorporando “servlets” e acesso a outros sites HTTP. O Portal pode ser programado para ser personalizável pelos usuários e é distribuído como camada intermediária do Servidor de Aplicativos Oracle.

Bases de Dados Embutidas

Embora a família de bases de dados Oracle possa ser distribuída para aplicativos embutidos, seu tamanho e funcionalidade podem ser mais do que é necessário. Hoje em dia, a Oracle oferece outras bases de dados embutidas incluindo a TimesTen, a BD Berkeley e a Base de Dados Leve Oracle. Esses sistemas de base de dados tem código-fonte exclusivo feito para diminuir seu tamanho e servir a diferentes propósitos.

TimesTen Oracle

O TimesTen da Oracle é uma base de dados relacional que é armazenada na memória física e é tipicamente usada quando cargas de trabalho muito altas de processamento de transações de alta performance são necessárias. Acesso para a base de dados TimesTen é possível via SQL, JDBC, JMS e ODBC. Essas bases podem ser distribuídas como exclusivas ou compartilhadas e podem ser criadas como permanentes ou temporárias.

A base é atualizada recolhendo dados usando as bibliotecas TimesTen distribuídas em aplicativos ou através do uso de uma opção de Conexão de Cache a uma base de dados Oracle. Porque os dados são lidos e atualizados na memória, o tempo de resposta médio de atualização ou leitura é tipicamente medido em milionésimos de segundo. A opção de Conexão de Cache suporta cache tanto de leitura quanto de escrita para dados das bases Oracle. As atualizações podem ser bidirecionais entre o TimesTen e o Oracle.

Como é comum para bases de dados embutidas, o TimesTen exige quase nenhuma administração à medida que executa. Replicação é possível entre uma base TimesTen e outra através de uma opção e ela é feita, por padrão, de forma assíncrona.

BD Berkeley da Oracle

O Berkeley DB da Oracle é uma base de dados embutida extremamente pequena que permite travamento de dados em nível de registro. Ela vem em versões Java e XML. É projetada para ser distribuída com e executar no mesmo processo que um aplicativo. Quando essa base é distribuída dessa forma, nenhuma administração de base de dados em separado é necessária. O tamanho dessa base quando vazia pode ser tão pequeno quanto 400KB.

A edição Java da base suporta a API de Transações Java, a Arquitetura de Conexão J2EE, e as Extensões de Gerenciamento Java. A base de dados é um único arquivo JAR que tem 820KB e executa na mesma Máquina Virtual Java que o aplicativo. Uma Camada de Persistência Direta é suportada para acessar objetos Java.

A Edição XML da BD Berkeley é usada com mais frequência em aplicativos baseados em rede onde o conteúdo é gerenciado. XQuery e Xpath são suportados.

Ambas as edições podem ser configuradas para alta disponibilidade usando replicação. Recuperação automática é também suportada. Decisões de distribuição como essas são feitas pelo desenvolvedor do aplicativo durante o tempo de projeto do programa.

Oracle Lite

O Oracle Lite é um conjunto de produtos que permite o uso em dispositivos portáteis de aplicativos centrados em bases de dados. Componentes chave do Oracle Lite incluem a Base de Dados Oracle Lite, o Kit de Desenvolvimento Portátil e o Servidor Portátil.

A base de dados Oracle Lite tem de 50KB a 1MB dependendo da plataforma. Aplicativos escritos usando SQL Portátil, C++ e Java podem ser usadas com essa base. ODBC também é suportado. O suporte a Java inclui procedimentos armazenados Java e JDBC. A base Lite é também projetada para ser auto-ajustável e auto-administrável e é suportada em dispositivos portáteis que executem Windows CE, Symbian, Windows e Linux.

Num uso típico do Oracle Lite, o usuário vai conectar seu dispositivo portátil executando a base Lite num servidor de base de dados Oracle muito maior. Os dados são então automaticamente sincronizados entre os dois sistemas. O usuário então encerrará a conexão e trabalhará desconectado. Depois de ter efetuado suas tarefas, ele vai conectar e sincronizar novamente os dados com o servidor da base maior.

O Oracle Lite suporta uma variedade de capacidades de sincronização, incluindo as seguintes:
     - sincronização bidirecional entre o dispositivo portátil e as bases de dados maiores;
     - modelos baseados em Publicação/Inscrição;
     - suporte para protocolos como TCP/IP, HTTP, CDPD, 802.1 e HotSync.

Pode-se definir replicação baseada em prioridades para subconjuntos de dados. Porque dados distribuídos em vários locais podem levar a conflitos a resolução automática de conflitos foi disponibilizada. Pode-se também personalizar isso.

O Servidor Portátil serve como plataforma única para publicar, distribuir, sincronizar e gerenciar os aplicativos de dispositivos portáteis. O centro de controle baseado na Internet pode ser usado para controlar o acesso para aplicativos de dispositivos portáteis. O antigo produto “Web-to-Go” da Oracle faz também parte do Servidor Portátil e serve como uma forma centralizada baseada em assistentes de desenvolvimento e distribuição de aplicativos.

Ligue a vontade para qualquer celular ou fixo em todo o Brasil, EUA e Canadá, através do 99TelexFREE. Teste nosso serviço por 1 hora gratuitamente: http://www.telexfree.com/ad/marcelmesmo 

sexta-feira, 28 de outubro de 2011

CMM – Capability Maturity Model

O CMM (Capability Maturity Model) é uma iniciativa do SEI (Software Engineering Institute) para avaliar e melhorar a capacitação de empresas que produzem software. O projeto CMM foi apoiado pelo Departamento de Defesa do Governo dos Estados Unidos, que é um grande consumidor de software e precisava de um modelo formal que permitisse selecionar os seus fornecedores de software de forma adequada.

Embora não seja uma norma emitida por uma instituição internacional (como a ISO), esta norma tem tido uma grande aceitação mundial. O modelo pode ser obtido na própria Internet com facilidade no site do SEI/CMU (http://www.sei.cmu.edu/cmm). O CMM também é conhecido como SW-CMM (CMM for Software). 

Maturidade

Sendo o CMM um modelo para medição da maturidade de uma organização no que diz respeito ao processo de desenvolvimento de software, a definição do que é “Maturidade” pode ser compreendida através da análise do quadro abaixo:

Níveis

O CMM classifica as organizações em cinco níveis distintos, cada um com suas características próprias. No nível 1, o das organizações mais imaturas, não há nenhuma metodologia implementada e tudo ocorre de forma desorganizada (ad-hoc). No nível 5, o das organizações mais maduras, cada detalhe do processo de desenvolvimento está definido, quantificado e acompanhado e a organização consegue até absorver mudanças no processo sem prejudicar o desenvolvimento.

Uma empresa no nível 1 não dá garantia de prazo, custo ou funcionalidade. No nível 2, a empresa já consegue produzir bons softwares, no prazo e a um custo previsível. O nível 3 garante um excelente nível de qualidade, tanto no produto quanto no processo de desenvolvimento como um todo. Não há, no mundo, muitas empresas que tenham chegado aos níveis 4 e 5. Segue abaixo a descrição de cada nível do CMM. 

Inicial

O processo de desenvolvimento é desorganizado e até caótico. Poucos processos são definidos e o sucesso depende de esforços individuais e heróicos.

Repetível

Os processos básicos de gerenciamento de projeto estão estabelecidos e permitem acompanhar custo, cronograma e funcionalidade. É possível repetir o sucesso de um processo utilizado anteriormente em outros projetos similares. 

Definido

Tanto as atividades de gerenciamento quanto de engenharia do processo de desenvolvimento de software estão documentadas, padronizadas e integradas em um padrão de desenvolvimento da organização. Todos os projetos utilizam uma versão aprovada e adaptada do processo padrão de desenvolvimento de software da organização. 

Gerenciado

São coletadas medidas detalhadas da qualidade do produto e processo de desenvolvimento de software. Tanto o produto quanto o processo de desenvolvimento de software são entendidos e controlados quantitativamente.

Otimizado

O melhoramento contínuo do processo é conseguido através de um “feedback” quantitativo dos processos e pelo uso pioneiro de idéais e tecnologias inovadoras.

Áreas-chave de processo (key process areas ou KPAs)

Exceto no nível 1, todos os níveis são detalhados em áreas-chave de processo. Estas áreas são exatamente aquilo no que a organização deve focar para melhorar o seu processo de desenvolvimento de software. Para que uma empresa possa se quailificar em um determinado nível de maturidade CMM, deve estar realizando os processos relacionados às áreas-chave daquele determinado nível. Todas as áreas-chave estão citadas na tabela abaixo:

Objetivos das áreas-chave de processo (KPAs)

O modelo CMM define um conjunto de dois a quatro objetivos para cada área-chave. Estes objetivos definem aquilo que deve ser alcançado no caso dos processos desta área-chave serem realmente realizados.

Características comuns e práticas-base

As características comuns são itens a serem observados para que se possa verificar a implementação e institucionalização de cada área-chave de processo. Elas podem indicar se a área-chave de processo é eficiente, repetível e duradoura. São cinco as características comuns no modelo CMM e cada uma possui suas práticas-base a serem realizadas.

As práticas-chave descrevem as atividades que contribuem para atingir os objetivos de cada área-chave do processo. Em geral são descritas com frases simples, seguidas de descrições detalhadas (chamadas de subpráticas) que podem até incluir exemplos. As práticas-base devem descrever “o que” deve ser feito e não “como” os objetivos devem ser atingidos. O modelo CMM inclui um extenso documento em separado, chamado “Práticas-base para o CMM”, que lista todas as práticas-chave e subpráticas para cada uma das áreas-chave de processo. 

Conclusão

A melhoria contínua se aplica ao modelo de maturidade e às práticas, assim como ao processo de software. O impacto potencial das mudanças do CMM na comunidade de software está sendo cuidadosamente considerado, mas o CMM, a avaliação de processo de software e os métodos de determinação da capacitação de software continuarão a evoluir à medida que se ganha experiência no processo de software.

O CMM fornece uma estrutura conceitual para a melhoria da gestão e do desenvolvimento de produtos de software de uma forma consistente e disciplinada. Ele não garante que os produtos de software serão construídos com sucesso ou que todos os problemas de desenvolvimento de software serão resolvidos adequadamente. O CMM identifica práticas para um processo de software maduro e fornece exemplos da prática, mas não tem a intenção de ser ditatorial. O CMM identifica as características de um processo de software efetivo, mas a organização madura trata de todas as questões essenciais para um projeto bem sucedido, incluindo pessoas e tecnologia, tanto quanto processos.

Normas da ISO que referenciam a qualidade de software

ISO/IEC 9126

Modelo de Qualidade de Software

A qualidade de um sistema de software pode ser entendida de diversas formas e utilizando diferentes abordagens.

A norma ISO/IEC 9126, ou conjunto de normas que tratam deste assunto no âmbito da ISO, estabelece um modelo de qualidade com os seguintes componentes:
     - processo de desenvolvimento, cuja qualidade afeta a qualidade do produto de software gerado e é influenciado pela natureza do produto desenvolvido;
     - produto, compreendendo os atributos de qualidade do produto (sistema) de software. Estes atributos de qualidade podem ser divididos entre atributos internos e externos. Estes se diferenciam pela forma como são aferidos (interna ou externamente ao produto de software) e em conjunto compõem a qualidade do produto de software em si;
     - qualidade em uso, que consiste na aferição da qualidade do software em cada contexto específico de usuário. Esta é, também, a qualidade percebida pelo usuário.

Funcionalidade

A capacidade de um software prover funcionalidades que satisfaçam o usuário em suas necessidades declaradas e implícitas, dentro de um determinado contexto de uso.

Suas sub-características são:
     - adequação, que mede o quanto o conjunto de funcionalidades é adequado às necessidades do usuário;
     - acurácia (ou precisão), que representa a capacidade do software de fornecer resultados precisos ou com a precisão dentro do que foi acordado/solicitado;
     - interoperabilidade, que trata da maneira como o software interage com outro(s) sistema(s) especificado(s);
     - segurança, que mede a capacidade do sistema de proteger as informações do usuário e fornecê-las apenas (e sempre) às pessoas autorizadas.

Confiabilidade

O produto se mantém no nível de desempenho nas condições estabelecidas.

Suas sub-características são:
     - maturidade, entendida como sendo a capacidade do software em evitar falhas decorrentes de defeitos no software;
     - tolerância a falhas, representando a capacidade do software em manter o funcionamento adequado mesmo quando ocorrem defeitos nele ou nas suas interfaces externas;
     - recuperabilidade, que foca na capacidade de um software se recuperar após uma falha, restabelecendo seus níveis de desempenho e recuperando os seus dados.

Usabilidade

A capacidade do produto de software ser compreendido, ter seu funcionamento aprendido, ser operado e ser atraente ao usuário.

Note que este conceito é bastante abrangente e se aplica mesmo a programas que não possuem uma interface para o usuário final. Por exemplo, um programa batch executado por uma ferramenta de programação de processos também pode ser avaliado quanto a sua usabilidade, no que diz respeito a ser facilmente compreendido, aprendido, etc. Além disto, a operação de um sistema é uma interface Humano-Computador sujeita às avaliações de usabilidade.

Suas sub-características são:
     - inteligibilidade, que representa a facilidade com que o usuário pode compreender as suas funcionalidades e avaliar se o mesmo pode ser usado para satisfazer as suas necessidades específicas;
     - apreensibilidade, que identifica a facilidade de aprendizado do sistema para os seus potenciais usuários;
     - operacionalidade, que é como o produto facilita a sua operação por parte do usuário, incluindo a maneira como ele tolera erros de operação;
     - atratividade, que envolve características que possam atrair um potencial usuário para o sistema, o que pode incluir desde a adequação das informações prestadas para o usuário até os requintes visuais utilizados na sua interface gráfica.

Eficiência

O tempo de execução e os recursos envolvidos devem ser compatíveis com o nível de desempenho do software.

Suas sub-características são:
     - comportamento em relação ao tempo, que avalia se os tempos de resposta (ou de processamento) estão dentro das especificações;
     - utilização de recursos, que mede tanto os recursos consumidos quanto a capacidade do sistema em utilizar os recursos disponíveis.

Manutenibilidade

A capacidade (ou facilidade) do produto de software ser modificado, incluindo tanto as melhorias ou as extensões de funcionalidade quanto as correções de defeitos.

Suas sub-características são:
     - analisabilidade, que identifica a facilidade em se diagnosticar eventuais problemas e identificar as causas das deficiências ou das falhas;
     - modificabilidade, que caracteriza a facilidade com que o comportamento do software pode ser modificado;
     - estabilidade, que avalia a capacidade do software de evitar efeitos colaterais decorrentes de modificações introduzidas;
     - testabilidade, que representa a capacidade de se testar o sistema modificado, tanto nas novas funcionalidades quanto nas funcionalidades não afetadas diretamente pela modificação. 

ISO/IEC 15504

A ISO/IEC 15504 define um modelo de referência de processo que identifica e descreve um conjunto de processos considerados universais e fundamentais para a boa prática da engenharia de software, e define 6 níveis de capacidade, sequenciais e cumulativos, que podem ser utilizados como uma métrica para avaliar como uma organização está realizando um determinado processo e também podem ser utilizados como um guia para a melhoria.

A ISO/IEC 15504 define também um guia para a orientação da melhoria de processo, tendo como referência um modelo de processo e como uma das etapas a realização de uma avaliação de processo. Este guia sugere 8 etapas sequenciais, que inicia com a identificação de estímulos para a melhoria e o exame das necessidades da organização.

Documentação

Objetivo: desenvolver e manter documentos que registrem informações produzidas por um outro processo ou atividade.

Envolve a produção, o controle, a manutenção, a revisão, a aprovação e a publicação de documentos e o seu acesso. 

Gestão de configuração

Objetivo: estabelecer e manter a integridade de todos os produtos de trabalho de algum processo ou do projeto.

Envolve a definição de uma estratégia de gestão de configuração, a identificação de itens de configuração, o controle de acesso e de mudanças de itens, o registro da situação de todos os itens e o seu armazenamento e manuseio de forma controlada. 

Garantia de qualidade

Objetivo: assegurar que os produtos de trabalho e as atividades de um processo ou projeto estejam de acordo com os requisitos especificados e satisfaçam aos planos e às regras estabelecidas.

Devem ser estabelecidos os procedimentos para o tratamento de desvios a não-conformidades com relação a regras, procedimentos e padrões.

Deve ser coordenada com os processos de verificação, validação, revisão conjunta, auditoria e resolução de problemas.

As pessoas responsáveis pela garantia da qualidade devem ter autonomia organizacional e autoridade para realizarem as suas tarefas sem interferências dos responsáveis pelo desenvolvimento do software. 

Verificação

Objetivo: confirmar que cada produto de trabalho ou serviço resultado de um processo reflita corretamente as especificações de entrada do processo.

Envolve a definição de uma estratégia de verificação, de critérios de verificação para todos os produtos de trabalho e para as atividades de verificação.

Deve assegurar que os defeitos encontrados sejam removidos dos produtos de trabalho e que os resultados sejam disponibilizados para os clientes.

Normalmente envolve a realização de testes e está relacionado aos processos ENG.1.6 e ENG.1.7.

Pode também fazer uso de técnicas como peer, reviews, provas formais e análise de rastreabilidade. 

Validação

Objetivo: confirmar que estão satisfeitos os requisitos para o uso pretendido de cada produto de trabalho ou serviço resultado de um processo.

Envolve a definição de uma estratégia de validação, de critérios de validação para todos os produtos de trabalho e para as atividades de validação.

Deve assegurar que os problemas encontrados sejam resolvidos, que os resultados sejam disponibilizados para os clientes e para outras organizações internas e que os produtos sejam adequados para o uso pretendido.

Normalmente está relacionado ao processo de teste de integração e teste de software ENG.1.7. 

Revisão Conjunta

Objetivo: permitir ao cliente a visibilidade do andamento do desenvolvimento quando comparado ao especificado no contrato.

As revisões formais dever tratar, ao longo de todo o ciclo de vida de desenvolvimento, tanto dos aspectos técnicos quanto dos administrativos.

Envolve revisões periódicas em datas pré-estabelecidas da situação de produtos e atividades por todas as partes interessadas, da solução de todas as pendências, todos os problemas e todos os desvios encontrados. 

Auditoria

Objetivo: determinar, de forma independente, a conformidade de produtos identificados e atividades com planos, requisitos e com o contrato.

Deve ser definida a estratégia de programação da auditoria, especificando quais itens serão auditados contra quais regras.

A auditoria deve ser conduzida por pessoal independente àquele que executa o desenvolvimento e os problemas encontrados deverão ser comunicados aos responsáveis para a devida ação corretiva. 

Resolução de Problemas

Objetivo: assegurar que todos os problemas encontrados sejam analisados, resolvidos (ação corretiva) e que tendências sejam observadas visando o planejamento e a execução de ações preventivas.

Projeto orientado a objetos

1. Orientação a objetos

A programação orientada a objetos é uma maneira de programar com uma organização e pensamentos diferente da programação estruturada. Quando ouvimos “programação estruturada”, podemos esperar basicamente funções e procedimentos, concentramo-nos na ação a ser executada. Na programação orientada a objetos temos classes, objetos, métodos. Pensamos nas entidades existentes e como elas se relacionam.

A orientação a objetos fornece maior facilidade para modificar um código já escrito e uma visão mais simples do projeto em si, graças a características como encapsulamento. Amarramos características junto às funcionalidades, concentrando código e prevenindo erros.

1.1 Classes

A análise do projeto revelará muitas “entidades” das quais desejamos salvar certos dados e para as quais desejamos delegar determinados processos. As classes são as plantas dessas entidades, possuindo apenas as definições sobre elas, sem nenhum tipo de dado.

Um exemplo simples seria pensar nas pessoas: esperamos que elas possuam idade, nome, peso, altura, dentre outras características; também esperamos que possam pensar, se expressar, se divertir, etc; essa é a nossa definição (simplificada) para a Classe pessoa.

Definimos o que uma pessoa precisa ter e o que ela sabe fazer, mas sendo uma classe, a “Pessoa” em si não pode ter uma idade. Podemos pensar como se fossem plantas de construção de casas. A partir de uma definição (do desenho, métrica, etc) construímos objetos que terão os dados esperados.

1.2 Objetos

Se numa análise detectamos a necessidade de guardar determinadas informações sobre várias pessoas, criamos a classe Pessoa. Mas não basta apenas saber o que uma pessoa pode ter e fazer. Os objetos implementam as definições das classes e as preenchem com dados reais. “Roberto tem 23 anos, pesa 80Kg e mede 1,80cm de altura.”

Roberto é um objeto, uma instância da classe Pessoa. Apesar de “como se divertir” ter sido definido na classe, ele possui dados onde antes apenas deixamos lacunas vagas.

1.3 Propriedades

As propriedades são os dados, o estado cujos Classes e objetos possuem. Um exemplo de propriedade é a idade. Desejamos saber quantos anos uma pessoa tem, portanto acrescentamos essa informação à nossa definição (classe).

1.4 Métodos

Os métodos são “habilidades” as quais definimos na Classe, cujos objetos são capazes de reproduzir. Vamos supor que, no projeto analisado, todas as pessoas necessitem saber falar. Criamos um método “falar” e dentro dele dizemos como essa ação é executada.

1.5 Herança

É possível, na orientação a objetos, termos classes que “herdam” de outras. Todos os dados, públicos ou protegidos, da classe “pai” passam a existir na classe que herda, na “filha”. Isso possibilita modelos mais simples e com menos repetições de dados.

Imagine que, em modelo imaginário, fossem necessárias as classes funcionário e gerente. O funcionário possui uma série de dados e ações básicas. O gerente também deve possuir essas mesmas características, mas com alguns acréscimos, como poder fazer um pedido de compra ou ter uma bonificação maior de salário.

Isso poderia ser resolvido escrevendo uma classe para cada um, porém, se fizermos gerente herdar de funcionário, centralizaremos as informações e evitaremos mais escrita de código.

1.6 Modificadores de acesso

As propriedades e os métodos existentes devem definir o quão “expostos” estão em relação ao ambiente, em relação às outras classes. Lidamos, em geral, com modificadores públicos, privados, protegidos e estáticos, porém, existem outros. Alguns dependem da sua opção de linguagem de programação.

Modificadores públicos expõem a informação para todas as outras classes. Todos podem ter acesso de leitura e modificação, caso seja uma propriedade. Um método público pode ser utilizado por todos.

Utilizando o modificador privado, protegemos a informação ou o método apenas para uso interno à classe, cortando qualquer acesso externo. Um exemplo prático é o ato da fala. Sabemos que precisamos (ou ao menos deveríamos) pensar nas palavras e então pronunciá-las. Porém, nosso corpo dispara uma série de eventos e ações para que a tarefa seja concluída, ações que só ele próprio (e talvez médicos) sabe exatamente porque e como estão ocorrendo.

Entre público e privado temos o modificador Protegido. Ele expõe métodos e propriedades para as classes herdeiras, permitindo acesso direto, como se os protegidos fossem públicos. Entretanto, para classes não herdeiras, o acesso continua fechado. Não é uma prática muito comum, mas é possível.

O modificador de acesso estático permite que os dados e os métodos independam de objetos. O que é estático pertence à classe, todos os objetos que existirem compartilharão da mesma informação.

2. Análise orientada a objetos

Antes de iniciar o projeto, precisamos modelar o problema a ser resolvido. Na abordagem orientada a objetos, buscamos identificar as classes (entidades), o seu funcionamento interno (propriedades, métodos) e os relacionamentos existentes. As informações obtidas geralmente são representadas via diagramas da UML.

O cliente é responsável por fornecer a descrição do problema e um membro da equipe de desenvolvimento, geralmente o analista, deve fazer a modelagem de acordo com as informações disponíveis. Não nos preocupamos com plataformas, linguagens ou hardware neste momento. Apenas desejamos entender o problema, representar o problema, e mapear os elementos.

Basicamente, podemos entender que a análise consiste de todas as atividades feitas com ou para o conhecimento do cliente. A informação produzida é aquela que o cliente deve discutir e aprovar. Com essa definição, a análise invade um pouco o "lado da solução", pois o cliente deve discutir alguns tipos de interações que ocorrerão na interface do usuário, etc.

2.1 Representações

Podemos usar diversas representações para a análise orientada a objetos, mas um padrão adotado e bem aceito é a Linguagem de Modelagem Unificada, a UML. Seu longo repertório de diagramas e sua ampla divulgação facilitam a visão do projeto tanto na etapa de análise quanto na de projeto.

Um diagrama bem “íntimo” à análise é o de Use Case (Caso de Uso), no qual modelamos as interações existentes com o sistema a ser desenvolvido. A partir dele obtemos requisitos funcionais para as classes do sistema.

2.2 UML

No início dos anos 90 foi caracterizada pelo nascimento de uma grande quantidade de métodos e notações para suportar o desenvolvimento orientado a objetos, que tinha demonstrado ser um meio eficaz para produção de software.

Por iniciativa da OMG (Object Management Group), foi aberta a proposta para apresentação de trabalhos de padronização de um modelo para desenvolvimento de sistemas que atendesse ao modelo orientado a objetos. O trabalho vencedor foi apresentado pela Rational Software Corporation e recebeu o nome de UML (Unified Modeling Language).

2.3 Exemplo de Caso de Uso

Para utilizar o Caso de Uso é necessário identificar os atores, entidades que podem interagir com o sistema. Podem ser pessoas ou até mesmo outros sistemas independentes. Para descobrí-los, utilizamos perguntas como “Quem fornece dados?”, Quem inicializa o sistema?”, etc. Também devemos dar um nome para cada caso de uso, representados por balões, além de nomear os atores.
Modelagem simplificada de uma venda em um sistema

Temos o ator Cliente, que pode Buscar um produto e também efetuar uma compra. O ator Vendedor interage com o cliente a efetuar uma compra e criar um cadastro, mas ao buscar um produto, a interação do Cliente é direta com o sistema.

O caso de uso “Checar Cadastro” é, obrigatoriamente, realizado a cada compra. A marcação <<include>> identifica graficamente essa necessidade. Esse exemplo é simples. Podem existir outras marcações e casos de uso.

2.4 Diagrama de Sequência

O diagrama de sequência é usado principalmente para mostrar as interações entre os objetos na ordem sequencial que as interações ocorrem. Muito parecido com o diagrama de classe, os desenvolvedores normalmente pensam que diagramas de sequência foram feitos exclusivamente para eles.

No entanto, os funcionários de uma organização de negócios podem encontrar diagramas de sequência úteis para comunicar como a empresa trabalha atualmente, mostrando como vários objetos de negócios interagem. Além de documentar os assuntos correntes de uma organização, um diagrama de sequência de nível empresarial pode ser usado como um documento de requisitos que registra os requisitos para a implementação do sistema no futuro.
Exemplo de diagrama de sequência. O usuário entra com seus dados e o formulário retorna se é um usuário válido ou não.

3. Projeto Orientado a Objetos

Depois de feita a análise, possuímos a descrição do problema o qual se deseja resolver e uma descrição das classes existentes. Na etapa de projeto, adicionamos novos detalhes complementares para as classes anteriormente mapeadas, que podem ser necessárias do ponto de vista técnico.

Apesar da adição de detalhes serem uma etapa importante, esta pode ser adiada até a implementação, visto que nos preocupamos com os objetos, e não unicamente com cada detalhe.

Podemos inclusive dividir em duas partes: Projeto de Sistemas e Projeto de Objetos. Na primeira, nos concentramos na especificação do sistema, onde cada classe pertence e na interface do usuário. Na segunda, focamos nas classes, sua completeza e seu funcionamento.

Essa flexibilidade é utilizada pela metodologia MDA (Model Driven Architecture), outra criação da OMG, que propõe a divisão do projeto em várias etapas, umas abstratas, que independem da implementação, e outras mais detalhadas e focadas na plataforma, que podem ser utilizadas como base para geração de código.

O resultado do projeto orientado a objetos é uma documentação rica em detalhes, que pode ser passada para código orientado a objeto sem maiores dificuldades.

3.1 Vantagens

O mapeamento do projeto na metodologia orientada a objetos permite uma transcrição mais rápida da etapa de análise. Além disso, podemos utilizar classes e objetos criados em outros projetos, como se estivéssemos re-utilizando componentes.

As representações com a UML permitem uma visão melhor e mais clara do sistema, desde a etapa de análise. Todo o material gerado na etapa de projeto serve como base para a construção do código orientado a objeto.

Conforme geramos a etapa de projeto, revisamos a análise e podemos manter a documentação atualizada. Também podemos utilizar padrões de projetos, que são "soluções prontas" para necessidades comuns num projeto.

3.2 Diagrama de Classe

Mais utilizado na etapa de projeto, a UML dispõe do Diagrama de Classe, que nos permite caracterizar melhor uma classe, do ponto de vista técnico. Sabemos, pela análise, que o sistema possui clientes. Sabemos que eles possuem nome, identificação, CPF e podem realizar algumas ações.

Porém, isso não é o suficiente para o ponto de vista “técnico”. Nome, identificação e CPF precisam de um domínio. Por exemplo, numérico inteiro, com casas decimais, string, etc. Também pode ser detectada a necessidade de um cliente possuir um relacionamento com a classe Produto. No diagrama podemos mostrar essa ligação de uma forma mais clara.
Exemplo de Diagrama de Classe

Conclusão

O uso de análise, projeto e programação orientados a objetos permite um desenvolvimento mais robusto de uma aplicação. Encontramos maiores dificuldades nesse modelo, porém, o processo bem executado nos deixa com uma documentação pronta para o código e para um sistema flexível em funcionamento.

De uma forma simples, podemos colocar que a análise mapeia a necessidade, “entende” o que a aplicação deve fazer. Depois que esse entendimento é validado com o cliente, precisamos pensar numa estrutura que atenda as necessidades vistas anteriormente. O projeto se encarrega de adicionar detalhes à análise pensando em como resolver os problemas.

Por fim, a programação orientada a objetos é a responsável por dar vida à aplicação, seguindo as informações vindas da etapa de projeto.