Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

What is the real difference between component-based software engineering and Service Oriented Architecture?

Clemens Szyperski and David Messerschmitt present the following five principles that a software component should have:

  • Multiple-use
  • Non-context-specific
  • Composable with other components
  • Encapsulated
  • A unit of independent deployment and versioning

Erl recognizes the following characteristics for SOAs:

  • Loose Coupling: minimum amount of interdependencies between services
  • Service Contract: the interaction between services is based on a communi- cation and document agreement
  • Autonomy: services control the logic they encapsulate.
  • Abstraction: services hide their internal logic from the external environment except those parts that are described in the service contract.
  • Reusability: dividing logic to services promotes reuse.
  • Composability: services can be assembled from other services
  • Statelessness: minimum amount of activity specific information is stored.
  • Discoverability: the existence of discovery mechanisms so that services can be discovered by their users

A good article is


As you have noticed, there are already questions about SOA that have an answer. But my question is a little bit more specific, because it looks for a comparison with Component Based Software Engineering.

A similar question to mine is How Service-oriented architecture and Component-based development relate to each other?

share|improve this question

marked as duplicate by gnat, jmo21, Yusubov, MichaelT, Robert Harvey Aug 20 '13 at 15:52

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

The key difference is the word "Service", which is to say, SOA relies on process boundaries to ensure components don't leak past their boundaries and use IPC (usually by way of network) to communicate. The bonus SOA has over bounding on components is that of scalability and greater exposure to third parties. People have done component based architectures for a long time that were publicized by network and has process boundaries, SOA just forces this approach where components only can be in-proc. – Jimmy Hoffa Aug 19 '13 at 22:32
SOA = Seriously Overblown Architecture. – Robert Harvey Aug 19 '13 at 23:23
SOA is hardly new by now, and well beyond the buzzword hype stage. – Michael Borgwardt Aug 20 '13 at 1:07

1 Answer 1

up vote 2 down vote accepted

SOA is about how different systems communicate with each other. It defines various standards for message formats, transport security etc.

Component based software is about how you build and implement a system. i.e. Take the whole system and divide it into smaller more manageable components.

share|improve this answer
I understand your answer, but I am afraid that you are oversimplifying the concept of SOA. – Vitalij Zadneprovskij Aug 20 '13 at 5:42
@VitalijZadneprovskij -- not really. You can use SOAP protocols within an application, but, that would not be an SOA architecture. As an architectural concept SOA is about communication between different systems. – James Anderson Aug 20 '13 at 9:07

Not the answer you're looking for? Browse other questions tagged or ask your own question.