InfoQ

News

The Information Perspective of SOA Design

Posted by Boris Lublinsky on Dec 13, 2008 06:27 PM

Community
Architecture,
SOA
Topics
Tags
Design Patterns ,
developerWorks

A majority of SOA design techniques are centered on functional decomposition of enterprise’ IT assets and often deals with the information aspects of the SOA as an afterthought. In reality, the SOA solution needs to include a broader set of design concerns, reflecting information architecture best practices in order to fully support scalable, consistent and reusable access to information. In their new article, Brian Byrne, David McCarty, Guenter Sauter, Peter Worcester and John Kling introduce a set of patterns and capabilities representing the information perspective in the design of an SOA. Their approach ensures that information is leveraged in ways that best support the technical and business objectives of the SOA solution:

 

  • That services are reusable across the entire enterprise.
  • That the business data exposed to consumers is accurate, complete and timely.
  • That data shared across business domains and technology layers has a commonly understood structure and meaning for all parties.
  • That the core data entities linking together the business domains of an enterprise are consistent and trusted across all lines of business.
  • That an enterprise gains maximum business value from its data and data systems.

The article defines 3 main SOA related patterns:

 

  • Define the data semantics through a business glossary
    A foundation for any successful SOA is the establishment of a common, easily accessible business glossary that defines the terms related to processes, services, and data. Often, practitioners discover inconsistencies in terminology while trying to learn the accepted business language and abbreviations within an organization. Without an agreement on the definition of key terms such as customer, channel, revenue and so on, it becomes impossible to implement services related to those terms. If stakeholders differ in their interpretation of the meaning of the parameters of a service, or indeed the data set it retrieves, it is unlikely that a service implementation can be successful. It is critical that business analysts and the technical community have a common understanding of the terminology used across all aspects of the SOA domain, including processes, services and data. The business glossary eliminates ambiguity of language around core business concepts that could otherwise lead to misunderstandings of data requirements. A business glossary eliminates misinterpretations by establishing a common vocabulary which controls the definition of terms. Each term is defined with a description and other metadata and is positioned in a taxonomy. Stewards are responsible for their assigned terms: they help to define and to support the governance of those terms.
  • Define the data structure through canonical modeling
    Consistent terminology is a good starting point when designing services, but this in itself is not sufficient. You must also have a clear understanding of the way business information is structured. The input and output parameters of services, that is, the messages, are often far more complex than single data types. They represent complex definitions of entities and the relationships between them. The development time and quality of SOA projects can be greatly improved if SOA architects leverage a canonical model when designing the exposed data formats of service models. The resulting alignment of process, service/message, and data models accelerates the design, leverages normative guidance for data modeling and avoids unnecessary transformations... resulting in service definitions that meet the needs of a wide range of service consumers, thus reducing service duplication... The canonical data model establishes this common format on the data layer while the canonical message model defines this uniform format on the services layer. Industry Models provide an integrated set of process, service and data models that can be used to drive analysis and design of service architectures, ensuring a tight alignment of data definitions across modeling domains. They define best practices for modeling a particular industry domain and provide and an extensible framework so that you don't have to constantly redesign your SOA as you add more and more services.
  • Analyze the data quality
    Practitioners who have considered the concepts described above can deliver service designs with a high degree of consistency across models and metadata artifacts. However, this is no guarantee that the quality of the data that is being returned by services is acceptable. Data which meets the rules and constraints of its original repository and application may not satisfy requirements on an enterprise level... Quality issues which are insignificant within the original single application may cause significant problems when exposed more broadly through an SOA on an enterprise level... The problems therefore are whether the quality of the data to be exposed meets the requirements of the SOA project and how to effectively make that determination. The proposed solution is to conduct a data quality assessment during service analysis and design. After you catalog the source systems that support a service, you can start to investigate them for data quality issues... You should verify if data duplication exists and how this can be resolved during data matching and aggregation. On the basis of these types of analysis, you can take appropriate actions to ensure that service implementation choices meet the demanded levels of data accuracy and meaning within the context of the potential service consumers.

As SOA matures, issues of the SOA information design become more important. SOA practitioners are starting to realize that usage of canonical data (compare to canonical data in EAI) is the necessary requirement for building reusable, composable services without building a spaghetti of mapping intermediaries.

Have anyone considered all the requirements buried in data by Practical Architect Posted Dec 15, 2008 1:45 PM
  1. Back to top

    Have anyone considered all the requirements buried in data

    Dec 15, 2008 1:45 PM by Practical Architect

    Aside from generic data quality, should work with the analysis team to uncover all the scenarios (read: requirements!) that buried in the transaction data. This should complement the functional de-composition work and in my opinion will ensure information perspective are not overlooked.

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.