Integração de Frameworks de Objetos
               Prevalecentes, Distribuídos, Robustos e
                               ...
Roteiro
 Introdução

 Prevalência de Objetos
    Prevayler

 Distribuição de Objetos
    JacORB

 Testes de Objetos
    JU...
Introdução
 Conflitos entre paradigmas
   Bancos de dados relacionais
   Orientação a objetos

 Solução:
   Uso de Framewo...
Quebra de encapsulamento dos atributos.
Necessidade de gerar mais um diagrama.
Não é adequado para aplicações que necessit...
Introdução
 Alternativa:
   Conceito de Prevalência.
   Framework Prevayler

 Requisitos Adicionais:
   Distribuição
   In...
Objetivos
Apresentar os principais conceitos e resultados
obtidos com a integração de frameworks:
  Prevalência
  Distribu...
Prevalência de
   Objetos
Prevalência de Objetos
 Conceito idealizado por Klaus Wuestefeld.
    Quebra de paradigmas

 Prevayler: Infra-estrutura de...
Prevayler – Serialização e Snapshot

 Serialização de Objetos
   Processo de transformação dos objetos em seqüência de byt...
Prevayler – Forma de Acesso
Visão geral de um sistema prevalente
Prevayler - Transações
 Interfaces de Transações
   org.prevayler.Transaction
     Execução da transação em um sistema
   ...
Prevayler - Transações
Prevayler - Replicação
          Sistemas Distribuídos
             Introduzir Redundâncias

          Replicação
        ...
Distribuição de
   Objetos
Distribuição de Objetos – Especificações
  Middleware:
    Camada intermediária
    Interfaces para resolução
     de prob...
Objetos Distribuídos -
 Arquitetura interoperável e heterogênea

 Modelo integrador COM (Core Object Model)
   Definição d...
Objetos Distribuídos -
  Mapeamento para diversas linguagens Através da IDL
Objetos Distribuídos

   ORB Open Source

   Desenvolvido na Universidade de Berlim

   Licenciado sobre GNU/GPL

   100% ...
Testes
  de
Objetos
Testes de Objetos
Requisitos

   Auxiliar o processo de integração.


   Necessidade de um framework de testes com suporte...
Testes de Objetos

  Conjuto de classes que possibilitam a automação de
testes.
    Descarta o processo de escrita de códi...
Test
                                                                      Composite: Component

                         ...
Integração de
 Frameworks
Protótipo
Distribuição Slackware 9.1

Ambiente de desenvolvimento: Eclipse

Versão do Prevayler: 2.0.1
    Dificuldade em ...
Engenharia Reversa – Diagrama de Pacotes (Prevayler)
Engenharia Reversa – Diagrama de
Classes
Testes
Aplicação de Testes:
Scalability
  Scalability: Contêm classes que
  proporcionam ações sobre o
  repositório de da...
Testes
   Número de Objetos
      100.000 - Ok
      1.000.000 - Ok
      10.000.000 - Ok
      20.000.000 – Falha
       ...
JacORB – Funcionalidades
 Servidor de Nomes
   NS
        Localização de objetos através de nomes.
        Obter referênci...
– Distribuição
    Servidor de Nomes do JacORB
Protótipo
Funcionalidades clássicas de um banco.
  Saques, depósitos, inclusão e remoção de contas.

Uso de Design Pattern...
Protótipo
Processo de Armazenamento
Protótipo - Transações
Protótipo – Distribuição

Iniciar o Servidor AplServidor
Registrar os objetos no
servidor de nomes
    Facade
    Conta
  ...
Protótipo – Distribuição
  JacORB Name Manager
Protótipo - Cliente
Protótipo - Testes
 Testes efetuados sobre as principais
 classes
   FacadeDistribuido
   GestaoPrevalenciaMediator


 Obj...
Protótipo - Testes
 Testes executados sobre o FacadeDistribuido
Protótipo - Testes
 Testes executados sobre o GestaoPrevalenciaMediator
Conclusão

 A integração das duas camadas mostrou-se
 viável através de uma infra-estrutura de
 software alternativa e abe...
Referências Bibliográficas

 Beck, K e Gamma, E. (2004), “JUnit Cookbook”, www.junit.org


 Gamma, E., Helm, R., Johnson, ...
Integração de Frameworks de Objetos Prevalentes Distribuidos,
                    Robustos e Livres




                  ...
