terça-feira, 2 de abril de 2013

Modelos de componentes


Introdução
Um modelo de componente define novos recursos e serviços que permitem aos desenvolvedores de aplicação implementar, gerenciar, configurar e implantar componentes de forma padronizada, facilitando a reutilização e a manutenção do sistema.
Criada pelo Object Management Group (OMG), o modelo CORBA estabelece e simplifica a troca de dados entre sistemas distribuídos. Propõe a comunicação local e/ou remota entre aplicações que têm como base a tecnologia orientada a objetos. Entretanto, a especificação de CORBA não atende bem a determinados pontos tais como: Padrão para implantação, estender funcionalidades de objetos CORBA, definição de serviços, entre outros, levando a OMG a adotar o CORBA Component Model (CCM) como parte da especificação de CORBA 3.0.
O CCM é uma extensão do modelo de objetos CORBA criado para tratar os problemas citados a cima e que foram deixados em aberto por esta arquitetura.
O modelo descreve como um componente é constituído, como armazena suas propriedades internas (atributos) e como se comunica com outros componentes (portas). Os componentes criados usando o padrão CCM podem ser instalados em servidores de diversos fornecedores (que respeitam a especificação CCM).
OMG – Padronização
O Object Management Group (OMG) é um consórcio internacional da indústria de software fundado em maio de 1989 com o propósito de criar padrões para possibilitar a interoperabilidade e portabilidade das aplicações distribuídas utilizando a tecnologia de objetos.
A organização desenvolve padrões de integração de uma grande variedade de tecnologias, incluindo padrões de middleware e perfis, são baseados na arquitetura de agente de solicitação de objeto (CORBA) e suporta uma grande variedade de indústrias.
Os trabalhos de padronização do OMG são executados sobre um modelo conceitual denominado core object model e uma arquitetura geral de referência denominada Object Management Architecture (OMA) que busca definir de forma abstrata as várias funcionalidades necessárias a computação distribuída, onde cada componente de software é representado como um objeto.
O OMG não tem como propósito a produção de software, somente especificações, criadas a partir de ideias e tecnologias propostas e discutidas pelas organizações membro envolvidas com a computação distribuída.
Dentre os muitos membros podemos destacar as grandes industrias tais como Dell, Ericsson, Microsoft, IBM, HP e Apple.
Origem CCM – Modelo Corba
CORBA é uma tentativa de cooperação da indústria de computação coordenada pelo OMG no sentido de desenvolver um padrão aberto para possibilitar computação distribuída entre ambientes de aplicação. A inovação do modelo foi a orientação a objeto e sua independência em relação a protocolo, sistema operacional, linguagem de programação de plataforma de hardware.
Para utilizar o modelo, exige-se apenas que a aplicação, escrita de qualquer linguagem, instalada em qualquer lugar da rede, mapeie sua interface para IDL (Interface Definition Language), que se trata da linguagem neutra do padrão, desenhada para a disponibilização e acesso a serviços (métodos e funções) de objetos remotos CORBA.
A arquitetura CORBA possui duas partes de destaque: A IDL – que é empregada para estabelecer contratos, limitando a interação das aplicações e estabelecendo as interfaces com os clientes, constituindo-se uma linguagem neutra, dispõe de mecanismos para que as interfaces dos componentes de aplicações distribuídas possam especificar herança de classes, eventos, atributos e exceções em padrão compatível com a base ORB. E sua outra parte ORB – que funciona como uma ponte, disponibilizando a infra-estrutura de comunicação para enviar e receber solicitações e respostas dos clientes para os servidores.
CORBA permite a implementação em linguagens de programação bastante difundidas atualmente como "C", "C++" e Java.
Estrutura CCM
A estrutura de componente CCM possuí quatro tipo de portas, que são os pontos de comunicação dos componentes.
  • Facetas - interfaces fornecida pelo componente;
  • Receptáculos - referências para outros objetos com os quais o componente interage;
  • Emissores de evento - utilizadas para produzir eventos;
  • Receptores de eventos - utilizadas para consumir eventos.
