10 tips on how to prevent business value risk
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.

Posted by Boris Lublinsky on Oct 26, 2006
As the adoption rate of the Service-Oriented Architecture grows, it becomes more apparent that the level of abstraction, provided by Web Services APIs (the most popular technology for SOA implementation today), for example JAX-RPC in Java or Web Services Extension (WSE) APIs in .Net, is not sufficient for effective SOA implementations:
In attempt to fix some of the issues of the current APIs sets there are currently attempts underway to raise the level of abstraction through defining SOA programming model (with many elements borrowed from other technologies), which aim to reduce the complexity to which application developers are exposed to when they deal directly with middleware or web services specific APIs. By removing the majority of communications support from the business code and hiding it behind programming model abstraction/implementation this approach facilitates 1:
One of the first attempts to create such type of model was Web Services Invocation Framework (WSIF) 2 3 originally introduced by IBM and currently part of Apache foundation.
WSIF attempted to align service usage model with the WSDL-based service definition-WSIF APIs directly support WSDL semantics. This enabled WSIF to provide a universal invocation model for different implementations of services over different transports. Although WSIF never gained wide adoption by itself, it is used by many BPEL engines, for example WPC from IBM and BPEL Manager from Oracle, as an API for service invocations.
The three models currently gaining most popularity for SOA implementations are:
These programming models attempt to go beyond just service invocations by seamlessly incorporating service orchestration support and many of the patterns required for successful SOA implementation. They also serve as a foundation for implementation of the Enterprise Service Bus. We will give a brief overview of each of these programming models in this article.
Indigo is the latest implementation of the programming model for service oriented architecture from Microsoft, supporting a rich set of technologies for "creating, consuming, processing and transmitting messages". Indigo is planed to be released with the next version of Windows-Vista.
A service is defined in Indigo as a program exposing a collection of endpoints, with each endpoint defined as a combination of three major elements 5:
Such definition effectively extends WSDL-based service definition by allowing to expose the same functionality (service) through multiple endpoints with different bindings and endpoint contracts (QoS).
A foundation of Indigo's programming model is OO implementation of all aspects of SOA programming.
| SO Entities | OO Entities | Annotations |
| Service contract | Interface | Annotate interface with [ServiceContract] |
| Service operation | Method | Annotate interface method with [OperationContract] |
| Implementation class | Class | Annotate class with [ServiceBehavior] and derive it from service contract interface. |
| Implementation method | Method | Annotate method with [OperationBehavior] |
| Data contract | Class | Annotate class with [DataContract] and its members with [DataMember] |
Table 1 Relationship of SO Entities to OO Entities in Indigo.
Table 1 shows the mapping (defined by Indigo programming model) between SO and OO concepts and the annotations that link them together 6. This fusion of SO and OO is simultaneously a major strength and weakness of Indigo:
Indigo supports two major approaches to the service invocation:
Depending on the what type of access service provides (RPC vs. Messsaging), its contract is defined either in the form of interface (RPC) or message (Messaging) contract (see Table 1).
Another foundational feature in Indigo is introduction of connectors - managed framework, providing secure and reliable communications - for accessing of service endpoints. Usage of connectors reduce the amount of the "plumbing code" required for building of interoperabale services, consequently simplifying creation of a web of "connected systems" 7. This is achieved by separating "plumbing" into separate classes (class hierarchies) and providing a "standard" implementation in most cases.
The Indigo connectors use a small number of concepts (port, message, channel) to allow invoking of services independent of transport or target platform. The most important of these concepts is a channel, which represents a core abstraction for sending and receiving messages to and from a port. There are two categories of channels defined in Indigo 5:
Indigo also supporta the notion of channels composition-layering of channel on top of another channel. For example, a security protocol channel can be layered over HTTP transport channel to provide secure communications over HTTP.
The Indigo connector has a build in support for intermediaries including firewalls, proxies, and application-level gateways. These intermediaries are the foundation for implementation of many of the patterns required for successful SOA implementation, including message validation, security enforcement, transport switching, monitoring and management, load balancing and context-based routing.
In addition to supporting creation of the business services, Indigo provides several system services, that can be used by by any business service implementation. Examples of such services are:
Capitalizing on the success of applications servers for hosting applications, Java community process has based its JBI implementation on a notion of a service container.
As defined in Java business integration. IEEE Internet Computing8 - "JBI is a pluggable architecture consisting of a container and plug-ins. The container hosts plug-in components that communicate via message routers. Architecturally, components interact via an abstract service model-a messaging model that resides at a level of abstraction above any particular protocol or message-encoding format."
In the JBI-based implementation services do not interact with each other directly. Instead, similar to the message broker architecture widely adopted in EAI implementations, JBI container acts as universal intermediary routing messages between services (Figure 1).

