Your SlideShare is downloading. ×
0
Integração de Tecnologias UML – CORBA - Java   A Convergência das Tecnologias Tutorial por José Eduardo Zindel Deboni Voxx...
Objetivos do Tutorial <ul><li>Observando que tudo esta orientado a objetos </li></ul><ul><ul><li>Análise/Modelagem……….UML ...
O que é um Tutorial ? <ul><li>Verbete: tutorial </li></ul><ul><ul><li>2. Diz-se da modalidade de ensino exercido por tutor...
Os sistemas atuais são… <ul><li>…  complexos </li></ul><ul><ul><li>Negócios estão cada vez mais complexos </li></ul></ul><...
A arquitetura de n camadas ok objetos HTMLs CGIs Camada de  Apresentação Camada de Negócios Camada de Dados webserver Corb...
Convergência para objetos Análise e Modelagem Projeto e Arquitetura Implementação UML CORBA Java Lente convergente  Da Ori...
Tecnologias Orientadas a Objeto <ul><li>Linguagem de Modelagem Orientada a Objetos </li></ul><ul><ul><li>UML – Unified Mod...
Como fica a Engenharia de Software? <ul><li>É necessário fazer Engenharia de Software? </li></ul><ul><li>É possivel se faz...
Respostas: <ul><li>Sim, é indispensável usar as técnicas da Eng. de Software, para atender à complexidade e garantir confi...
Novas questões: <ul><li>Como integrar estas novas tecnologias com os métodos de Engenharia de Software? </li></ul><ul><li>...
Abordagem <ul><li>Analisar a UML e a sua integração com Java e CORBA </li></ul><ul><li>Propor um método para o trabalho em...
Integração entre as tecnologias
O que é a UML? <ul><li>UML  </li></ul><ul><li>Unified Modeling Language </li></ul><ul><ul><li>É uma linguagem de modelagem...
Seqüência de diagramas* Comportamento interno Comportamento Externo Estrutura Implementação Casos de Uso Eventos Colaboraç...
Casos de Uso <ul><li>Descreve os cenários de interação </li></ul><ul><li>Identifica elementos externos  </li></ul><ul><li>...
Diagramas de Casos de Uso Cliente Vendedor Gerente Fazer  Pedidos Aprovar Crédito Entregar Material Sistema
Diagramas de Classes <ul><li>Estrutura das partes que formam o sistema  </li></ul><ul><li>Expõe os componentes internos  <...
Exemplos de representação Pessoa Pessoa nome: Texto idade: inteiro cadastrar() <ul><li>Pessoa  </li></ul><ul><ul><ul><li>{...
Modelo de Classes
Diagramas de Interação <ul><li>Diagramas de Seqüência de Eventos </li></ul><ul><li>Diagramas de Colaboração </li></ul><ul>...
Diagrama de seqüência de eventos
Diagrama de Estados Emprestado Disponível Atrasado Reservado Emprestar Retornar Retornar [ExisteReserva] Emprestar [DataRe...
Diagramas de Implementação <ul><li>Descrição dos componentes de software que formam o sistema e a arquitetura de hardware ...
Diagrama de Componentes GUI Libs BancoDeDados
Diagrama de Dsitribuição Impressora Cliente:PC Servidor:Host1
Integração da implementação GUI Libs BancoDeDados Cliente:PC Servidor:Unix
Pacotes Agrupam os objetos Pode-se usar para  identificar as camadas
Integração entre os diagramas
Mapeamento de um URL http://www.empresa.com.br/aplic/horas/index.html www.empresa.com.br
Integração entre as tecnologias
Modelo UML de sistemas Java <ul><li>Representação gráfica dos sistemas </li></ul><ul><ul><li>Visão do todo, integrada e co...
UML e Java – ida e volta <ul><li>Geração de Código </li></ul><ul><ul><li>Tradução dos diagramas em código Java </li></ul><...
Mapeamento em uma  c lasse java public   class  Funcionario  {  private   String nome = &quot;&quot;;  private   int  tele...
Mapeamento de uma Applet java import  java.applet.*; import  java.awt.*; public   class  Funcionario  extends  Applet  {  ...
Exemplo de diagrama de estado ListandoItens INIT CLOSE EditandoItens iniciar [teste1==true] /modifica=false fechar [teclaC...
Código do diagrama de estado class   DEMO  {   private  String currentState = &quot;INIT&quot; ;   //States:  INIT,  CLOSE...
Métodos para relacionar classes <ul><li>Interfaces </li></ul><ul><ul><li>Uma descrição do que deve ser feito, sem se preoc...
Interface UML, Java ou CORBA  <ul><li>Permite descrever como deve ser uma classe sem dizer como ela deve ser implementada....
Interfaces UML e Java public   class  impClasse  implements  ClasseModelo { public   void  criar (String p) { // //  aqui ...
Herança public   class  classeFilha  extends  classeMae {  } Toda a funcionalidade da mãe  é Transferida para a classe fil...
Agregação public   class  ClasseA  {  private  Recursos oRec =  new  Recursos() ; } A ClasseA agora dispões dos  recursos ...
Todas as opções juntas public   class  minhaClasse  extends  classeMae implements  ClasseModelo  {  private  Recursos oRec...
Integração entre as tecnologias
O que é a tecnologia CORBA? <ul><li>CORBA  </li></ul><ul><li>Common Object Request Broker Architecture </li></ul><ul><ul><...
Integração Cliente/Servidor ORB – barramento de objetos Object Request Broker Os serviços são distribuidos na forma de Obj...
CORBA algumas características <ul><li>Invocação estática </li></ul><ul><ul><li>Os parâmetros podem ser conhecidos </li></u...
Anatomia do CORBA 2.0 Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
A UML modela as interfaces float balance Account makeDeposit makeWithdrawal A linguagem IDL suporta  Os princípios da  Ori...
Exemplo de interface IDL // IDL interface Account { //Attributes attribute float balance; readonly attribute string owner;...
A interface IDL faz a ligação Interface IDL Cliente Servidor Cliente Stub Server Stub IDL compiler Compilador em  linguage...
idl2java Interface.idl idl2java InterfaceHolder.java InterfaceHelper.java _st_Interface _sk_Interface _InterfaceImplBase.j...
Distribuição da aplicação org.omg.CORBA.Object _InterfaceImplBase.java Interface.java ImplementacaoInterface.java org.omg....
Passos para a criação de  Definição  das Interfaces IDL Cliente Servidor Cliente Stub Server Stub Implementação dos  métod...
CORBA e UML <ul><li>O modelo da analise recebe elementos da arquitetura da solução  na fase de projeto </li></ul><ul><li>O...
CORBA e Java <ul><li>O uso de Java na Arquitetura CORBA ... </li></ul><ul><ul><li>... Dá mobilidade de código portabilidad...
Metodo para desenvolvimento Análise Projeto Codigo Modelo Interface IDL Cliente Java/outras Browser Servidor Java/outras N...
Seqüência de passos Projeto Análise Implementação Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterOR...
Apresentação do Problema <ul><li>Levantar o problema a ser resolvido  </li></ul><ul><ul><li>O que ? Porque? </li></ul></ul...
Análise <ul><li>Entendimento do problema </li></ul><ul><li>Modelagem Conceitual </li></ul><ul><ul><li>Modelo de Casos de U...
Analise <ul><li>Desenvolver Modelos em um CASE </li></ul><ul><li>Com a UML (Linguagem padronizada) </li></ul><ul><li>Repre...
Projeto <ul><li>Aplicação de alguns padrões de projeto. </li></ul><ul><li>Modelagem da arquitetura </li></ul><ul><li>Compo...
Projeto <ul><li>Integrar a arquitetura CORBA ao modelo </li></ul><ul><li>Proposta de componentes e distribuição </li></ul>...
Implementação <ul><li>Contrução dos componentes de negócio </li></ul><ul><ul><li>IDL2Java </li></ul></ul><ul><li>Construçã...
Implementação   <ul><li>Programas Java </li></ul><ul><li>Geração de Códigos  </li></ul><ul><li>Criação dos componentes e d...
Resumo do Método <ul><li>Análise </li></ul><ul><ul><li>Criar um Modelo de Interfaces do problema </li></ul></ul><ul><li>Pr...
Importância de um CASE <ul><li>CASE – Computer-Aided Software Engineering </li></ul><ul><li>Funções Principais </li></ul><...
Exemplo de Aplicação  <ul><li>Demonstrar que a UML é capaz de ajudar na modelagem e projeto de aplicações distribuidas pel...
Receita … <ul><li>Aplicação Local (UML <> Java) </li></ul><ul><ul><li>Projetar uma aplicação local com UML </li></ul></ul>...
Visitem nossa cozinha…  <ul><li>Ambiente de Desenvolvimento </li></ul><ul><ul><li>Ferramenta CASE  </li></ul></ul><ul><ul>...
Ferramenta CASE <ul><li>Produtos do Mercado, Shareware, Demos </li></ul><ul><ul><li>Rational Rose (www.rational.com) </li>...
Exemplo de Ferramenta CASE
Ambiente Java <ul><li>JDK1.1.X  ( JDK1.1.5 ) </li></ul><ul><li>JDK1.2, JDK 1.3, … </li></ul><ul><li>Visual Café (Symantec)...
Editor Java
Ferramentas  <ul><li>CASE WithCLASS 99 </li></ul><ul><li>JDK 1.1.5 (com jdbc) </li></ul><ul><li>FreeJava 3.0 (RealJ) – edi...
Ambiente de rede - execução <ul><li>VisiBroker for Java 3.1  </li></ul><ul><li>VisiBroker Naming Service fo Java 3.0 </li>...
Arquitetura  Servidor Desenvolvedor Cliente navegador Servidor WEB Servidor ORB Servidor BD CASE Ambiente Desenv. Bibliote...
O prato principal… Sistema para consulta  em uma lista de telefones
Diagrama de Caso de Uso O usuário entra com um nome e consulta o telefone de uma lista de telefones  armazenada em um arqu...
Diagrama de Classes (inicial)
Diagrama de seqüência de eventos
Modelo de estados do Usuario
Modelo de Classes final
Diagrama de Implementação Usuario Lista lista.txt
Exemplo da apresentação
Código da aplicação import  java.io.*; public   class  aLista  implements  Lista{ public  String procura(String texto){ St...
Aplicação distribuida
Tradução da interface para IDL     interface Lista{ string procura(in string texto); };  Código gerado pelo CASE Lista -pr...
Pré-compilador  idl2java
Classes de implementação Java Classes CORBA Classes analise (UML)
Interface Lista.java (gerada) public   interface  Lista  extends  org.omg.CORBA.Object { /** <p> Operation: <b>::Lista::pr...
A interface Lista <ul><li>Deve ser traduzida para IDL  </li></ul><ul><li>Pre compilada pelo  idl2java  </li></ul>
A implementação da interface <ul><li>Deve herdar da classe gerada pelo  idl2java   </li></ul>public   class  aLista  exten...
Criar uma aplicação servidora public static void main(String args[]){ try  { // inicializa o ORB orb = org.omg.CORBA.ORB.i...
Inicilização do serviço
Classes de implementação Java Classes CORBA Classes analise (UML)
Classe Usuario (cliente) <ul><li>Deve se ligar ao ORB </li></ul><ul><li>Deve instanciar o objeto </li></ul>  // inicializa...
Modificações na classe Usuario public   class  oUsuario  extends  Frame{ public   static  Lista lis; public  Label l =  ne...
Sequencia para execução <ul><li>C:> start osagent </li></ul><ul><ul><li>Coloca no ar o ORB e os seus serviços </li></ul></...
Seqüência de execução
Exemplo de resultado
Leitura Recomendada <ul><li>UML </li></ul><ul><ul><li>Jacobson, I; Rumbaugh, J; Booch, G.  UML: Guia do Usu á rio . Editor...
Conclusão <ul><li>Demanda crescente por </li></ul><ul><ul><li>Flexibilidade </li></ul></ul><ul><ul><li>Desempenho </li></u...
Dúvidas? <ul><li>para não perder o contato: </li></ul><ul><li>José Eduardo Zindel Deboni </li></ul><ul><ul><li>deboni @vox...
Upcoming SlideShare
Loading in...5
×

Integração de Tecnologias

1,681

Published on

UML – CORBA - Java
A Convergência das Tecnologias

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

No Downloads
Views
Total Views
1,681
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
57
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Resumo O tutorial se propõe a desenvolver um sistema de informações integrando todas as tecnologias apresentadas no seminário. O objetivo é mostrar que as tecnologias convergem em um ponto comum para aumentar a qualidade, simplificar a implementação dos sistemas e tornar o desenvolvimento de software realmente uma atividade de engenharia. O tutorial aborda o desenvolvimento baseando-se em modelos da UML que incluem a arquitetura CORBA implementada na linguagem Java. Autor José Eduardo Zindel Deboni (deboni@voxxel.com.br), Engenheiro Naval, Mestre e Doutor em Engenharia da Computação e Sistemas Digitais pela Escola Politécnica. É professor e coordenador de cursos da área de computação da UNIBAN. Consultor da Voxxel Consultoria de Sistemas atuando nas áreas de modelagem orientada a objetos com a UML, programação Java e desenvolvimento de sistemas distribuídos.
  • Transcript of "Integração de Tecnologias"

    1. 1. Integração de Tecnologias UML – CORBA - Java A Convergência das Tecnologias Tutorial por José Eduardo Zindel Deboni Voxxel Consultoria de Sistemas
    2. 2. Objetivos do Tutorial <ul><li>Observando que tudo esta orientado a objetos </li></ul><ul><ul><li>Análise/Modelagem……….UML </li></ul></ul><ul><ul><li>Projeto…………………….UML e CORBA </li></ul></ul><ul><ul><li>Implementação……………IDL e Java </li></ul></ul><ul><li>Analisar como o desenvolvimento de sistemas pode tirar vantagens da integração de tecnologias </li></ul><ul><li>Estudar através de um exemplo como a UML pode integrar-se a CORBA e Java </li></ul>
    3. 3. O que é um Tutorial ? <ul><li>Verbete: tutorial </li></ul><ul><ul><li>2. Diz-se da modalidade de ensino exercido por tutor (4). </li></ul></ul><ul><li>Verbete: tutor [Do lat im: tutore.] </li></ul><ul><ul><li>4. Aluno designado como professor de outros alunos , em formas alternativas de ensino. </li></ul></ul><ul><ul><li>Fonte: Dicionário Aurélio em CD-ROM V.1.4 </li></ul></ul>
    4. 4. Os sistemas atuais são… <ul><li>… complexos </li></ul><ul><ul><li>Negócios estão cada vez mais complexos </li></ul></ul><ul><ul><li>Integração de mercados, globalização </li></ul></ul><ul><ul><li>Competitividade crescente </li></ul></ul><ul><li>… feitos para a internet </li></ul><ul><ul><li>Confiabilidade: o negócio depende do sistema </li></ul></ul><ul><ul><li>e_bussiness: O negócio é o sistema </li></ul></ul><ul><li>… distribuídos em n camadas </li></ul><ul><ul><li>Especialização de cada atividade do sistema </li></ul></ul><ul><ul><li>Facilidade de manutenção e portabilidade </li></ul></ul><ul><ul><li>e_business: O negócio é a rede </li></ul></ul>
    5. 5. A arquitetura de n camadas ok objetos HTMLs CGIs Camada de Apresentação Camada de Negócios Camada de Dados webserver Corba / iiop Corba / iiop Corba / iiop Http/ cgi RDBMS OODBMS Arquivos
    6. 6. Convergência para objetos Análise e Modelagem Projeto e Arquitetura Implementação UML CORBA Java Lente convergente Da Orientação a Objetos
    7. 7. Tecnologias Orientadas a Objeto <ul><li>Linguagem de Modelagem Orientada a Objetos </li></ul><ul><ul><li>UML – Unified Modeling Language </li></ul></ul><ul><li>Arquitetura de Aplicações de Objetos Distribuidos </li></ul><ul><ul><li>CORBA – Common Object Request Broker Architecture </li></ul></ul><ul><li>Ambiente flexível e portável para desenvolvimento </li></ul><ul><ul><li>Java (Aplicações, Applets, Servlets, JDBC, Swing, RMI, EJB…) </li></ul></ul>
    8. 8. Como fica a Engenharia de Software? <ul><li>É necessário fazer Engenharia de Software? </li></ul><ul><li>É possivel se fazer Engenharia do Software? </li></ul><ul><ul><li>Integrar :Analise – Projeto - Implementação </li></ul></ul><ul><ul><li>Projetar a solução antes de construir </li></ul></ul><ul><ul><li>Criar uma “planta” do software </li></ul></ul><ul><ul><li>Utilizar um método para desenvolvimento de sistemas </li></ul></ul><ul><ul><li>Simular, prever resultados antes da construção </li></ul></ul><ul><li>Como desenvolver em tempo de internet? </li></ul><ul><li>Com agregar as novas tecnologias disponíveis? </li></ul>
    9. 9. Respostas: <ul><li>Sim, é indispensável usar as técnicas da Eng. de Software, para atender à complexidade e garantir confiabilidade às soluções distribuidas. </li></ul><ul><li>Sim, é possível realizar a Eng. de Software porque tudo esta Orientado a Objetos. </li></ul><ul><ul><li>Modelagem Orientada a Objetos (UML) </li></ul></ul><ul><ul><li>Arquitetura de Objetos distribuidos (CORBA) </li></ul></ul><ul><ul><li>Implementação para internet (Java) </li></ul></ul>
    10. 10. Novas questões: <ul><li>Como integrar estas novas tecnologias com os métodos de Engenharia de Software? </li></ul><ul><li>Como integrar a UML (analise/projeto) com CORBA (Arquitetura da solução) e com Java (implementação) serm perder as vantagens individuais de cada uma </li></ul><ul><li>A UML é capaz de modelar e dar uma visão completa do todo tão heterogêneo ? </li></ul>
    11. 11. Abordagem <ul><li>Analisar a UML e a sua integração com Java e CORBA </li></ul><ul><li>Propor um método para o trabalho em conjunto destas tecnologias </li></ul><ul><li>Exemplificar a integração </li></ul>
    12. 12. Integração entre as tecnologias
    13. 13. O que é a UML? <ul><li>UML </li></ul><ul><li>Unified Modeling Language </li></ul><ul><ul><li>É uma linguagem de modelagem de sistemas </li></ul></ul><ul><ul><li>É orientada a objetos </li></ul></ul><ul><ul><li>É padronizada pela OMG </li></ul></ul><ul><ul><li>É suportada por diversas ferramentas CASE </li></ul></ul><ul><ul><li>Ainda é pouco difundida, e utilizada </li></ul></ul>
    14. 14. Seqüência de diagramas* Comportamento interno Comportamento Externo Estrutura Implementação Casos de Uso Eventos Colaboração Atividades Estados Classes Componentes Distribuição Pacotes * esta seqüência não faz parte da UML é apenas uma sugestão
    15. 15. Casos de Uso <ul><li>Descreve os cenários de interação </li></ul><ul><li>Identifica elementos externos </li></ul><ul><li>Caracteriza os objetivos de cada um com o sistema </li></ul><ul><li>Um Ator se comunica com Casos de Uso </li></ul><ul><li>Define-se a fronteira do sistema </li></ul>
    16. 16. Diagramas de Casos de Uso Cliente Vendedor Gerente Fazer Pedidos Aprovar Crédito Entregar Material Sistema
    17. 17. Diagramas de Classes <ul><li>Estrutura das partes que formam o sistema </li></ul><ul><li>Expõe os componentes internos </li></ul><ul><li>Estabelece as relações entre as classes </li></ul><ul><li>É um diagrama estrutural estático e não dinâmico </li></ul><ul><li>Possui uma relação direta com a estrutura dos códigos </li></ul>
    18. 18. Exemplos de representação Pessoa Pessoa nome: Texto idade: inteiro cadastrar() <ul><li>Pessoa </li></ul><ul><ul><ul><li>{abstrata, </li></ul></ul></ul><ul><ul><ul><li>autor=JEDeboni} </li></ul></ul></ul>+nome: Texto #RG : inteiro +casado : boolean=false +cadastra() +criar(RG:inteiro)
    19. 19. Modelo de Classes
    20. 20. Diagramas de Interação <ul><li>Diagramas de Seqüência de Eventos </li></ul><ul><li>Diagramas de Colaboração </li></ul><ul><ul><li>As classes se comunicam pelos métodos </li></ul></ul><ul><ul><li>Descreve a troca de mensagens </li></ul></ul><ul><ul><li>Mostra a dinâmica observável entre as classes </li></ul></ul><ul><ul><li>Uma mensagem se da pela invocação de um método de outra classe e pela passagem de parâmetros </li></ul></ul>
    21. 21. Diagrama de seqüência de eventos
    22. 22. Diagrama de Estados Emprestado Disponível Atrasado Reservado Emprestar Retornar Retornar [ExisteReserva] Emprestar [DataReserva<Hoje] [DataEmprestimo>Hoje] /AvisarUsuário Devolver [AvisarGerente] Devolver [ExisteReserva] /AvisarUsuario
    23. 23. Diagramas de Implementação <ul><li>Descrição dos componentes de software que formam o sistema e a arquitetura de hardware </li></ul><ul><ul><li>Diagramas de Componentes </li></ul></ul><ul><ul><li>Diagramas de Distribuição </li></ul></ul>
    24. 24. Diagrama de Componentes GUI Libs BancoDeDados
    25. 25. Diagrama de Dsitribuição Impressora Cliente:PC Servidor:Host1
    26. 26. Integração da implementação GUI Libs BancoDeDados Cliente:PC Servidor:Unix
    27. 27. Pacotes Agrupam os objetos Pode-se usar para identificar as camadas
    28. 28. Integração entre os diagramas
    29. 29. Mapeamento de um URL http://www.empresa.com.br/aplic/horas/index.html www.empresa.com.br
    30. 30. Integração entre as tecnologias
    31. 31. Modelo UML de sistemas Java <ul><li>Representação gráfica dos sistemas </li></ul><ul><ul><li>Visão do todo, integrada e coerente </li></ul></ul><ul><ul><li>Permite uma visão sistêmica </li></ul></ul><ul><ul><li>Facilita o entendimento da arquitetura </li></ul></ul><ul><ul><li>Permite e sconde os detalhes do código d urante a visão da arquitetura </li></ul></ul><ul><ul><li>UML + Java uma união vantajosa para os dois </li></ul></ul>
    32. 32. UML e Java – ida e volta <ul><li>Geração de Código </li></ul><ul><ul><li>Tradução dos diagramas em código Java </li></ul></ul><ul><ul><li>Os diagramas de classe geram estruturas Java </li></ul></ul><ul><li>Engenharia Reversa </li></ul><ul><ul><li>Gerar modelo com base em código Java </li></ul></ul><ul><ul><li>Identificar classes, componentes e relações </li></ul></ul>
    33. 33. Mapeamento em uma c lasse java public class Funcionario { private String nome = &quot;&quot;; private int telefone = 0; private boolean ativo = false ; public void novo () { } }
    34. 34. Mapeamento de uma Applet java import java.applet.*; import java.awt.*; public class Funcionario extends Applet { private String nome = &quot;&quot;; private int telefone = 0; private boolean ativo = false ; public void novo () { } } Applet {abstract} Funcionario {final} -nome:String -telefone:int -ativo:boolean +novo( ):void
    35. 35. Exemplo de diagrama de estado ListandoItens INIT CLOSE EditandoItens iniciar [teste1==true] /modifica=false fechar [teclaCancel=true] /BD.fechar() fechar [TeclaCancel()==true] /BD.fechar( editar [teclaEdit()==true] /BD.abrir() fechar [teclaOK()==true] /BD.fechar()
    36. 36. Código do diagrama de estado class DEMO { private String currentState = &quot;INIT&quot; ; //States: INIT, CLOSE, ListandoItens, EditandoItens //Events: nullEvent, iniciar, fechar, editar void process ( String anEvent ) { if ( ( currentState == &quot;INIT&quot; ) && ( anEvent == &quot;iniciar&quot; ) && ( teste1== true ) ) { currentState = &quot;ListandoItens&quot; ; modifica= false return ; } if ( ( currentState == &quot;ListandoItens&quot; ) && ( anEvent == &quot;fechar&quot; ) && ( teclaCancel= true ) ) { currentState = &quot;CLOSE&quot; ; BD.fechar() return ; } if ( ( currentState == &quot;ListandoItens&quot; ) && ( anEvent == &quot;editar&quot; ) && ( teclaEdit()== true ) ) { currentState = &quot;EditandoItens&quot; ; BD.abrir() return ; } … else return ; } }
    37. 37. Métodos para relacionar classes <ul><li>Interfaces </li></ul><ul><ul><li>Uma descrição do que deve ser feito, sem se preocupar com a implementação </li></ul></ul><ul><li>Herança </li></ul><ul><ul><li>Trasferir para uma classe filha os métodos, atributos e relacionamentos da classe mãe </li></ul></ul><ul><li>Composição </li></ul><ul><ul><li>Criar uma instância de uma classe para poder utilizar os serviços que ela dispõe </li></ul></ul>
    38. 38. Interface UML, Java ou CORBA <ul><li>Permite descrever como deve ser uma classe sem dizer como ela deve ser implementada. </li></ul><ul><li>Uma classe com assinaturas de operações </li></ul><ul><li>Uso: integrar análise/projeto e sistemas </li></ul><ul><ul><li>Pode usada para representar o resultado da análise, </li></ul></ul><ul><ul><li>A análise define as assinaturas das operações, </li></ul></ul><ul><ul><li>No projeto as assinaturas serão implementadas </li></ul></ul><ul><ul><li>As classes devem implementar as interfaces </li></ul></ul>
    39. 39. Interfaces UML e Java public class impClasse implements ClasseModelo { public void criar (String p) { // // aqui devem ser inserido o códig o // do método // } } public interface ClasseModelo { public void criar (String p1); }
    40. 40. Herança public class classeFilha extends classeMae { } Toda a funcionalidade da mãe é Transferida para a classe filha como Se fosse dela.
    41. 41. Agregação public class ClasseA { private Recursos oRec = new Recursos() ; } A ClasseA agora dispões dos recursos da classe Recursos atraves da instância oRec A classe de Recursos deve estar diponível
    42. 42. Todas as opções juntas public class minhaClasse extends classeMae implements ClasseModelo { private Recursos oRec = new Recursos() ; }
    43. 43. Integração entre as tecnologias
    44. 44. O que é a tecnologia CORBA? <ul><li>CORBA </li></ul><ul><li>Common Object Request Broker Architecture </li></ul><ul><ul><li>Uma camada de software que distribui objetos </li></ul></ul><ul><ul><li>Oferece uma série de serviços de objeto </li></ul></ul><ul><ul><li>É padonizada pela OMG </li></ul></ul><ul><li>IDL - Interface Definition Language </li></ul><ul><ul><li>Padrão para definição dos Serviços dos objetos </li></ul></ul><ul><ul><li>Linguagem semelhate ao C </li></ul></ul><ul><ul><li>Portabilidade para Java, C++, Delphi, VB etc.. </li></ul></ul><ul><ul><li>Permite integração entre sistemas heterogêneos. </li></ul></ul>
    45. 45. Integração Cliente/Servidor ORB – barramento de objetos Object Request Broker Os serviços são distribuidos na forma de Objetos em um barramento
    46. 46. CORBA algumas características <ul><li>Invocação estática </li></ul><ul><ul><li>Os parâmetros podem ser conhecidos </li></ul></ul><ul><li>Invocação dinâmica </li></ul><ul><ul><li>Os parâmetros podem ser “descobertos” </li></ul></ul><ul><li>Escalabilidade </li></ul><ul><ul><li>Criação de uma rede de serviços intergalática </li></ul></ul><ul><li>Segurança, Transparência e Controle </li></ul><ul><ul><li>Serviços disponíveis pela arquitetura </li></ul></ul><ul><li>Coexistência com sistemas atuais (legados) </li></ul>
    47. 47. Anatomia do CORBA 2.0 Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
    48. 48. A UML modela as interfaces float balance Account makeDeposit makeWithdrawal A linguagem IDL suporta Os princípios da Orientação a Objetos
    49. 49. Exemplo de interface IDL // IDL interface Account { //Attributes attribute float balance; readonly attribute string owner; //Operations void makeDeposit(in float amount, out float newBalance); void makeWithdrawal(in float amount, out float newBalance); }; float balance Account makeDeposit makeWithdrawal
    50. 50. A interface IDL faz a ligação Interface IDL Cliente Servidor Cliente Stub Server Stub IDL compiler Compilador em linguagem nativa
    51. 51. idl2java Interface.idl idl2java InterfaceHolder.java InterfaceHelper.java _st_Interface _sk_Interface _InterfaceImplBase.java Interface.java Cliente Servidor _exemplo_Interface.java
    52. 52. Distribuição da aplicação org.omg.CORBA.Object _InterfaceImplBase.java Interface.java ImplementacaoInterface.java org.omg.CORBA.ORB org.omg.CORBA.ORB Cliente Servidor
    53. 53. Passos para a criação de Definição das Interfaces IDL Cliente Servidor Cliente Stub Server Stub Implementação dos métodos ( ling . nativa) ORB 7 1 2 3 4 9 8 5 Ling . Nativa Cria aplicação 6
    54. 54. CORBA e UML <ul><li>O modelo da analise recebe elementos da arquitetura da solução na fase de projeto </li></ul><ul><li>Os modelos devem ser trabalhados para refletir a arquitetura do projeto </li></ul><ul><li>O resultado da análise deve ser preservado nas m anipulações do projeto </li></ul>
    55. 55. CORBA e Java <ul><li>O uso de Java na Arquitetura CORBA ... </li></ul><ul><ul><li>... Dá mobilidade de código portabilidade </li></ul></ul><ul><ul><li>... Facilita a ida do CORBA para a WEB </li></ul></ul><ul><ul><li>... Permite a construção de Agentes </li></ul></ul><ul><ul><li>... Permite a integração do mundo OO </li></ul></ul><ul><li>Java “concorre” com CORBA no RMI e EJB (alternativas semelhantes) </li></ul>
    56. 56. Metodo para desenvolvimento Análise Projeto Codigo Modelo Interface IDL Cliente Java/outras Browser Servidor Java/outras Negócio Modelagem UML/CORBA Implementação CORBA/Java ORB Servidor Web
    57. 57. Seqüência de passos Projeto Análise Implementação Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
    58. 58. Apresentação do Problema <ul><li>Levantar o problema a ser resolvido </li></ul><ul><ul><li>O que ? Porque? </li></ul></ul><ul><li>e não da implementação </li></ul><ul><ul><li>Como? </li></ul></ul><ul><li>Trabalho do Especialista da Aplicação e do Engenheiro de Software </li></ul><ul><li>CASOS DE USO </li></ul>
    59. 59. Análise <ul><li>Entendimento do problema </li></ul><ul><li>Modelagem Conceitual </li></ul><ul><ul><li>Modelo de Casos de Uso </li></ul></ul><ul><ul><li>Modelo se Eventos </li></ul></ul><ul><ul><li>Modelo Conceitual de Classes </li></ul></ul><ul><li>Produtos da análise. </li></ul>
    60. 60. Analise <ul><li>Desenvolver Modelos em um CASE </li></ul><ul><li>Com a UML (Linguagem padronizada) </li></ul><ul><li>Representar o sistema (problema) </li></ul>Criar um Modelo de Interfaces
    61. 61. Projeto <ul><li>Aplicação de alguns padrões de projeto. </li></ul><ul><li>Modelagem da arquitetura </li></ul><ul><li>Componentização do sistema </li></ul><ul><li>Definir a Interfaces do negócio (IDL) </li></ul><ul><li>Definir a camada de apresentação (IHM) </li></ul><ul><li>Definir a camada de persistência (BD) </li></ul>
    62. 62. Projeto <ul><li>Integrar a arquitetura CORBA ao modelo </li></ul><ul><li>Proposta de componentes e distribuição </li></ul><ul><li>Integração com Java em alto nível </li></ul><ul><li>Definição da estrutura das classes </li></ul>Criar Classes de Implementação das Interfaces, Aplicar patterns e manipular o modelo de análise Relacionar (herança, implementação ou composição) com as classes da arquitetura e da linguagem de programação
    63. 63. Implementação <ul><li>Contrução dos componentes de negócio </li></ul><ul><ul><li>IDL2Java </li></ul></ul><ul><li>Construção dos códigos do servidor </li></ul><ul><li>Integração com serviço de Banco de Dados </li></ul><ul><li>Teste local </li></ul><ul><li>Construção da Interface Homem Máquina </li></ul><ul><li>Integração com ORB </li></ul>
    64. 64. Implementação <ul><li>Programas Java </li></ul><ul><li>Geração de Códigos </li></ul><ul><li>Criação dos componentes e dos programas </li></ul>Gerar código dos modelos Complementar os códigos com programação Fazer a Engenharia Reversa para atualizar os modelos
    65. 65. Resumo do Método <ul><li>Análise </li></ul><ul><ul><li>Criar um Modelo de Interfaces do problema </li></ul></ul><ul><li>Projeto </li></ul><ul><ul><li>Criar Classes de Implementação das Interfaces, </li></ul></ul><ul><ul><li>Relacionar as classes com a arquitetura </li></ul></ul><ul><ul><li>Aplicar patterns e manipular o modelo de projeto </li></ul></ul><ul><li>Implementação </li></ul><ul><ul><li>Gerar código dos modelos </li></ul></ul><ul><ul><li>Complementar os códigos com programação </li></ul></ul><ul><ul><li>Fazer a Engenharia Reversa para atualizar os modelos </li></ul></ul>
    66. 66. Importância de um CASE <ul><li>CASE – Computer-Aided Software Engineering </li></ul><ul><li>Funções Principais </li></ul><ul><ul><li>Facilidade de Uso, interface gráfica amigável </li></ul></ul><ul><ul><li>Aderência à UML, sem mudanças proprietárias </li></ul></ul><ul><ul><li>Integração entre os diagramas </li></ul></ul><ul><ul><li>Teste (cheklist) dos diagramas </li></ul></ul><ul><ul><li>Geração de Relatórios (textos e gráficos) </li></ul></ul><ul><ul><li>Geração de Código (linguagens OO, BD) </li></ul></ul><ul><ul><li>Engenharia Reversa </li></ul></ul><ul><ul><li>Repositório de Modelos e Objetos </li></ul></ul><ul><ul><li>Controle de Versão (integração com software 3o) </li></ul></ul>
    67. 67. Exemplo de Aplicação <ul><li>Demonstrar que a UML é capaz de ajudar na modelagem e projeto de aplicações distribuidas pela tecnologia CORBA </li></ul>
    68. 68. Receita … <ul><li>Aplicação Local (UML <> Java) </li></ul><ul><ul><li>Projetar uma aplicação local com UML </li></ul></ul><ul><ul><li>Gerar o código Java do projeto UML </li></ul></ul><ul><ul><li>Construir a aplicação em Java </li></ul></ul><ul><ul><li>Executar a aplicação local </li></ul></ul><ul><ul><li>Fazer a atualização do modelo UML </li></ul></ul><ul><li>Aplicação Distribuída (UML <> CORBA <> Java) </li></ul><ul><ul><li>Distribuir a aplicação com CORBA no modelo UML </li></ul></ul><ul><ul><li>Construir os elementos auxiliares CORBA </li></ul></ul><ul><ul><li>Construir os novos códigos em Java </li></ul></ul><ul><ul><li>Executar a aplicação distribuída </li></ul></ul>
    69. 69. Visitem nossa cozinha… <ul><li>Ambiente de Desenvolvimento </li></ul><ul><ul><li>Ferramenta CASE </li></ul></ul><ul><ul><li>Ambiente Java (jdk) </li></ul></ul><ul><ul><li>Editor Java </li></ul></ul><ul><ul><li>Banco de Dados (opcional) </li></ul></ul><ul><ul><li>ORB com suporte Java (idl2java) </li></ul></ul><ul><li>Ambiente de Processamento </li></ul><ul><ul><li>Navegador Internet (se for executar uma Applet) </li></ul></ul><ul><ul><li>Servidor CORBA (ORB) </li></ul></ul>
    70. 70. Ferramenta CASE <ul><li>Produtos do Mercado, Shareware, Demos </li></ul><ul><ul><li>Rational Rose (www.rational.com) </li></ul></ul><ul><ul><li>System Architect (www.choose.com.br) </li></ul></ul><ul><ul><li>WithCLASS (www.microgold.com) </li></ul></ul><ul><ul><li>ToghetherJ </li></ul></ul>
    71. 71. Exemplo de Ferramenta CASE
    72. 72. Ambiente Java <ul><li>JDK1.1.X ( JDK1.1.5 ) </li></ul><ul><li>JDK1.2, JDK 1.3, … </li></ul><ul><li>Visual Café (Symantec) </li></ul><ul><li>Jbuilder (Imprise) </li></ul><ul><li>Visual Age (IBM) </li></ul><ul><li>FreeJava (RealJ) </li></ul>
    73. 73. Editor Java
    74. 74. Ferramentas <ul><li>CASE WithCLASS 99 </li></ul><ul><li>JDK 1.1.5 (com jdbc) </li></ul><ul><li>FreeJava 3.0 (RealJ) – editor Java shareware </li></ul><ul><li>JBuilder (opcional para o projeto gráfico) </li></ul>
    75. 75. Ambiente de rede - execução <ul><li>VisiBroker for Java 3.1 </li></ul><ul><li>VisiBroker Naming Service fo Java 3.0 </li></ul><ul><li>Internet Explorer 5.0 </li></ul><ul><li>Windows 98 </li></ul>
    76. 76. Arquitetura Servidor Desenvolvedor Cliente navegador Servidor WEB Servidor ORB Servidor BD CASE Ambiente Desenv. Bibliotecas
    77. 77. O prato principal… Sistema para consulta em uma lista de telefones
    78. 78. Diagrama de Caso de Uso O usuário entra com um nome e consulta o telefone de uma lista de telefones armazenada em um arquivo
    79. 79. Diagrama de Classes (inicial)
    80. 80. Diagrama de seqüência de eventos
    81. 81. Modelo de estados do Usuario
    82. 82. Modelo de Classes final
    83. 83. Diagrama de Implementação Usuario Lista lista.txt
    84. 84. Exemplo da apresentação
    85. 85. Código da aplicação import java.io.*; public class aLista implements Lista{ public String procura(String texto){ String linha,alinha= &quot;não encontrei :&quot; +texto; try { FileInputStream is = new FileInputStream( &quot;lista.txt&quot; ); DataInputStream ds = new DataInputStream(is); while ((linha = ds.readLine())!= null ) { if (linha.indexOf(texto)!=-1) alinha=linha; } ds.close(); is.close(); } catch (IOException e) { System.out.println( &quot;Erro: &quot; +e); } return (alinha);} }
    86. 86. Aplicação distribuida
    87. 87. Tradução da interface para IDL     interface Lista{ string procura(in string texto); }; Código gerado pelo CASE Lista -procura( string ):string
    88. 88. Pré-compilador idl2java
    89. 89. Classes de implementação Java Classes CORBA Classes analise (UML)
    90. 90. Interface Lista.java (gerada) public interface Lista extends org.omg.CORBA.Object { /** <p> Operation: <b>::Lista::procura</b>. <pre> string procura( in string texto ); </pre> </p> */ public java.lang.String procura( java.lang.String texto ); }    
    91. 91. A interface Lista <ul><li>Deve ser traduzida para IDL </li></ul><ul><li>Pre compilada pelo idl2java </li></ul>
    92. 92. A implementação da interface <ul><li>Deve herdar da classe gerada pelo idl2java </li></ul>public class aLista extends _ListaImplBase{
    93. 93. Criar uma aplicação servidora public static void main(String args[]){ try { // inicializa o ORB orb = org.omg.CORBA.ORB.init(args, null ); // inicializa o BOA boa = orb.BOA_init(); // criar o objeto l = new aLista(&quot;minha lista&quot;); // exportar o objeto criado boa.obj_is_ready(l); // Pronto para atender os pedidos boa.impl_is_ready(); } catch (org.omg.CORBA.SystemException e) { System.err.println(e); } }
    94. 94. Inicilização do serviço
    95. 95. Classes de implementação Java Classes CORBA Classes analise (UML)
    96. 96. Classe Usuario (cliente) <ul><li>Deve se ligar ao ORB </li></ul><ul><li>Deve instanciar o objeto </li></ul> // inicializa o orb orb = org.omg.CORBA.ORB.init(arg, null ); // liga no objeto lis = ListaHelper.bind(orb, &quot;minha lista&quot; );
    97. 97. Modificações na classe Usuario public class oUsuario extends Frame{ public static Lista lis; public Label l = new Label( &quot;Procura :&quot; ); public Button b = new Button( &quot;Ok&quot; ); public TextField t = new TextField(40); public static org.omg.CORBA.ORB orb; public static void main(String arg[]) { // inicializa o orb orb = org.omg.CORBA.ORB.init(arg, null ); // liga no objeto l is = ListaHelper.bind(orb, &quot;minha lista&quot; );   Usuario u = new Usuario(); ...
    98. 98. Sequencia para execução <ul><li>C:> start osagent </li></ul><ul><ul><li>Coloca no ar o ORB e os seus serviços </li></ul></ul><ul><li>C:> start java –DOAid=Tsession ListaServer </li></ul><ul><ul><li>Coloca no ar o serviço de Lista </li></ul></ul><ul><li>C:> java Usuario </li></ul><ul><ul><li>Executa a aplicação no cliente </li></ul></ul>
    99. 99. Seqüência de execução
    100. 100. Exemplo de resultado
    101. 101. Leitura Recomendada <ul><li>UML </li></ul><ul><ul><li>Jacobson, I; Rumbaugh, J; Booch, G. UML: Guia do Usu á rio . Editora Campus, 2000. </li></ul></ul><ul><li>CORBA com JAVA </li></ul><ul><ul><li>ORFALI, R. e HARKEY, D. Client/Server Programming with Java and CORBA . 2nd Ed. John Wiley & Sons Ed. 1998. Excelente LIVRO e CD-ROM </li></ul></ul><ul><li>OMG </li></ul><ul><ul><li>www.omg.org Artigos e Documentação da UML, CORBA, IDL, etc… </li></ul></ul>
    102. 102. Conclusão <ul><li>Demanda crescente por </li></ul><ul><ul><li>Flexibilidade </li></ul></ul><ul><ul><li>Desempenho </li></ul></ul><ul><ul><li>Baixo custo </li></ul></ul><ul><li>Leva à distribuição dos negócios </li></ul><ul><li>Padrões vão garantir os investimentos em sistemas distribuídos </li></ul>
    103. 103. Dúvidas? <ul><li>para não perder o contato: </li></ul><ul><li>José Eduardo Zindel Deboni </li></ul><ul><ul><li>deboni @voxxel.com. br </li></ul></ul><ul><ul><li>www.voxxel.com.br/ deboni </li></ul></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×