<?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>Mon, 15 Mar 2010 07:36:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: t-gun</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-65695</link>
		<dc:creator>t-gun</dc:creator>
		<pubDate>Wed, 10 Feb 2010 20:48:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-65695</guid>
		<description>A great article for me. this is very useful for someone to learn about agile.the information is in a simple way with examples. as students we need these type of articles. thanks a lot.</description>
		<content:encoded><![CDATA[<p>A great article for me. this is very useful for someone to learn about agile.the information is in a simple way with examples. as students we need these type of articles. thanks a lot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eachan</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-30676</link>
		<dc:creator>Eachan</dc:creator>
		<pubDate>Thu, 22 Jan 2009 16:18:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-30676</guid>
		<description>I tried this with a team a long time ago (see http://tinyurl.com/agmqrj) and it was really successful.

As you say in your post, the &quot;as a, I want, so that&quot; format is an excellent way to communicate the constraint in terms delivery teams are intimate with.  On top of this, I found that the &quot;as proven by&quot; clauses were the key to flexible and pragmatic adoption across every project - without having to write them explicitly for every feature.

IHMO giving people standards to meet and philosophies to work by always beats verbose prescription!</description>
		<content:encoded><![CDATA[<p>I tried this with a team a long time ago (see <a href="http://tinyurl.com/agmqrj)" rel="nofollow">http://tinyurl.com/agmqrj)</a> and it was really successful.</p>
<p>As you say in your post, the &#8220;as a, I want, so that&#8221; format is an excellent way to communicate the constraint in terms delivery teams are intimate with.  On top of this, I found that the &#8220;as proven by&#8221; clauses were the key to flexible and pragmatic adoption across every project &#8211; without having to write them explicitly for every feature.</p>
<p>IHMO giving people standards to meet and philosophies to work by always beats verbose prescription!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Gilb</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-30462</link>
		<dc:creator>Tom Gilb</dc:creator>
		<pubDate>Sun, 18 Jan 2009 14:52:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-30462</guid>
		<description>I think you will find that &#039;constraints&#039; is an unfortunate categorization for &#039;non-functional&#039; requirements.

We have some agreement that the term non-functional requirement is not a good one. I seriously suggest that the many people who use it have not yet thought very deeply about requirements. I detest it and its use.

My books, that Mike refers to above go into some depth on this matter for those who wish to go deeper than this reply can do.

I used to be confused myself, before I began to work out the terminology deeply.
One way to go deep is to access the many requirements concepts in my Concept Glossary
http://www.gilb.com/tiki-download_file.php?fileId=25

I used to think that &#039;all requirements constrained&#039; (even function requirements). All requirements constrain our other choices (design, architecture, timing and more) but it is still not useful to call   all non-function requirements &#039;constraints&#039;.

I got the necessary insight in a flash once, when I realized that some requirements are &#039;primarily intended&#039; to constrain. And some requirements are not primarily intended to constrain. 

They might just do so incidentally. They might incidentally inspire, seem stupid, waste resources, be unnecessary, and they might incidentally have many secondary unintended side effects. But I would not classify all non-function requirements as &#039;inspirers&#039;, &#039;stupid&#039;, or &#039;unnecessary&#039; because of these side effects. By the way non-functional (the -al) is bad grammar!

There are many interesting types of requirements that are not function requirements. See the Concept Glossary, under &#039;Requirement&#039; for a chart of them. The most interesting requirement types from my viewpoint is what I call &#039;quality&#039; requirements. Quality requirements describe &#039;how well&#039; a function needs to be done (as Mike points out, mostly &#039;ilities&#039;). 

But, and this is true of all scalar requirements, there are two basic scalar levels of requirement, and both can be applied simultaneously. I call these two classes &#039;targets&#039; (levels of quality we might value reaching), and &#039;constraints&#039; (levels of quality we would value not falling below).

A simple example in my Planguage:

Maintainability:
Type: Quality Requirement.
Scope: All software in products, or their support systems, that we provide to customers.
Scale: Mean Time to Completely Fix a Bug from its Existence is ascertainable.
--------  Here are 2 different constraint requirements ----
Fail [2010, UK]  24 hours
Catastrophe [2009, Europe] 1 week
--------- Here are 2 different Target Requirements
Goal [2011, Worldwide, Games Sector Products] 1 hour
Stretch [2013, Worldwide] 20 minutes.

The above concepts are explained in the Concept Glossary, but most of you can guess their basic meanings. Concepts like &#039;Goal&#039; have a defined set of attributes such as: must be technically feasible, within budget, prioritized etc. &#039;Stretch&#039;, for example, does not have such requirements!

&#039;Fail&#039; and &#039;Catastrophe&#039; level requirements are primarily intended to set clear lower limits. But &#039;Fail&#039; simply means that &#039;below that constraint level things are unpleasant&#039; (like &#039;difficult to breathe&#039;) but recoverable. &#039;Catastrophe&#039; is a constraint that signals disaster, possibly irrecoverable (suffocation).

This is enough to hint at the potential, useful, distinctions in requirements. Hopefully the astute reader is beginning to see what we cannot simple declare all non-functions to be &#039;constraints&#039;. It is not logically true or useful!

more at the website gilb.com

Tom</description>
		<content:encoded><![CDATA[<p>I think you will find that &#8216;constraints&#8217; is an unfortunate categorization for &#8216;non-functional&#8217; requirements.</p>
<p>We have some agreement that the term non-functional requirement is not a good one. I seriously suggest that the many people who use it have not yet thought very deeply about requirements. I detest it and its use.</p>
<p>My books, that Mike refers to above go into some depth on this matter for those who wish to go deeper than this reply can do.</p>
<p>I used to be confused myself, before I began to work out the terminology deeply.<br />
One way to go deep is to access the many requirements concepts in my Concept Glossary<br />
<a href="http://www.gilb.com/tiki-download_file.php?fileId=25" rel="nofollow">http://www.gilb.com/tiki-download_file.php?fileId=25</a></p>
<p>I used to think that &#8216;all requirements constrained&#8217; (even function requirements). All requirements constrain our other choices (design, architecture, timing and more) but it is still not useful to call   all non-function requirements &#8216;constraints&#8217;.</p>
<p>I got the necessary insight in a flash once, when I realized that some requirements are &#8216;primarily intended&#8217; to constrain. And some requirements are not primarily intended to constrain. </p>
<p>They might just do so incidentally. They might incidentally inspire, seem stupid, waste resources, be unnecessary, and they might incidentally have many secondary unintended side effects. But I would not classify all non-function requirements as &#8216;inspirers&#8217;, &#8217;stupid&#8217;, or &#8216;unnecessary&#8217; because of these side effects. By the way non-functional (the -al) is bad grammar!</p>
<p>There are many interesting types of requirements that are not function requirements. See the Concept Glossary, under &#8216;Requirement&#8217; for a chart of them. The most interesting requirement types from my viewpoint is what I call &#8216;quality&#8217; requirements. Quality requirements describe &#8216;how well&#8217; a function needs to be done (as Mike points out, mostly &#8216;ilities&#8217;). </p>
<p>But, and this is true of all scalar requirements, there are two basic scalar levels of requirement, and both can be applied simultaneously. I call these two classes &#8216;targets&#8217; (levels of quality we might value reaching), and &#8216;constraints&#8217; (levels of quality we would value not falling below).</p>
<p>A simple example in my Planguage:</p>
<p>Maintainability:<br />
Type: Quality Requirement.<br />
Scope: All software in products, or their support systems, that we provide to customers.<br />
Scale: Mean Time to Completely Fix a Bug from its Existence is ascertainable.<br />
&#8212;&#8212;&#8211;  Here are 2 different constraint requirements &#8212;-<br />
Fail [2010, UK]  24 hours<br />
Catastrophe [2009, Europe] 1 week<br />
&#8212;&#8212;&#8212; Here are 2 different Target Requirements<br />
Goal [2011, Worldwide, Games Sector Products] 1 hour<br />
Stretch [2013, Worldwide] 20 minutes.</p>
<p>The above concepts are explained in the Concept Glossary, but most of you can guess their basic meanings. Concepts like &#8216;Goal&#8217; have a defined set of attributes such as: must be technically feasible, within budget, prioritized etc. &#8216;Stretch&#8217;, for example, does not have such requirements!</p>
<p>&#8216;Fail&#8217; and &#8216;Catastrophe&#8217; level requirements are primarily intended to set clear lower limits. But &#8216;Fail&#8217; simply means that &#8216;below that constraint level things are unpleasant&#8217; (like &#8216;difficult to breathe&#8217;) but recoverable. &#8216;Catastrophe&#8217; is a constraint that signals disaster, possibly irrecoverable (suffocation).</p>
<p>This is enough to hint at the potential, useful, distinctions in requirements. Hopefully the astute reader is beginning to see what we cannot simple declare all non-functions to be &#8216;constraints&#8217;. It is not logically true or useful!</p>
<p>more at the website gilb.com</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Gilb</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-30445</link>
		<dc:creator>Tom Gilb</dc:creator>
		<pubDate>Sun, 18 Jan 2009 08:45:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-30445</guid>
		<description>I wonder if I can meet the challenge these youngsters throw at us Mike! :) - awaiting your next blog
Tom</description>
		<content:encoded><![CDATA[<p>I wonder if I can meet the challenge these youngsters throw at us Mike! <img src='http://blog.mountaingoatsoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8211; awaiting your next blog<br />
Tom</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-30310</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Fri, 16 Jan 2009 21:41:27 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-30310</guid>
		<description>Tom does, indeed, have excellent advice on non-functional requirements (as well as every other type of requirement). I&#039;d encourage everyone to read his &lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0750665076/mountaingoats-20&quot; rel=&quot;nofollow&quot;&gt;Competitive Engineering&lt;/a&gt; book as well as his &lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201192462/mountaingoats-20&quot; rel=&quot;nofollow&quot;&gt;Principles of Software Engineering Management &lt;/a&gt;book. By the way, my company is named after his &quot;Mountain Goat&quot; principle in that book:

&lt;em&gt;Take one step at a time up the slippery mountainside, and make absolutely sure that each hoof is on solid ground before you take the next step.
&lt;/em&gt;
When I named the company back in 1992 this was about incremental development (&quot;the next step&quot;) and making sure each increment was what we&#039;d call &quot;potentially shippable&quot; today. Tom was indeed the original agilist in my mind. 

I had the honor of having dinner with him last month for the first time. He and his equally brilliant son, Kai, through a challenge at me that I haven&#039;t met yet. I&#039;m planning to blog about it this weekend to see if anyone here can help me! Stay tuned.</description>
		<content:encoded><![CDATA[<p>Tom does, indeed, have excellent advice on non-functional requirements (as well as every other type of requirement). I&#8217;d encourage everyone to read his <a href="http://www.amazon.com/exec/obidos/ASIN/0750665076/mountaingoats-20" rel="nofollow">Competitive Engineering</a> book as well as his <a href="http://www.amazon.com/exec/obidos/ASIN/0201192462/mountaingoats-20" rel="nofollow">Principles of Software Engineering Management </a>book. By the way, my company is named after his &#8220;Mountain Goat&#8221; principle in that book:</p>
<p><em>Take one step at a time up the slippery mountainside, and make absolutely sure that each hoof is on solid ground before you take the next step.<br />
</em><br />
When I named the company back in 1992 this was about incremental development (&#8220;the next step&#8221;) and making sure each increment was what we&#8217;d call &#8220;potentially shippable&#8221; today. Tom was indeed the original agilist in my mind. </p>
<p>I had the honor of having dinner with him last month for the first time. He and his equally brilliant son, Kai, through a challenge at me that I haven&#8217;t met yet. I&#8217;m planning to blog about it this weekend to see if anyone here can help me! Stay tuned.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otto Takacs</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-30303</link>
		<dc:creator>Otto Takacs</dc:creator>
		<pubDate>Fri, 16 Jan 2009 20:05:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-30303</guid>
		<description>Return to the old ages. From one of the old boy of agile (when there were no such a word as Agile): Tom Gilb (www.gilb.com) Has a few very interesting book about agile project management (not called agile). 

So this Tom Gilb has a very strong opinion about how to handle such a requirements and give great hints how to measure these.</description>
		<content:encoded><![CDATA[<p>Return to the old ages. From one of the old boy of agile (when there were no such a word as Agile): Tom Gilb (www.gilb.com) Has a few very interesting book about agile project management (not called agile). </p>
<p>So this Tom Gilb has a very strong opinion about how to handle such a requirements and give great hints how to measure these.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jez Nicholson</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-27888</link>
		<dc:creator>Jez Nicholson</dc:creator>
		<pubDate>Wed, 17 Dec 2008 09:27:59 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-27888</guid>
		<description>I like your (Mike&#039;s) reply to Johnstok. To me, a &#039;non-functional requirement&#039; often translates to the developers as &#039;create an automated test that proves that the system will achieve this requirement&#039;. Things like load testing and performance are vital things to add to the project and need to be introduced at the correct point (as decided by the PO and CTO).
As the delivered feature is an automated test, it should never go away and hence is not forgotten.</description>
		<content:encoded><![CDATA[<p>I like your (Mike&#8217;s) reply to Johnstok. To me, a &#8216;non-functional requirement&#8217; often translates to the developers as &#8216;create an automated test that proves that the system will achieve this requirement&#8217;. Things like load testing and performance are vital things to add to the project and need to be introduced at the correct point (as decided by the PO and CTO).<br />
As the delivered feature is an automated test, it should never go away and hence is not forgotten.</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-27260</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Sun, 07 Dec 2008 20:16:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-27260</guid>
		<description>Hi Jeff--

Sure. I&#039;ll give you another example I heard a bit ago. The CTO happened to walk by when the team was planning. He stopped in for a listen. The team was discussing whether to build a new application by connecting to an existing orders database or by replicating that database to a local one every night at midnight. The CTO settled it by adding a story: &quot;As the CTO, I want you to use the existing orders database so that we don&#039;t end up supporting an additional database for 20 years just because it seems easier for the next few months.&quot;

Others could be about &quot;use C#&quot; or &quot;comply with the company coding standard.&quot; Examples like these are why I really prefer the word &quot;constraint&quot; over &quot;non-functional requirement.&quot;</description>
		<content:encoded><![CDATA[<p>Hi Jeff&#8211;</p>
<p>Sure. I&#8217;ll give you another example I heard a bit ago. The CTO happened to walk by when the team was planning. He stopped in for a listen. The team was discussing whether to build a new application by connecting to an existing orders database or by replicating that database to a local one every night at midnight. The CTO settled it by adding a story: &#8220;As the CTO, I want you to use the existing orders database so that we don&#8217;t end up supporting an additional database for 20 years just because it seems easier for the next few months.&#8221;</p>
<p>Others could be about &#8220;use C#&#8221; or &#8220;comply with the company coding standard.&#8221; Examples like these are why I really prefer the word &#8220;constraint&#8221; over &#8220;non-functional requirement.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Anderson</title>
		<link>http://blog.mountaingoatsoftware.com/non-functional-requirements-as-user-stories/comment-page-1#comment-27258</link>
		<dc:creator>Jeff Anderson</dc:creator>
		<pubDate>Sun, 07 Dec 2008 20:11:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-27258</guid>
		<description>Mike,

I find it very difficult to actually get business stakeholders in many clients to even agree on the value of &quot;nonfunctionals&quot;, a lot of these constraints seem to come from technical stakeholders like enterprise architects and technology owners.

In your view is it okay to add a story like

&quot;as an architect, I want the system to be hosted using WebSphere application server so that I can simplify the management of my enterprise portfolio&quot;

Assuming that the architect is not a team member...
Jeff</description>
		<content:encoded><![CDATA[<p>Mike,</p>
<p>I find it very difficult to actually get business stakeholders in many clients to even agree on the value of &#8220;nonfunctionals&#8221;, a lot of these constraints seem to come from technical stakeholders like enterprise architects and technology owners.</p>
<p>In your view is it okay to add a story like</p>
<p>&#8220;as an architect, I want the system to be hosted using WebSphere application server so that I can simplify the management of my enterprise portfolio&#8221;</p>
<p>Assuming that the architect is not a team member&#8230;<br />
Jeff</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-27168</link>
		<dc:creator>Mike Cohn</dc:creator>
		<pubDate>Fri, 05 Dec 2008 23:15:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=62#comment-27168</guid>
		<description>Sarah--

Good points. What I normally do in this situation is hang the constraint cards on the wall so that they are always visible. Then those constraints are in the team&#039;s mind as they plan a new sprint. And yes they can add conditions of satisfaction (COS) to a user story to convey any implications of the constraints already accepted into the project.</description>
		<content:encoded><![CDATA[<p>Sarah&#8211;</p>
<p>Good points. What I normally do in this situation is hang the constraint cards on the wall so that they are always visible. Then those constraints are in the team&#8217;s mind as they plan a new sprint. And yes they can add conditions of satisfaction (COS) to a user story to convey any implications of the constraints already accepted into the project.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