Eventos - Estabelecem uma comunicação entre componentes.
Completando a estrutura verifica-se a existência de cinco tipos de categorias:
  • Serviço (Service) - Componente limitado a duração de execução do método. São usados para chamar métodos como consultas ou execução de código;
  • Sessão (Session) - Disponível durante toda a existência de uma chamada, ou seja, ele fica aberto de forma independente para cada cliente, armazenando as informação enquanto o cliente estiver executando funções. São usados para operações do tipo iterador, ou quando o resultado de uma operação chamada for pré-requisito para o acionamento da próxima operação;
  • Processo (Process) - Componentes persistentes usados para representar, no servidor, processos de negócio em lugar de representar tabelas de BD;
  • Entidade (Entity) - Continua no sistema, mesmo que o cliente que o chamou tenha o fechado, ou seja, podem ser obtidos posteriormente através de uma chave primária.São usados para realizar mapeamento, assim, cada instância representa na forma de objetos uma determina "tupla" de uma tabela.
  • Vazio (Empty) - Um componente vazio tem seu funcionamento customizado pelo desenvolvedor, através dos descritores de instalação e da implementação do executores.
A modelagem CCM é usada por clientes (usuários comuns) para realizar operações através de referência a uma instância, ou seja, podem navegar pelas interfaces dos componentes por intermédio defina em CORBA.Também é usada por desenvolvedores que configuram componentes.
Para que serve?
O modelo CCM estende o modelo de objetos de CORBA, definindo funcionalidades e serviços que permitem que o desenvolvedor implemente, gerencie, configure e implante componentes que integrem os serviços de CORBA, como segurança, transações, persistência e eventos em um ambiente padronizado.
Uma das principais contribuições do CCM é a padronização do processo de desenvolvimento de componentes, tratando alguns problemas deixados em aberto pela arquitetura CORBA. Esta padronização pode ser resumida como: O desenvolvedor de componentes define, em IDL, as interfaces que as implementações dos componentes irão suportar, como armazena suas propriedades internas (atributos), como se comunica com outros componentes (portas), implementar os componentes utilizando ferramentas disponibilizadas pelo fornecedor do CCM, empacotar o componente em uma DLL e implementar o componente por mecanismo desenvolvido pelo fornecedor do CCM.
Os componentes são armazenados num pacote contendo sua implementação e a descrição de suas características, permitindo que o executor tenha acesso às conexões em suas portas, assim como utilizar serviços de objetos da arquitetura. Esse pacote é então utilizado para implantar o componente num servidor de componentes, onde esse pode ser então utilizado por clientes.
Estes componentes são desenvolvidos para executar uma atividade específica combinada para compor aplicações. O componente encapsula, dentro de si, seu projeto e implementação, e oferece serviços, por meio de interfaces para o meio externo. Em geral são desenvolvidos usando os métodos, técnicas, linguagens e ferramentas tradicionais, podendo ser facilmente utilizados e reutilizados em outras aplicações ou fornecidos por terceiros.
Com utilização destes componentes, além de diminuir o tempo para o desenvolvimento do software, a confiabilidade também é melhorada, pois os componentes são testados individualmente.
Outra vantagem do uso de componentes é a manutenção do software, pois os componentes podem ser substituídos e atualizados independentemente do restante da aplicação, e esta atualização é feita pelo fornecedor do componente.


Conclusão
Um modelo de componente define a forma como os componentes são vistos, aspectos da estrutura interna, mecanismo usado para a comunicação entre os componentes, o processo de desenvolvimento, de distribuição e de implementação.
Os componentes desenvolvidos a partir do modelo fornecem serviços a terceiros através de suas interfaces contribuindo para que o tempo de desenvolvimento seja diminuído, devido a reutilização dos códigos, e que a confiabilidade e facilidade na manutenção do software sejam melhorados.


Referências
PUC, Componentes de software, São Paulo, Disponível em <http://www2.dbd.puc-rio.br/pergamum/tesesabertas/0210477_04_cap_02.pdf> Acesso em 16 mar. 2013.
BARBOSA, Nadia Milena, UFCG, O que é CCM?, Paraíba, Disponível em <http://www.dsc.ufcg.edu.br/ ~wdcopin/VWDCOPIN/artigos/nadia/WDCOPIN_nadia.pdf> Acesso em 16 mar. 2013.
NARDI, Ricardo Alexandre, UFPE . Pernambueco, Disponícel em <http://www.cin.ufpe.br/~cagf/sdgrad/aulas/CCM.pdf> Acesso em 16 mar. 2013.

