Tuesday, 1 December 2009

Managing high-value service artifacts

Organizations invest thousands, if not millions of euros developing processes and services that are deployed within service-oriented infrastructures yet mostly fail to have a coherent view of those assets, where they are deployed, who built them, etc.  I use the word "asset" very deliberately as, if similar sums were spent on capital equipment you can bet that there would be an asset register in place that recorded what the asset was, how much it cost, where it was being used, etc.  Yet for some strange reason our industry takes a more "laissez-faire" approach to the software assets created through investments of similar and often larger sums.  Is it because these assets are intangible?  Clearly not.  From the CIO and CTO down these assets are known. Further they are extremely concrete. They reside on physical systems and drive many of the key operational processes of the businesses they serve.  So why are they not as well managed as the average laptop PC costing a fraction of the price?

Maybe it's because practical mechanisms to manage such assets are not widely available nor well practiced.  In thinking about this problem and researching various approaches I came across the work of Thomas Erl, specifically his book on SOA Design Patterns (Prentice Hall Service-Oriented Computing Series from Thomas Erl) (ISBN 13: 978-0-13-613516-1) which contains a section describing Service Inventories. Summarizing this work is out of the scope of this entry but suffice to say I found the ideas contained within the enterprise service inventory and inventory implementation patterns very stimulating reading and would recommend adding it to your reading list.  It led me to conclude that these ideas fitted the notion or our metadata registry, Spaces, very well.  Spaces is designed to allow software assets to be classified in any number of dimensions.  Spaces includes an flexible organizational hierarchy that allows for enterprises and business units to be modeled and any number of projects to be associated with those organizational entities.  A classification dimension for "SOA Layer" to represent the conceptual purpose of a service or process asset is available out of the box.

The combination of service classification and organizational mapping allows us to provide a framework to manage and report on your enterprise service inventory.  All that was needed was a new UI plugin to be implemented to render the SOA Inventory summary based on the existing classifications.  You can see the results in the screen shot below:

This is a UI plugin for Adjoovo Spaces.  It represents the process and service assets that are stored in the Spaces registry by the two dimensions: "soa-layer" and "project-affiliation".  An asset can have a single "SOA layer" classification but have multiple "project affiliations".  The UI widget is designed to encourage the classification of assets by representing unclassified instances as "unknown" and rendering them in red (bottom row and far-right column).  In addition to being a quick visualization of your enterprise service inventory, this view is also interactive and navigable.  Clicking on any dimension (row, column or cell) will present a list of the assets in the selected classification. Clicking on the link takes you directly to the service or process asset summary where you can see all the collected knowledge the registry holds about that asset and, of course, enrich that knowledge further using the built-in wiki, attaching links, etc.

So if you want to find all the services being used in the context of a particular project, just click the relevant column and you will see the whole list of classified assets.  Similarly by SOA layer or by combination of both of those dimensions.  Since the registry has knowledge of the relationship between projects and organizations or projects and developers, additional reports can be run e.g. display all the processes that a business partner organization is using, or show me all of the knowledge workers that work on Project Cirrus.

As discussed above, you can create any organizational / project structure you need to reflect your business.  The soa-layer classification is configurable through the Spaces registry dictionary (it is an enumerated list that I modified to follow the layers provided in Thomas Erl's book).  So if you want to start to add service inventory management to your projects, simply download Adjoovo Spaces, import project artifacts and in a few clicks you can have your own service inventory available for your team to share or even your boss or bosses boss to view. Overlaying these views with additional asset dimensions such as life-cycle stage and milestone achievement can provide a more fine-grained report for the CEO who wants to dig deeper.

To me, taking business view of these service-oriented initiatives is key to helping stakeholders (your CEO or business partners) track the benefits that their investments are making.  It is much easier to show progress using a simple dashboard of the asset inventory then walk them through dry project Gantt charts or process models.
Find out more about Adjoovo Spaces, here.

Spaces is a knowledge management product for software assets

A powerful combination of a metadata registry, collaboration framework, rich UI and broad range of "asset" discovery filters allows users to quickly document there enterprise applications in a centralized knowledge base.

This knowledge base can be used to immerse those new to your projects on the key assets, encourage re-use, reduce duplication and waste and reduce the risks to your projects when key staff leave.

in reference to: Collaborative Metadata Registry for SOA, REST and much more - Adjoovo (view on Google Sidewiki)