Skip to main content

Use service-oriented decomposition to meet your architectural goals

Defining services that are aligned with your business model

Boris Lublinsky (blublinsky@hotmail.com), Principal Architect, Herzum Software
author photo
Boris Lublinsky has more than 25 years of experience in software engineering and technical architecture. For the past several years he has focused on enterprise architecture, SOA, and process management. Dr. Lublinsky is a technical speaker and author, with more than 50 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 as a principal architect at Herzum Software, where he is responsible for the design of component-based development factories and consulting with customers on component-based development and SOA. You can reach Boris at blublinsky@hotmail.com.

Summary:  In this article, design a set of services that defines an enterprise architecture blueprint to support business goals. Discover how hierarchical decomposition can help you align services to support both current and future business functions. You also learn how to define interfaces for services as part of the Service-Oriented Architecture (SOA) decomposition and use a semantic data model for maximum interoperability.

Date:  16 Oct 2007
Level:  Introductory
Activity:  396 views
Comments:  

Introduction

Typically, an enterprise already has a set of applications that supports most of the required business functions. So, when it comes to service definition, you might think it's simply a matter of exposing the existing application functions as a set of services, similar to traditional enterprise application integration (EAI) practice. Not so. Properly defining services is one of the most difficult tasks when implementing a solution based on Service-Oriented Architecture (SOA). Unfortunately, this approach rarely works. It is, in essence, "a technology-first approach and a recipe for disaster and/or serious over-engineering." 1 (See Resources.)

A better approach to service-oriented decomposition is based on the enterprise-wide business model. The approach includes designing a set of services that defines the enterprise architecture blueprint supporting the current business goals and providing capabilities for future changes. It requires you to start "with the scenarios/business needs, play those out against the existing/new systems, zero in on the points of tangency, and from there plan a flag for harvesting a meaningful service." 1 (See Resources). Services, defined this way, allow traceability between IT and business functions. This approach is "an example of a delivery strategy that can help you to adhere to the vision for your enterprise architecture." 2 (See Resources).

This article discusses a service-oriented decomposition approach that conforms to the enterprise business drivers and principles of service-oriented computing. It is based on initial partitioning of the enterprise IT functions into services based on the business model and then refactoring of the initial service definitions so that they are aligned with the overall enterprise architectural goals. This approach can be implemented as a multi-step process with the following activities:


ACME Insurance

This article uses the fictitious ACME Insurance company as an example. ACME specializes in two lines of insurance: personal auto and inland marine. ACME deals with all the issues associated with the complete insurance servicing life cycle—including rating, underwriting, and servicing insurance policies. To minimize complexity, the example focuses solely on the issuance process. Some details, while necessary from the insurance company's perspective, will be omitted if they don't add value to our discussion.

At the core of insurance issuance lies a proprietary rating model that is used to determine the appropriate customer premium. The model, developed over time by ACME's underwriters, determines the risk associated with issuance of the insurance policy, based on the rules and risk factors associated with the particular line of business and defined by a specific insurance product.

ACME has an insurance administration system in place. The IT staff developed and evolved the system, which has several proprietary and off-the-shelf packages supporting all the required functions. The applications shown in Figure 1 currently support the issuance process.


Figure 1. Current ACME applications
Current ACME applications
  • "Accept Inland Marine terms and conditions" is a Java™ 2 Platform, Enterprise Edition (J2EE)-based Web front end that allows users to enter the terms and conditions for a policy, receive a quote, and view the state of a policy. A similar application, "Accept Personal Auto terms and conditions," supports the same functionality for a different line of business.
  • "Inland Marine Policy and Product Administration" is a Visual Basic 6 (VB6)/COM application supporting two basic functions:
  • Product administration—supports creation of new insurance products for this line of business and maintenance of existing products.
  • Policy administration—supports the complete policy life cycle, including quote, issuance, endorsement, rewrite, and cancellation. This application also relies on a claims feed that provides information about claims history for the given policy.

Product and policy administration for the personal auto is implemented as two separate CICS/COBOL applications. In addition, the "Motor Vehicle Report" application allows access to driving records for insured drivers from the department of motor vehicles for the appropriate state.

  • "Inland Marine Rating" is a VB6/COM application, implementing a rating engine for inland marine insurance. Similar functionality for the Personal Auto application is implemented using a CICS/COBOL application.

Long-term business goals

The existing set of applications fully supports ACME's current needs. However, they fall short of supporting the following long-term business goals:

