Objetos de Negócio CORBA BO Cooperantes Anatomia de um BO Anatomia de um BO cliente/servidor BO em CORBA • Um BO provê um modo natural para descrever conceitos do mundo real, independentes da aplicação. • Cliente, “order”, dinheiro, pagamento, carro, ... Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro BO em CORBA • BO proporcionam uma visão de software que transcende ferramentas, aplicações, base de dados e outros conceitos de sistemas. • A última promessa da tecnologia de objetos e componentes é provê esses componentes de média granularidade que comportamse muito semelhantemente como é o mundo real. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro BO Cooperativos • BO devem ser componentes independentes. • Enquanto sendo hábeis para interoperar com outros BO. • Formando um “lattice” (treliça) de componentes que são objetos de negócios cooperativos. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro O que são Componentes de Software • Mais uma forma de gerar frases ... “Os componentes são importantes porque é muito importante usar componentes.” • Mais um modismo semelhante a Orientação a Objetos ... “Meu gato é orientado a objetos.” • Alguém já viu um Componente de Domínio ? Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Componentes de Domínio • Significado de Domínio : “Cooperação entre componentes” • Exemplo em Delphi: Podemos observar componentes durante a construção de uma simples aplicação em Delphi ... Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Demo em Delphi • Uma pessoa ... (pessoa) • Tem nome ... (pessoa e nome) • Que pode ser abreviado ... (pessoa, nome, nome_abreviado) • E fonetizado ... (pessoa, nome, nome_abreviado, nome_ fonetizado) • A aplicação está pronta ... (nome, nome_abreviado, nome_fonetizado) Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Vamos Definir Componentes ? • Qualquer subsistema que possa ser separado e que possui uma interface “reusável” e potencialmente padronizável. • Um elemento de software que pode ser facilmente utilizado em múltiplos contextos, incluindo aqueles não previstos originalmente. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Vamos definir componentes ? • Um objeto com uma interface pública preparado para ser utilizado dentro de um ambiente orientado a objetos. • Estes ambientes definem interfaces para que os objetos possam se comunicar entre si e provêm suporte para o reuso. • São uma combinação de: um modelo de programação e um metamodelo de informação. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Vamos definir componentes ? • Um subsistema que não está ligado a nenhuma aplicação específica. • Um produto de alta qualidade, resultado de um cuidadoso desenho e teste. • Empacotado para reuso, com uma interface bem projetada e documentada. • Algo genérico, para ser usado em diferentes lugares, configurado na hora do uso. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Uma definição • Uma cápsula de conhecimento. • Uma unidade de padronização. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Motivação “The number of applications that need to be written is growing exponentially. Unless we can find a way to write them in a tenth of the time, we are tost”. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro A Crise do Software • 52.7% dos projetos necessitam correções de orçamento, o que implica em perdas significativas. • Produtividade dos desenvolvedores caiu 13% desde 1993. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro A Crise do Software • A arquitetura Cliente/Servidor clássica não aumentou a produtividade no desenvolvimento de software como prometido. • Programar Orientado a Objeto ajuda, mas não resolve. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro A Crise do Software • Múltiplos sistemas de informação que não se falam. • Definição de padrões. • Qualidade da informação: interpretação do padrão. • Mudam os governos, mudam as direções antes dos sistemas ficarem prontos. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Precisamos de uma Infoestrutura ... • Que não dependa da infraestrutura tecnológica. • Que possa ser implementada em partes independentes. • Que não se perca nas mudanças políticas. • Que possa ser reaproveitada por todos. • Que implemente os padrões, para que não fiquem no papel. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Procurando Soluções ... • Os sistemas monolíticos estão caminhando para uma rápida extinção; • Surge um novo paradigma de desenvolvimento de software, com base em componentes padronizados, baseados em arquiteturas que ofereçam os serviços necessários à distribuição dos objetos. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Por que usar Componentes ? • Pelas razões erradas: é moderno ... são bonitos ... não fica bem se não usar ... alguém mandou ... • Pelas razões certas: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ !!! Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Características de Componentes • Um componente deve permitir configuração sem perder identidade ... • Tem que encapsular algum invariante que agregue valor, protegendo ele das mudanças tecnológicas ... • Mais informações: www.sbis.epm.br www.datasus.epm.br/ccssis Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Exemplo de Componente • TDicionario O conhecimento de navegar em árvores armazenadas em BD. Pode ser configurado ... Preserva o conhecimento ... Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Principais Características • Possui documentação que lhe é própria. (help on line) • Podem ser agrupados em conjuntos para distribuição (Packages). • Pode ser substituído sem afetar a aplicação. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Principais Características • Suportam composição (agregação): componentes formados a partir de outros componentes. • Suportam introspecção. • Suportam mecanismos de notificações (eventos). • Suportam serialização. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Principais Características • Possuem um modelo que integra eles às ferramentas de desenvolvimento. (COM, CORBA, JAVABEANS, EJB) • Suportam uma linguagem de definição. (IDL) • Desejáveis: Implementadas nos modelos, mas não suportadas pelas ferramentas de desenvolvimento. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Principais Características • Suporte a várias interfaces. • E a mais importante: FEEDBACK VISUAL AO DESENVOLVEDOR (caso Delphi) Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Mas seja qual for o motivo ... • USE COMPONENTES ! Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro BO em CORBA • Primeiro, deve-se definir as regras para que esses componentes funcionem. (OMG) • De acordo com a OMG, um BO é um componente no nível da aplicação que podemos usar em combinações imprevisíveis. Um BO é, por definição, independente de qualquer aplicação. • Aplicações Distribuídas são suites de BO. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro BO em CORBA • Uma aplicação, simplesmente, provê o ambiente para executar esses BO. • Um BO é um componente que representa uma entidade “reconhecível” na vida cotidiana. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro Objetos a Nível de Sistemas • Em contraste, objetos a nível de sistemas, representam entidades que fazem sentido somente para sistemas de informação e programadores. • Eles não representam nada que um usuário final reconheça. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro BO em CORBA • De acordo com a OMG, um BO é um toplevel object reconhecível pelo usuário final de um sistema. • Um BO é um objeto auto-contido e “distribuível” que tem uma interface de usuário, estado e sabe como cooperar com outros BO desenvolvidos separadamente para realizar uma tarefa desejada. Computação Distribuída João Bosco Mangueira Sobral UNIRONDON - Cuiabá - MT Daniela Barreiro Claro