SlideShare uma empresa Scribd logo
1 de 6
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 baseadas
em 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 dados
ambos. 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 verdade
nã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 abordagens
Orientada a Objetos, Orientação a Serviços, Web Services,          preferidas para projeto de sistemas. Aproveitando padrões
Arquitetura 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 para
plataforma de computação distribuída. Como tal, envolve            formar novas aplicações que estão alinhadas com as
muitos 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 e
linguagens padrões, um modelo arquitetural distinto, conceitos     tecnologias que antecederam SOA e também quem inventou o
relacionados, 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 necessidade
Anteriormente, a comunicação entre as organizações era            de um projeto global ou desenho da estratégia com o objetivo
altamente 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 sistema
com a expansão e adoção da Internet e mais especificamente do     em termos das suas partes constituintes. Ela caracteriza a
protocolo 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 completa
objetivos similares ao SOA. Entretanto SOA difere em algumas      serve como referência para os stakeholders, como eles se
caracterí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 sua
que 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, tradeoffs
Um novo mercado surgia com os novos conceitos e                   e estética [10] [11].
ferramentas (ou conceitos reinventados e ferramentas). Além
disso, o tempo estava certo, porque as companhias estavam
cada vez mais integrando seus negócios com outros sistemas,       B. SERVIÇO
departamentos 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 é um
um 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 algum
da 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 idealizadores
da 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    ser
SOA fica parecendo que SOA é a melhor coisa que existiu                   independente da plataforma;
desde os cartões perfurados. SOA não irá aparentemente
transformar 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 as
uma 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 ser
onde, 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 mais
suficientes 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 como
nã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, SOA
está preocupado com a construção independente de serviços             Um paradigma de programação é: um modo de olhar um
alinhados 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 de
contexto 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 Orientada
a Serviços) é um estilo arquitetural que modulariza                      programas não deveriam fazer suposições sobre
informaçõ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ção
serviços de várias maneiras para implementar um processo de              convencionais os operadores, funções são ligados as
negó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ção
modularização de software que começaram há mais de 50 anos               particular é feita em tempo de execução ligação
com a introdução da programação estruturada. A novidade do
                                                                         dinâmica.
