Este documento compara os conceitos de Arquitetura Orientada a Serviços (SOA) e Programação Orientada a Objetos (POO). Primeiro, apresenta definições e conceitos-chave relacionados a SOA, POO e serviços. Em seguida, realiza uma comparação entre os dois paradigmas, discutindo semelhanças e diferenças a partir da perspectiva de vários autores. Finalmente, conclui que SOA e POO não são rivais e não disputam o mesmo espaço.
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.