<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iansrobinson.com &#187; SOA</title>
	<atom:link href="http://iansrobinson.com/category/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://iansrobinson.com</link>
	<description>Ian Robinson&#039;s Blog</description>
	<lastBuildDate>Tue, 24 Apr 2012 07:02:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>ThoughtWorks QTB Feb 2010</title>
		<link>http://iansrobinson.com/2010/01/12/thoughtworks-qtb-feb-2010/</link>
		<comments>http://iansrobinson.com/2010/01/12/thoughtworks-qtb-feb-2010/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 12:07:05 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Behaviour-Driven Development]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=164</guid>
		<description><![CDATA[I&#8217;ll be giving a ThoughtWorks Quarterly Technology Briefing in London and Manchester in a few weeks time, titled Business Architecture Foundations of IT. I used to introduce this topic with a quote from Beckett&#8217;s Unnameable &#8211; &#8220;You must go on, I can&#8217;t go on, I&#8217;ll go on&#8221; &#8211; which nicely sums up the situation I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be giving a ThoughtWorks Quarterly Technology Briefing in London and Manchester in a few weeks time, titled <em>Business Architecture Foundations of IT</em>.</p>

<p>I used to introduce this topic with a quote from Beckett&#8217;s <em>Unnameable</em> &#8211; &#8220;You must go on, I can&#8217;t go on, I&#8217;ll go on&#8221; &#8211; which nicely sums up the situation I see many organisations facing today: burdened with a legacy systems estate, unable to stop the world, sorely in need of a change in strategy to face the future.</p>

<p>Based on case study material from the last few years, talk suggests some future proofing strategies that can arise out of an assessment of today&#8217;s business operations.</p>

<h2>Event Details</h2>

<ul>
	<li>Manchester 16th February, Radisson Hotel, Free Trade Hall, Peter Street, M1 6pm-9pm <a href="http://connect.thoughtworks.com/g/?GTVU7O9SDQ">Register here</a></li>
	<li>London 19th February, Liverpool Street, EC2 8am-10.30am <a href="http://connect.thoughtworks.com/g/?GTVU7O9SDQ">Register here</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2010/01/12/thoughtworks-qtb-feb-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QCon San Francisco 2009</title>
		<link>http://iansrobinson.com/2009/11/24/qcon-san-francisco-2009/</link>
		<comments>http://iansrobinson.com/2009/11/24/qcon-san-francisco-2009/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 18:52:29 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=151</guid>
		<description><![CDATA[The slides from the day-long tutorial, REST in Practice, that Jim Webber and I gave at QCon San Francisco can be found here. Also as part of QCon, I gave a talk, Beginning an SOA Initiative, the slides of which can be downloaded here. Jim and I will be giving the REST tutorial at QCon [...]]]></description>
			<content:encoded><![CDATA[<p>The slides from the day-long tutorial, <a href="http://qconsf.com/sf2009/presentation/REST+in+Practice.+A+Tutorial+on+Web-based+Services" title="REST in Practice. A Tutorial on Web-based Services" target="_blank"><em>REST in Practice</em></a>, that <a href="http://jim.webber.name/" title="Jim Webber's blog" target="_blank">Jim Webber</a> and I gave at <a href="http://qconsf.com/sf2009/" title="QCon San Francisco 2009" target="_blank">QCon San Francisco</a> can be found <a href="http://dl.dropbox.com/u/2877247/Tutorial.pdf.zip" title="Download pdf" target="_blank">here</a>.</p>

<p>Also as part of QCon, I gave a talk, <a href="http://qconsf.com/sf2009/presentation/Beginning+an+SOA+Initiative" title="Beginning an SOA Initiative" target="_blank"><em>Beginning an SOA Initiative</em></a>, the slides of which can be downloaded <a href="http://qconsf.com/sf2009/file?path=/qcon-sanfran-2009/slides/IanRobinson_BeginningAnSOAInitiative.pdf" title="Download pdf" target="_blank">here</a>.</p>

<p>Jim and I will be giving the REST tutorial at <a href="http://qconlondon.com/london-2010/" title="QCon London 2010" target="_blank">QCon London</a> next year. We&#8217;re already planning plenty of changes so as to make it a little more hands-on and practical.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2009/11/24/qcon-san-francisco-2009/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Europe Virtual ALT.NET, July 20th</title>
		<link>http://iansrobinson.com/2009/07/18/europe-virtual-alt-net-july-20th/</link>
		<comments>http://iansrobinson.com/2009/07/18/europe-virtual-alt-net-july-20th/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 14:50:54 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Consumer-Driven Contracts]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=129</guid>
		<description><![CDATA[On Monday 20th July, Jim Webber and I, the golem and the frog, will be participating in the European Virtual ALT.NET (E-VAN). Colin Jack has already assembled a bunch of interesting questions, covering not only REST, but Guerrilla SOA, ESBs, consumer-driven contracts, and capability modeling. The session will be on Live Meeting, at http://snipr.com/virtualaltnet. Please [...]]]></description>
			<content:encoded><![CDATA[<p>On Monday 20th July, <a href="http://jim.webber.name/" title="Jim Webber's blog" target="_blank">Jim Webber</a> and I, the <a href="http://www.infoq.com/interviews/robinson-webber-rest" title="Ian Robinson and Jim Webber on Web-based Integration" target="_blank">golem and the frog</a>, will be participating in the European Virtual ALT.NET (E-VAN). <a href="http://colinjack.blogspot.com/" title="Colin Jack's blog" target="_blank">Colin Jack</a> has already assembled a bunch of <a href="http://groups.google.com/group/virtualaltnet/browse_thread/thread/b3efba445f6ff2eb?hl=en" title="Questions for Jim and Ian" target="_blank">interesting questions</a>, covering not only REST, but Guerrilla SOA, ESBs, consumer-driven contracts, and capability modeling.</p> 

<p>The session will be on Live Meeting, at <a href="http://snipr.com/virtualaltnet" title="Europe Virtual ALT.NET Live Meeting" target="_blank">http://snipr.com/virtualaltnet</a>.</p>

<p>Please join us on Monday, times below:</p>

<ul>
<li>France/Germany/Belgium: 8:00PM</li>
<li>UK is: 7:00PM</li>
<li>EST in the US: 2:00PM</li>
<li>PST in the US: 11:00AM</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2009/07/18/europe-virtual-alt-net-july-20th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Temporal and Behavioural Coupling</title>
		<link>http://iansrobinson.com/2009/04/27/temporal-and-behavioural-coupling/</link>
		<comments>http://iansrobinson.com/2009/04/27/temporal-and-behavioural-coupling/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 09:24:38 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[REST]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=86</guid>
		<description><![CDATA[I&#8217;ve many times worked with developers and architects to help them understand the nature and implications of their distributed systems design choices. One of the ways I&#8217;ve found of framing a useful discussion is to look at coupling issues &#8211; particularly those arising as a result of temporal and behavioural coupling. Every apostate technician on [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve many times worked with developers and architects to help them understand the nature and implications of their distributed systems design choices. One of the ways I&#8217;ve found of framing a useful discussion is to look at coupling issues &#8211; particularly those arising as a result of temporal and behavioural coupling.</p>

<p>Every apostate technician on his or her descent to whiteboard irrelevancy ought produce at least one &#8220;magic quadrant&#8221; diagram. This is mine: the coupling matrix. Whilst sadly not a career-making architectural silver bullet, this diagram may help you characterize the several parts of your extant solutions, envision direction for future initiatives, and understand the constraints &#8211; both legitimate and inadvertent &#8211; that in part determine the design options available to you.</p>

<p><img src="http://iansrobinson.com/blog/wp-content/uploads/2009/04/temporal-and-behavioural-coupling.png" alt="Temporal and behavioural coupling" title="temporal-and-behavioural-coupling" width="500" height="340" class="size-full wp-image-96" /></p>

<p>First, a brief overview of these two types of coupling:</p>

<h3>Temporal coupling</h3>

<p>Temporal coupling refers to the degree to which the sending and handling of a message are connected in time.  If a sender is dependent on a receiver being available when a message is sent, we have high temporal coupling: if the provider is not available, the interaction fails. Processes whose activities are strictly ordered or whose results carry forward, leaving subsequent activities unable to start until a response to a prior request has been received, are similarly temporally coupled. In situations of high temporal coupling, the time taken to handle the message and return a response increases the processing time on the sender side.</p>

<h3>Behavioral coupling</h3>

<p>Behavioral coupling refers to the degree to which parties share assumptions regarding behaviors, more specifically, to the implications of assigning the twin responsibilities for determining <em>what</em> action to execute and <em>how</em> to execute that action to the parties in a distributed interaction. In systems that exhibit an extremely high degree of behavioral coupling, the sender of a message determines what to do, and also knows something of how the receiver ought satisfy its request. Such coupling is typically evinced by, for example, database foreign keys and/or platform-dependent artifacts such as collection types leaking into messages and operations. If a sender determines what to do, and a receiver determines how to satisfy the sender&#8217;s request, the participants similarly exhibit a high degree of behavioral coupling. If a receiver alone determines both what to do and how to do it in reaction to a received message, the sender and receiver have low behavioral coupling. High behavioral coupling requires a provider to evolve its service offerings in response to changed consumer requirements.</p>

<p>And then some sketchy characterizations of each of the quadrants:</p>

<h3>Distributed 3-layer</h3>

<p>Traditional 3-layer application architecture blown up to distributed proportions. Characterized by call stack-like, imperative behaviour (high temporal and behavioural coupling) and synchronous request-response interactions. Includes systems that layer synchronous interactions on top of asynchronous message exchanges. Senders tell receivers what to do; receivers execute the sender&#8217;s orders. Sender and all intermediaries block until the call stack unwinds, effectively locking and/or consuming system resources further up the call chain. This blocking behaviour undermines the autonomy of upstream components and at the same time increases the availability requirements of downstream components. As Michael Nygard&#8217;s <a href="http://www.pragprog.com/titles/mnee/release-it" title="Release It!" target="_blank"><em>Release It!</em></a> reminds us, in these circumstances the availability of the overall system can be no more than that of the least available participant, and the probability of failure is the joint probability of failure in any component or service.</p>

<h3>Command-oriented</h3>

<p>&#8220;Good&#8221;, &#8220;orthodox&#8221; SOA. Low degree of temporal coupling characterised by asynchronous interactions, deferred state and a resumable programming model (process or activity instances are dehydrated between remote invocations in order to conserve resources, and then rehydrated based on correlated responses). Senders typically determine what needs to be done, but rely on receivers to determine how to execute their instructions. This behavioural coupling can require providers to evolve (message formats, supported operations) in lockstep with changing consumer demands.</p>

<h3>Event-oriented</h3>

<p>Low temporal and behavioural coupling. Receivers determine both what needs to be done and how to do it based on the content of received messages.  Resumable programming model: processes are suspended or dehydrated, waiting for events. Can be difficult to trace the execution path of an end-to-end transaction or activity. Exposing an <em>ExtinguishFire</em> operation is a command-oriented way of executing a business process; acting on <em>FireStarted</em> notifications an event-oriented approach.</p>

<h3>Emergency services</h3>

<p>So called because you tell them what happened, and they decide what to do, but if there&#8217;s no one to take your call, you&#8217;re hosed. Low behavioural coupling, which allows for the independent evolution of system components, but a degree of temporal coupling, impacting availability requirements of participants. Many RESTful solutions occupy this quadrant. URI-templated solutions have a higher degree of behavioural coupling than hypermedia-driven solutions (where servers constrain and guide what a client can do next, and determine how best to satisfy requests); client polling and caching can mitigate some of these temporal coupling issues.</p>

<h3>Endnote</h3>

<p>These coupling issues are well understood by many developers and architects &#8211; to the extent they comprise a general base of knowledge without specific authority or provenance. I would, however, like to draw your attention to one of very many excellent posts by <a href="http://bill-poole.blogspot.com/" title="Bill Poole's blog" target="_blank">Bill Poole</a>, <a href="http://bill-poole.blogspot.com/2008/04/avoid-command-messages.html" title="Avoid Command Messages" target="_blank"><em>Avoid Command Messages</em></a>, that some time ago helped bring behavioural coupling into focus for me.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2009/04/27/temporal-and-behavioural-coupling/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Business Capability Modeling</title>
		<link>http://iansrobinson.com/2009/03/25/business-capability-modeling/</link>
		<comments>http://iansrobinson.com/2009/03/25/business-capability-modeling/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 09:32:44 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=77</guid>
		<description><![CDATA[Some commentary from Richard Veryard on a conversation between Udi Dahan and Colin Jack over business capability modeling caught my eye yesterday. I wanted to write something in support of Richard&#8217;s comments, and at the same time illustrate a practical approach that helps &#8220;identify capabilities with &#8230; high cohesion and low coupling&#8221; and &#8220;draw a [...]]]></description>
			<content:encoded><![CDATA[<p>Some <a href="http://rvsoapbox.blogspot.com/2009/03/business-capability-modelling.html" title="Business Capability Modelling" target="_blank">commentary</a> from <a href="http://rvsoapbox.blogspot.com/" title="Richard Veryard's blog" target="_blank">Richard Veryard</a> on a conversation between <a href="http://www.udidahan.com/" title="Udi Dahan's blog" target="_blank">Udi Dahan</a> and <a href="http://colinjack.blogspot.com/" title="Colin Jack's blog" target="_blank">Colin Jack</a> over business capability modeling caught my eye yesterday. I wanted to write something in support of Richard&#8217;s comments, and at the same time illustrate a practical approach that helps &#8220;identify capabilities with &#8230; high cohesion and low coupling&#8221; and &#8220;draw a matrix of the interactions between entities and processes&#8221;.</p>

<p>Over the course of a piece of analysis some things, some entities, will emerge as being of particular significance to the business. Customer and order, for example. Don&#8217;t refuse to acknowledge or model these things, but don&#8217;t get hung up on them either: they&#8217;re just a part of a whole that includes not only concept models, but lifecycle models and capability maps.</p>

<p>Take customer for example. We can, very quickly, create a high-level picture of what a customer might look like &#8211; an overarching, company-wide view of all the parts of a customer that are of interest to the business, or the several parts of the business. But this isn&#8217;t <em>the</em> domain model: rather it&#8217;s an approximation, a temporary stabilizing of multiple shifting perspectives, a flawed starting point &#8211; just good enough &#8211; for further investigation.</p>

<p>Side-by-side with this high-level conceptual view of a customer, we can also model the customer lifecycle; that is, the story of a customer&#8217;s relationship with our company. I&#8217;ll often model this in the form of a state machine. We then see that our interest in a customer can be expressed in terms of our transitioning the customer through several different states.</p>

<p>For each transition in this state machine, we can now ask: what business capabilities do we need in order to transition the customer from, eg. lead to applicant? How well do we implement these capabilities today? And so on.</p>

<p>Capabilities operate on the customer in order to transition it through different states, in so doing releasing value both to the customer and the business.</p>

<p>What likely starts to emerge are business-meaningful bounded contexts, each context encapsulating part of the high-level picture, plus one or more state transitions, plus the capabilities necessary to effect those transitions. Each bounded context projects a different view of the customer onto the business landscape &#8211; suggesting there&#8217;s not necessarily an organization-wide canonical model of a customer, just many &#8220;interested&#8221; views. That&#8217;s why I say our original high-level picture isn&#8217;t <em>the</em> domain model: it&#8217;s simply a starting point for identifying the bounded contexts &#8211; and the processes &#8211; that transition the overarching concept &#8220;customer&#8221; through states in the customer lifecycle.</p> 

<p>What we end up with is a high-level model/picture divided by bounded contexts, a customer lifecycle model, and a capability map. Together these comprise part of an operating model &#8211; a useful representation of the organization that we can use to identify desirable business outcomes and guide the identification, planning and prioritization of projects.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2009/03/25/business-capability-modeling/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>QCon Presentation and UML Stencil</title>
		<link>http://iansrobinson.com/2009/03/18/qcon-presentation-and-uml-stencil/</link>
		<comments>http://iansrobinson.com/2009/03/18/qcon-presentation-and-uml-stencil/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 09:27:48 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=72</guid>
		<description><![CDATA[I&#8217;ve had a few mails over the last few days pointing out that the PDF copy of my QCon presentation was crashing their PDF reader. Oops. I&#8217;ve regenerated the PDF and the new version of Steering the Northwest Passage: Beginning an SOA Initiative is now available at the QCon site. Let me know if you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a few mails over the last few days pointing out that the PDF copy of my <a href="http://www.qconlondon.com/" title="QCon London" target="_blank">QCon</a> presentation was crashing their PDF reader. Oops. I&#8217;ve regenerated the PDF and the new version of <a href="http://qconlondon.com/london-2009/file?path=/qcon-london-2009/slides/IanRobinson_SteeringTheNorthwestPassageBeginningAnSOAInitiative.pdf" title="Download Steering the Northwest Passage: Beginning an SOA Initiative" target="_blank">Steering the Northwest Passage: Beginning an SOA Initiative</a> is now available at the QCon site. Let me know if you&#8217;re still having problems.</p>

<p>I also had a couple of requests to make my hand-drawn UML stencil for OmniGraffle available. And so, for your delight: <a href="http://graffletopia.com/stencils/449" title="Napkin UML OmniGraffle stencil" target="_blank">Napkin UML</a>. Be warned: it&#8217;s very rough and ready. The font I used in my presentation was <a href="http://simplythebest.net/fonts/fonts/fg_jayne_print.html" title="FG Jayne Print" target="_blank">FG Jayne Print</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2009/03/18/qcon-presentation-and-uml-stencil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Representing the Enterprise</title>
		<link>http://iansrobinson.com/2009/03/03/representing-the-enterprise/</link>
		<comments>http://iansrobinson.com/2009/03/03/representing-the-enterprise/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 18:04:08 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=61</guid>
		<description><![CDATA[Whilst preparing slides for next week&#8217;s QCon London, I remembered that a short article of mine, Representing the Enterprise, had been published sometime last year by Conspectus. I&#8217;ve always been sensitive to modes of representation, so I was somewhat disappointed to see that the online version of the article had not only been renamed (to [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst preparing slides for next week&#8217;s <a href="http://qconlondon.com/" target="_blank" title="QCon London">QCon London</a>, I remembered that a short article of mine, <a href="http://www.conspectus.com/2008/october/article8.asp" target="_blank" title="Do you speak geek?">Representing the Enterprise</a>, had been published sometime last year by <a href="http://www.conspectus.com/" target="_blank" title="Conspectus">Conspectus</a>. I&#8217;ve always been sensitive to modes of representation, so I was somewhat disappointed to see that the online version of the article had not only been renamed (to &#8220;Do you speak geek?&#8221;), but that it had been edited by someone for whom a sentence and a paragraph is one discourse unit too many. Given that the article fills out one of my slides, &#8220;Barriers to Communication,&#8221; I thought I&#8217;d dust it off and put a <a href="http://iansrobinson.com/articles/representing-the-enterprise/" target="_blank" title="Representing the Enterprise">revised version</a> on this blog for you to read.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2009/03/03/representing-the-enterprise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QCon London</title>
		<link>http://iansrobinson.com/2009/03/03/qcon-london/</link>
		<comments>http://iansrobinson.com/2009/03/03/qcon-london/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 17:50:23 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=52</guid>
		<description><![CDATA[I&#8217;ll be at QCon London next week &#8211; speaking but also attending many of the excellent sessions on offer. On Wednesday I&#8217;m presenting Steering the Northwest Passage: Beginning a SOA Initiative as part of Stefan Tilkov&#8217;s SOA in the Real World track. On Friday, I&#8217;ll be catching up with Stefan again when he interviews Jim [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be at <a href="http://qconlondon.com/" target="_blank" title="QCon London">QCon London</a> next week &#8211; speaking but also attending many of the excellent sessions on offer. On Wednesday I&#8217;m presenting <a href="http://qconlondon.com/london-2009/presentation/Steering+the+Northwest+Passage%3A+Beginning+an+SOA+Initiative" target="_blank" title="Steering the Northwest Passage: Beginning a SOA Initiative">Steering the Northwest Passage: Beginning a SOA Initiative</a> as part of Stefan Tilkov&#8217;s <a href="http://qconlondon.com/london-2009/tracks/show_track.jsp?trackOID=222" target="_blank" title="SOA in the Real World">SOA in the Real World</a> track.</p>

<p>On Friday, I&#8217;ll be catching up with Stefan again when he interviews <a href="http://jim.webber.name" target="_blank" title="Jim Webber's blog">Jim Webber</a> and me on <a href="http://qconlondon.com/london-2009/presentation/REST+for+SOA%3A+Using+the+Web+for+Integration" target="_blank" title="REST for SOA: Using the Web for Integration">REST for SOA: Using the Web for Integration</a>. I&#8217;m currently going through some back issue of Viz so that I can keep up with Jim&#8217;s &#8220;pattern language.&#8221;</p>

<p>At the end of the afternoon I&#8217;ll be joining the panel &#8211; <a href="http://martinfowler.com/" target="_blank" title="Martin Fowler">Martin Fowler</a>, <a href="http://www.michaelnygard.com/blog/" target="_blank" title="Michael T. Nygard's blog">Michael T. Nygard</a>  and <a href="http://steve.vinoski.net/blog/" target="_blank" title="Steve Vinoski's blog">Steve Vinoski</a> &#8211; for <a href="http://qconlondon.com/london-2009/presentation/Game+show%3A+It%27s+a+Bullseye!+with+Jim+Webber" target="_blank" title="Game show: It's a Bullseye! with Jim Webber">Game show: It&#8217;s a Bullseye! with Jim Webber</a>. After all, every quiz show needs one fake.</p>

<p>Speaking of all things QCon-wise, InfoQ have recently published Ryan Slobojan&#8217;s <a href="http://www.infoq.com/interviews/robinson-rest-ws-soa-implementation" target="_blank" title="Ian Robinson discusses REST, WS-* and Implementing an SOA">interview with me</a> from QCon San Francisco last year. I&#8217;m surprised that there was so much to show from this. Ryan asked some great questions around REST, WS-* and SOA, but jet-lag had the better of me: thankfully, InfoQ have edited out the parts where I give up on putting one word in front of another.</p>
]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2009/03/03/qcon-london/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stories and Capabilities</title>
		<link>http://iansrobinson.com/2008/10/28/stories-and-capabilities/</link>
		<comments>http://iansrobinson.com/2008/10/28/stories-and-capabilities/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 09:15:40 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Behaviour-Driven Development]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=26</guid>
		<description><![CDATA[I&#8217;d long been interested in capability mapping, but was always looking for an in, a way of communicating the purpose of the exercise and eliciting useful descriptions from participants. Goals and capabilities seemed an easy pairing, but in practice it proved a little too formal. I needed something more expansive, something loose and conversational that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d long been interested in capability mapping, but was always looking for an in, a way of communicating the purpose of the exercise and eliciting useful descriptions from participants. Goals and capabilities seemed an easy pairing, but in practice it proved a little too formal. I needed something more expansive, something loose and conversational that would nonetheless help stakeholders frame concise descriptions of the capabilities that were important to them.</p>

<p>The answer was close to hand: user stories. The added depth that the story format brought to the table really invigorated the capability mapping process – not only does a story describe a goal, it also describes a user (or organisational) role and the value attached to realising a goal. Used judiciously – after all, it&#8217;s not always wise to insist that every utterance use the story format – story writing can greatly help in discovering and mapping capabilities.</p>

<p>And in pairing user stories and capabilities, I learnt something interesting about stories.</p>

<h3>Goals or Features?</h3>

<p>I&#8217;ve written briefly in the past about <a href="http://iansrobinson.com/2008/06/25/stories-capabilities-services-contracts/" title="Stories, Capabilities, Services and Contracts" target="_blank">using stories and capabilities to create a business-meaningful model of an organisation</a>. When I pair stories and capabilities, I say that stories describe strategic organisational <em>goals</em>; capabilities describe <em>what</em> an organisation must provide to satisfy those goals. <em>How</em> an organisation meets its strategic goals is another matter: capabilities can be implemented in many different ways, and the how varies over time. The capability to source replacement parts for used cars, for example, might today be implemented by harried customer service staff leafing through papers in a filing cabinet; tomorrow it might be implemented using an online application backed by a relational database.</p>

<p>If you&#8217;re familiar with any kind of agile requirements analysis process, whether based on Mike Cohn&#8217;s “user stories”, or Behaviour-Driven Development&#8217;s example-based specifications, you might think it a little odd when I say that stories describe goals. User stories and BDD exemplars typically describe <em>features</em>. Moreover, they do so in way that is estimable and testable. The purpose of stories is to guide software development in a way that is meaningful to end-users and stakeholders. In the course of describing features they might allude to or otherwise encode user goals, but the goals would not appear to be ends in themselves: they simply motivate the features that drive specific instances of software development.</p>

<p>So in saying that stories describe goals we appear to have reduced the usefulness of the story format. Without features, user stories feel a little too sparse, and of insufficient value to feature-focussed software development.</p>

<p>Nonetheless, when I use stories to drive out capabilities, I use a weak form of the story format – one that aims at describing only goals not features. In effect, I unpack a feature into its constituent parts: on the one hand a goal (or need), on the other, a capability.</p>

<p>Why would I do that? Because goals can be satisfied in many different ways. Just as capabilities are amenable to multiple implementations, so high-level goals can be satisfied through a range of possible capabilities.</p>

<p>This isn&#8217;t really news to the agile community, of course. Both <a href="http://dannorth.net/2006/10/outcomes-over-features-the-fifth-agile-value" title="Dan North: Outcomes over Features - the fifth agile value?" target="_blank">Dan North</a> and <a href="http://martinfowler.com/bliki/FeatureDevotion.html" title="Martin Fowler: FeatureDevotion" target="_blank">Martin Fowler</a> have discussed the double-edged power of the user story, the benefits and dangers that come from baking features into user stories. The only novelty here concerns the degree to which I make explicit and control the split between goals and capabilities. By distinguishing between the two, I can &#8220;slow down&#8221; the analysis process and tease goals from capabilities so as to focus on the capabilities, or I can speed things up and get at the features.</p>

<p>When the purpose of the exercise is to identify and map capabilities, I enforce this split quite rigorously. The fine-grained control over the analysis process this gives me helps emphasize the distinctive nature of the capability concept, differentiating it from goals on the one hand, processes on the other. The power of variability comes into play here, helping us progress the conversation and get value from the workshop. In practical terms, this means we can anchor a goal and then iterate capabilities until we&#8217;re happy we&#8217;ve found the right set of capabilities and an appropriate language to describe them.</p>

<p>When gunning for development, however, I&#8217;m often quite happy to roll goals and capabilities back up into features, though always with the acknowledgement that I&#8217;m assuming a more one-to-one relationship between a goal and a capability.</p>

<p>In both situations, I&#8217;ll stress the need to specify a meaningful value for the story. I&#8217;ll also be on the lookout for inadvertent lapses into specifying solutions rather than goals, and I&#8217;ll quite happily employ the <a href="http://iansrobinson.com/2008/06/05/rediscovering-business-benefits/" title="Rediscovering Business Benefits" target="_blank"><em>shift left</em></a> approach to highlight poorly constructed stories.</p>

<h3>From Operating Model to Business Architecture</h3>

<p>A little more context may be useful here. I use the story and capability pairing when running high-level capability discovery workshops with business unit heads or their delegates, heads of the lines of business, strategy makers, etc. These people are typically responsible for specifying <em>what</em> their part of the organisation must achieve, what capabilities it must possess; they have little direct responsibility for determining <em>how</em> those capabilities are implemented on a day-by-day basis. (For insight into the lower-level capabilities and the how of execution, I speak to operational staff.)</p>

<p>Used in this way, the stories are not necessarily estimable or testable. But because they&#8217;re not being used to guide software development, that&#8217;s not an issue. The stories are vehicles to get to capabilities.</p>

<p>The purpose of these capability discovery workshops is to create a network map of an organisation&#8217;s high-level capabilities. These maps link an organisation&#8217;s operating model to its business architecture. Subsequent iterations of the capability map lay the groundwork for service discovery. The workshops themselves help establish context and create consensus amongst stakeholders; at the same time, they serve as a platform for interrogating and challenging an organisation&#8217;s goals and benefits. In this way they provide for early course corrections towards the beginning of an IT or business initiative.</p>]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2008/10/28/stories-and-capabilities/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stories, Capabilities, Services and Contracts</title>
		<link>http://iansrobinson.com/2008/06/25/stories-capabilities-services-contracts/</link>
		<comments>http://iansrobinson.com/2008/06/25/stories-capabilities-services-contracts/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 20:48:21 +0000</pubDate>
		<dc:creator>iansrobinson</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Behaviour-Driven Development]]></category>
		<category><![CDATA[Consumer-Driven Contracts]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://iansrobinson.com/?p=16</guid>
		<description><![CDATA[Today I want to introduce a bare-bones model to help guide the creation of business, architectural and technology artefacts in an agile and iterative manner over the course of an SOA initiative: Stories – in the form of Behaviour-Driven Development exemplars – describe goals and desired outcomes; Capabilities encapsulate the resources and abilities an organisation [...]]]></description>
			<content:encoded><![CDATA[<p>Today I want to introduce a bare-bones model to help guide the creation of business, architectural and technology artefacts in an agile and iterative manner over the course of an SOA initiative:</p>
<ul>
	<li>Stories – in the form of <a href="http://en.wikipedia.org/wiki/Behavior_driven_development" title="Behaviour-Driven Development" target="_blank">Behaviour-Driven Development</a> <em>exemplars</em> – describe goals and desired outcomes;</li>
	<li><a href="http://msdn.microsoft.com/en-us/arcjournal/bb245662.aspx" title="Service-Oriented Modeling for Connected Systems: Part 1" target="_blank">Capabilities</a> encapsulate the resources and abilities an organisation needs to satisfy those goals;</li>
	<li>Services host capabilities;</li>
	<li>Contracts – particularly <a href="http://martinfowler.com/articles/consumerDrivenContracts.html" title="Consumer-Driven Contracts" target="_blank">consumer-driven contracts</a> – assert the interactions between services.</li>
</ul>
<p>We iterate over this model many times in the course of an engagement, emphasising different parts as we go. We concentrate on organisation-level stories and capabilities when establishing an organisation-wide context, then project-level stories, capabilities and services whilst planning projects and delivery streams, and then release- and iteration-level artefacts during specific instances of delivery.</p>
<p>Such an approach represents a &#8220;thin-slice&#8221; way to:</p>
<ul>
	<li>establish context, business goals and consensus amongst stakeholders;</li>
	<li>create a long-term vision that joins up the business, architectural and technology views of an SOA initiative;</li>
	<li>describe and challenge an organisation’s goals and the benefits attached to those goals;</li>
	<li>describe the capabilities needed to meet those goals;</li>
	<li>identify the quality-of-service expectations the business has of those capabilities;</li>
	<li>identify services and assign capabilities to services;</li>
	<li>describe and test the externally visible interactions between services;</li>
	<li>identify, plan and develop slices of service functionality that deliver business benefits early and often.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://iansrobinson.com/2008/06/25/stories-capabilities-services-contracts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

