Title: Integra
1Integração de TecnologiasUML CORBA - Java A
Convergência das Tecnologias
- Tutorial
- por José Eduardo Zindel Deboni
- Voxxel Consultoria de Sistemas
2Objetivos do Tutorial
- Observando que tudo esta orientado a objetos
- Análise/Modelagem.UML
- Projeto.UML e CORBA
- ImplementaçãoIDL 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
3O que é um Tutorial ?
- Verbete tutorial
- 2. Diz-se da modalidade de ensino exercido por
tutor (4). - Verbete tutor Do latim 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
4Os 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
5A arquitetura de n camadas
6Convergência para objetos
Análise e Modelagem
UML
Projeto e Arquitetura
CORBA
Implementação
Java
Lente convergente Da Orientação a Objetos
7Tecnologias 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)
8Como 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?
9Respostas
- 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)
10Novas 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?
11Abordagem
- 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
12Integração entre as tecnologias
13O 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
14Seqüência de diagramas
Casos de Uso
Comportamento Externo
Eventos
Colaboração
Atividades
Estados
Comportamento interno
Pacotes
Classes
Estrutura
Componentes
Distribuição
Implementação
esta seqüência não faz parte da UML é apenas
uma sugestão
15Casos 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
16Diagramas de Casos de Uso
17Diagramas 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
18Exemplos de representação
Pessoa abstrata, autorJEDeboni
Pessoa
nome Texto RG inteiro casado booleanfalse
Pessoa
nome Texto idade inteiro
cadastra() criar(RGinteiro)
cadastrar()
19Modelo de Classes
20Diagramas 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
21Diagrama de seqüência de eventos
22Diagrama de Estados
DataReservaltHoje
Disponível
Devolver
Retornar
AvisarGerente
Reservado
Emprestar
Retornar
ExisteReserva
Emprestado
Emprestar
Devolver
ExisteReserva
DataEmprestimogtHoje
/AvisarUsuario
/AvisarUsuário
Atrasado
23Diagramas 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
24Diagrama de Componentes
GUI
Libs
BancoDeDados
25Diagrama de Dsitribuição
ServidorHost1
Impressora
ClientePC
26Integração da implementação
ClientePC
GUI
Libs
ServidorUnix
BancoDeDados
27Pacotes
Agrupam os objetos Pode-se usar para
identificar as camadas
28Integração entre os diagramas
29Mapeamento de um URL
www.empresa.com.br
http//www.empresa.com.br/aplic/horas/index.html
30Integração entre as tecnologias
31Modelo 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 esconde os detalhes do código durante a
visão da arquitetura - UML Java uma união vantajosa para os dois
32UML 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
33Mapeamento em uma classe java
public class Funcionario private
String nome "" private int telefone
0 private boolean ativo false
public void novo ()
34Mapeamento de uma Applet java
Applet
import java.applet. import java.awt. public
class Funcionario extends Applet
private String nome "" private int
telefone 0 private boolean ativo
false public void novo ()
abstract
Funcionario
final
-nomeString
-telefoneint
-ativoboolean
novo( )void
35Exemplo de diagrama de estado
36Código do diagrama de estado
class DEMO private String currentState
"INIT" //States INIT, CLOSE,
ListandoItens, EditandoItens //Events
nullEvent, iniciar, fechar, editar void
process ( String anEvent ) if ( (
currentState "INIT" ) ( anEvent
"iniciar" ) ( teste1true ) )
currentState "ListandoItens" modificafalse
return if ( ( currentState
"ListandoItens" ) ( anEvent "fechar" ) (
teclaCanceltrue ) ) currentState "CLOSE"
BD.fechar() return if ( (
currentState "ListandoItens" ) ( anEvent
"editar" ) ( teclaEdit()true ) )
currentState "EditandoItens" BD.abrir()
return else return
37Mé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
38Interface 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
39Interfaces UML e Java
public interface ClasseModelo public
void criar (String p1)
public class impClasse implements ClasseModelo
public void criar (String p) //
// aqui devem ser inserido o código // do
método //
40Herança
public class classeFilha extends
classeMae Toda a funcionalidade da mãe
é Transferida para a classe filha como Se fosse
dela.
41Agregaçã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
42Todas as opções juntas
public class minhaClasse extends
classeMae implements ClasseModelo
private Recursos oRec new
Recursos()
43Integração entre as tecnologias
44O 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.
45Integração Cliente/Servidor
ORB barramento de objetos Object Request
Broker Os serviços são distribuidos na forma
de Objetos em um barramento
46CORBA 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)
47Anatomia do CORBA 2.0
48A UML modela as interfaces
Account
A linguagem IDL suporta Os princípios da
Orientação a Objetos
float balance
makeDeposit makeWithdrawal
49Exemplo 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)
Account
float balance
makeDeposit makeWithdrawal
50A interface IDL faz a ligação
Cliente
IDL
compiler
Cliente
Stub
Interface IDL
Server
Stub
Compilador
em
linguagem
Servidor
nativa
51idl2java
InterfaceHolder.java
Cliente
InterfaceHelper.java
_st_Interface
Interface.idl
idl2java
_sk_Interface
_InterfaceImplBase.java
Interface.java
Servidor
_exemplo_Interface.java
52Distribuição da aplicação
org.omg.CORBA.ORB
org.omg.CORBA.ORB
org.omg.CORBA.Object
Interface.java
_InterfaceImplBase.java
Cliente
Servidor
ImplementacaoInterface.java
53Passos para a criação de
Ling
.
Nativa
Cliente
7
Cria
aplicação
9
6
8
ORB
Cliente
1
Stub
Definição
das
2
Interfaces IDL
Implementação
Server
dos
métodos
Stub
Servidor
(
ling
.
nativa)
4
5
3
54CORBA 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
manipulações do projeto
55CORBA 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 CORBAno RMI e EJB
(alternativas semelhantes)
56Metodo para desenvolvimento
ServidorJava/outras
Negócio
Análise
Interface IDL
Codigo
Modelo
ORB
Projeto
Cliente Java/outras
Servidor Web
Modelagem UML/CORBA
Implementação CORBA/Java
Browser
57Seqüência de passos
Análise
Projeto
Implementação
58Apresentaçã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
59Análise
- Entendimento do problema
- Modelagem Conceitual
- Modelo de Casos de Uso
- Modelo se Eventos
- Modelo Conceitual de Classes
- Produtos da análise.
60Analise
- Desenvolver Modelos em um CASE
- Com a UML (Linguagem padronizada)
- Representar o sistema (problema)
Criar um Modelo de Interfaces
61Projeto
- 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)
62Projeto
- 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
63Implementaçã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
64Implementaçã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
65Resumo 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
66Importâ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)
67Exemplo de Aplicação
- Demonstrar que a UML é capaz de ajudar na
modelagem e projeto de aplicações distribuidas
pela tecnologia CORBA
68Receita
- Aplicação Local (UML ltgt 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 ltgt CORBA ltgt 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
69Visitem 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)
70Ferramenta CASE
- Produtos do Mercado, Shareware, Demos
- Rational Rose (www.rational.com)
- System Architect (www.choose.com.br)
- WithCLASS (www.microgold.com)
- ToghetherJ
-
71Exemplo de Ferramenta CASE
72Ambiente Java
- JDK1.1.X (JDK1.1.5)
- JDK1.2, JDK 1.3,
- Visual Café (Symantec)
- Jbuilder (Imprise)
- Visual Age (IBM)
- FreeJava (RealJ)
73Editor Java
74Ferramentas
- CASE WithCLASS 99
- JDK 1.1.5 (com jdbc)
- FreeJava 3.0 (RealJ) editor Java shareware
- JBuilder (opcional para o projeto gráfico)
75Ambiente de rede - execução
- VisiBroker for Java 3.1
- VisiBroker Naming Service fo Java 3.0
- Internet Explorer 5.0
- Windows 98
76Arquitetura
Servidor
Servidor WEB Servidor ORB Servidor BD
Desenvolvedor
Cliente
CASE Ambiente Desenv. Bibliotecas
navegador
77O prato principal
- Sistema para consulta em uma lista de telefones
78Diagrama de Caso de Uso
O usuário entra com um nome e consulta o telefone
de uma lista de telefones armazenada em um
arquivo
79Diagrama de Classes (inicial)
80Diagrama de seqüência de eventos
81Modelo de estados do Usuario
82Modelo de Classes final
83Diagrama de Implementação
84Exemplo da apresentação
85Código da aplicação
import java.io. public class aLista implements
Lista public String procura(String texto)
String linha,alinha"não encontrei "texto
try FileInputStream is new
FileInputStream("lista.txt")
DataInputStream ds new DataInputStream(is)
while ((linha ds.readLine())!null)
if(linha.indexOf(texto)!-1) alinhalinha
ds.close() is.close()
catch (IOException e)
System.out.println("Erro "e)
return(alinha)
86Aplicação distribuida
87Tradução da interface para IDL
Código gerado pelo CASE
interface
Lista
string procura(in string texto)
88Pré-compilador idl2java
89Classes analise (UML)
Classes CORBA
Classes de implementação Java
90Interface Lista.java (gerada)
public interface Lista extends org.omg.CORBA.Objec
t / ltpgt Operation ltbgtListaprocuralt/
bgt. ltpregt string procura( in string
texto ) lt/pregt lt/pgt / public
java.lang.String procura( java.lang.String
texto )
91A interface Lista
- Deve ser traduzida para IDL
- Pre compilada pelo idl2java
92A implementação da interface
- Deve herdar da classe gerada pelo idl2java
public class aLista extends _ListaImplBase
93Criar 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("minha lista") //
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)
94Inicilização do serviço
95Classes analise (UML)
Classes CORBA
Classes de implementação Java
96Classe 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, "minha
lista")
97Modificações na classe Usuario
public class oUsuario extends Frame public
static Lista lis public Label l new
Label("Procura ") public Button b new
Button("Ok") 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 lis ListaHelper.bind(orb, "minha
lista") Usuario u new Usuario()
...
98Sequencia para execução
- Cgt start osagent
- Coloca no ar o ORB e os seus serviços
- Cgt start java DOAidTsession ListaServer
- Coloca no ar o serviço de Lista
- Cgt java Usuario
- Executa a aplicação no cliente
99Seqüência de execução
100Exemplo de resultado
101Leitura 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
102Conclusã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
103Dúvidas?
- para não perder o contato
- José Eduardo Zindel Deboni
- deboni_at_voxxel.com.br
- www.voxxel.com.br/deboni