Standardization of policy issuance process
Currently issuance for Inland Marine and Personal Auto uses two completely different processes and sets of screens, based on two different sets of applications. This requires either doubling the amount of employees to support the two processes or more extensive training for the same employees to support both.
Streamlining the policy issuance process
In the current implementation, the process can take over two weeks, making it hard for ACME Insurance to compete with other insurers.
Improving quality of claims data
For the Inland Marine underwriting, currently the claims data feed is only updated monthly, which can lead to inaccurate underwriting data.
Better management of "in flight" policies
The management reporting system only provides information about completed applications, making it impossible to introduce corrective measures during the processing of policies.
Business expansions
The current applications support only manual entry of the policy. This hampers participating in insurance exchanges that require electronic submission of applications and the return of the policies quotes.
Process changes
For example, regulatory compliance requires the introduction of records management. ACME is investigating adopting a document management system for managing policy documents. ACME also sees potential in cross sell options, and is looking to introduce customer relationship management (CRM) procedures for this purpose.

ACME's existing IT systems provide all of the required functions for supporting the above goals, but the architecture, or organization, makes it hard to achieve the goals. The application-centric nature of the current implementation is problematic because every application is built and maintained individually, with no (or very little) consideration for the other applications in the company.

As a result, the core business function—insurance policy issuance—does not exist as a holistic process. Its functions are spread between existing applications; each application is responsible for a part of the process, and the overall integration is implemented as an afterthought.

Most of the company's business goals require making the business process the focal point of ACME's architecture. A well-defined and externalized implementation of the policy-issuance process is the key ingredient for a flexible, adaptable IT architecture that supports the enterprise's long-term goals. For example, management of in-flight policies and streamlining of issuance requires end-to-end visibility of the issuance process. Such visibility is virtually unachievable without externalizing this process.

ACME's architects searched for a solution aligned with the business goals and decided to adopt the SOA approach for policy issuance implementation.

Hierarchical decomposition

The foundation of SOA decomposition is an enterprise business model, which contains the primary representation of the resources and processes for meeting operational, tactical, and strategic business goals. A business model is an essential component of a successful service-oriented decomposition, ensuring consistency and flexibility of resulting services across the enterprise (motivations for adopting an SOA approach). A high-level model must be in place to help set the direction, partitioning, and taxonomy of services. Implementation details can be developed over time as SOA implementation progresses.

Enterprise business model

There are many approaches to defining enterprise business architecture. Some architects base their interpretation of business architecture on a corporate organization. A business function or process model can be used as a starting point to draw connecting lines between vertical functions and horizontal processes to describe a cross-functional process within the business.

A general definition of enterprise business architecture is:

"..[it] defines the enterprise value streams and their relationships to all external entities and other enterprise value streams and the events that trigger instantiation. It is a definition of what the enterprise must produce to satisfy its customers, compete in a market, deal with its suppliers, sustain operations and care for its employees. It is composed of architectures, workflows, and events. A value stream is an end-to-end collection of activities that creates a result for a customer, who may be the ultimate customer or an internal end user of the value stream. The value stream has a clear goal: to satisfy or to delight the customer." 3 (See Resources.)

The value streams effectively describe core enterprise business processes containing the ordered sequence of activities that produce results from functional components of IT (services).

Many industries (such as insurance, manufacturing, and financial services) have industry models defining functions of the enterprise in a given industry. If such a model exists, it is always advantageous to use it, at least as a starting point, when creating a company's business model. 3

This approach lets you define core enterprise business processes and services required to support them. It is also a foundation for determining effectiveness and efficiency of current processes.

The key component of a business model is the description of the enterprise business processes, which defines their supporting activities, inputs, and outputs. Process activities provide the foundation for defining the enterprise services. Using the business model as the starting point in decomposing the solution into services facilitates the alignment between business and technology—one of the objectives of the SOA approach.

The service partitioning driven by the enterprise business model corresponds to top-down design and represents the hierarchical decomposition of processes into services and processes.

At the top-most level the enterprise system can be represented as business processes orchestrating multiple services. In general, each service can be further decomposed using subprocesses that orchestrate lower level services. Figure 2 shows the hierarchical decomposition into business processes and services.


Figure 2. Decomposition of processes, services, and components
Decomposition - processes, services and components

Decomposition is a well-established technique. Depending on the objective, many decomposition criteria can be applied. The decomposition criteria have a significant impact on architecture goals such as performance, flexibility, comprehensibility, development time, changeability, reuse, and so on.

Several factors influence hierarchical decomposition:

Granularity
The higher level the process or service, the larger the granularity of the interface. High-level processes or services do more work per invocation than lower-level services. This makes sense, because the higher-level services are using lower-level services to implement their functions. Choosing the appropriate granularity of services is not a simple proposition. Currently there is no mathematical theory or methodology that can tell a designer or architect whether service decomposition has been done correctly. The following test4 can validate the service's granularity.
  • The business-alignment perspective probes the alignment between the proposed service and the business:
    • Can this service be justified based on a business perspective (model)?
    • Does the business want to expose the service to their partners?
    • Does the business envision outsourcing this service to a trading partner?
    • Is this service critical to the functioning of the business?
  • The composability perspective considers the ability to use the service in many business processes (for example, in a different context than the one where it has been defined):
    • Can this service be taken elsewhere and composed into another business process?
    • Does composing this service into another business process require a deep composition hierarchy?