SOA é que ele oferece aumento na flexibilidade na escolha das
tecnologias de implementação e locais para os fornecedores de                          III.ESTUDO COMPARATIVO
serviço e consumidores. A interface de serviços abstrata
também habilita fornecedores e consumidores se envolverem
independentemente - contanto que as interfaces permaneçam            Nessa seção serão apresentadas algumas comparações entre
está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 com
D. 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ção
princípio mais fundamental da SOA. Os interesses são
mantidos 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 e
em 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ão
princípios de projeto fundamentais que estruturam e            escondidos da aplicação chamada. No entanto, a aplicação
organizam a lógica OO através das classes. Alguns desses       chamada precisa ser escrita na mesma linguagem do objeto
princípios foram carregados para orientação a serviços e,      que está tentando acessar. Se não for, é preciso de um
outros 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 (O'Reilly). 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 coisas
paradigma que traz consigo conceitos existentes e práticas         diferentes. Enquanto POO trata das características internas de
especí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, ao
conferências, blogs especializados – são encontrados algumas       passo que SOA está preocupado com conformidade com
comparações entre SOA e POO. Mas, poucos materiais têm             normas, simplicidade, protocolos e refere-se tanto como
uma comparação formal, bem definida, separada e organizada.        estratégia de negócios como um projeto de arquitetura baseado
SOA 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 ainda
flexibilidade, 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ÊNCIAS
termos inerentes a OO com OS -, ambos POO e SOA tem
algumas 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. O'Reilly Media, 2009.

Mais conteúdo relacionado

Destaque

クラウドとビックデータ[一般・大学向け講義]
クラウドとビックデータ[一般・大学向け講義]クラウドとビックデータ[一般・大学向け講義]
クラウドとビックデータ[一般・大学向け講義]Hidetoshi Shibata
 
Farnborough Airshow - Apresentação Aviação Executiva
Farnborough Airshow - Apresentação Aviação ExecutivaFarnborough Airshow - Apresentação Aviação Executiva
Farnborough Airshow - Apresentação Aviação ExecutivaEmbraer RI
 
Relatório 1º semestre 2012 (fotos)
Relatório 1º semestre 2012 (fotos)Relatório 1º semestre 2012 (fotos)
Relatório 1º semestre 2012 (fotos)Leisy Anne Tebaldi
 
مهارات اجتماعية SOCIAL HABBITS
مهارات اجتماعية SOCIAL HABBITSمهارات اجتماعية SOCIAL HABBITS
مهارات اجتماعية SOCIAL HABBITS7LOOL
 
Sistema digita l_analogico
Sistema digita l_analogicoSistema digita l_analogico
Sistema digita l_analogicoAlberto Vargas
 
Hora do Sul - 12/06/2012, Terça-feira
Hora do Sul - 12/06/2012, Terça-feiraHora do Sul - 12/06/2012, Terça-feira
Hora do Sul - 12/06/2012, Terça-feirajornalhoradosul2011
 
IRC Havana Presentation Elections 2008
IRC Havana Presentation Elections 2008IRC Havana Presentation Elections 2008
IRC Havana Presentation Elections 2008Maruja
 
Internacionalizar con éxito: de la estrategia a la implantación
Internacionalizar con éxito: de la estrategia a la implantaciónInternacionalizar con éxito: de la estrategia a la implantación
Internacionalizar con éxito: de la estrategia a la implantaciónJaime Avila Vila
 
Los TíTulos De Jesucristo En
Los TíTulos De Jesucristo EnLos TíTulos De Jesucristo En
Los TíTulos De Jesucristo Enguest0bc0400
 
Sistemas de control
Sistemas de controlSistemas de control
Sistemas de controltoni
 
J flores prac4_powerpoint
J flores prac4_powerpointJ flores prac4_powerpoint
J flores prac4_powerpointCruzMendoza92
 
Seguridad En Neumaticos
Seguridad En NeumaticosSeguridad En Neumaticos
Seguridad En Neumaticoshome
 
Portaferrisa
PortaferrisaPortaferrisa
Portaferrisauriilla
 
Fr4 wat3 for blog
Fr4 wat3 for blogFr4 wat3 for blog
Fr4 wat3 for blogDoug Doug
 
P o r t f ó l i o individual
P o r t f ó l i o   individualP o r t f ó l i o   individual
P o r t f ó l i o individualhelenasamelo
 

Destaque (20)

クラウドとビックデータ[一般・大学向け講義]
クラウドとビックデータ[一般・大学向け講義]クラウドとビックデータ[一般・大学向け講義]
クラウドとビックデータ[一般・大学向け講義]
 
Farnborough Airshow - Apresentação Aviação Executiva
Farnborough Airshow - Apresentação Aviação ExecutivaFarnborough Airshow - Apresentação Aviação Executiva
Farnborough Airshow - Apresentação Aviação Executiva
 
Relatório 1º semestre 2012 (fotos)
Relatório 1º semestre 2012 (fotos)Relatório 1º semestre 2012 (fotos)
Relatório 1º semestre 2012 (fotos)
 
Portfolio
PortfolioPortfolio
Portfolio
 
Bahasa indonesia
Bahasa indonesiaBahasa indonesia
Bahasa indonesia
 
مهارات اجتماعية SOCIAL HABBITS
مهارات اجتماعية SOCIAL HABBITSمهارات اجتماعية SOCIAL HABBITS
مهارات اجتماعية SOCIAL HABBITS
 
Sistema digita l_analogico
Sistema digita l_analogicoSistema digita l_analogico
Sistema digita l_analogico
 
JORNADA SOBRE ELS AVANTATGES DEL “NÚVOL”
JORNADA SOBRE ELS AVANTATGES DEL “NÚVOL”JORNADA SOBRE ELS AVANTATGES DEL “NÚVOL”
JORNADA SOBRE ELS AVANTATGES DEL “NÚVOL”
 
Meport51a
Meport51aMeport51a
Meport51a
 
Hora do Sul - 12/06/2012, Terça-feira
Hora do Sul - 12/06/2012, Terça-feiraHora do Sul - 12/06/2012, Terça-feira
Hora do Sul - 12/06/2012, Terça-feira
 
IRC Havana Presentation Elections 2008
IRC Havana Presentation Elections 2008IRC Havana Presentation Elections 2008
IRC Havana Presentation Elections 2008
 
Internacionalizar con éxito: de la estrategia a la implantación
Internacionalizar con éxito: de la estrategia a la implantaciónInternacionalizar con éxito: de la estrategia a la implantación
Internacionalizar con éxito: de la estrategia a la implantación
 
Slide 02
Slide 02Slide 02
Slide 02
 
Los TíTulos De Jesucristo En
Los TíTulos De Jesucristo EnLos TíTulos De Jesucristo En
Los TíTulos De Jesucristo En
 
Sistemas de control
Sistemas de controlSistemas de control
Sistemas de control
 
J flores prac4_powerpoint
J flores prac4_powerpointJ flores prac4_powerpoint
J flores prac4_powerpoint
 
Seguridad En Neumaticos
Seguridad En NeumaticosSeguridad En Neumaticos
Seguridad En Neumaticos
 
Portaferrisa
PortaferrisaPortaferrisa
Portaferrisa
 
Fr4 wat3 for blog
Fr4 wat3 for blogFr4 wat3 for blog
Fr4 wat3 for blog
 
P o r t f ó l i o individual
P o r t f ó l i o   individualP o r t f ó l i o   individual
P o r t f ó l i o individual
 

Semelhante a Um estudo comparativo entre soa e poo fin

Soa – Woa Rest Arquiteturas
Soa – Woa   Rest ArquiteturasSoa – Woa   Rest Arquiteturas
Soa – Woa Rest Arquiteturasrafaslide
 
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Glauco Vinicius Argentino de Oliveira
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...Michel Azevedo
 
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SITeoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SIAlessandro Almeida
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecturerenanwb
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - IntroduçãoSergio Crespo
 
Como Planejar a Implantação de SOA
Como Planejar a Implantação de SOAComo Planejar a Implantação de SOA
Como Planejar a Implantação de SOADavi Silva
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETMário Meyrelles
 
Arquiteturas SOA, WOA e REST
Arquiteturas SOA, WOA e RESTArquiteturas SOA, WOA e REST
Arquiteturas SOA, WOA e RESTlucasbarsand
 
SOA - Governança
SOA - GovernançaSOA - Governança
SOA - Governançaalinebicudo
 
Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Marcelo Sávio
 

Semelhante a Um estudo comparativo entre soa e poo fin (20)

Soa – Woa Rest Arquiteturas
Soa – Woa   Rest ArquiteturasSoa – Woa   Rest Arquiteturas
Soa – Woa Rest Arquiteturas
 
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
 
Artigo cloud computing pdf
Artigo cloud computing pdfArtigo cloud computing pdf
Artigo cloud computing pdf
 
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SITeoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
 
SOA
SOASOA
SOA
 
Soa Woa Rest
Soa Woa RestSoa Woa Rest
Soa Woa Rest
 
UM ESTUDO SOBRE SOA
UM ESTUDO SOBRE SOAUM ESTUDO SOBRE SOA
UM ESTUDO SOBRE SOA
 
Monica vasconcelos
Monica vasconcelosMonica vasconcelos
Monica vasconcelos
 
Monica vasconcelos (1)
Monica vasconcelos (1)Monica vasconcelos (1)
Monica vasconcelos (1)
 
Monica vasconcelos
Monica vasconcelosMonica vasconcelos
Monica vasconcelos
 
Asoso slides
Asoso slidesAsoso slides
Asoso slides
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecture
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - Introdução
 
Como Planejar a Implantação de SOA
Como Planejar a Implantação de SOAComo Planejar a Implantação de SOA
Como Planejar a Implantação de SOA
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
Arquiteturas SOA, WOA e REST
Arquiteturas SOA, WOA e RESTArquiteturas SOA, WOA e REST
Arquiteturas SOA, WOA e REST
 
SOA - Governança
SOA - GovernançaSOA - Governança
SOA - Governança
 
Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)
 

