2

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 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.111.9582

UPDATE

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?

1 Answers1

2

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.