It is very interesting and informative post, Lawrence! Here is a little challenge (again): a service is built against its specification - documented or not. You can derive a public announcement from this spec - Service Description. As Service Description may have versions, as the service spec may have versions. Together, this becomes difficult to manage (on the producer's side).
"we do find a lot of reluctance to make this effort - particularly to make the investment if such a registry/catalog isn't already in place, and as often as not " - is, unfortunately , a common place. We tried to fight it with IT Governance that treated each service as an independent product, i.e. with full and maintained across projects documentation. This, implicitly, answers the question - what should be documented. Because of such governing policy, not many components and RPCs were considered as services (in the end) - only the ones that had particular and strong business/technical meaning. SO as the concept and related Governance must prevent even an idea of shortcutting on service-consumer relationship - they must be treated as independent in spite of any administrative/management ownership boundaries. This is why I position Architecture above Management. The major principle during the service design and implementation - no concrete assumptions of the future consumers ( and, especially, who will command them); nothing more than a potential category of them. If your team/management violates this principle, they are not service-oriented yet. - Michael ________________________________ From: LAWRENCE <[email protected]> To: [email protected] Sent: Tue, December 22, 2009 2:06:20 PM Subject: [service-orientated-architecture] Re: Descriptions vs Contracts --- In service-orientated- architecture@ yahoogroups. com, Michael Poulin <m3pou...@.. .> wrote: > > As I guess, Lawrence, the service specification is an internal document. > While I fine with deriving Service Description from the service spec, it > would be interesting to know how you have resolved the ownership issue of > this specification; does it belong to IT or to Business? Example: consumer > provides the instructions and funds and the service invests them accordingly; > who is the custodian of the service spec? Our approach is to have a multi-facetted Service Specification that addresses all audiences. As you don't want separate business and IT specifications that drift out of synch, it is better to have them as different properties of the same specification. (of course, that still requires someone to keep the properties in synch - but common ones should be shared, not duplicated) As listed in our wiki, http://cbdi. wikispaces. com/Service+ Specification, we have several sections in our specification * Service properties that provides basic information on the status and history of the service * Business properties that show how the Service supports the business, and who in the business is responsible for the Service Technical properties that provide a more IT-centric view of the Service * Quality of service that is or should be offered by the Service - such as the reliability or security requirements And at the more detailed level * Functional behavior of the individual operations, including the operation signature, together with the pre and post conditions that must be met by the provider and consumer * Details on message exchange * A Service Information Model that details the information that is stored or retrieved by the Service. One of the key challenges though is where/how to document and store such information. Ideally, a template such as ours should be turned into a schema in some form of registry/catalog product - we have for example worked with IBM WebSphere Service Registry and Repository, and SAG Centrasite, and also Orbus Software iServer this year to provide examples of this. It is well beyond the scope of UDDI, so clearly requires some effort. However, we do find a lot of reluctance to make this effort - particularly to make the investment if such a registry/catalog isn't already in place, and as often as not I believe our template just becomes rows in an Excel spreadsheet. ... or pages on a wiki. The other important question to ask is does every service need to be documented to this extent? But this is a much the age old question of do I really need to produce this much documentation as much as anything else. Answers might be, well only if * there is true organizational separation of provider and consumer, or specifier and implementor * it is a shared service - many consumers * the behavior is anything other than obvious (e.g. I think I can guess that the UpdateCustomerPhone Number operation does - but then again, can I? Does it validate the area code? does it allow international numbers? never so simple...) The difficulty then is what doesn't appear to need documenting today, might do tomorrow. e.g. we never thought it would be shared - but it was... One of the things we are working on at the moment is to ensure that as much as possible of our service specification template can be captured in our UML profile, so at least the capture can be 'automated' to some extent (in that properties can be infered from associations for example, and transformations from UML to XML or WS-Protocols) Process-wise, we don't see the Service Spec as something that is fully developed in one pass. Rather it evolves from just description level properties at the planning stage, through the detailed specification of operations at the provisioning stage, to the addition of technical run-time details once provised and deployed. But these are all 'views' of the same asset - not different documents. Equally, new operations may get added over time. - Lawrence Wilkes, Everware-CBDI