Visibility
The higher the level of the process or service, the broader its visibility. For example, the enterprise business process has visibility (or scope) across the entire enterprise. Its interface is available to all enterprise users. In contrast, a low-level business process or component is only visible within its application scope. Users outside that scope cannot see or use the business component directly, but only indirectly through a higher-level service.

Generally, these factors go together so that high-level processes have large granularity and broad visibility, while low-level components have fine granularity and limited visibility.

To implement the hierarchical decomposition, ACME's business analysts started to identify enterprise business services by developing an enterprise business model for policy issuing. This model covers all key business processes within the company, including the major business activities required for implementing the processes and their sequencing.

The ACME business model is based on industry-standard concepts, definitions, and high-level processes defined by the IBM Insurance Application Architecture (IAA), which has defined a standardized policy issuing model (see Resources). Following IAA allows ACME to leverage the collective knowledge accumulated by the insurance industry. Based on the IAA, the high-level policy issuance process is shown in Figure 3.


Figure 3. Simplified policy issuance process
Simplified Policy issuance process

Decomposing the solution into services based on the business model yields a set of services, as shown in Figure 4. In this case, we are using only one level of decomposition.


Figure 4. ACME services, based on the hierarchical decomposition
ACME Services, defined based on the hierarchical decomposition

Additional factors

The hierarchical decomposition based on the enterprise business model allows for alignment between business and IT, but does not guarantee that resulting services will adhere to the basic services tenets. The following additional aspects of the service should be factored into the decomposition process.

Explicit boundaries
Services interact through explicit remote invocations. Service implementers can control execution within the service boundaries, but not cross-boundary invocations. Such invocations can be subject to network latency, network failure, and distributed system failures.

Splitting latency-critical functions between multiple services can lead to violations of performance requirements for the overall system. Similarly, true two-phase commit requirements between two or more services are typically not achievable. As a result, if based on a business model, several services are defined with the following characteristics:

  • Strict invocation latency requirements
  • Two-phase commit requirement

These services should be combined into a single one, internally implementing invocations and two-phase commit, providing combined functionality.

Autonomy
Services are developed, deployed, and versioned independently of each other and of the systems that consume them. Creation of services that are heavily dependent on each other increases their coupling, thus having a negative impact on their autonomy. If using a business model, several services are defined with:
  • Heavy reliance on the same existing code (application)
  • Being used together, for the most part

These services should be combined into one, providing combined functions.

Services share schema and contract
Implementing service communications using XML schema-based messages lets you define service interfaces, which are agnostic to both programming languages and platforms. You can ensure broader levels of interoperability, and consequently wider applicability, of services. Semantic messaging (data model) should be used for definition of the service interfaces.

So back to the decomposition of the policy issuance process: ACME has acquired a complex document management system that can handle both document composition and archival. Though the enterprise business model indicates separate services for these functions, the decomposition would yield two services with strong dependencies on each other. Factoring the composition and archival responsibilities together carves out a service that observes the autonomy boundaries.

Both Create quote and Issue policy require rating of the policy. As mentioned, rating is the main competency of the insurance company and can change (improve) independently from other implementations. Based on the autonomy principle of service, it makes sense to implement rating as an independent service, which can be used by both Generate quote and Issue policy services. A set of ACME enterprise services, after refactoring, is shown in Figure 5.


Figure 5. Refactored ACME services
Refactored ACME services

Semantic data model

Defining the interfaces of the identified services is an important part of the SOA decomposition. The interface definition entails specifying the messages that services exchange, consume, and generate.

The top-down design, based on the enterprise business model, yields interoperable semantic interface definitions. The resulting semantic data model defines the standard business objects or entities of the enterprise, such as an insurance policy, claim, and so on. An SOA implemented around the semantic data model (interoperability) represents a semantic SOA.

The semantic SOA offers enhanced interoperability between services: at the interface level, all of them work from the same data definitions. In effect, this eliminates the need for message transformations between services. Because service interfaces are created based on the standard enterprise semantic model, it is guaranteed that every service will understand and correctly interpret any message, regardless of the service consumer.

Future of semantic interfaces

Semantic data for service contracts allows rethinking of service interfaces. Because the interface data model for all services is driven by the same semantics, instead of sending a specific message request to a service and receiving a specific reply, it's possible to have the service execution context passed around as part of the service invocation "thread." A service method's interfaces will be massively polymorphic and expressed as:

Service.method (XML context in, XML context out)

A context, in this case, is a service execution context, expressed in XML and supporting enterprise semantics. Any service can extract data that it's interested in from the context.