10 comentários:

  1. O problema do CORBA é que ele não tem uma implementação padrão em sua totalidade, e falta suporte para as que existem. Isto dificulta a implementação e o funcionamento de programas que poderiam se beneficiar com as características propostas pelo CORBA. Esta falta de suporte já causa grandes dificuldades para executar os programas, fica mais complicado ainda quando tentamos implementar ou até mesmo compilar os programas. Estes fatores são a grande causa do CORBA não
    ser utilizado popularmente. Assim, outras opções, mais simples de se realizar este tipo de serviço, como web services, são utilizadas, ainda que percam algumas das características propostas pelo CORBA.
    Uma ótima característica do CORBA é que por definição, sua estrutura abstrai os conceitos de sistemas operacionais, protocolos de comunicação, linguagens de programação e hardware. Ou seja, um sistema que implementa esta API é capaz de dar suporte a inúmeros outros sistemas que tenha interesse em compartilhar objetos.
    Além do benefício e facilidade do reuso de objetos, ainda se tem a flexibilidade de poder integrar ambientes heterogêneos. Outro grande fator que aprova o uso do CORBA é que os objetos são indiferentes quanto a sua localização, o que proporciona um aumento muito grande da confiabilidade dos sistemas, pois os objetos podem ser transportados entre os servidores via rede, se acontecer de algum servidor ser desconectado o mesmo objeto pode ser transportado para outro servidor e continuar respondendo as solicitações de forma transparente para os clientes.

    ResponderExcluir
  2. Trabalho ficou Show de bola...

    Pesquisando sobre este assunto no qual não tinha conhecimento consegui ver que atualmente, sistemas CORBA são utilizados principalmente dentro de redes de empresas, isolados e protegidos do qualquer outro ambiente.Outras áreas onde o uso de CORBA ainda é importante são as áreas de sistemas embarcados e sistemas de tempo-real, onde alto desempenho é um fator fundamental.

    Problemas, como a complexidade, são resultados dos objetivos extremamente abrangentes do CORBA, visando possibilitar a comunicação de aplicações em heterogêneas em ambientes heterogêneos e tratar todos os níveis desta comunicação, inferindo poucas restrições nestes conceitos. Apesar de todos esses problemas relacionados à complexidade que foram citados, alguns acreditam que o CORBA “é tão complexo quanto ele precisa ser”,[2] por possibilitar a construção de sistemas muito complexos sem remover opções do usuário.

    É importante ressaltar que, sendo uma tecnologia utilizada atualmente ou não, o CORBA introduz e utiliza conceitos muito importantes e todo o aprendizado adquirido com seus sucessos e falhas são de muito valor para a área.

    Achei no site da IBM uma parte que fala sobre o CORBA e achei muito interessante, vale a pena dar uma olhada.

    http://www.ibm.com/developerworks/library/co-cjct6/

    Até mais!

    ResponderExcluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
    Respostas
    1. Parabéns!!

      Vi que vocês falam muito do modelo CORBA, fiquei curiosa o que significa, bom, segue...

      CORBA - Common Object Request Broker Architecture

      Excluir
  4. Não conhecia o modelo CORBA, mas pelo que pesquisei se trata de um modelo de objeto distribuído tão popular quanto o EJB do Java e o DCOM da Micro$oft.

    ResponderExcluir
    Respostas
    1. Realmente, o CORBA é uma tecnologia bem interessante.

      Fiquei curioso para entender o como funcionavam outros modelos parecidos com o CORBA e por fim encontrei um artigo no qual é feita uma comparação entre estes tipos de modelos.

      LINK: http://www.inf.ufrgs.br/gppd/disc/cmp167/trabalhos/mp2000-1/RicardoGoulart/index.html

      Este artigo faz um estudo comparativo entre "modelos de objetos distribuídos", no caso, o estudo é feito comparando os seguintes modelos: CORBA, DCOM e RMI1.

      Fazendo uma análise sobre os três temos:

      O RMI(Remote Method Invocation)
      Fornece o modelo para computação Distribuída com Objetos JAVA.
      Não necessita de IDL, utiliza as interfaces do próprio JAVA.
      Os Objetos podem ser passados e retornados como parâmetros, não necessitando estar no tipo primitivo
      As Desvantagens de usar o RMI, são que ele é um Software proprietário que foi projetado para trabalhar somente com java, não podendo utilizar outras ORB's.

      DCOM (Distribuited Component Object Model)
      É um Modelo de Objeto distribuído proposto pela Microsoft, onde todos os produtos da Microsoft suportam este modelo.
      Suporta objetos remotos com o protocolo ORPC
      Não é preso somente em windows, podendo ser utilizando por outros SO's como Linux e Mac.
      Utiliza Interface IDL.


      Corba (Common Object Request Broker Architecture)
      É uma tecnologia padrão de sistemas de objetos distribuídos, que oferece grande portabilidade podendo ser integrado a sistemas escritos em diversas linguagens.
      Utilizam IDL como interface para os serviços.
      Utiliza os mecanismos de comunicação ORB's (Obkect Request Brokers).
      Não permite a passagem de Objetos como parâmetros, somente tipos de dados primitivos.

      *Corba tem maior portabilidade, pois não depende da linguagem e plataforma

      Excluir
  5. Bom galera.. vou postar um Passo-a-passo de como criar uma aplicação utilizando CORBA aqui no trabalho já tive que estudar um pouco, mas acabei não utilizando.. só que é sempre bom saber :D, conhecimento nunca é demais!
    segue o link da apostila de 2011 da faculdade PUC-RIO.

    https://jira.tecgraf.puc-rio.br/confluence/download/attachments/30113794/4.CORBA_Java.pdf

    ResponderExcluir
  6. Além do CORBA podemos citar inúmeros outros modelos de componentes de arquitetura de sistemas.
    Levando em consideração a plataforma Java, temos o modelo Java Beans.
    Uma das razões pelas quais a SUN resolveu criar seu próprio modelo de componentes, ao invés de usar um já existente no mercado (CORBA, DCOM), foi a busca pela simplicidade. Os modelos existentes no mercado não foram criados originalmente para prover a componentização de aplicações, e por isso são muito complexos. Os API Java Beans são simples e permitem a construção de componentes leves.

    Quem se interessar em saber mais sobre o modelo de componentes Java Beans pode dar uma olhada no link abaixo:

    http://www.inf.ufrgs.br/gppd/disc/cmp167/trabalhos/sem99-1/T1/juarez/JavaBeans.htm

    ResponderExcluir
  7. O modelo CORBA é bem interessante mesmo, mas o principal intuito do trabalho foi incluir a complementação dele que é o CCM, esse modelo faz as melhorias dentro do modelo CORBA, corrigindo suas principais deficiências:

    "Supre as limitações do modelo de objetos CORBA
    – falta de um mecanismo padrão de implantação (deployment)
    dos objetos;
    – falta de flexibilidade para estender as funcionalidades dos
    objetos, sendo possível apenas através de herança;
    – dificuldade de utilizar e configurar aplicações e serviços
    CORBA;
    – as conexões entre os objetos não são visíveis
    – requisitos não funcionais da aplicação, como transações,
    segurança, persistência etc., são codificados juntamente
    com os métodos de negócio."

    ResponderExcluir
  8. No trabalho foi citado padrões de Middleware, mas não chegamos a pesquisar sobre. Fiz algumas pesquisas para entender melhor, segue:
    Middleware ou mediador, é um programa de computador que faz a mediação entre software e demais aplicações. É utilizado para mover ou transportar informações e dados entre programas de diferentes protocolos de comunicação, plataformas e dependências do sistema operacional.
    É composto por um conjunto de processos ou objetos em um grupo de computadores, que interagem entre si de forma a implementar comunicação e oferecer suporte para compartilhamento de recursos e aplicativos distribuídos.

    Mais informações em
    :
    http://mozartres.blogspot.com.br/2008/02/sistemas-distribudos-middleware.html

    http://unipti.files.wordpress.com/2011/09/02-aula-sistemas-distribuidos.pdf

    ResponderExcluir