Integração de Tecnologias UML – CORBA - Java   A Convergência das Tecnologias Tutorial por José Eduardo Zindel Deboni Voxxel Consultoria de Sistemas
Objetivos do Tutorial Observando que tudo esta orientado a objetos Análise/Modelagem……….UML Projeto…………………….UML  e CORBA Implementação……………IDL e Java Analisar como o desenvolvimento de sistemas pode tirar vantagens da integração de tecnologias Estudar através de um  exemplo como a UML pode integrar-se a CORBA e Java
O que é um Tutorial ? Verbete: tutorial 2. Diz-se da modalidade de ensino exercido por tutor (4). Verbete: tutor   [Do lat im:  tutore.] 4.  Aluno  designado como  professor de outros alunos , em formas alternativas de ensino. Fonte: Dicionário Aurélio em CD-ROM V.1.4
Os sistemas atuais são… …  complexos Negócios estão cada vez mais complexos Integração de mercados, globalização Competitividade crescente …  feitos para a internet Confiabilidade: o negócio depende do sistema e_bussiness: O negócio é o sistema …  distribuídos em n camadas Especialização de cada atividade do sistema Facilidade de manutenção e portabilidade e_business: O negócio é a rede
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
Convergência para objetos Análise e Modelagem Projeto e Arquitetura Implementação UML CORBA Java Lente convergente  Da Orientação a Objetos
Tecnologias Orientadas a Objeto Linguagem de Modelagem Orientada a Objetos UML – Unified Modeling Language Arquitetura de Aplicações de Objetos Distribuidos CORBA – Common Object Request Broker Architecture  Ambiente flexível e portável para desenvolvimento  Java  (Aplicações, Applets, Servlets, JDBC, Swing, RMI, EJB…)
Como fica a Engenharia de Software? É necessário fazer Engenharia de Software? É possivel se fazer  Engenharia  do Software? Integrar :Analise – Projeto - Implementação Projetar a solução antes de construir Criar uma “planta” do software Utilizar um método para desenvolvimento de sistemas Simular, prever resultados antes da construção Como desenvolver em tempo de internet? Com agregar as novas tecnologias disponíveis?
Respostas: Sim, é indispensável usar as técnicas da Eng. de Software, para atender à complexidade e garantir confiabilidade às soluções distribuidas. Sim, é possível realizar a Eng. de Software porque tudo esta Orientado a Objetos. Modelagem Orientada a Objetos (UML) Arquitetura de Objetos distribuidos (CORBA) Implementação para internet (Java)
Novas questões: Como integrar estas novas tecnologias com os métodos de Engenharia de Software? 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 A UML é capaz de modelar e dar uma visão completa do todo tão heterogêneo ?
Abordagem Analisar a UML e a sua integração com Java e CORBA Propor um método para o trabalho em conjunto destas tecnologias Exemplificar a integração
Integração entre as tecnologias
O que é a UML? UML  Unified Modeling Language É uma linguagem de modelagem de sistemas É orientada a objetos É padronizada pela OMG É suportada por diversas ferramentas CASE Ainda é pouco difundida, e utilizada
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
Casos de Uso Descreve os cenários de interação Identifica elementos externos  Caracteriza os objetivos de cada um com o sistema Um Ator se  comunica  com Casos de Uso Define-se a fronteira do sistema
Diagramas de Casos de Uso Cliente Vendedor Gerente Fazer  Pedidos Aprovar Crédito Entregar Material Sistema
Diagramas de Classes Estrutura das partes que formam o sistema  Expõe os componentes internos  Estabelece as relações entre as classes É um diagrama estrutural  estático e não dinâmico Possui uma relação direta com a estrutura dos códigos
Exemplos de representação Pessoa Pessoa nome: Texto idade: inteiro cadastrar() Pessoa  {abstrata, autor=JEDeboni} +nome: Texto #RG : inteiro +casado : boolean=false +cadastra() +criar(RG:inteiro)
Modelo de Classes
Diagramas de Interação Diagramas de Seqüência de Eventos Diagramas de Colaboração As classes se comunicam pelos métodos Descreve  a troca de mensagens Mostra a dinâmica observável entre as classes Uma mensagem se da pela invocação de um método de outra classe e pela passagem de parâmetros
Diagrama de seqüência de eventos
Diagrama de Estados Emprestado Disponível Atrasado Reservado Emprestar Retornar Retornar [ExisteReserva] Emprestar [DataReserva<Hoje] [DataEmprestimo>Hoje] /AvisarUsuário Devolver [AvisarGerente] Devolver [ExisteReserva] /AvisarUsuario
Diagramas de Implementação Descrição dos componentes de software que formam o sistema e a arquitetura de hardware  Diagramas de Componentes Diagramas de Distribuição
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 Representação gráfica dos sistemas Visão do todo, integrada e coerente Permite uma visão sistêmica Facilita o entendimento da arquitetura  Permite e sconde os detalhes do código  d urante a  visão da arquitetura UML + Java uma união vantajosa para os dois
UML e Java – ida e volta Geração de Código Tradução dos diagramas em código Java Os diagramas de classe geram estruturas Java Engenharia Reversa Gerar modelo com base em código Java Identificar classes, componentes e relações
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 ()  {  }  }
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
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()
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 ;    } }
Métodos para relacionar classes Interfaces Uma descrição do que deve ser feito, sem se preocupar com a implementação Herança Trasferir para uma classe filha os métodos, atributos e relacionamentos da classe mãe Composição Criar uma instância de uma classe para poder utilizar os serviços que ela dispõe
Interface UML, Java ou CORBA  Permite descrever como deve ser uma classe sem dizer como ela deve ser implementada. Uma classe com assinaturas de operações Uso: integrar análise/projeto e sistemas Pode usada para representar o resultado da análise, A análise define as assinaturas das operações, No projeto as assinaturas serão implementadas As classes devem implementar as interfaces
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);  }
Herança public   class  classeFilha  extends  classeMae {  } Toda a funcionalidade da mãe  é Transferida para a classe filha como Se fosse dela.
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
Todas as opções juntas public   class  minhaClasse  extends  classeMae implements  ClasseModelo  {  private  Recursos oRec =  new  Recursos() ; }
Integração entre as tecnologias
O que é a tecnologia CORBA? CORBA  Common Object Request Broker Architecture Uma  camada de software  que  distribui objetos  Oferece  uma série de serviços de objeto É padonizada pela OMG  IDL - Interface Definition Language  Padrão para definição dos Serviços dos objetos Linguagem semelhate ao C Portabilidade para Java, C++, Delphi, VB etc.. Permite integração entre sistemas heterogêneos.
Integração Cliente/Servidor ORB – barramento de objetos Object Request Broker Os serviços são distribuidos na forma de Objetos em um barramento
CORBA algumas características Invocação estática Os parâmetros podem ser conhecidos Invocação dinâmica Os parâmetros podem ser “descobertos” Escalabilidade Criação de uma rede de serviços intergalática Segurança, Transparência e Controle Serviços disponíveis pela arquitetura Coexistência com sistemas atuais (legados)
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  Orientação a Objetos
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
A interface IDL faz a ligação Interface IDL Cliente Servidor Cliente Stub Server Stub IDL compiler Compilador em  linguagem nativa
idl2java Interface.idl idl2java InterfaceHolder.java InterfaceHelper.java _st_Interface _sk_Interface _InterfaceImplBase.java Interface.java Cliente Servidor _exemplo_Interface.java
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
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
CORBA e UML O modelo da analise recebe elementos da arquitetura da solução  na fase de projeto Os modelos devem ser trabalhados para refletir  a arquitetura do projeto O resultado da análise deve ser preservado nas m anipulações do projeto
CORBA e Java O uso de Java na Arquitetura CORBA ... ... Dá mobilidade de código portabilidade  ... Facilita a ida do CORBA para a WEB ... Permite a construção de Agentes ... Permite a integração do mundo OO Java “concorre” com CORBA no RMI e EJB (alternativas semelhantes)
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
Seqüência de passos Projeto Análise Implementação Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
Apresentação do Problema Levantar o problema a ser resolvido  O que ? Porque? e não da implementação Como?  Trabalho do Especialista da Aplicação e do Engenheiro de Software CASOS DE USO
Análise Entendimento do problema Modelagem Conceitual Modelo de Casos de Uso Modelo se Eventos Modelo Conceitual de Classes Produtos da análise.
Analise Desenvolver Modelos em um CASE Com a UML (Linguagem padronizada) Representar o sistema (problema)  Criar um Modelo de Interfaces
Projeto Aplicação de alguns padrões de projeto. Modelagem da arquitetura Componentização do sistema Definir a Interfaces do negócio (IDL)  Definir a camada de apresentação (IHM) Definir a camada de persistência (BD)
Projeto Integrar a arquitetura CORBA ao modelo Proposta de componentes e distribuição Integração com Java em alto nível Definição da estrutura das classes 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
Implementação Contrução dos componentes de negócio IDL2Java Construção dos códigos do servidor Integração com serviço de Banco de Dados Teste local Construção da Interface Homem Máquina Integração com ORB
Implementação   Programas Java Geração de Códigos  Criação dos componentes e dos programas Gerar código dos modelos Complementar os códigos com programação Fazer a Engenharia Reversa para atualizar os modelos
Resumo do Método Análise Criar um Modelo de Interfaces do problema Projeto Criar Classes de Implementação das Interfaces,  Relacionar as classes com a arquitetura  Aplicar patterns e manipular o modelo de projeto Implementação Gerar código dos modelos Complementar os códigos com programação Fazer a Engenharia Reversa para atualizar os modelos
Importância de um CASE CASE – Computer-Aided Software Engineering Funções Principais Facilidade de Uso, interface gráfica amigável Aderência à UML, sem mudanças proprietárias Integração entre os diagramas Teste (cheklist) dos diagramas Geração de Relatórios (textos e gráficos) Geração de Código (linguagens OO, BD) Engenharia Reversa Repositório de Modelos e Objetos Controle de Versão (integração com software 3o)
Exemplo de Aplicação  Demonstrar que a UML é capaz de ajudar na modelagem e projeto de aplicações distribuidas pela tecnologia CORBA
Receita … Aplicação Local (UML <> Java) Projetar uma aplicação local com UML Gerar o código Java do projeto UML Construir a aplicação em Java  Executar a aplicação local Fazer a atualização do modelo UML  Aplicação Distribuída (UML <> CORBA <> Java)  Distribuir a aplicação com CORBA no modelo UML Construir os elementos auxiliares CORBA Construir os novos códigos em Java Executar a aplicação distribuída
Visitem nossa cozinha…  Ambiente de Desenvolvimento Ferramenta CASE  Ambiente Java (jdk) Editor Java Banco de Dados (opcional) ORB com suporte Java (idl2java) Ambiente de Processamento Navegador Internet (se for executar uma Applet) Servidor CORBA (ORB)
Ferramenta CASE Produtos do Mercado, Shareware, Demos Rational Rose (www.rational.com) System Architect (www.choose.com.br) WithCLASS (www.microgold.com) ToghetherJ
Exemplo de Ferramenta CASE
Ambiente Java JDK1.1.X  ( JDK1.1.5 ) JDK1.2, JDK 1.3, … Visual Café (Symantec) Jbuilder (Imprise) Visual Age (IBM) FreeJava (RealJ)
Editor Java
Ferramentas  CASE WithCLASS 99 JDK 1.1.5 (com jdbc) FreeJava 3.0 (RealJ) – editor Java shareware JBuilder (opcional para o projeto gráfico)
Ambiente de rede - execução VisiBroker for Java 3.1  VisiBroker Naming Service fo Java 3.0 Internet Explorer 5.0 Windows 98
Arquitetura  Servidor Desenvolvedor Cliente navegador Servidor WEB Servidor ORB Servidor BD CASE Ambiente Desenv. Bibliotecas
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 arquivo
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){ 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);} }
Aplicação distribuida
Tradução da interface para IDL     interface Lista{ string procura(in string texto); };  Código gerado pelo CASE Lista -procura( string ):string
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::procura</b>. <pre> string procura( in string texto ); </pre> </p> */ public  java.lang.String procura( java.lang.String texto ); }    
A interface Lista Deve ser traduzida para IDL  Pre compilada pelo  idl2java
A implementação da interface Deve herdar da classe gerada pelo  idl2java   public   class  aLista  extends  _ListaImplBase{
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); } }
Inicilização do serviço
Classes de implementação Java Classes CORBA Classes analise (UML)
Classe Usuario (cliente) Deve se ligar ao ORB Deve instanciar o objeto   // inicializa o orb orb = org.omg.CORBA.ORB.init(arg, null );   // liga no objeto   lis = ListaHelper.bind(orb,  &quot;minha lista&quot; );
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(); ...
Sequencia para execução C:> start osagent Coloca no ar o ORB e os seus serviços C:> start java –DOAid=Tsession ListaServer Coloca no ar o serviço de Lista C:> java Usuario Executa a aplicação no cliente
Seqüência de execução
Exemplo de resultado
Leitura Recomendada UML Jacobson, I; Rumbaugh, J; Booch, G.  UML: Guia do Usu á rio . Editora Campus, 2000. CORBA com JAVA ORFALI, R. e HARKEY, D.  Client/Server Programming with Java and CORBA . 2nd Ed. John Wiley & Sons Ed. 1998.  Excelente LIVRO e CD-ROM OMG www.omg.org   Artigos e Documentação da UML, CORBA, IDL, etc…
Conclusão Demanda crescente por Flexibilidade Desempenho Baixo custo Leva à distribuição dos negócios Padrões vão garantir os  investimentos em sistemas distribuídos
Dúvidas? para não perder o contato: José Eduardo Zindel Deboni deboni @voxxel.com. br www.voxxel.com.br/ deboni