Upcoming SlideShare
Loading in …5
×

Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

762 views
717 views

Published on

Apresentação sobre do trabalho de Integração de Frameworks de Objetos Prevalecentes, Distribuídos e Robustos em um ambiente livre

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
762
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

  1. 1. Integração de Frameworks de Objetos Prevalecentes, Distribuídos, Robustos e Livres Nelson Moraes Sozinho, João Augusto G. de Queiroz e Flávio J. M. Coelho
  2. 2. Roteiro Introdução Prevalência de Objetos Prevayler Distribuição de Objetos JacORB Testes de Objetos JUnit Protótipo Diagrama de pacotes Ambiente Conclusão
  3. 3. Introdução Conflitos entre paradigmas Bancos de dados relacionais Orientação a objetos Solução: Uso de Frameworks Conjunto de classes cooperantes para a construção de projetos reutilizáveis, ditando arquitetura do sistema. Exemplo: Framework de persistência (JDO, Hibernate, EJB).
  4. 4. Quebra de encapsulamento dos atributos. Necessidade de gerar mais um diagrama. Não é adequado para aplicações que necessitam de desempenho.
  5. 5. Introdução Alternativa: Conceito de Prevalência. Framework Prevayler Requisitos Adicionais: Distribuição Interoperabilidade Robustez Necessidade de integração
  6. 6. Objetivos Apresentar os principais conceitos e resultados obtidos com a integração de frameworks: Prevalência Distribuição Testes Propósito Verificar viabilidade técnica de se ter uma infra- estrutura de software livre e robusta.
  7. 7. Prevalência de Objetos
  8. 8. Prevalência de Objetos Conceito idealizado por Klaus Wuestefeld. Quebra de paradigmas Prevayler: Infra-estrutura de classes para armazenamento de objetos em memória. Suporte a transações Balanceamento de carga Tolerância a falhas Utiliza padrões de projetos (design patterns) para manipulação de objetos. Efetuar transações. GoF Command
  9. 9. Prevayler – Serialização e Snapshot Serialização de Objetos Processo de transformação dos objetos em seqüência de bytes. Torna possível operações feitas sobre os objetos prevalecentes. Em Java: Implementar a interface java.io.Serializable Snapshot “Fotografia” armazenada em disco de todos os objetos presentes na memória. Ao iniciar um sistema prevalecente, todas as transações são executadas, restaurando o estado anterior do sistema.
  10. 10. Prevayler – Forma de Acesso Visão geral de um sistema prevalente
  11. 11. Prevayler - Transações Interfaces de Transações org.prevayler.Transaction Execução da transação em um sistema prevalente. org.prevayler.TransactionWithQuery Execução transação, sendo retornado o objeto (em caso de sucesso) para a confirmação da operação.
  12. 12. Prevayler - Transações
  13. 13. Prevayler - Replicação Sistemas Distribuídos Introduzir Redundâncias Replicação Redundância Redundâncias em Grupos Balanceamento de Carga
  14. 14. Distribuição de Objetos
  15. 15. Distribuição de Objetos – Especificações Middleware: Camada intermediária Interfaces para resolução de problemas de distribuição. Tecnologias RMI – SUN COM/DCOM – Concorrente CORBA - OMG
  16. 16. Objetos Distribuídos - Arquitetura interoperável e heterogênea Modelo integrador COM (Core Object Model) Definição da arquitetura ORB. Inclusão de uma linguagem de definição de interfaces (IDL) Padrão de comunicação de objetos. Interação Transparência de localização module saudacao { interface Ola { Ambiente NÃO PROPRIETÁRIO string ola_simples(); wstring ola_param( in wstring msg ); }; };
  17. 17. Objetos Distribuídos - Mapeamento para diversas linguagens Através da IDL
  18. 18. Objetos Distribuídos ORB Open Source Desenvolvido na Universidade de Berlim Licenciado sobre GNU/GPL 100% Java Flexibilidade de configuração através de arquivos. GUIs de monitoração de serviços Características da versão CORBA 3.0 Passagem de parametros por cópia.
  19. 19. Testes de Objetos
  20. 20. Testes de Objetos Requisitos Auxiliar o processo de integração. Necessidade de um framework de testes com suporte para a linguagem Java Testes unitários Open Source Garantir a robustez final da infra-estrutura
  21. 21. Testes de Objetos Conjuto de classes que possibilitam a automação de testes. Descarta o processo de escrita de códigos de saída. Projetado por Erick Gamma e Kent Beck. Distinção de tipos de erros. Fortemente baseado em padrões de projetos (Design Patterns).
  22. 22. Test Composite: Component run(TestResult) Command TestCase TestSuite Composite run(TestResult) run(TestResult) Template Method addTest(Test) runTest() setUP() TestResult tearDown() Composite: Leaf fName Plug Pluggable Selector Colleting Parameter runTest() Adapter(Class)
  23. 23. Integração de Frameworks
  24. 24. Protótipo Distribuição Slackware 9.1 Ambiente de desenvolvimento: Eclipse Versão do Prevayler: 2.0.1 Dificuldade em obter documentação formal Engenharia reversa (Diagrama de Classes e Pacotes) Testes de prevalência Versão do JacORB: 2.2 Testes de chamadas remotas efetuando transações. Oferece uma série de serviços encontradas em ORBs comerciais. JUnit: 3.2
  25. 25. Engenharia Reversa – Diagrama de Pacotes (Prevayler)
  26. 26. Engenharia Reversa – Diagrama de Classes
  27. 27. Testes Aplicação de Testes: Scalability Scalability: Contêm classes que proporcionam ações sobre o repositório de dados. JDBC: Interface de conexão de aplicações Java entre SGDBs. Classes contendo as tarefas a serem executadas sobre os Objetos Prevalentes.
  28. 28. Testes Número de Objetos 100.000 - Ok 1.000.000 - Ok 10.000.000 - Ok 20.000.000 – Falha Quantidade de memória insuficiente. Swap afeta drasticamente o desempenho da aplicação Somatória dos Testes (Operações p/s)
  29. 29. JacORB – Funcionalidades Servidor de Nomes NS Localização de objetos através de nomes. Obter referências usando o nome. Configuração Arquivo de configuração (Indicação do servidor de nomes) ORBInitRef.NameService=corbaloc::10.0.0.1:38693/home/nelson/NS_Ref Repositório de Implementação Registro das implementações de objetos CORBA existentes no domínio.
  30. 30. – Distribuição Servidor de Nomes do JacORB
  31. 31. Protótipo Funcionalidades clássicas de um banco. Saques, depósitos, inclusão e remoção de contas. Uso de Design Patterns: GoF Mediator GoF Façade Distribuição com JacORB e Prevalência com Prevayler Aplicação de Testes com JUnit Efetuar testes unitário em cada classe gerada Efetuar testes unitários sobre o ambiente distribuído
  32. 32. Protótipo Processo de Armazenamento
  33. 33. Protótipo - Transações
  34. 34. Protótipo – Distribuição Iniciar o Servidor AplServidor Registrar os objetos no servidor de nomes Facade Conta Cliente Endereco
  35. 35. Protótipo – Distribuição JacORB Name Manager
  36. 36. Protótipo - Cliente
  37. 37. Protótipo - Testes Testes efetuados sobre as principais classes FacadeDistribuido GestaoPrevalenciaMediator Objetos transmitidos através do ORB Efetuar a prevalência Confirmação através de testes bem sucedidos
  38. 38. Protótipo - Testes Testes executados sobre o FacadeDistribuido
  39. 39. Protótipo - Testes Testes executados sobre o GestaoPrevalenciaMediator
  40. 40. Conclusão A integração das duas camadas mostrou-se viável através de uma infra-estrutura de software alternativa e aberta. Garantia da robustez com testes unitários. Proporciona um ambiente extensível a diversas plataformas compatíveis com CORBA.
  41. 41. Referências Bibliográficas Beck, K e Gamma, E. (2004), “JUnit Cookbook”, www.junit.org Gamma, E., Helm, R., Johnson, R. e Vlissides, J. (2000), “Padrões de Projetos – SoluçõesReutilizáveis de Software Orientado a Objetos”, Ed. JacORB (2003), “JacORB Programming Guide”, www.jacorb.org. Vilela, C. E. (2002), “An Introduction to Object Prevalence”, IBM Developer Works – Agosto.
  42. 42. Integração de Frameworks de Objetos Prevalentes Distribuidos, Robustos e Livres Obrigado... Flávio J. M. Coelho, João Augusto G. de Queiroz e Nelson Sozinho

×