• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Um estudo comparativo entre soa e poo fin
 

Um estudo comparativo entre soa e poo fin

on

  • 537 views

 

Statistics

Views

Total Views
537
Views on SlideShare
537
Embed Views
0

Actions

Likes
0
Downloads
11
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Um estudo comparativo entre soa e poo fin Um estudo comparativo entre soa e poo fin Document Transcript

    • Um estudo comparativo entre SOA e POO Eduardo Augusto Silvestre Kaio Queiroz Corrêa Faculdade de Computação - FACOM Faculdade de Computação - FACOM Universidade Federal de Uberlândia, UFU Universidade Federal de Uberlândia, UFU Uberlândia, Brasil Uberlândia, Brasil eduardoasilvestre@gmail.com kaiopo29@gmail.com Resumo—SOA (Service Orientation Architecture) é um estilo • Soluções e arquiteturas alinhadas;arquitetural para a construção de soluções corporativas baseadasem serviços. Na literatura existe muita confusão e disputa entre • Investimento legado aproveitado;SOA e a Programação Orientada a Objetos. Neste trabalho,pretende-se desmistificar as diferenças e similaridades entre • Estabelecimento de uma representação de dadosambos. Para isso, serão apresentados os principais conceitos padronizado (XML);relacionados a SOA e a orientação a objetos. Também será feito • Foco de investimento na comunicação da infra-uma comparação entre ambos através da perspectiva de diversos estrutura;autores. Na parte final, conclui-se que SOA e POO na verdadenão são rivais e não disputam o mesmo espaço. • Agilidade organizacional; Palavras-chave—Service-Oriented Architecture, Programação SOA surgiu nos últimos anos como uma das abordagensOrientada a Objetos, Orientação a Serviços, Web Services, preferidas para projeto de sistemas. Aproveitando padrõesArquitetura de Software, Serviço abertos e a presença da internet, SOA é baseado na utilização de serviços reutilizáveis que correspondem a unidades lógicas I. INTRODUÇÃO de trabalho auto-contidas. A promessa é que esses serviços Computação orientada a serviços (OS) representa uma nova podem ser agrupados rapidamente usando padrões comuns paraplataforma de computação distribuída. Como tal, envolve formar novas aplicações que estão alinhadas com asmuitos fatores, incluindo seu próprio paradigma de projeto e necessidades do negócio [3].princípios de projeto, catálogos de padrões de projeto, Em [3] é apresentado uma introdução sobre os conceitos elinguagens padrões, um modelo arquitetural distinto, conceitos tecnologias que antecederam SOA e também quem inventou orelacionados, tecnologias e frameworks [1]. termo. Já em [4] são apresentadas uma introdução ao termo e a Existem muitos pontos de confusão sobre SOA e o uso do dificuldade de definir SOA precisamente.termo OS, dentre os principais enganos tem-se [2]: Os sistemas mainframe das décadas de 1960 e 1970 • Uma aplicação que usa Web Services (WS) é OS; raramente se comunicavam um com o outro. De fato, um dos principais pontos de um mainframe era que ele forneceria tudo • SOA é apenas um termo de marketing usado para necessário para realizar funções de computação em um negócio marcar WS; [3]. • SOA é apenas um termo de marketing usado para Nos anos de 1980, computadores pessoais explodiram no marcar computação distribuída com WS; ambiente e os desenvolvedores estavam procurando formas mais eficazes para alavancar o poder de computação dos • SOA simplifica computação distribuída; computadores pessoais. Como o preço do hardware diminuiu, o • Uma aplicação que usa WS é OS; número de servidores dentro da empresas aumentou exponencialmente [3]. Essas evoluções, junto com a • Se você entender WS você não terá problemas maturidade crescente do RPC – Remote Procedure Call - com SOA; levaram a dois avanços importantes na computação distribuída Common Object Request Broker Architecture (CORBA) (uma • Uma vez que se usa SOA tudo se torna arquitetura padrão criada pelo Object Management Group para interoperável; estabelecer e simplificar a troca de dados entre sistemas Existem também alguns benefícios tangíveis de SOA, como distribuídos heterogêneos). [3] E Distributed Computing[2]: Object Model (DCOM) (uma tecnologia proprietária da Microsoft para comunicação entre componentes de software • Integração melhorada: SOA pode resultar na distribuídos em todos os computadores em uma rede) [3]. criação de serviços inerentemente interoperáveis; Até o final dos anos 1990 [3], com a adoção da Internet, as • Reuso inerente; empresas começaram a reconhecer os benefícios de ampliar sua
    • plataforma de computação para parceiros e clientes. programas de computador cresce e existe maior necessidadeAnteriormente, a comunicação entre as organizações era de um projeto global ou desenho da estratégia com o objetivoaltamente onerosa e havia a necessidade de contar com linhas de evitar o caos. Este projeto global ou estratégia de projeto éprivadas (leased lines). Linhas privadas eram impraticáveis, chamado de arquitetura de software [7].exceto para as grandes empresas. Os conceitos que hoje são associados com SOA surgiram Arquitetura é a caracterização da organização do sistemacom a expansão e adoção da Internet e mais especificamente do em termos das suas partes constituintes. Ela caracteriza aprotocolo HTTP [3]. estrutura física, organização funcional e o comportamento colaborativo das suas partes constituintes e os relaciona à Muitos frameworks baseados em componentes tentaram finalidade do sistema. Uma descrição arquitetural completaobjetivos similares ao SOA. Entretanto SOA difere em algumas serve como referência para os stakeholders, como eles secaracterísticas dessa abordagem [3]: esforçam para assegurar que os sistemas que são feitos, • CORBA, EJB, DCOM são baseados em tecnologias satisfazem a finalidade que motivou a sua construção [9]. RPC, o que encoraja o alto acoplamento, contrariando Arquitetura de Software engloba as decisões importantes os princípios de SOA que presa baixo acoplamento. sobre [10] [11]: • A organização de um sistema de software; • EJB e DCOM foram projetados para plataformas • A seleção dos elementos estruturais e suas interfaces, específicas e, portanto não são interoperáveis. Já SOA que o sistema é composto; foi projetado com a interoperabilidade em mente. • A composição desses elementos em subsistemas Surpreendentemente [4] é difícil descobrir quem inventou o progressivamente maiores;termo SOA [4]. • O estilo arquitetural que guia essa organização, esses O momento atual do SOA foi criado pelos Web Services, elementos e suas interfaces, suas colaborações e suaque inicialmente dirigidos pela Microsoft, alcançaram um composição;público amplo em 2000 [4]. A arquitetura de software não está preocupada somente com a estrutura e comportamento, mas também com o uso, Logo, outras companhias e grandes vendedores (como funcionalidade, desempenho, robustez, reutilização,IBM, ORACLE, HP, SAP e SUN) aderiram a essa tendência. compreensão, restrições econômicas e tecnológicas, tradeoffsUm novo mercado surgia com os novos conceitos e e estética [10] [11].ferramentas (ou conceitos reinventados e ferramentas). Alémdisso, o tempo estava certo, porque as companhias estavamcada vez mais integrando seus negócios com outros sistemas, B. SERVIÇOdepartamentos e companhias [4]. Abaixo serão mostradas algumas das definições mais Posteriormente os analistas começaram a olhar SOA como importantes encontradas na literatura sobre o que é umum conceito chave para software no futuro. Um estudo feito serviço.por [5] chegou a conclusão que em 2008, SOA forneceria 80% A palavra serviço refere-se a uma pessoa realizando algumda base de todos os projetos de desenvolvimento. trabalho ou tarefa para alguém. Uma definição superficial mais genérica para serviço é uma pessoa ou organização realizando No entanto cada movimento cria grandes críticas devido ao algum trabalho para outra pessoa ou organização [7].exagero usado no termo. Grady Booch, um dos idealizadoresda UML fez o seguinte comentário em 2006 em seu blog [6]: Um serviço é um componente de software que tem as seguintes propriedades [8]: “Minha opinião sobre toda a cena que acontece com SOA émais ousada do que eu tenho visto. Muito do que se fala sobre • É definido por uma interface que pode serSOA fica parecendo que SOA é a melhor coisa que existiu independente da plataforma;desde os cartões perfurados. SOA não irá aparentementetransformar sua organização e fazer você mais ágil e inovador.” • Está disponível através de uma rede; Booch estava certo. Uma coisa importante é que SOA é • As operações definidas na interface executam asuma estratégia que requer tempo e esforço. É necessária funções de negócio;alguma experiência para entender o que SOA realmente é, • Sua interface e sua implementação podem seronde, e como ela ajuda. decoradas com extensões que tem efeito em tempo de II.CONCEITOS RELACIONADOS execução.A. ARQUITETURA C. SOA Normalmente, poucos programas de computador são Abaixo serão mostradas algumas das definições maissuficientes para atender a uma empresa pequena ou importantes encontradas na literatura sobre SOA.organização. Estes pequenos programas são fáceis de gerir e SOA é um estilo de arquitetura que usa serviços comonão há necessidade de um projeto global. No entanto, quando blocos de construção para facilitar a integração da empresa e reuso de componentes através de baixo acoplamento [8].são consideradas organizações maiores, o número de
    • SOA é um estilo arquitetural para a construção de soluções E. PROGRAMAÇÃO ORIENTADA A OBJETOS (POO)corporativas baseadas em serviços. Mais especificamente, SOAestá preocupado com a construção independente de serviços Um paradigma de programação é: um modo de olhar umalinhados aos negócios que podem ser combinadas em problema de programação (de uma certa classe de problemas)processos de negócios de alto nível e soluções dentro do que o torna mais fácil que outras. Assim, um paradigma decontexto de uma empresa [10]. programação está posicionado anteriormente à linguagem e a Existem alguns conceitos técnicos de SOA que permitem linguagem é especificamente projetada para o paradigma [12].lidar com diversas características de sistemas [4]: POO é um paradigma de programação. Cada metodologia de programação enfatiza alguns aspectos e conceitos do • Serviços: (descrito anteriormente); esforço da programação. Na POO, a atenção é focada nos • Alta interoperabilidade: com sistemas heterogêneos, o objetos – isto é, nas suas propriedades e seu comportamento primeiro objetivo é ser capaz de conectar esses ou interação com outros objetos [13]. sistemas facilmente. Isso é geralmente chamado de Nesta abordagem, o objeto é o elemento primitivo. Cada “alta interoperabilidade”. Para SOA alta objeto combina atributos ou procedimentos e dados e interoperabilidade é a base para começar a armazena os dados em variáveis e responde a mensagens implementar funcionalidades de negócios (serviços) executando os métodos. Então cada objeto pode ser visto que está espalhada por diversos sistemas distribuídos; como um Tipo Abstrato de Dados (TAD) [13]. • Baixo acoplamento: é o conceito de minimizar as Dentre as principais características da POO pode-se citar: dependências. Quando dependências são minimizadas, [13]. modificações têm efeitos minimizados e sistemas funcionam mesmo quando algum ou várias de suas • Ocultamento de informações: cada objeto é uma partes não estejam funcionando corretamente. entidade autônoma e integral. Seus dados são privados Minimizar dependências contribui para tolerância a a eles mesmos e os atributos ficam escondidos dos falhas, flexibilidade e escalabilidade. outros; • Abstração de dados: é o princípio que diz que Service-oriented architecture (SOA - Arquitetura Orientadaa Serviços) é um estilo arquitetural que modulariza programas não deveriam fazer suposições sobreinformações do sistema dentro de serviços. Em um projeto bem implementações e representações internas;executado de SOA, pode-se facilmente recombinar esses • Ligação dinâmica: nas linguagens de programaçãoserviços de várias maneiras para implementar um processo de convencionais os operadores, funções são ligados asnegócio novo ou melhorado [9]. suas respectivas operações em tempo de compilação, isso é chamado ligação estática. Já em orientação a SOA é um processo evolutivo das técnicas de objetos, a ligação do operador a uma operaçãomodularização de software que começaram há mais de 50 anos particular é feita em tempo de execução ligaçãocom a introdução da programação estruturada. A novidade do dinâmica.SOA é que ele oferece aumento na flexibilidade na escolha dastecnologias de implementação e locais para os fornecedores de III.ESTUDO COMPARATIVOserviço e consumidores. A interface de serviços abstratatambém habilita fornecedores e consumidores se envolveremindependentemente - contanto que as interfaces permaneçam Nessa seção serão apresentadas algumas comparações entreestáveis [9]. sistemas OO e sistemas OS. Primeiramente, são mostradas comparações feitas por Thomas Erl – em dois livros diferentes, onde conceitos básicos de OO são comparados comD. SEPARATION OF CONCERNS conceitos de OS. Posteriormente, Dan Woods e Thomas Mattern explicam o porquê, segundo eles, OS é melhor que A separação de interesses (separation of concerns) é o OO. Finalmente, Nicolai M. Josuttis faz uma comparaçãoprincípio mais fundamental da SOA. Os interesses sãomantidos separados para que os elementos independentes direta focada entre SOA e POO.permaneçam independentes. O benefício é que uma mudança A “Fig.1”, já nos mostra uma idéia da diferença entre OO eem uma parte do sistema não altera outras partes. Em outras OS. A OO tem sido aplicada para os segmentos da empresa. Jápalavras, eles podem ser modificados independentemente. Um a OS visa harmonizar uma quantidade maior da empresa ou,exemplo familiar desse princípio é a separação da interface da idealmente, a empresa como um todo.implementação [10].
    • • Generalização: em OO a generalização é realizada quando uma super-classe pai é definida. As sub- classes da classe pai (especializadas) implementam variações distintas de uma super-classe, essa definição é referenciada como especialização. Existem conceitos similares de generalização e especialização dentro da orientação a serviços; • Abstração: em OO o conceito de abstração também está relacionado ao ocultamento de informação. Conceitualmente, abstrações em OS são similares a OO. Entretanto, como OS não fornecem herança não existe uma noção correspondente a classe abstrata; • Polimorfismo: como não existe herança na OS essa forma de polimorfismo também não é aplicada a serviços individuais. Figura 1 - OO e OS numa Empresa de TI A OO é um poderoso paradigma de programação em que as aplicações são expostas funcionalmente através de O paradigma OO é composto de um conjunto rico de interfaces bem definidas chamadas de métodos. Detalhes sãoprincípios de projeto fundamentais que estruturam e escondidos da aplicação chamada. No entanto, a aplicaçãoorganizam a lógica OO através das classes. Alguns desses chamada precisa ser escrita na mesma linguagem do objetoprincípios foram carregados para orientação a serviços e, que está tentando acessar. Se não for, é preciso de umoutros não, é dado a seguir [1]: programa tradutor como mostrado na “Fig.2” [13]. • Classes e objetos: uma classe é comparável, mas não equivalente, a um contrato técnico de serviço. Uma classe pode definir uma combinação de acesso público e privado a implementação, enquanto que um contrato de serviço expressa somente informação pública; • Métodos e atributos: classes OO definem métodos e atributos para associar a comportamento e dados dos objetos respectivamente. Já os serviços manifestam os comportamentos como capacidades abstratas. A capacidade é o equivalente de um método se um serviço é implementado como um componente e uma operação se um serviço é implantado como um WS. Um contrato de WS não pode definir operações privadas; Figura 2 - OO e Interoperabilidade • Mensagens: em OO para dois objetos se Os WS fornecem uma forma padrão para a comunicarem deve haver a troca de mensagens. As comunicação entre os serviços, que podem ser escritos em mensagens utilizadas pelos serviços implementados linguagens diferentes, como é mostrado na “Fig.3” [13]. como WS normalmente manifestam-se como unidades com base em texto de comunicação, que podem ser trocadas (síncrona ou assíncrona); • Interfaces: coleções de métodos relacionados podem Figura 3 - OS e Interoperabilidade ser definidos (mas não implementados) dentro de interfaces. OS concentra-se sobre a definição do Existe uma pergunta muito comum, se SOA substitui contrato de serviço e sua solução lógica básica. POO ou qual é o melhor. Uma resposta interessante é • Encapsulamento: dentro da OO a noção de dada no livro Enterprise SOA, por Dan Woods e Thomas encapsulamento está ligada a ocultamento de Mattern (OReilly). Sob a seção intitulada "Por que OS é informação. O princípio válido para OO é também melhor do que OO ?" Dois pequenos pontos aparecem. A válido para OS, que está interessado em ocultar primeira explica OO com a seguinte limitação: "No informações sobre os serviços; entanto, o aplicativo de chamada deve ser redigida na • Herança: Em OS é desencorajado a utilização de mesma linguagem que o objeto que está tentando herança entre serviços, porque há uma ênfase na acessar." O segundo parágrafo é constituído de uma única autonomia individual de um serviço e reduzido frase: "WS fornecem uma forma padrão para se acoplamento entre serviços;
    • comunicar entre os serviços, que podem ser escritos em SOA é a abordagem a utilizar para conectar os sistemas de linguagens diferentes [4]." escritos em paradigmas OO e outros. Em outras palavras, “Toda esta discussão, é claro, é um desperdício. A a menos que seja gerado um único programa, você precisa comparação entre SOA e POO simplesmente não faz de ambos [4]." sentido, porque eles têm finalidades diferentes [4].” A “Tab.1” - proposta por Thomas Erl [2] - fornece Nem SOA nem POO é melhor ou substitui a um olhar dos princípios comuns da OO que estão outra. POO é um paradigma de programação de relacionados com a OS. aplicações, enquanto que SOA é um paradigma de arquitetura para ambientes de sistemas. TABELA 1 - PRINCÍPIOS COMUNS DA OO RELACIONADOS COM OS Princípios de OS Princípios da OO relacionados Reutilização de Serviços Grande parte da OO é voltada para a criação de classes reutilizáveis. Princípios relacionados, como a abstração e encapsulamento, fornecem suporte a reuso, exigindo uma separação da interface e lógica de execução. A reutilização de serviço é, portanto, uma continuação deste objetivo. Contrato de serviço O requisito para contrato de serviço é comparável ao uso de interfaces quando se constrói aplicações OO. Assim como as definições WSDL, as interfaces fornecem um meio de abstrair a descrição de uma classe. Baixo acoplamento de Embora a criação de interfaces separa pouco uma classe de seus consumidores, o serviço acoplamento em geral, é uma das qualidades principais de OS que se desvia da OO. O uso de herança e outros princípios de OO incentivam um relacionamento fortemente acoplado entre unidades de lógica de processamento quando comparado com a abordagem de SOA. Abstração de Serviços O princípio de abstração na OO exige que uma classe forneça uma interface com o mundo externo e que seja acessível através da interface. O encapsulamento suporta isto criando o conceito de ocultamento de informação, onde qualquer lógica na classe fora do que é exposto através da interface não é acessível para o mundo externo. A abstração de serviços realiza grande parte da abstração de objetos e mesmo encapsulamento. Sua finalidade é ocultar os detalhes subjacentes ao serviço, de modo que apenas o contrato do serviço esteja disponível. Componibilidade de OO suporta conceitos de associação, tais como agregação e composição. Estes, dentro de um Serviço contexto de baixo acoplamento, também são suportados pela OS. Por exemplo, da mesma forma uma hierarquia de objetos pode ser composta, uma hierarquia de serviços pode ser composta através de componibilidade de serviço. Autonomia de Serviço A qualidade de autonomia é mais enfatizada em OS, do que em OO. Alcançar um nível de independência entre as unidades de processamento lógicas é possível através de OS, aproveitando a relação de baixo acoplamento entre os serviços. Herança, dentro da OO, ajuda a suportar um grau menor de autonomia do objeto. IV.CONCLUSÕES Nicolai M. Josuttis [4] chega mais perto da realidade na tentativa de comparar SOA e POO. Porque não faz muito SOA não apresenta nenhum conceito novo. É um sentido comparar SOA e POO, pois se tratam de coisasparadigma que traz consigo conceitos existentes e práticas diferentes. Enquanto POO trata das características internas deespecíficas para um conjunto de requisitos. um sistema, SOA está mais relacionado à comunicação Procurando na literatura – livros, artigos de externa. OO se preocupa com a flexibilidade e abstração, aoconferências, blogs especializados – são encontrados algumas passo que SOA está preocupado com conformidade comcomparações entre SOA e POO. Mas, poucos materiais têm normas, simplicidade, protocolos e refere-se tanto comouma comparação formal, bem definida, separada e organizada. estratégia de negócios como um projeto de arquitetura baseadoSOA e POO tem alguns objetivos semelhantes como o em serviços de software.aumento da robustez, aumento da extensibilidade, aumento da SOA não é um substituto de OO em geral. OO aindaflexibilidade, aumento da reutilização e aumento da é a melhor opção para projetos de aplicativos e componentes.produtividade. Como mostrado acima – pela comparação dos REFERÊNCIAStermos inerentes a OO com OS -, ambos POO e SOA temalgumas similaridades, mas estão longe de ser a mesma coisa. [1] Thomas Erl. SOA Principles of Service Design. Prentice Hall, 2007.
    • [2] Thomas Erl. Service-Oriented Architecture: Concepts, Technology, [9] P. C. Brown. Implementing SOA: Total Architecture in Practice. and Design. Prentice Hall, 2005. Addison Wesley Professional, 2008.[3] J, Davis. Open Source SOA. Manning, 2009. [10] M. Rosen, B. Lublinsky, K. T. Smith, M. J. Balcer. Applied SOA:[4] N. M. Josuttis. SOA in Practice The Art of Distributed System Service-Oriented Architecture and Design Strategies. Design. O’Reilly, 2007. WileyPublishing, 2008[5] Gartner (D. Cearley, J. Fenn, and D. Plummer). 2005. “Gartner’s [11] Booch and Kruchten. The Rational Unified Process — An Positions on the Five Hottest IT Topics and Trends in 2005.” http:// Introduction. Addison-Wesley,1999. www.gartner.com/DisplayDocument?id=480912. [12] M.H. van Emden. Object-oriented programming as the end of[6] Booch, Grady. 2006. Blog for March 2006, “SOA Best Practices”. history in programming languages. Communications, Computers http://www.booch.com/architecture/blog.jsp?archive=2006-03.html. and Signal Processing, 1997. 10 Years PACRIM 1987-1997 - Networking the Pacific Rim. 1997 IEEE Pacific Rim Conference on.[7] W. Roshen. SOA-Based Enterprise Integration: A Step-by-Step Guide to Services-Based Application Integration. McGraw-Hill, [13] D. Woods, T. Mattern. Enterprise SOA: designing IT for business 2009 innovation. O’Reilly, 2006.[8] Hewitt, E. Java SOA Cookbook. OReilly Media, 2009.