Integração de Tecnologias

  • 1.
    Integração de TecnologiasUML – CORBA - Java A Convergência das Tecnologias Tutorial por José Eduardo Zindel Deboni Voxxel Consultoria de Sistemas
  • 2.
    Objetivos do TutorialObservando que tudo esta orientado a objetos Análise/Modelagem……….UML Projeto…………………….UML e CORBA Implementação……………IDL e Java Analisar como o desenvolvimento de sistemas pode tirar vantagens da integração de tecnologias Estudar através de um exemplo como a UML pode integrar-se a CORBA e Java
  • 3.
    O que éum Tutorial ? Verbete: tutorial 2. Diz-se da modalidade de ensino exercido por tutor (4). Verbete: tutor [Do lat im: tutore.] 4. Aluno designado como professor de outros alunos , em formas alternativas de ensino. Fonte: Dicionário Aurélio em CD-ROM V.1.4
  • 4.
    Os sistemas atuaissão… … complexos Negócios estão cada vez mais complexos Integração de mercados, globalização Competitividade crescente … feitos para a internet Confiabilidade: o negócio depende do sistema e_bussiness: O negócio é o sistema … distribuídos em n camadas Especialização de cada atividade do sistema Facilidade de manutenção e portabilidade e_business: O negócio é a rede
  • 5.
    A arquitetura den 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.
    Convergência para objetosAnálise e Modelagem Projeto e Arquitetura Implementação UML CORBA Java Lente convergente Da Orientação a Objetos
  • 7.
    Tecnologias Orientadas aObjeto Linguagem de Modelagem Orientada a Objetos UML – Unified Modeling Language Arquitetura de Aplicações de Objetos Distribuidos CORBA – Common Object Request Broker Architecture Ambiente flexível e portável para desenvolvimento Java (Aplicações, Applets, Servlets, JDBC, Swing, RMI, EJB…)
  • 8.
    Como fica aEngenharia de Software? É necessário fazer Engenharia de Software? É possivel se fazer Engenharia do Software? Integrar :Analise – Projeto - Implementação Projetar a solução antes de construir Criar uma “planta” do software Utilizar um método para desenvolvimento de sistemas Simular, prever resultados antes da construção Como desenvolver em tempo de internet? Com agregar as novas tecnologias disponíveis?
  • 9.
    Respostas: Sim, éindispensável usar as técnicas da Eng. de Software, para atender à complexidade e garantir confiabilidade às soluções distribuidas. Sim, é possível realizar a Eng. de Software porque tudo esta Orientado a Objetos. Modelagem Orientada a Objetos (UML) Arquitetura de Objetos distribuidos (CORBA) Implementação para internet (Java)
  • 10.
    Novas questões: Comointegrar estas novas tecnologias com os métodos de Engenharia de Software? 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 A UML é capaz de modelar e dar uma visão completa do todo tão heterogêneo ?
  • 11.
    Abordagem Analisar aUML e a sua integração com Java e CORBA Propor um método para o trabalho em conjunto destas tecnologias Exemplificar a integração
  • 12.
  • 13.
    O que éa UML? UML Unified Modeling Language É uma linguagem de modelagem de sistemas É orientada a objetos É padronizada pela OMG É suportada por diversas ferramentas CASE Ainda é pouco difundida, e utilizada
  • 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.
    Casos de UsoDescreve os cenários de interação Identifica elementos externos Caracteriza os objetivos de cada um com o sistema Um Ator se comunica com Casos de Uso Define-se a fronteira do sistema
  • 16.
    Diagramas de Casosde Uso Cliente Vendedor Gerente Fazer Pedidos Aprovar Crédito Entregar Material Sistema
  • 17.
    Diagramas de ClassesEstrutura das partes que formam o sistema Expõe os componentes internos Estabelece as relações entre as classes É um diagrama estrutural estático e não dinâmico Possui uma relação direta com a estrutura dos códigos
  • 18.
    Exemplos de representaçãoPessoa Pessoa nome: Texto idade: inteiro cadastrar() Pessoa {abstrata, autor=JEDeboni} +nome: Texto #RG : inteiro +casado : boolean=false +cadastra() +criar(RG:inteiro)
  • 19.
  • 20.
    Diagramas de InteraçãoDiagramas de Seqüência de Eventos Diagramas de Colaboração As classes se comunicam pelos métodos Descreve a troca de mensagens Mostra a dinâmica observável entre as classes Uma mensagem se da pela invocação de um método de outra classe e pela passagem de parâmetros
  • 21.
  • 22.
    Diagrama de EstadosEmprestado Disponível Atrasado Reservado Emprestar Retornar Retornar [ExisteReserva] Emprestar [DataReserva<Hoje] [DataEmprestimo>Hoje] /AvisarUsuário Devolver [AvisarGerente] Devolver [ExisteReserva] /AvisarUsuario
  • 23.
    Diagramas de ImplementaçãoDescrição dos componentes de software que formam o sistema e a arquitetura de hardware Diagramas de Componentes Diagramas de Distribuição
  • 24.
    Diagrama de ComponentesGUI Libs BancoDeDados
  • 25.
    Diagrama de DsitribuiçãoImpressora Cliente:PC Servidor:Host1
  • 26.
    Integração da implementaçãoGUI Libs BancoDeDados Cliente:PC Servidor:Unix
  • 27.
    Pacotes Agrupam osobjetos Pode-se usar para identificar as camadas
  • 28.
  • 29.
    Mapeamento de umURL http://www.empresa.com.br/aplic/horas/index.html www.empresa.com.br
  • 30.
  • 31.
    Modelo UML desistemas Java Representação gráfica dos sistemas Visão do todo, integrada e coerente Permite uma visão sistêmica Facilita o entendimento da arquitetura Permite e sconde os detalhes do código d urante a visão da arquitetura UML + Java uma união vantajosa para os dois
  • 32.
    UML e Java– ida e volta Geração de Código Tradução dos diagramas em código Java Os diagramas de classe geram estruturas Java Engenharia Reversa Gerar modelo com base em código Java Identificar classes, componentes e relações
  • 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.
    Mapeamento de umaApplet 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.
    Exemplo de diagramade 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.
    Código do diagramade 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.
    Métodos para relacionarclasses Interfaces Uma descrição do que deve ser feito, sem se preocupar com a implementação Herança Trasferir para uma classe filha os métodos, atributos e relacionamentos da classe mãe Composição Criar uma instância de uma classe para poder utilizar os serviços que ela dispõe
  • 38.
    Interface UML, Javaou CORBA Permite descrever como deve ser uma classe sem dizer como ela deve ser implementada. Uma classe com assinaturas de operações Uso: integrar análise/projeto e sistemas Pode usada para representar o resultado da análise, A análise define as assinaturas das operações, No projeto as assinaturas serão implementadas As classes devem implementar as interfaces
  • 39.
    Interfaces UML eJava 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.
    Herança public class classeFilha extends classeMae { } Toda a funcionalidade da mãe é Transferida para a classe filha como Se fosse dela.
  • 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.
    Todas as opçõesjuntas public class minhaClasse extends classeMae implements ClasseModelo { private Recursos oRec = new Recursos() ; }
  • 43.
  • 44.
    O que éa tecnologia CORBA? CORBA Common Object Request Broker Architecture Uma camada de software que distribui objetos Oferece uma série de serviços de objeto É padonizada pela OMG IDL - Interface Definition Language Padrão para definição dos Serviços dos objetos Linguagem semelhate ao C Portabilidade para Java, C++, Delphi, VB etc.. Permite integração entre sistemas heterogêneos.
  • 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.
    CORBA algumas característicasInvocação estática Os parâmetros podem ser conhecidos Invocação dinâmica Os parâmetros podem ser “descobertos” Escalabilidade Criação de uma rede de serviços intergalática Segurança, Transparência e Controle Serviços disponíveis pela arquitetura Coexistência com sistemas atuais (legados)
  • 47.
    Anatomia do CORBA2.0 Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
  • 48.
    A UML modelaas interfaces float balance Account makeDeposit makeWithdrawal A linguagem IDL suporta Os princípios da Orientação a Objetos
  • 49.
    Exemplo de interfaceIDL // 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.
    A interface IDLfaz a ligação Interface IDL Cliente Servidor Cliente Stub Server Stub IDL compiler Compilador em linguagem nativa
  • 51.
    idl2java Interface.idl idl2javaInterfaceHolder.java InterfaceHelper.java _st_Interface _sk_Interface _InterfaceImplBase.java Interface.java Cliente Servidor _exemplo_Interface.java
  • 52.
    Distribuição da aplicaçãoorg.omg.CORBA.Object _InterfaceImplBase.java Interface.java ImplementacaoInterface.java org.omg.CORBA.ORB org.omg.CORBA.ORB Cliente Servidor
  • 53.
    Passos para acriaçã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.
    CORBA e UMLO modelo da analise recebe elementos da arquitetura da solução na fase de projeto Os modelos devem ser trabalhados para refletir a arquitetura do projeto O resultado da análise deve ser preservado nas m anipulações do projeto
  • 55.
    CORBA e JavaO uso de Java na Arquitetura CORBA ... ... Dá mobilidade de código portabilidade ... Facilita a ida do CORBA para a WEB ... Permite a construção de Agentes ... Permite a integração do mundo OO Java “concorre” com CORBA no RMI e EJB (alternativas semelhantes)
  • 56.
    Metodo para desenvolvimentoAná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.
    Seqüência de passosProjeto Análise Implementação Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
  • 58.
    Apresentação do ProblemaLevantar o problema a ser resolvido O que ? Porque? e não da implementação Como? Trabalho do Especialista da Aplicação e do Engenheiro de Software CASOS DE USO
  • 59.
    Análise Entendimento doproblema Modelagem Conceitual Modelo de Casos de Uso Modelo se Eventos Modelo Conceitual de Classes Produtos da análise.
  • 60.
    Analise Desenvolver Modelosem um CASE Com a UML (Linguagem padronizada) Representar o sistema (problema) Criar um Modelo de Interfaces
  • 61.
    Projeto Aplicação dealguns padrões de projeto. Modelagem da arquitetura Componentização do sistema Definir a Interfaces do negócio (IDL) Definir a camada de apresentação (IHM) Definir a camada de persistência (BD)
  • 62.
    Projeto Integrar aarquitetura CORBA ao modelo Proposta de componentes e distribuição Integração com Java em alto nível Definição da estrutura das classes 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.
    Implementação Contrução doscomponentes de negócio IDL2Java Construção dos códigos do servidor Integração com serviço de Banco de Dados Teste local Construção da Interface Homem Máquina Integração com ORB
  • 64.
    Implementação Programas Java Geração de Códigos Criação dos componentes e dos programas Gerar código dos modelos Complementar os códigos com programação Fazer a Engenharia Reversa para atualizar os modelos
  • 65.
    Resumo do MétodoAnálise Criar um Modelo de Interfaces do problema Projeto Criar Classes de Implementação das Interfaces, Relacionar as classes com a arquitetura Aplicar patterns e manipular o modelo de projeto Implementação Gerar código dos modelos Complementar os códigos com programação Fazer a Engenharia Reversa para atualizar os modelos
  • 66.
    Importância de umCASE CASE – Computer-Aided Software Engineering Funções Principais Facilidade de Uso, interface gráfica amigável Aderência à UML, sem mudanças proprietárias Integração entre os diagramas Teste (cheklist) dos diagramas Geração de Relatórios (textos e gráficos) Geração de Código (linguagens OO, BD) Engenharia Reversa Repositório de Modelos e Objetos Controle de Versão (integração com software 3o)
  • 67.
    Exemplo de Aplicação Demonstrar que a UML é capaz de ajudar na modelagem e projeto de aplicações distribuidas pela tecnologia CORBA
  • 68.
    Receita … AplicaçãoLocal (UML <> Java) Projetar uma aplicação local com UML Gerar o código Java do projeto UML Construir a aplicação em Java Executar a aplicação local Fazer a atualização do modelo UML Aplicação Distribuída (UML <> CORBA <> Java) Distribuir a aplicação com CORBA no modelo UML Construir os elementos auxiliares CORBA Construir os novos códigos em Java Executar a aplicação distribuída
  • 69.
    Visitem nossa cozinha… Ambiente de Desenvolvimento Ferramenta CASE Ambiente Java (jdk) Editor Java Banco de Dados (opcional) ORB com suporte Java (idl2java) Ambiente de Processamento Navegador Internet (se for executar uma Applet) Servidor CORBA (ORB)
  • 70.
    Ferramenta CASE Produtosdo Mercado, Shareware, Demos Rational Rose (www.rational.com) System Architect (www.choose.com.br) WithCLASS (www.microgold.com) ToghetherJ
  • 71.
  • 72.
    Ambiente Java JDK1.1.X ( JDK1.1.5 ) JDK1.2, JDK 1.3, … Visual Café (Symantec) Jbuilder (Imprise) Visual Age (IBM) FreeJava (RealJ)
  • 73.
  • 74.
    Ferramentas CASEWithCLASS 99 JDK 1.1.5 (com jdbc) FreeJava 3.0 (RealJ) – editor Java shareware JBuilder (opcional para o projeto gráfico)
  • 75.
    Ambiente de rede- execução VisiBroker for Java 3.1 VisiBroker Naming Service fo Java 3.0 Internet Explorer 5.0 Windows 98
  • 76.
    Arquitetura ServidorDesenvolvedor Cliente navegador Servidor WEB Servidor ORB Servidor BD CASE Ambiente Desenv. Bibliotecas
  • 77.
    O prato principal…Sistema para consulta em uma lista de telefones
  • 78.
    Diagrama de Casode Uso O usuário entra com um nome e consulta o telefone de uma lista de telefones armazenada em um arquivo
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
    Diagrama de ImplementaçãoUsuario Lista lista.txt
  • 84.
  • 85.
    Código da aplicaçãoimport 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.
  • 87.
    Tradução da interfacepara IDL     interface Lista{ string procura(in string texto); }; Código gerado pelo CASE Lista -procura( string ):string
  • 88.
  • 89.
    Classes de implementaçãoJava Classes CORBA Classes analise (UML)
  • 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.
    A interface ListaDeve ser traduzida para IDL Pre compilada pelo idl2java
  • 92.
    A implementação dainterface Deve herdar da classe gerada pelo idl2java public class aLista extends _ListaImplBase{
  • 93.
    Criar uma aplicaçãoservidora 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.
  • 95.
    Classes de implementaçãoJava Classes CORBA Classes analise (UML)
  • 96.
    Classe Usuario (cliente)Deve se ligar ao ORB Deve instanciar o objeto // inicializa o orb orb = org.omg.CORBA.ORB.init(arg, null ); // liga no objeto lis = ListaHelper.bind(orb, &quot;minha lista&quot; );
  • 97.
    Modificações na classeUsuario 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.
    Sequencia para execuçãoC:> start osagent Coloca no ar o ORB e os seus serviços C:> start java –DOAid=Tsession ListaServer Coloca no ar o serviço de Lista C:> java Usuario Executa a aplicação no cliente
  • 99.
  • 100.
  • 101.
    Leitura Recomendada UMLJacobson, I; Rumbaugh, J; Booch, G. UML: Guia do Usu á rio . Editora Campus, 2000. CORBA com JAVA ORFALI, R. e HARKEY, D. Client/Server Programming with Java and CORBA . 2nd Ed. John Wiley & Sons Ed. 1998. Excelente LIVRO e CD-ROM OMG www.omg.org Artigos e Documentação da UML, CORBA, IDL, etc…
  • 102.
    Conclusão Demanda crescentepor Flexibilidade Desempenho Baixo custo Leva à distribuição dos negócios Padrões vão garantir os investimentos em sistemas distribuídos
  • 103.
    Dúvidas? para nãoperder o contato: José Eduardo Zindel Deboni deboni @voxxel.com. br www.voxxel.com.br/ deboni

Notas do Editor

  • #2 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.