This solution reverses responsibilities: instead of a service consumer building a specific interface for participating in a service, a service itself is responsible for accessing required information from the execution context and updating the context with the results of their execution. This minimizes the impact of changes of the service's interface, as long as the required data is available in the execution context. An additional burden is put on the service implementations, which will be negligible compared to the expenses of realigning the service consumers with the services interface changes.

Although the semantic data model seems similar to a standardized enterprise data model, the two are radically different and should not be confused with each other. The semantic data model defines the messages exchanged by services. The messages implement interservice communication. As such, they're transient and do not reside in a data store (at least, not explicitly).

In contrast, the enterprise data model defines the data structure and relationship between the data in the database. It focuses on aspects such as fast retrieval, low redundancy, partial aggregates, and so on, that are irrelevant outside the data store.

Implementing SOA involves service enabling of existing enterprise applications. Changing the underlying data model is an extremely expensive proposition that often requires completely rewriting applications. In contrast, the SOA messaging infrastructure is part of building the architecture, which means that it can be created as part of the SOA implementation.

There are different ways, using patterns and best practices, to achieve semantic interoperability in SOA. Experience has shown that the same enterprise business model that is used for defining service should also cover the semantic data definitions. For example, both IAA and ACORD define XML messages for insurance industry transactions. These standards reduce the time and effort required for business partners to create new data interfaces with each other.

Semantic data model guidelines

When defining the SOA semantic data model, keep in mind that it provides the foundation for XML data messaging, not data persistence. There are several important considerations for the model creation.

XML uses a hierarchical data model. The hierarchical model differs significantly from the data models used in traditional databases, such as the normalized relational data model that aims for fast updates and retrievals, or the dimensional data mode, which aims at slicing in various dimensions. As a result, common database design techniques (normalization, joins, foreign keys, and so on) are rarely applicable in this case. They usually lead to an overly complex XML implementation. XML model design typically requires significant de-normalization of data, trying to minimize cross-references between XML objects.

XML payloads are subject to marshalling/unmarshalling when crossing each service boundary, so using "small" types in XML incurs significant serialization overhead, which in turn has a negative impact on performance. Every XML type is marshalled/unmarshalled into a separate object, which means that using small XML types leads to creation and deletion of many objects during execution. It is recommended to increase the size of XML objects during semantic data model design.

Excessive nesting of XML types can lead to significantly more complex XML processing of the payloads. It usually leads to creation of additional language objects during marshalling/unmarshalling, and requires a more complex notation for accessing the data. It is advantageous to minimize the amount of nesting in the XML payloads definition.

Summary

In this article you explored an approach to service-oriented decomposition that is an extension of the service identification defined by Service-Oriented Modeling and Architecture (SOMA). The approach supplements domain decomposition and goal-service modeling5, which is used by SOMA with refactoring, based on enterprise architecture principles and semantic messaging definitions for ensuring service interoperability. You also learned about:

  • Improved alignment with the business

    The hierarchical decomposition that follows the enterprise business model generates services aligned with the business. This provides direct traceability from business artifacts to business services.

  • Process focus

    Decomposition, according to the enterprise business model, emphasizes enterprise business processes rather than the applications that implement them or the data that they consume. This emphasis fosters the shift from function-oriented to a process-oriented mindset, opening the doors to new possibilities (process simulation, semantic compensation, key process indicators, and so forth).

  • Semantic messaging model

    Top-down, model-driven decomposition defines a service's functional boundaries and allows for defining the enterprise semantic data model. Using this model leads to creation of more interoperable, looser coupled services.

  • Improved overall architecture

    Architecture goals such as security, availability, and low coupling are as important for service identification as functional decomposition.

Acknowledgements

Many thanks to Edward Kuffert for numerous suggestions that greatly improved this article.


Resources

Learn

Get products and technologies

  • Download Rational Method Composer to get customized yet consistent process guidance to your project teams and IT organization. This product also includes the latest version of IBM Rational Unified Process® (RUP®).

  • Download IBM product evaluation versions and get your hands on more application development tools and middleware products from DB2®, Lotus®, Rational, Tivoli®, and WebSphere®.

Discuss

About the author

author photo

Boris Lublinsky has more than 25 years of experience in software engineering and technical architecture. For the past several years he has focused on enterprise architecture, SOA, and process management. Dr. Lublinsky is a technical speaker and author, with more than 50 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 as a principal architect at Herzum Software, where he is responsible for the design of component-based development factories and consulting with customers on component-based development and SOA. You can reach Boris at blublinsky@hotmail.com.

Comments



Trademarks

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=SOA and Web services
ArticleID=262509
ArticleTitle=Use service-oriented decomposition to meet your architectural goals
publish-date=10162007
author1-email=blublinsky@hotmail.com
author1-email-cc=