A good architecture governance capability has at it's heart a focus on developing people and encouraging excellence (see Governance Without Goodwill is Dead). I like to think of it in terms of a leadership capability of the sort alluded to in this Dwight Eisenhower quote:
"Leadership is the art of getting someone else to do something you want done because he wants to do it."With that backdrop, and as part of an emerging governance program, I've recently had the need to introduce or reinforce a set of service design principles to a large audience and begin developing a shared and actionable understanding of these practices. The goal is to increase community awareness and support for good design and to further develop good design skills throughout the community.
A good source for this material is Thomas Erl's SOA Principles of Service Design, and many in the community have been encouraged to buy the book. In fact, we've given away a couple dozen of them. To further jump-start the process, it has been helpful to create a high-level representation of these principles that can be used in introductory sessions and training. Doing so has begun to instill a common language and frame of reference.
You can download a copy of the design principles document. It's a bit large due to the graphics. Following is a quick preview.
Standardized Contract - Implement a standardized contract
Services within the same service inventory are in compliance with the same contract design standardsLoose Coupling - Minimize dependencies
Service contracts impose low consumer coupling requirements and are themselves decoupled from their surrounding environmentAbstraction - Minimize the availability of meta information
Service contracts only contain essential information and information about services is limited to what is published in service contractsReusability - Implement generic and reusable logic and contract
Services contain and express agnostic logic and can be positioned as reusable enterprise resources
Autonomy - Implement independent functional boundary and runtime environment
Services exercise a high level of control over their underlying runtime execution environmentComposability - Maximize composability
Services are effective composition participants, regardless of the size and complexity of the compositionStatelessness - Implement adaptive and state management-free logic
Services minimize resource consumption by deferring the management of state information when necessaryDiscoverability - Implement communicative meta information
Services are supplemented with communicative meta data by which they can be effectively discovered and interpreted
Hope you find this useful. To learn more about these principles, be sure to get a copy of SOA Principles of Service Design and download a copy of the design principles document.