Figure 1 Mediated Message Exchange through JBI
This separation of the participants in an exchange - foundation of JBI architecture 9- provides a layer of decoupling between service providers and consumers and simultaneously a well-defined place for mediating service traffic (inserting all of the additional required functionality) e.
Mediations, in this case, can support a wide variety of functionality, ranging from message transformation and security enforcement to content-based routing and service versioning.
JBI container hosts two distinct types of plug-in components 9:
Interactions between plug-in components employ standardized service definitions based on WSDL 2.0. WSDL 2.0 definitions provide shared understanding, between services consumers and providers and serves as a foundation of interoperability in JBI implementations.
In addition to standardized service definitions JBI uses the notion of "normalized" messages supporting global components interoperability. Message normalization allows for mapping protocol and business specific context into a generic, transportable fashion and is similar in concept to introduction "canonical" message representation often used by EAI implementations g.
Each JBI container exists within a single JVM and houses all BCs and SEs, belonging to this container along with a set of services, providing operational support for SEs, and BCs implementation.
JBI also defines a standard set of JMX-based controls allowing external administrative tools to perform a variety of system administrative tasks, as well as administer the components themselves. This administration support provides standard mechanisms for 9:
Although Service Component Architecture (SCA) 10 is defined as a specification defining a model for building systems using Service-Oriented Architecture it is effectively a model for composing components into services extended to additionally support composition of services into solutions.
SCA is based on two main metamodels 11:
This metamodel (Figure 2) describes component types, interfaces, and data structures 11.

Figure 2 Metamodel for components, interfaces, and their dependencies
A component implementation is defined by the following four groups of specifications 10:
This metamodel (Figure 3) defines component instances and how they are connected 11.

