integração de tecnologias uml – corba - java a convergência das tecnologias

Post on 11-Jan-2016

20 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Integração de TecnologiasUML – 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 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

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

Camadade

Apresentação

Camadade Negócios

Camadade

Dados

webserver

Corba/iiop Corba/iiop

Corba/iiop

Http/cgi

RDBMSOODBMSArquivos

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

JavaAmbiente de Implementacao

CORBAArquitetura da Solucao

Dominio do Problema

UMLAnalise e Projeto

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*

Comportamentointerno

ComportamentoExterno

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

AprovarCrédito

EntregarMaterial

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: Textoidade: inteiro

cadastrar()

Pessoa {abstrata,

autor=JEDeboni}

+nome: Texto#RG : inteiro+casado : boolean=false

+cadastra()+criar(RG:inteiro)

ReservasDataReservaDataValidadeCriarCancelar

UsuariosNomeLocalTelefoneSenhaFazReserva

MateriaisCodigoAssuntoTituloAutorEmprestarDevolver

LivrosEditoraEdiçãoISBNMostraDetalhes

1

Consultar

1

1

1

Empréstimo

DataEmpréstimoDataRetornoATRASONovo

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

interfaces

ClassesAulixiares

Classes Persistentes(Banco de Dados)

Classes deNegócio

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

<<pagina>>index

\horas\

Integração entre as tecnologias

JavaAmbiente de Implementacao

CORBAArquitetura da Solucao

Dominio do Problema

UMLAnalise e Projeto

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 esconde os detalhes do código

durante 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 classe java

Funcionario

nometelefoneativonovo

public class Funcionario { private String nome = ""; 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 = ""; 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 = "INIT" ; //States: INIT, CLOSE, ListandoItens, EditandoItens //Events: nullEvent, iniciar, fechar, editar

void process ( String anEvent ) {

if ( ( currentState == "INIT" ) && ( anEvent == "iniciar" ) && ( teste1==true ) ) { currentState = "ListandoItens" ; modifica=false return; }

if ( ( currentState == "ListandoItens" ) && ( anEvent == "fechar" ) && ( teclaCancel=true ) ) { currentState = "CLOSE" ; BD.fechar() return; } if ( ( currentState == "ListandoItens" ) && ( anEvent == "editar" ) && ( teclaEdit()==true ) ) { currentState = "EditandoItens" ; 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

ClasseModelo

+criar(String):void

impClasse

+criar(String):void

<<implementa>>

public class impClasse implements ClasseModelo{ public void criar (String p) { // // aqui devem ser inserido o código // do método //

}}

public interface ClasseModelo { public void criar (String p1); }

Herança

classeMae

classeFilha

public class classeFilha extends classeMae{ }

Toda a funcionalidade da mãe éTransferida para a classe filha comoSe fosse dela.

Agregação

Recursos

+funcao( ):void

ClasseA

1

1

oRec

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

minhaClasse

ClasseModelo

+criar(String):void

Recursos

+funcao( ):void

classeMae

<<implementa>>

1

1

oRec

public class minhaClasse extends classeMae implements ClasseModelo { private Recursos oRec = new Recursos() ; }

Integração entre as tecnologias

JavaAmbiente de Implementacao

CORBAArquitetura da Solucao

Dominio do Problema

UMLAnalise e Projeto

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

Requisições de Objeto

Invocamétodo () no

objeto Z

Objeto Zmétodo()

IDLIDL

ORB – barramento de objetosObject Request BrokerOs serviços são distribuidos na forma deObjetos 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

BOAORB

IIOP - Internet InterORB Protocol

A UML modela as interfaces

float balance

Account

makeDepositmakeWithdrawal

A linguagem IDL suporta Os princípios da Orientação a Objetos

Exemplo de interface IDL

// IDLinterface Account{//Attributesattribute float balance;readonly attribute string owner;//Operationsvoid makeDeposit(in float amount,out float newBalance);void makeWithdrawal(in float amount,out float newBalance);};

float balance

Account

makeDepositmakeWithdrawal

A interface IDL faz a ligação

Interface IDL

Cliente

Servidor

ClienteStub

ServerStub

IDL compiler

Compiladorem 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

ClienteServidor

Passos para a criação de

Definição dasInterfaces IDL

Cliente

Servidor

ClienteStub

ServerStub

Implementaçãodos métodos(ling. nativa)

ORB

7

1

2

34

9

8

5

Ling. NativaCria 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 manipulaçõ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 CORBAno RMI e EJB (alternativas semelhantes)

Metodo para desenvolvimento

Análise

Projeto

CodigoModelo InterfaceIDL

ClienteJava/outras

Browser

ServidorJava/outras

Negócio

ModelagemUML/CORBA

ImplementaçãoCORBA/Java

ORB

ServidorWeb

Seqüência de passos

Cliente

interface

Servico

_STUB _SKELTON

BOAORB

IIOP - Internet InterORB Protocol

Projeto

Análise

Implementação

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) comas 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 modelosComplementar 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 EngineeringFunçõ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 WEBServidor ORBServidor BD

CASEAmbiente Desenv.Bibliotecas

O prato principal…

Sistema para consulta em uma lista de telefones

Diagrama de Caso de Uso

Usuario

ConsultarTelefone

O usuário entra com um nome e consultao telefone de uma lista de telefones armazenada em um arquivo

Diagrama de Classes (inicial)

Lista

+procura( )

Usuario

11

Diagrama de seqüência de eventos

Usuario Lista

procura(nome)

Modelo de estados do Usuario

Procurando

EntrandoNome

OK

Fechar

Modelo de Classes final

oUsuario+lis:Lista+l:Label+b:Button+t:TextField+main( String):void+oUsuario( )+handleEvent( Event):boolean+action( Event, Object):boolean

Usuario Lista

-procura( String):String

aLista

+procura( String):String

1

1

lis

consulta

Diagrama de Implementação

Usuario Lista

lista.txt

Exemplo da apresentação

Código da aplicaçãoimport 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) alinha=linha; } ds.close(); is.close(); } catch (IOException e) { System.out.println("Erro: "+e); } return(alinha);}}