Um estudo comparativo entre soa e poo fin

  • 1. 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 baseadas em 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 dados ambos. 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 verdade nã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 abordagens Orientada a Objetos, Orientação a Serviços, Web Services, preferidas para projeto de sistemas. Aproveitando padrões Arquitetura 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 para plataforma de computação distribuída. Como tal, envolve formar novas aplicações que estão alinhadas com as muitos 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 e linguagens padrões, um modelo arquitetural distinto, conceitos tecnologias que antecederam SOA e também quem inventou o relacionados, 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
  • 2. plataforma de computação para parceiros e clientes. programas de computador cresce e existe maior necessidade Anteriormente, a comunicação entre as organizações era de um projeto global ou desenho da estratégia com o objetivo altamente 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 sistema com a expansão e adoção da Internet e mais especificamente do em termos das suas partes constituintes. Ela caracteriza a protocolo 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 completa objetivos similares ao SOA. Entretanto SOA difere em algumas serve como referência para os stakeholders, como eles se caracterí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 sua que 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, tradeoffs Um novo mercado surgia com os novos conceitos e e estética [10] [11]. ferramentas (ou conceitos reinventados e ferramentas). Além disso, o tempo estava certo, porque as companhias estavam cada vez mais integrando seus negócios com outros sistemas, B. SERVIÇO departamentos 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 é um um 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 algum da 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 idealizadores da 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 ser SOA fica parecendo que SOA é a melhor coisa que existiu independente da plataforma; desde os cartões perfurados. SOA não irá aparentemente transformar 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 as uma 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 ser onde, 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 mais suficientes 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 como nã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
  • 3. 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, SOA está preocupado com a construção independente de serviços Um paradigma de programação é: um modo de olhar um alinhados 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 de contexto 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 Orientada a Serviços) é um estilo arquitetural que modulariza programas não deveriam fazer suposições sobre informaçõ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ção serviços de várias maneiras para implementar um processo de convencionais os operadores, funções são ligados as negó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ção modularização de software que começaram há mais de 50 anos particular é feita em tempo de execução ligação com a introdução da programação estruturada. A novidade do dinâmica. SOA é que ele oferece aumento na flexibilidade na escolha das tecnologias de implementação e locais para os fornecedores de III.ESTUDO COMPARATIVO serviço e consumidores. A interface de serviços abstrata também habilita fornecedores e consumidores se envolverem independentemente - contanto que as interfaces permaneçam Nessa seção serão apresentadas algumas comparações entre está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 com D. 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ção princípio mais fundamental da SOA. Os interesses são mantidos 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 e em 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].
  • 4. 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ão princípios de projeto fundamentais que estruturam e escondidos da aplicação chamada. No entanto, a aplicação organizam a lógica OO através das classes. Alguns desses chamada precisa ser escrita na mesma linguagem do objeto princípios foram carregados para orientação a serviços e, que está tentando acessar. Se não for, é preciso de um outros 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 (O'Reilly). 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;
  • 5. 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 coisas paradigma que traz consigo conceitos existentes e práticas diferentes. Enquanto POO trata das características internas de especí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, ao conferências, blogs especializados – são encontrados algumas passo que SOA está preocupado com conformidade com comparações entre SOA e POO. Mas, poucos materiais têm normas, simplicidade, protocolos e refere-se tanto como uma comparação formal, bem definida, separada e organizada. estratégia de negócios como um projeto de arquitetura baseado SOA 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 ainda flexibilidade, 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ÊNCIAS termos inerentes a OO com OS -, ambos POO e SOA tem algumas similaridades, mas estão longe de ser a mesma coisa. [1] Thomas Erl. SOA Principles of Service Design. Prentice Hall, 2007.
  • 6. [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. O'Reilly Media, 2009.