Figure 3 Component instances and their connections in the composition metamodel
A notion of instance in this metamodel is different from the notion of instance used in OO. A component instance here is a component implementation with complete resolved set of properties, modifying component behavior for solving of a particular problem.
A composition defines a number of component instances, interacting with each other, where interactions are defined using wires.
Wiring in SCA abstracts out most of the infrastructure level code (similar to channels in Indigo). For example, wires can be defined to be synchronous or asynchronous, support transactional behavior of components invocation, etc. SCA handles this infrastructure details under the covers. A wire can also connect between different interface languages (e.g. Java interfaces and WSDL portTypes/interfaces) in either direction, as long as the operations defined by the two interface types are equivalent.
In addition to wires SCA also supports module to module communications through special types of components-imports and exports. Combination of wiring, import and export components, allows for components referencing external services.
Component's composition, defined by composition metamodel is both similar and different from the service composition, although both of them define the way to make components/services work together. Service composition allows enhancing the functionality of participated services through functionality introduced by the composition itself, while this metamodel defines only connections between components (closer to the service implementation).
SCA implementations rely on the Service Data Objects (SDO) 10, providing the technology to represent a universal model for data. SDOs are the basis for the data exchange in component's interactions. The fundamental concept in the SDO architecture is the data object-a container holding primitive typed data and/or other data objects. Information about included data is provided by metadata, explicitly referenced by the data object. A combination of the data objects in SDO is represented by the data graph. In addition to the objects themselves, this graph contains a change summary that is used to log information about what data objects and properties in the graph have changed during processing (similar to ADO in Microsoft environments). In addition to SDOs SCA introduces Service message objects (SMOs) which provides an abstraction layer for processing and manipulating messages exchanged between services (compare to normalized messages in JBI).
SCA is currently in its infancy (version 0.9 at the time of writing) and does not support the majority of patterns required for SOA implementation. Instead, current SCA implementation from IBM-Websphere ESB/WPS 6.0 introduces mediation framework 12, based on SCA and providing a well-defined mechanisms for mediation implementation and placing (similar to intermediaries in Indigo).
SCA implementation is especially powerful, when it is supported by GUI, allowing for graphical connection of the components on the palette, the way it is implemented in IBM's WebSphere Integration developer (WID) 13 14.
Boris Lublinsky has over 25 years experience in software engineering and technical architecture. For the last several years he focused on Enterprise Architecture, SOA and Process Management. Throughout his career, Dr. Lublinsky has been a frequent technical speaker and author. He has over 40 technical publications in different magazines, including Avtomatika i telemechanica, IEEE Transactions on Automatic Control, Distributed Computing, Nuclear Instruments and Methods, Java Developer’s Journal, XML Journal, Web Services Journal, JavaPro Journal, Enterprise Architect Journal and EAI Journal. Currently Dr. Lublinsky works for the large Insurance Company where his responsibilities include developing and maintaining SOA strategy and frameworks. He can be reached at blublinsky@hotmail.com
1 Michael Beisiegel, Henning Blohm, Dave Booz, Jean-Jacques Dubray, Adrian Colyer, Mike Edwards, Don Ferguson, Bill Flood, Mike Greenberg, Dan Kearns, Jim Marino, Jeff Mischkinsky, Martin Nally, Greg Pavlik, Mike Rowley, Ken Tam and Carl Trieloff. "Service component architecture. Building systems using a service oriented architecture", November 2005
2 B. Lublinsky. "Web services invocation framework, part 1." WebSphere Developers Journal, June 2003.
3 B. Lublinsky. "Web services invocation framework, part 2." WebSphere Developers Journal, July 2003.
4 Rob High, Jr., Stephen Kinder, Steve Graham. "IBM's SOA Foundation. An Architectural Introduction and Overview". November, 2005.
5 "Windows Communication Foundation Architecture Overview". Microsoft Corporation. March 2006
6 David Pallmann. "Programming Indigo: The Programming Model". July 2005.
7 Chris Peiris. "Indigo programming model". 15 seconds, June 2005.
8 Steve Vinoski. "Java business integration". IEEE Internet Computing, July 2005.
9 "JSR 208: Java Business Integration (JBI)".
10 "Specifications: Service Component Architecture (SCA) and Service Data Objects (SDO)".
11 Tom Stahl and Markus Vlter. "Model-Driven Software Development. Technology, Engineering, Management." Wiley, 2006.
12 Nigel Daniels. "Developing Custom Mediations for Websphere Enterprise Service Bus". Developworks, January 2006.
13 Roland Barcia and Jeff Brent. "Building SOA Solutions with the Service Component Architecture - part 1." IBM WebSphere Developer Technical Journal, October 2005.
14 Roland Barcia and Jeff Brent. "Building SOA Solutions with the Service Component Architecture - part 2." IBM WebSphere Developer Technical Journal, December 2005.
a Although proprietary extension in Apache Axis and Websphere provide JMS support, and MSMQ is supported by Indigo (see below) these implementations are non-standard.
b Although WSE 2.0 and above and JAX-WS provide support for certain types of asynchronous invocations, these implementations have limitations and are still far from main stream SOA implementations.
c WS-* stands for collection ofWeb Services standards, including WS-Security, WS-Atomic transactions, WS-Addressing, WS-Policy, WS-ReliableMessaging, etc.
d Although this is correct theoretically, many of the current WS-* specifications are still evolving, which often breaks advertised interoperabity, due to the different versions of standards, implemented by different vendors.
e This kind of interception is a foundation of any container technology, for example J2EE application servers, Microsoft’s MTS, etc.
f The term "container" is used in two ways in JBI specification. A service engine can function as a container for engine-specific functionality, while the JBI environment itself is a container for service engines and binding components. Because of this, JBI is sometimes called a "container of containers" 9.
g Canonical message representation should not be confused with the canonical message structure olso often employed in EAI brokers. Canonical message representation supports technical interoperability, while the purpose of canonical message structure is to provide business interoperability.
Article is a good read. Some mention of REST style web services would have been good. REST style web services are suitable for scenarios where you are managing resources/entities, and operations are typically expressed in terms of HTTP primitives (GET,PUT, POST, DELETE). There are few frameworks such as Restlet which are focussed towards REST style web services.
In fact, I do believe that WS-Management which is WS standard for resource management, does have some similarity with what REST is trying to accomplish
Mike Rowley did a cracking overview of SCA and JBI at the Enterprise SOA event in Belgium last week, although he was a bit against JBI for obvious reasons (he works for BEA). As someone who has used the IBM first release SCA and was on JBI I'd say that JBI was never designed for end-users to use, its meant to make integrating products together a much simpler and standards based problem. SCA however is aimed squarely at the developers and making that easy.
JBI has issues to really solve the product integration challenge (needs to be multi-VM at least) but is a good "under the covers" solution to the old problem of it taking longer to integrate the products than actually do the integration to other systems. ( from Mike's blog)
SCA is again early but is a cracking model for design and development of services.
WCF is great for invocation, but IME its weak at the actual design/deploy of the services themselves as the concept of a deployable component/service isn't really baked into .NET in the same way as it is with the Java vendors.
Thanks for an excellent article. Some feedback related to SCA:
- The article references version 0.9 - why not 0.95, which has been the current version since late August.
- A reference for catch-up on SMOs would be nice. Searching osoa.org for Service Message Object does not give a single hit.
- It would be nice to have the composition model commented.
Although not referenced in the article, I think it is interesting to see the SCA specification (Java binding) line-up to the implementations of dependency injection: Java EE 5, OSGi, SCA...
I am using version 0.9, because this is the one that is implemted in IBM products. As for SMO, the only reference outside IBM presentation, that I know of is in WAS ESB/WPS info center publib.boulder.ibm.com/infocenter/dmndhelp/v6rx...
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.
John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.
Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.
Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.
Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?
Sean Cribbs explains what Map-Reduce and Riak are, why and how to use Map-Reduce with Riak, and how to convert SQL queries into their Map-Reduce equivalents.
4 comments
Watch Thread Reply