Aplicação distribuida

CLIENTE

SERVIDOR

Lista

lista.txt

Usuario

Tradução da interface para IDL

  

Lista

-procura( string ):string

interface Lista{ string procura(in string texto); };

Código gerado pelo CASE

Pré-compilador idl2java

Interface.idl idl2java

InterfaceHolder.java

InterfaceHelper.java

_st_Interface

_sk_Interface

_InterfaceImplBase.java

Interface.java

Cliente

ServidorInterface.java

Classes de implementação Java

Classes CORBA

Lista{interface}

+procura( java.lang.String):java.lang.String

Usuario{interface}

oUsuario+lis:Lista {static}+l:Label+b:Button+t:TextField+orb:org.omg.CORBA.ORB {static}

+main( String):void {static}+Usuario( ){constructor}+handleEvent( Event):boolean+action( Event, Object):boolean

_ListaImplBase-__ids:java.lang.String[] {array}

#_ListaImplBase {abstract}#_ListaImplBase{constructor}+_ids:java.lang.String[]+_methods:org.omg.CORBA.portable.MethodPointer[]+_execute:boolean+_execute:boolean {static}

aLista

-aLista( String){constructor}+procura( String):String

ListaServer+l:aLista {static}+orb:org.omg.CORBA.ORB {static}+boa:org.omg.CORBA.BOA {static}

+main( String):void {static}

org.omg.CORBA.BOA {abstract}org.omg.CORBA.ORB

{abstract}

org.omg.CORBA.Object {abstract}

1 1l

1

1

orb1

1

orb

1

1

boa

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

_ListaImplBase

aListaLista{interface}

A implementação da interface

Deve herdar da classe gerada pelo idl2java _ListaImplBase

aListaLista{interface}

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 BOAboa = orb.BOA_init();// criar o objetol = new aLista("minha lista");// exportar o objeto criadoboa.obj_is_ready(l);// Pronto para atender os pedidosboa.impl_is_ready();

} catch (org.omg.CORBA.SystemException e) { System.err.println(e); }}

Inicilização do serviço

ORB aListaListaServerBOA

init

init

new

obj_is_ready

impl_is_ready

Classes de implementação Java

Classes CORBA

Lista{interface}

+procura( java.lang.String):java.lang.String

Usuario{interface}

oUsuario+lis:Lista {static}+l:Label+b:Button+t:TextField+orb:org.omg.CORBA.ORB {static}

+main( String):void {static}+Usuario( ){constructor}+handleEvent( Event):boolean+action( Event, Object):boolean

_ListaImplBase-__ids:java.lang.String[] {array}

#_ListaImplBase {abstract}#_ListaImplBase{constructor}+_ids:java.lang.String[]+_methods:org.omg.CORBA.portable.MethodPointer[]+_execute:boolean+_execute:boolean {static}

aLista

-aLista( String){constructor}+procura( String):String

ListaServer+l:aLista {static}+orb:org.omg.CORBA.ORB {static}+boa:org.omg.CORBA.BOA {static}

+main( String):void {static}

org.omg.CORBA.BOA {abstract}org.omg.CORBA.ORB

{abstract}

org.omg.CORBA.Object {abstract}

1 1l

1

1

orb1

1

orb

1

1

boa

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, "minha lista");

Modificações na classe Usuariopublic 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();

...

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

oUsuario ORB ListaHelper aLIsta:ListaUsuario

init

bind

procura(nome)

procura(nome)

OK

TextField.SetText()

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óciosPadrões vão garantir os investimentos em sistemas distribuídos

Dúvidas?

para não perder o contato:

José Eduardo Zindel Debonideboni@voxxel.com.br

www.voxxel.com.br/deboni

top related