<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Non-functional Requirements as User Stories</title>
	<atom:link href="http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories</link>
	<description>Succeeding With Agile®</description>
	<lastBuildDate>Fri, 10 Feb 2012 03:51:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Mike Cohn</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-298939</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Fri, 18 Nov 2011 03:43:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-298939</guid>
		<description>Hi Drew-
I don&#039;t have any objections to these formats. I used to do non-functionals more like this but for the last few years I&#039;ve written them more often as user stories. I don&#039;t think doing so adds a ton of value (although it does for functional stories). But, I wrote this post to show that it can be done as a lot of people think it can&#039;t. And, I do find that many teams prefer all their requirements to be written in a consistent manner.</description>
		<content:encoded><![CDATA[<p>Hi Drew-<br />
I don&#8217;t have any objections to these formats. I used to do non-functionals more like this but for the last few years I&#8217;ve written them more often as user stories. I don&#8217;t think doing so adds a ton of value (although it does for functional stories). But, I wrote this post to show that it can be done as a lot of people think it can&#8217;t. And, I do find that many teams prefer all their requirements to be written in a consistent manner.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Drew Jemilo</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-298660</link>
		<dc:creator>Drew Jemilo</dc:creator>
		<pubDate>Thu, 17 Nov 2011 20:13:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-298660</guid>
		<description>Hi Mike,

In terms of format, I like to express NFRs in a format other than the User Story to distinguish them from Backlog items.  I don&#039;t include them in the backlog.  Rather, they are reviewed as new features are built and part of the &quot;Definition of Done&quot; for a potentially shippable increment and/or release.

In terms of format, I&#039;ve worked with the below ones but have a preference for #2:
 
(1)  Traditional (Old School) Format -- a statement.
E.g., New third party content must be integrated and available in search results within one hour
 
(2)  Traditional Format with Value to the User -- A statement with the value stated separately.
E.g., New third party content must be integrated and available in search results within one hour.  Value:  The end user can receive fresh search results using our search engine
 
(3)  User Story Format -- self-explanatory.
E.g., As a subscriber, I can receive fresh search results so that I don’t have to go to other sites when I need the latest content

Format 2 contains the same information as a User Story (provided that the user is clearly defined in the value statement).  However, the format more strongly suggests that it isn&#039;t a feature on the backlog which can be discarded once the conditions of satisfaction are met.  Instead, it is persistent.

Thoughts?

Drew</description>
		<content:encoded><![CDATA[<p>Hi Mike,</p>
<p>In terms of format, I like to express NFRs in a format other than the User Story to distinguish them from Backlog items.  I don&#8217;t include them in the backlog.  Rather, they are reviewed as new features are built and part of the &#8220;Definition of Done&#8221; for a potentially shippable increment and/or release.</p>
<p>In terms of format, I&#8217;ve worked with the below ones but have a preference for #2:</p>
<p>(1)  Traditional (Old School) Format &#8212; a statement.<br />
E.g., New third party content must be integrated and available in search results within one hour</p>
<p>(2)  Traditional Format with Value to the User &#8212; A statement with the value stated separately.<br />
E.g., New third party content must be integrated and available in search results within one hour.  Value:  The end user can receive fresh search results using our search engine</p>
<p>(3)  User Story Format &#8212; self-explanatory.<br />
E.g., As a subscriber, I can receive fresh search results so that I don’t have to go to other sites when I need the latest content</p>
<p>Format 2 contains the same information as a User Story (provided that the user is clearly defined in the value statement).  However, the format more strongly suggests that it isn&#8217;t a feature on the backlog which can be discarded once the conditions of satisfaction are met.  Instead, it is persistent.</p>
<p>Thoughts?</p>
<p>Drew</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Cohn</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-292607</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Wed, 09 Nov 2011 01:24:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-292607</guid>
		<description>Hi Sonali--
Yes, NFRs can be viewed as part of the definition of done. That&#039;s a good point I often fail to mention so thanks. I usually start by thinking of a non-functional as it&#039;s own user story. Once we do that story and &quot;accept&quot; the non-functional requirement, it becomes part of the definition of done and is applied to every story from then on.</description>
		<content:encoded><![CDATA[<p>Hi Sonali&#8211;<br />
Yes, NFRs can be viewed as part of the definition of done. That&#8217;s a good point I often fail to mention so thanks. I usually start by thinking of a non-functional as it&#8217;s own user story. Once we do that story and &#8220;accept&#8221; the non-functional requirement, it becomes part of the definition of done and is applied to every story from then on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sonali</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-292070</link>
		<dc:creator>sonali</dc:creator>
		<pubDate>Tue, 08 Nov 2011 09:25:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-292070</guid>
		<description>Hi Mike, 

Very very informative and interesting comments. Could the NFR also be taken as part of Condition of Satisfaction as for each functional US we could then check as part of Done or Demo if these are also met or not.</description>
		<content:encoded><![CDATA[<p>Hi Mike, </p>
<p>Very very informative and interesting comments. Could the NFR also be taken as part of Condition of Satisfaction as for each functional US we could then check as part of Done or Demo if these are also met or not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Cohn</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-287857</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Tue, 01 Nov 2011 16:41:45 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-287857</guid>
		<description>Hi Aeomer--
I think that writing stories in first-person for non-functional requirements is fine. I see programmers talk this way all the time, &quot;OK, if I&#039;m the loan approval system and you pass me bad data, I should first....&quot; So writing a story in a similar way has always seemed fine to me.</description>
		<content:encoded><![CDATA[<p>Hi Aeomer&#8211;<br />
I think that writing stories in first-person for non-functional requirements is fine. I see programmers talk this way all the time, &#8220;OK, if I&#8217;m the loan approval system and you pass me bad data, I should first&#8230;.&#8221; So writing a story in a similar way has always seemed fine to me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aeomer</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-287807</link>
		<dc:creator>Aeomer</dc:creator>
		<pubDate>Tue, 01 Nov 2011 14:42:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-287807</guid>
		<description>Describing non-functional requirements often means there is no &#039;wetware&#039; as the consumer. The examples given in the blog neatly avoid the issue altogether by coming back to how a physical person (wetware) is affected; noble but very contrived.

The solution for me is to personify the consumer of the non-functional system. Let us say we have a SOAP interface call &quot;Sudsey&quot; that is consumed by another service called &#039;MyCoolConsumer&#039;, I would personify the consuming client by using its name as if it were &#039;wetware&#039;. eg. &quot;As &quot;MyCoolConsumer&quot; I need to be able to securely obtain information from Sudsey.
It is perfectly fine to use the name of the consumer (MyCoolConsumer) as it is a role with needs. Its needs are much easier to scope with a User Story than any real-world person :-)
Further, this method does not break the Scrum-way and neatly prevents arguments from some of my more Luddite colleagues.

Comments?</description>
		<content:encoded><![CDATA[<p>Describing non-functional requirements often means there is no &#8216;wetware&#8217; as the consumer. The examples given in the blog neatly avoid the issue altogether by coming back to how a physical person (wetware) is affected; noble but very contrived.</p>
<p>The solution for me is to personify the consumer of the non-functional system. Let us say we have a SOAP interface call &#8220;Sudsey&#8221; that is consumed by another service called &#8216;MyCoolConsumer&#8217;, I would personify the consuming client by using its name as if it were &#8216;wetware&#8217;. eg. &#8220;As &#8220;MyCoolConsumer&#8221; I need to be able to securely obtain information from Sudsey.<br />
It is perfectly fine to use the name of the consumer (MyCoolConsumer) as it is a role with needs. Its needs are much easier to scope with a User Story than any real-world person <img src='http://blog.mountaingoatsoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Further, this method does not break the Scrum-way and neatly prevents arguments from some of my more Luddite colleagues.</p>
<p>Comments?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Prasantha</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-280333</link>
		<dc:creator>Prasantha</dc:creator>
		<pubDate>Mon, 17 Oct 2011 06:38:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-280333</guid>
		<description>Thanks so much Mike.</description>
		<content:encoded><![CDATA[<p>Thanks so much Mike.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Cohn</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-277856</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Thu, 13 Oct 2011 04:15:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-277856</guid>
		<description>Hi Prasantha-
In general, I do think constraints include development work--a performance story, a usability story, etc. You&#039;re correct about the &quot;As the CTO, I want the system to use the existing orders database&quot; but that is not the most common type of constraint or non-functional requirement. 

I tend to hang constraints on the wall in the team room or put them on a project home page where they remain visible. Many do, however, start on the product backlog because there is work to be done. This is covered in more detail in the Succeeding with Agile book, which talks about the two costs involved with nonfunctionals--the cost of initial compliance and the ongoing cost of supporting a constraint, which is really best thought of as something like a tax.</description>
		<content:encoded><![CDATA[<p>Hi Prasantha-<br />
In general, I do think constraints include development work&#8211;a performance story, a usability story, etc. You&#8217;re correct about the &#8220;As the CTO, I want the system to use the existing orders database&#8221; but that is not the most common type of constraint or non-functional requirement. </p>
<p>I tend to hang constraints on the wall in the team room or put them on a project home page where they remain visible. Many do, however, start on the product backlog because there is work to be done. This is covered in more detail in the Succeeding with Agile book, which talks about the two costs involved with nonfunctionals&#8211;the cost of initial compliance and the ongoing cost of supporting a constraint, which is really best thought of as something like a tax.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Prasantha</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-277814</link>
		<dc:creator>Prasantha</dc:creator>
		<pubDate>Thu, 13 Oct 2011 01:55:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-277814</guid>
		<description>Thanks Mike. When I write a user story, I always get the feeling that this is something to be developed during the project. But these constraints even though written as separate user stories are nothing to do with developments. Rather they are for the team so that you do not violate them while you develop other stories during the project.
For example &quot;•As the CTO, I want the system to use our existing orders database rather than create a new one sot that we don’t have one more database to maintain.&quot;. There&#039;s no development involved, but a reminder for the team.
Am I correct in the interpretation of constraints? So, where should we place these constraints? I dont feel it should be in the Backlog.</description>
		<content:encoded><![CDATA[<p>Thanks Mike. When I write a user story, I always get the feeling that this is something to be developed during the project. But these constraints even though written as separate user stories are nothing to do with developments. Rather they are for the team so that you do not violate them while you develop other stories during the project.<br />
For example &#8220;•As the CTO, I want the system to use our existing orders database rather than create a new one sot that we don’t have one more database to maintain.&#8221;. There&#8217;s no development involved, but a reminder for the team.<br />
Am I correct in the interpretation of constraints? So, where should we place these constraints? I dont feel it should be in the Backlog.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Cohn</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-272247</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Thu, 29 Sep 2011 18:03:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-272247</guid>
		<description>Hi Prasantha--
Yes, these could be written as tests. Any user story could be rewritten as a test--users can log in would be a rewrite of &quot;as a user, I must login before accessing parts of the application.&quot;</description>
		<content:encoded><![CDATA[<p>Hi Prasantha&#8211;<br />
Yes, these could be written as tests. Any user story could be rewritten as a test&#8211;users can log in would be a rewrite of &#8220;as a user, I must login before accessing parts of the application.&#8221;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

