1.05k likes | 1.18k Views
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
E N D
Integração de TecnologiasUML – CORBA - JavaA 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
Camada Camada Camada de Negócios de de Dados Apresentação Corba / iiop Corba / iiop objetos ok Corba / iiop RDBMS OODBMS Arquivos Http/ cgi CGIs HTMLs webserver A arquitetura de n camadas
Convergência para objetos Análise e Modelagem UML Projeto e Arquitetura CORBA Implementação 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
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* 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
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
Sistema Fazer Pedidos Vendedor Aprovar Crédito Cliente Entregar Material Gerente Diagramas de Casos de Uso
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 • {abstrata, • autor=JEDeboni} Pessoa +nome: Texto #RG : inteiro +casado : boolean=false Pessoa nome: Texto idade: inteiro +cadastra() +criar(RG:inteiro) cadastrar()
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 Estados [DataReserva<Hoje] Disponível Devolver Retornar [AvisarGerente] Reservado Emprestar Retornar [ExisteReserva] Emprestado Emprestar Devolver [ExisteReserva] [DataEmprestimo>Hoje] /AvisarUsuario /AvisarUsuário Atrasado
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 Servidor:Host1 Impressora Cliente:PC
Integração da implementação Cliente:PC GUI Libs Servidor:Unix BancoDeDados
Pacotes Agrupam os objetos Pode-se usar para identificar as camadas
Mapeamento de um URL www.empresa.com.br http://www.empresa.com.br/aplic/horas/index.html
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 publicclass Funcionario { private String nome = ""; privateint telefone = 0; privateboolean ativo = false; publicvoid novo () { } }
Mapeamento de uma Applet java Applet import java.applet.*; import java.awt.*; publicclass Funcionario extends Applet { private String nome = ""; privateint telefone = 0; privateboolean ativo = false; publicvoid novo () { } } {abstract} Funcionario {final} -nome:String -telefone:int -ativo:boolean +novo( ):void
INIT iniciar [teste1==true] fechar /modifica=false [teclaOK()==true] /BD.fechar() EditandoItens ListandoItens editar [teclaEdit()==true] /BD.abrir() fechar fechar [TeclaCancel()==true] [teclaCancel=true] /BD.fechar( /BD.fechar() CLOSE Exemplo de diagrama de estado
Código do diagrama de estado classDEMO {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=falsereturn; }if ( ( currentState == "ListandoItens" ) && ( anEvent == "fechar" ) && ( teclaCancel=true ) ) { currentState = "CLOSE" ; BD.fechar() return; }if ( ( currentState == "ListandoItens" ) && ( anEvent == "editar" ) && ( teclaEdit()==true ) ) { currentState = "EditandoItens" ; BD.abrir() return; }…elsereturn; }}
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 publicinterface ClasseModelo{ publicvoid criar (String p1); } publicclass impClasse implements ClasseModelo{ publicvoid criar (String p) { // // aqui devem ser inserido o código // do método // } }
Herança publicclass classeFilha extends classeMae { } Toda a funcionalidade da mãe é Transferida para a classe filha como Se fosse dela.
Agregação publicclass 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 publicclass minhaClasse extends classeMae implements ClasseModelo { private Recursos oRec = new Recursos() ; }
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)
interface Servico Cliente _SKELTON _STUB BOA ORB IIOP - Internet InterORB Protocol Anatomia do CORBA 2.0
A UML modela as interfaces Account A linguagem IDL suporta Os princípios da Orientação a Objetos float balance makeDeposit makeWithdrawal
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); }; Account float balance makeDeposit makeWithdrawal
A interface IDL faz a ligação Cliente IDL compiler Cliente Stub Interface IDL Server Stub Compilador em linguagem Servidor nativa