Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

820 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
  • Be the first to comment

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

×