InfoQ

News

Component Composition Strategies and Tactics

Posted by Jean-Jacques Dubray on Jan 09, 2008 12:01 AM

Community
Architecture,
SOA
Topics
SOA Platforms ,
Orchestration ,
SOA Appliance
Tags
Component Based Architecture ,
Service Component Architecture

Component technologies have continuously evolved since the early 90s. With the advent of Spring and the development of the Dependency Injection pattern, they have taken a new turn and started providing advanced composition mechanisms.

Last week, Sanjay Patil, Standards Architect at SAP Labs, published an article on "IT Scenarios for Service Component Architecture" that described some of the composition strategies enabled by the Service Component Architecture.

Last month, a team from IBM compared the different component technologies and the degree to which they support composition. The article first defined some of the properties that promote composition mechanisms:

  • Interface coupling
  • Data (type systems and message formats)
  • Version resiliency
  • Transport independence
  • Expected interaction patterns
  • Conversations
  • Ability to mediate
  • Dynamicity

For Sanjay, the two most important factors are transport independence which translates into deployment flexibility, and dynamicity which is achieved in SCA with the use of policies.

The IBM article also explored the many factors that influence the granularity of the component, though it supports the current industry thinking that:

in general, loosely coupled components are coarse grained, while tightly coupled components are more likely to be fine grained

The article argues that:

SCA provides composition on two axes: composition by reference and composition by implementation 

  • SCA components can compose services by orchestrating the invocation pattern of those services through a single invocation programming model that's independent of where and how the services are deployed.
  • SCA can also provide composition by implementation through the use of an assembly of finer-grained components as the implementation of a coarse-grained component.

Their analysis is shared by Sanjay who sees:

  • A bottom-up composition scenario where an application [is composed] by assembling different existing implementation artifacts
  • An heterogeneous composition scenario ... [where] SCA allows structuring the integration logic, and related functions (such as mapping, etc.) as first class components, whose relationship with other components is then captured as part of a well defined composite.

However, he also describes yet another scenario, a "top-down" scenario which:

...takes the opposite approach for creating the composites [...where] the goal of an Assembler is to analyze the high level business requirements and create composites on top of components that are yet to be implemented.

The IBM article concludes:

One of the strengths of SCA is its ability to combine with a wide variety of fine-grained component models that are used to implement coarse-grained service components. SCA brings value to each of them in terms of modeling the structure of solutions in the large, providing agility and flexibility, and removing the need to define complex configuration details within implementation code. It also has the virtue of being able to connect different component models used for different parts of an overall solution.

Component Composition Strategies and Tactics (Thank You) by KuldeepSinh Chauhan Posted Jan 10, 2008 12:32 AM
  1. Back to top

    Component Composition Strategies and Tactics (Thank You)

    Jan 10, 2008 12:32 AM by KuldeepSinh Chauhan

    Along with all other readers, I am very thankful to both Sanjay and InfoQ for such an intersting article.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.