Monday, May 12, 2008

Creating and Managing a Canonical Model

As I discussed in my previous post (http://leoshuster.blogspot.com/2008/05/soa-canonical-modeling.html), a canonical model is a critical element in any successful SOA program. However, given the fact that it should describe the business completely and in a standard way, the resulting model will most likely be very large and complex. Thus, a natural question begs to be asked: how do you create and maintain a canonical model?

There are basically three ways to create a canonical model.


  1. Buy it or adopt an existing industry standard model
    There is a number of organizations that either developed a set of standard models targeting a specific vertical (e.g. IBM - http://www-03.ibm.com/industries/financialservices/doc/content/bin/fss_ifw_gim_2006.pdf) or maintain industry standard definitions (like MISMO for Financial Services or ACORD for insurance). You can adopt one of these models to serve as the canonical representation of all the business entities.


  2. Pros:

    • Most of the work is already done
    • Another organization maintains the model for you and introduces changes as necessary
    • The model is standard and should help with external partner integration

    Cons:

    • The specifics of your organization may not be complete captured, which require custom additions to be made
    • Some changes or customizations may be needed that would make it harder to upgrade in the future
    • The elements are too generic or unnecessarily complex
    • High learning curve for canonical model consumers


  3. Create it from scratch
    A canonical model is created from scratch and built out completely before any work utilizing it can begin. This would require at least 3-6 months of effort meeting with various groups across the organization, collecting and sorting the information, and validating the result with the potential users.


  4. Pros:

    • Would provide the most complete and targeted model
    • Users will have innate knowledge of the model since they helped build it

    Cons:

    • Requires all projects that need to use the canonical model to stop until it is completed
    • Not highly realistic or pragmatic approach
    • Requires modifications to be made and managed internally


  5. Build it incrementally
    A canonical model is built incrementally over the span of multiple projects. Only those elements that are required by the project are added or modified.


  6. Pros:

    • Does not require a lot of upfront effort to get started
    • Efficient and demand-driven – model only what is needed
    • Low learning curve – users have more opportunity to learn it as the model evolves

    Cons:

    • High propensity for change – the model is frequently refactored as new projects leverage it
    • Requires a centralized team to own or govern it
    • Frequent changes would require a large amount of testing and updates to the existing consumers


The best way to manage the changes to the canonical model is to establish a centralized team to own the whole thing or to provide governance over it. It would be responsible for making / tracking the changes, notifying consumers, performing compatibility testing, versioning, training, and communications. A comprehensive list of all the canonical model consumers needs to be maintained in order to notify them of all the relevant changes and understand the overall impact of modifications. Without a centralized team, there can never be a canonical model because there will be no one to synchronize or drive all the disparate efforts towards a single goal.

Regardless of the chosen approach, changes to the canonical model are inevitable. Therefore, the façade pattern described in one of my earlier posts must be utilized when using canonical models in the SOA context.

1 comment:

Anonymous said...

Its an awesome blog for ..
architects in bangalore as modern architectural firm working asinterior designers in bangalore know more about Green eco architectural designs are reusable materials, green designs etc.. ..… Create an Eco friendly Green design… Save Earth.. interior designers in Bangalore as of natural materials interior designers in Bangalore with almost modern concepts architects in bangalore eco friendly architectural solutions for architects in bangalore Carbon Footprint is a measure of the impact human activities have on the environment in terms of the amount of greenhouse gases produced, measured Architects in bangalore so save earth for a better future..