42
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

Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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

Livres

Nelson Moraes Sozinho, João Augusto G. de Queiroz eFlávio J. M. Coelho

Page 2: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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

Page 3: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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).

Page 4: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

�Quebra de encapsulamento dos atributos.

�Necessidade de gerar mais um diagrama.

�Não é adequado para aplicações que necessitam de desempenho.

Page 5: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Introdução

� Alternativa:� Conceito de Prevalência.� Framework Prevayler

� Requisitos Adicionais: � Distribuição � Interoperabilidade� Robustez

� Necessidade de integração

Page 6: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

� 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.

Objetivos

Page 7: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Prevalência de Objetos

Page 8: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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

Page 9: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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.

Page 10: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Prevayler – Forma de Acesso

Visão geral de um sistema prevalente

Page 11: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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.

Page 12: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Prevayler - Transações

Page 13: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Prevayler - Replicação� Sistemas Distribuídos

� Introduzir Redundâncias

� Replicação � Redundância

� Redundâncias em Grupos� Balanceamento de Carga

Page 14: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Distribuição de Objetos

Page 15: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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

Page 16: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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� Ambiente NÃO PROPRIETÁRIO

module saudacao {interface Ola {

string ola_simples();wstring ola_param( in wstring msg );

};};

Page 17: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Objetos Distribuídos -Mapeamento para diversas linguagens Através da IDL

Page 18: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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.

Page 19: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Testes de

Objetos

Page 20: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Testes de Objetos

�Requisitos

�Auxiliar o processo de integração.

�Necessidade de um framework de testes com suporte p ara a linguagem Java

�Testes unitários

�Open Source

�Garantir a robustez final da infra-estrutura

Page 21: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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).

Page 22: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Template Method

Test

run(TestResult)

TestCase TestSuite

runTest()

fName

TestResult

run(TestResult)addTest(Test)

run(TestResult)runTest()setUP()tearDown()

Command Composite

Adapter(Class)

Composite: Leaf

Composite: Component

Plug Pluggable SelectorColleting Parameter

Page 23: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Integração de Frameworks

Page 24: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

� 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

Protótipo

Page 25: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Engenharia Reversa –Diagrama de Pacotes (Prevayler)

Page 26: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Engenharia Reversa – Diagrama de Classes

Page 27: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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.

Page 28: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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)

Page 29: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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.

Page 30: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

– Distribuição Servidor de Nomes do JacORB

Page 31: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

� 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

Protótipo

Page 32: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Processo de Armazenamento

Protótipo

Page 33: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Protótipo - Transações

Page 34: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Protótipo – Distribuição

� Iniciar o Servidor AplServidor

� Registrar os objetos no

servidor de nomes� Facade

� Conta

� Cliente

� Endereco

Page 35: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Protótipo – DistribuiçãoJacORB Name Manager

Page 36: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Protótipo - Cliente

Page 37: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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

Page 38: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Protótipo - Testes� Testes executados sobre o FacadeDistribuido

Page 39: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

Protótipo - Testes� Testes executados sobre o GestaoPrevalenciaMediator

Page 40: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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.

Page 41: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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.

Page 42: Apresentacao Ii Encontro Sl Amazonas Integracao De Frameworks

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