<?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: Agile Non-Functional Requirements</title>
	<atom:link href="http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/</link>
	<description>Software product success.</description>
	<lastBuildDate>Sun, 12 Feb 2012 19:10:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>By: Ajay Sharma</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-819414</link>
		<dc:creator>Ajay Sharma</dc:creator>
		<pubDate>Fri, 07 Oct 2011 01:26:42 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-819414</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;Agile Non-Functional Requirements http://t.co/59UbHBM7&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">Agile Non-Functional Requirements <a href="http://t.co/59UbHBM7" rel="nofollow">http://t.co/59UbHBM7</a></span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mary Gerush</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-812386</link>
		<dc:creator>Mary Gerush</dc:creator>
		<pubDate>Tue, 23 Aug 2011 19:05:26 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-812386</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;Another article about Non-Functional Requirements on #Agile projects. Good, detailed information. http://ow.ly/67WYx #BAOT&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">Another article about Non-Functional Requirements on #Agile projects. Good, detailed information. <a href="http://ow.ly/67WYx" rel="nofollow">http://ow.ly/67WYx</a> #BAOT</span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Wavle</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-812355</link>
		<dc:creator>Mark Wavle</dc:creator>
		<pubDate>Tue, 23 Aug 2011 17:00:12 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-812355</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;Another article about Non-Functional Requirements on #Agile projects. Good, detailed information. http://ow.ly/67WYx #BAOT&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">Another article about Non-Functional Requirements on #Agile projects. Good, detailed information. <a href="http://ow.ly/67WYx" rel="nofollow">http://ow.ly/67WYx</a> #BAOT</span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ~Cindy+F+Solomon~</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-788692</link>
		<dc:creator>~Cindy+F+Solomon~</dc:creator>
		<pubDate>Sun, 10 Apr 2011 08:01:36 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-788692</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;RT @StewartRogers: RT @sehlhorst: responded to @rcauvin &#039;s exclnt comment on #agile non-functional #requirements http://goo.gl/7CueQ&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">RT @StewartRogers: RT @sehlhorst: responded to @rcauvin &#39;s exclnt comment on #agile non-functional #requirements <a href="http://goo.gl/7CueQ" rel="nofollow">http://goo.gl/7CueQ</a></span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob Root</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-788555</link>
		<dc:creator>Bob Root</dc:creator>
		<pubDate>Sun, 10 Apr 2011 00:23:50 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-788555</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;By @sehlhorst: Agile Non-Functional Requirements http://bit.ly/9DOwHH&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">By @sehlhorst: Agile Non-Functional Requirements <a href="http://bit.ly/9DOwHH" rel="nofollow">http://bit.ly/9DOwHH</a></span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ProdMgmt Talk</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-788463</link>
		<dc:creator>ProdMgmt Talk</dc:creator>
		<pubDate>Sat, 09 Apr 2011 16:42:52 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-788463</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;RT @StewartRogers: RT @sehlhorst: responded to @rcauvin &#039;s exclnt comment on #agile non-functional #requirements http://goo.gl/7CueQ&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">RT @StewartRogers: RT @sehlhorst: responded to @rcauvin &#39;s exclnt comment on #agile non-functional #requirements <a href="http://goo.gl/7CueQ" rel="nofollow">http://goo.gl/7CueQ</a></span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stewart Rogers</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-788464</link>
		<dc:creator>Stewart Rogers</dc:creator>
		<pubDate>Fri, 08 Apr 2011 21:45:31 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-788464</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;RT @sehlhorst: responded to @rcauvin &#039;s exclnt comment on #agile non-functional #requirements http://goo.gl/7CueQ&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">RT @sehlhorst: responded to @rcauvin &#39;s exclnt comment on #agile non-functional #requirements <a href="http://goo.gl/7CueQ" rel="nofollow">http://goo.gl/7CueQ</a></span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ~Cindy+F+Solomon~</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-788170</link>
		<dc:creator>~Cindy+F+Solomon~</dc:creator>
		<pubDate>Fri, 08 Apr 2011 19:51:26 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-788170</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;RT @sehlhorst: responded to @rcauvin &#039;s exclnt comment on #agile non-functional #requirements http://goo.gl/7CueQ #prodmgmt #scrum&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">RT @sehlhorst: responded to @rcauvin &#39;s exclnt comment on #agile non-functional #requirements <a href="http://goo.gl/7CueQ" rel="nofollow">http://goo.gl/7CueQ</a> #prodmgmt #scrum</span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-788090</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Fri, 08 Apr 2011 13:29:05 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-788090</guid>
		<description>Great additions, Roger, thanks!

I was confused at first by the &quot;backlog items will NOT be the same&quot; - then I realized, you meant &quot;the backlog items used to create the existing system can not be re-used ala copy-paste&quot; - because new acceptance criteria (maintainability, not-on-platform-X) were not present previously.  Agreed.

The structure / format of requirements for a migration project are still the same (as we both alluded) - stories + acceptance criteria.

I like that you called out maintainability as a measurable NFR.  It opens an interesting sub-topic, how to (a) define acceptability and (b) measure how good we were.

If we were to migrate from (for example) Java to .NET, so that we can save money, the project should be considered a failure if that did not actually result in saving money - because &#039;maintaining in .NET turned out to be just as expensive as maintaining in Java.&#039;

How that plays out will ultimately be a function of the people you have available to maintain the system.  Good programmers usually have (a) languages they know now, and (b) languages they don&#039;t know yet.  Unless you&#039;re doing something dramatic like moving from a very unsuited (to the task) language to a very-suited-to-the-task language, I wouldn&#039;t expect to get efficiency gains from a rewrite.  Re-architecting often can make sense.  Moving to a highly-cohesive, loosely-coupled design in a complex system enables rapid parallel development and increases business agility (or lowers the cost to be agile).

When I&#039;ve seen &quot;technology mandates&quot; in the past, they&#039;ve usually been expressed as constraints that are trickled-down mandates.  They can still be articulated as acceptance criteria.  The &quot;is it worth it?&quot; discussion usually (in my experience) happens at a higher level than, and outside the context of, a particular project.  My mental model is company-wide standardization.  Is that a good requirement?  Depends on your team and your staffing models and your recruiting capabilities - as well as the product.  Sometimes yes, sometimes no.

The biggest impact someone can have on a &quot;migration project&quot; is to make sure that the only stuff that gets (re)built is the stuff that still provides value.

&lt;strong&gt;I cringe whenever I hear &quot;like for like&quot; or &quot;pin-compatible&quot; migration projects.  They might make sense, but are (I think) more likely to be &quot;we&#039;re too busy/lazy/rushed to define what _today&#039;s_ requirements are.  Let&#039;s just blindly use the requirements from 5 years ago.&lt;/strong&gt;</description>
		<content:encoded><![CDATA[<p>Great additions, Roger, thanks!</p>
<p>I was confused at first by the &#8220;backlog items will NOT be the same&#8221; &#8211; then I realized, you meant &#8220;the backlog items used to create the existing system can not be re-used ala copy-paste&#8221; &#8211; because new acceptance criteria (maintainability, not-on-platform-X) were not present previously.  Agreed.</p>
<p>The structure / format of requirements for a migration project are still the same (as we both alluded) &#8211; stories + acceptance criteria.</p>
<p>I like that you called out maintainability as a measurable NFR.  It opens an interesting sub-topic, how to (a) define acceptability and (b) measure how good we were.</p>
<p>If we were to migrate from (for example) Java to .NET, so that we can save money, the project should be considered a failure if that did not actually result in saving money &#8211; because &#8216;maintaining in .NET turned out to be just as expensive as maintaining in Java.&#8217;</p>
<p>How that plays out will ultimately be a function of the people you have available to maintain the system.  Good programmers usually have (a) languages they know now, and (b) languages they don&#8217;t know yet.  Unless you&#8217;re doing something dramatic like moving from a very unsuited (to the task) language to a very-suited-to-the-task language, I wouldn&#8217;t expect to get efficiency gains from a rewrite.  Re-architecting often can make sense.  Moving to a highly-cohesive, loosely-coupled design in a complex system enables rapid parallel development and increases business agility (or lowers the cost to be agile).</p>
<p>When I&#8217;ve seen &#8220;technology mandates&#8221; in the past, they&#8217;ve usually been expressed as constraints that are trickled-down mandates.  They can still be articulated as acceptance criteria.  The &#8220;is it worth it?&#8221; discussion usually (in my experience) happens at a higher level than, and outside the context of, a particular project.  My mental model is company-wide standardization.  Is that a good requirement?  Depends on your team and your staffing models and your recruiting capabilities &#8211; as well as the product.  Sometimes yes, sometimes no.</p>
<p>The biggest impact someone can have on a &#8220;migration project&#8221; is to make sure that the only stuff that gets (re)built is the stuff that still provides value.</p>
<p><strong>I cringe whenever I hear &#8220;like for like&#8221; or &#8220;pin-compatible&#8221; migration projects.  They might make sense, but are (I think) more likely to be &#8220;we&#8217;re too busy/lazy/rushed to define what _today&#8217;s_ requirements are.  Let&#8217;s just blindly use the requirements from 5 years ago.</strong></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger L. Cauvin</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-787773</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Thu, 07 Apr 2011 20:44:44 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-787773</guid>
		<description>Skip, you need to consider whether the backlog items are really the same.

A proper backlog contains functional &lt;a href=&quot;http://blog.cauvin.org/2005/06/definition-of-requirement.html&quot; rel=&quot;nofollow&quot;&gt;requirements&lt;/a&gt; (expressed as user stories or use cases that are &lt;i&gt;not&lt;/i&gt;fleshed out with individual steps) paired with acceptance criteria that represent the &lt;a href=&quot;http://blog.cauvin.org/2007/05/use-case-as-black-box.html&quot; rel=&quot;nofollow&quot;&gt;nonfunctional requirements attached to each function&lt;/a&gt;.  Together, these items state the least stringent conditions that must hold to verify that you&#039;ve solved all the problems the system is intended to solve.

Presumably, there is a &lt;i&gt;reason&lt;/i&gt; that you are restructuring the system.  What is the problem you are trying solve?  You&#039;ve stated it relates to maintenance costs.  Maintainability is a nonfunctional requirement, and you can attach measurable acceptance criteria that must hold to know the system has achieved an acceptable level of maintainability and cost of maintenance.

Thus the backlog items will NOT be the same.  In particular, the acceptance criteria will need to change to reflect the more stringent maintainability requirements.</description>
		<content:encoded><![CDATA[<p>Skip, you need to consider whether the backlog items are really the same.</p>
<p>A proper backlog contains functional <a href="http://blog.cauvin.org/2005/06/definition-of-requirement.html" rel="nofollow">requirements</a> (expressed as user stories or use cases that are <i>not</i>fleshed out with individual steps) paired with acceptance criteria that represent the <a href="http://blog.cauvin.org/2007/05/use-case-as-black-box.html" rel="nofollow">nonfunctional requirements attached to each function</a>.  Together, these items state the least stringent conditions that must hold to verify that you&#8217;ve solved all the problems the system is intended to solve.</p>
<p>Presumably, there is a <i>reason</i> that you are restructuring the system.  What is the problem you are trying solve?  You&#8217;ve stated it relates to maintenance costs.  Maintainability is a nonfunctional requirement, and you can attach measurable acceptance criteria that must hold to know the system has achieved an acceptable level of maintainability and cost of maintenance.</p>
<p>Thus the backlog items will NOT be the same.  In particular, the acceptance criteria will need to change to reflect the more stringent maintainability requirements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-787768</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Thu, 07 Apr 2011 20:26:48 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-787768</guid>
		<description>Hey Skip, thanks for the great question and welcome to Tyner Blain!

I wrote a couple articles about &quot;migration projects&quot; in the past, that may answer your questions.  Or they may lead to more specific questions.

The crazy short answer is &quot;the backlog items look the same&quot; - you are standing up capabilities (in a new system) to replace capabilities* in the old system.

*You only need to replace the capabilities you actually use - some of the functionality that exists today in the home-grown system is undoubtably unused.  And some capabilities are more valuable than others (giving you prioritization).

Here are the previous articles:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://tynerblain.com/blog/2006/03/09/software-requirements-for-migration-projects/&quot; title=&quot;Software Requirements for Migration Projects&quot; rel=&quot;nofollow&quot;&gt;Software Requirements for Migration Projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tynerblain.com/blog/2006/03/15/organizing-a-software-migration-project/&quot; title=&quot;Organizing a Software Migration Project&quot; rel=&quot;nofollow&quot;&gt;Organizing a Software Migration Project&lt;/a&gt;&lt;/li&gt;

Let us know (here, or in the discussions on those articles) if you have more questions, and thanks for contributing to this discussion!

Scott (@sehlhorst)
&lt;ol&gt;&lt;/ol&gt;&lt;/ul&gt;</description>
		<content:encoded><![CDATA[<p>Hey Skip, thanks for the great question and welcome to Tyner Blain!</p>
<p>I wrote a couple articles about &#8220;migration projects&#8221; in the past, that may answer your questions.  Or they may lead to more specific questions.</p>
<p>The crazy short answer is &#8220;the backlog items look the same&#8221; &#8211; you are standing up capabilities (in a new system) to replace capabilities* in the old system.</p>
<p>*You only need to replace the capabilities you actually use &#8211; some of the functionality that exists today in the home-grown system is undoubtably unused.  And some capabilities are more valuable than others (giving you prioritization).</p>
<p>Here are the previous articles:</p>
<ul>
<li><a href="http://tynerblain.com/blog/2006/03/09/software-requirements-for-migration-projects/" title="Software Requirements for Migration Projects" rel="nofollow">Software Requirements for Migration Projects</a></li>
<li><a href="http://tynerblain.com/blog/2006/03/15/organizing-a-software-migration-project/" title="Organizing a Software Migration Project" rel="nofollow">Organizing a Software Migration Project</a></li>
<p>Let us know (here, or in the discussions on those articles) if you have more questions, and thanks for contributing to this discussion!</p>
<p>Scott (@sehlhorst)</p>
<ol></ol>
</ul>
]]></content:encoded>
	</item>
	<item>
		<title>By: Skip Pletcher</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-787303</link>
		<dc:creator>Skip Pletcher</dc:creator>
		<pubDate>Wed, 06 Apr 2011 20:06:48 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-787303</guid>
		<description>Imagine that the entire project lacks new functionality.  Say we inherited a home-grown authentication/access system as part of our application infrastructure but that system costs a lot of money to maintain or is based on a technology we no longer want to support, so we are going to replace it with an Open Source or Commercial alternative.  The purpose of the project is to reconfigure our application system to rely on the new authentication/access mechanism.  There is no new functionality, but we want to be certain the existing functionality is unaffected by the infrastructure change.  What do the items in our backlog look like?</description>
		<content:encoded><![CDATA[<p>Imagine that the entire project lacks new functionality.  Say we inherited a home-grown authentication/access system as part of our application infrastructure but that system costs a lot of money to maintain or is based on a technology we no longer want to support, so we are going to replace it with an Open Source or Commercial alternative.  The purpose of the project is to reconfigure our application system to rely on the new authentication/access mechanism.  There is no new functionality, but we want to be certain the existing functionality is unaffected by the infrastructure change.  What do the items in our backlog look like?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-787181</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Wed, 06 Apr 2011 12:40:40 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-787181</guid>
		<description>Hey &lt;i&gt;prot&lt;/i&gt;, thanks for the question, and welcome to Tyner Blain.

Let me try and reword your question into two questions, and please let me know if I got it right.  I&#039;ll answer each separately.

&lt;i&gt;When implementing new functional requirements, for a product that already has some non-functional requirements (NFRs) &quot;completed&quot;, what is the impact on those non-functional requirements?&lt;/i&gt;

The really short answer is that the NFRs are unaffected.  The short answer is that they are unaffected, because they still apply - however, they may apply in new ways.  The long answer is that &lt;i&gt;how they apply to previous functional requirements&lt;/i&gt; is unchanged.  They now also apply, when appropriate, to the new functional requirements.  As Roger points out in an earlier comment, the existing NFRs may not affect the new requirement - you may have an NFR that says that search results are generated in under 2 seconds, so that NFR would not make sense when adding support for two-factor authentication.  However, adding the two-factor authentication capability does not &quot;release&quot; your product from the 2-seconds-per-search requirement.  That NFR still applies.  If, however, the new functional requirement is to allow people to find their friends in the system, and you happen to implement that with search, then the old NFR still applies - the search for friends must return results within 2 seconds.

For the reverse of the situation - &lt;i&gt;how does adding new NFRs impact already implemented functional requirements&lt;/i&gt;, the answer is different (but the derivation of the answer is the same).

The new NFR will impact &lt;i&gt;how&lt;/i&gt; all relevant existing functional requirements perform.  Imagine that you have implemented search already, for product data, and user reviews.  When you add the NFR to assure that search results are displayed in under 2 seconds, that NFR will apply to all existing search capabilities.  It will &quot;technically apply&quot; to everything that already exists, but only makes sense in some situations.

If, for example, your previous &quot;find your friends&quot; capability was implemented by always showing all of your friends on the screen - users are never asked to &quot;search&quot; for them - then it would not really make sense.  Imagine, over time, that adoption of your product has grown over time, and you decide to refactor the user interface - because showing all friends all the time creates a bad experience - when you refactor your product to enable &quot;friend searching&quot;, the (previously implemented &lt;i&gt;differently&lt;/i&gt;) &#039;see your friends&#039; capability would then need honor the NFR for searching-in-less-than-2-seconds.

Does that address your question?</description>
		<content:encoded><![CDATA[<p>Hey <i>prot</i>, thanks for the question, and welcome to Tyner Blain.</p>
<p>Let me try and reword your question into two questions, and please let me know if I got it right.  I&#8217;ll answer each separately.</p>
<p><i>When implementing new functional requirements, for a product that already has some non-functional requirements (NFRs) &#8220;completed&#8221;, what is the impact on those non-functional requirements?</i></p>
<p>The really short answer is that the NFRs are unaffected.  The short answer is that they are unaffected, because they still apply &#8211; however, they may apply in new ways.  The long answer is that <i>how they apply to previous functional requirements</i> is unchanged.  They now also apply, when appropriate, to the new functional requirements.  As Roger points out in an earlier comment, the existing NFRs may not affect the new requirement &#8211; you may have an NFR that says that search results are generated in under 2 seconds, so that NFR would not make sense when adding support for two-factor authentication.  However, adding the two-factor authentication capability does not &#8220;release&#8221; your product from the 2-seconds-per-search requirement.  That NFR still applies.  If, however, the new functional requirement is to allow people to find their friends in the system, and you happen to implement that with search, then the old NFR still applies &#8211; the search for friends must return results within 2 seconds.</p>
<p>For the reverse of the situation &#8211; <i>how does adding new NFRs impact already implemented functional requirements</i>, the answer is different (but the derivation of the answer is the same).</p>
<p>The new NFR will impact <i>how</i> all relevant existing functional requirements perform.  Imagine that you have implemented search already, for product data, and user reviews.  When you add the NFR to assure that search results are displayed in under 2 seconds, that NFR will apply to all existing search capabilities.  It will &#8220;technically apply&#8221; to everything that already exists, but only makes sense in some situations.</p>
<p>If, for example, your previous &#8220;find your friends&#8221; capability was implemented by always showing all of your friends on the screen &#8211; users are never asked to &#8220;search&#8221; for them &#8211; then it would not really make sense.  Imagine, over time, that adoption of your product has grown over time, and you decide to refactor the user interface &#8211; because showing all friends all the time creates a bad experience &#8211; when you refactor your product to enable &#8220;friend searching&#8221;, the (previously implemented <i>differently</i>) &#8216;see your friends&#8217; capability would then need honor the NFR for searching-in-less-than-2-seconds.</p>
<p>Does that address your question?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: prot</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-787053</link>
		<dc:creator>prot</dc:creator>
		<pubDate>Wed, 06 Apr 2011 05:46:27 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-787053</guid>
		<description>how does adding functional requirement affect non-functional vise versa</description>
		<content:encoded><![CDATA[<p>how does adding functional requirement affect non-functional vise versa</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-780380</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Thu, 17 Mar 2011 00:37:48 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-780380</guid>
		<description>Hey Karen, thanks for the great comment and welcome to Tyner Blain!

I don&#039;t bake the NFRs into sprint 0, because they (1) tend to change - because they are usually overlooked, they are usually unearthed or refined after releases, and (2) because they provide a great way to split epics into workable stories.

As an example: As a reseller, I want to receive your OEM product catalog electronically, so that I can sell your products to my customers.  For sprint 1, I may only release to resellers in the US (deferring the need for translated product descriptions), or to only 10 key partners (deferring the need to scale), or only provide unformatted  data (deferring the need to provide semantically marked-up HTML) for partners that create &quot;parts lists.&quot;

I&#039;ve never heard of a &quot;Hardening Sprint&quot; before - but I have created &quot;compliance themes&quot; and &quot;scalability themes&quot; that defined specific NFRs designed to meet goals around compelling events (analyst approval, trade-show demo, etc).  The only difference, I think, is to take it one step further and ask the question - &quot;why do you need a robust infrastructure?&quot;  Maybe it is risk mitigation (but risk of &lt;em&gt;what&lt;/em&gt; exactly?</description>
		<content:encoded><![CDATA[<p>Hey Karen, thanks for the great comment and welcome to Tyner Blain!</p>
<p>I don&#8217;t bake the NFRs into sprint 0, because they (1) tend to change &#8211; because they are usually overlooked, they are usually unearthed or refined after releases, and (2) because they provide a great way to split epics into workable stories.</p>
<p>As an example: As a reseller, I want to receive your OEM product catalog electronically, so that I can sell your products to my customers.  For sprint 1, I may only release to resellers in the US (deferring the need for translated product descriptions), or to only 10 key partners (deferring the need to scale), or only provide unformatted  data (deferring the need to provide semantically marked-up HTML) for partners that create &#8220;parts lists.&#8221;</p>
<p>I&#8217;ve never heard of a &#8220;Hardening Sprint&#8221; before &#8211; but I have created &#8220;compliance themes&#8221; and &#8220;scalability themes&#8221; that defined specific NFRs designed to meet goals around compelling events (analyst approval, trade-show demo, etc).  The only difference, I think, is to take it one step further and ask the question &#8211; &#8220;why do you need a robust infrastructure?&#8221;  Maybe it is risk mitigation (but risk of <em>what</em> exactly?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karen Favazza Spence</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-776656</link>
		<dc:creator>Karen Favazza Spence</dc:creator>
		<pubDate>Wed, 02 Mar 2011 22:00:44 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-776656</guid>
		<description>Interesting conversation. I admit, NFR is the one area that makes me a tad uncomfortable in the Agile framework, too. It seems to me, the countermeasure to the &quot;biz value target bullet&quot; approach&#039;s apparent disregard for NFR is best addressed by adjusting our perspective of the &quot;R&quot; in NFR. As previously stated, these qualities and constraints can be baked into the Acceptance Criteria and they can be part of our Definition of Done fro various stories. But shouldn&#039;t the non-functional expectations also be part of &quot;Sprint 0&quot; which sets up the infrastructure? If so, then Sprint 0 can be used a touchstone for refactoring during development sprints. And to round it out, the non-functionals can part of a periodic Hardening Sprint, the purpose of which is to ensure a robust infrastructure.</description>
		<content:encoded><![CDATA[<p>Interesting conversation. I admit, NFR is the one area that makes me a tad uncomfortable in the Agile framework, too. It seems to me, the countermeasure to the &#8220;biz value target bullet&#8221; approach&#8217;s apparent disregard for NFR is best addressed by adjusting our perspective of the &#8220;R&#8221; in NFR. As previously stated, these qualities and constraints can be baked into the Acceptance Criteria and they can be part of our Definition of Done fro various stories. But shouldn&#8217;t the non-functional expectations also be part of &#8220;Sprint 0&#8243; which sets up the infrastructure? If so, then Sprint 0 can be used a touchstone for refactoring during development sprints. And to round it out, the non-functionals can part of a periodic Hardening Sprint, the purpose of which is to ensure a robust infrastructure.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-607741</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Mon, 21 Jun 2010 14:31:59 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-607741</guid>
		<description>@Roger - Great distinction!  I&#039;ve always approached it as understanding the constraints that truly apply to the user&#039;s context, so alignment with stories makes a ton of sense.  Pages on an eCommerce site may &quot;need&quot; to load under two (generally), but search results may &quot;need&quot; to be presented in under a second - or vice versa.

I put &quot;need&quot; in quotes because response time (an attribute) leads to a constraint (under two seconds) that is a (current) manifestation of a more-is-better requirement, which has to clear a must-be hurdle, then exhibits diminishing returns.  

I love the nuances of this stuff!</description>
		<content:encoded><![CDATA[<p>@Roger &#8211; Great distinction!  I&#8217;ve always approached it as understanding the constraints that truly apply to the user&#8217;s context, so alignment with stories makes a ton of sense.  Pages on an eCommerce site may &#8220;need&#8221; to load under two (generally), but search results may &#8220;need&#8221; to be presented in under a second &#8211; or vice versa.</p>
<p>I put &#8220;need&#8221; in quotes because response time (an attribute) leads to a constraint (under two seconds) that is a (current) manifestation of a more-is-better requirement, which has to clear a must-be hurdle, then exhibits diminishing returns.  </p>
<p>I love the nuances of this stuff!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-610219</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Sun, 20 Jun 2010 19:47:15 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-610219</guid>
		<description>&lt;span class=&quot;topsy_trackback_comment&quot;&gt;&lt;span class=&quot;topsy_twitter_username&quot;&gt;&lt;span class=&quot;topsy_trackback_content&quot;&gt;Really great convo @pawelbrodzinski @crankypm @rcauvin on #Agile non-functional requirements http://bit.ly/9DOwHH #prodmgmt&lt;/span&gt;&lt;/span&gt;</description>
		<content:encoded><![CDATA[<p><span class="topsy_trackback_comment"><span class="topsy_twitter_username"><span class="topsy_trackback_content">Really great convo @pawelbrodzinski @crankypm @rcauvin on #Agile non-functional requirements <a href="http://bit.ly/9DOwHH" rel="nofollow">http://bit.ly/9DOwHH</a> #prodmgmt</span></span></span></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Locke</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-607633</link>
		<dc:creator>David Locke</dc:creator>
		<pubDate>Sun, 20 Jun 2010 16:48:11 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-607633</guid>
		<description>Wouldn&#039;t an NFR impact implementation, rather than just design. Who picks the algorithm, and why would that choice affect the architecture of the system? 

If you want to further develop the notion that an NFR applies to some, but not all features, look at the frequency of use of all features. It should be a power law distribution. Where a feature network extends into deeply into the long tail, that&#039;s where the opportunity lies to live with a lower service level.</description>
		<content:encoded><![CDATA[<p>Wouldn&#8217;t an NFR impact implementation, rather than just design. Who picks the algorithm, and why would that choice affect the architecture of the system? </p>
<p>If you want to further develop the notion that an NFR applies to some, but not all features, look at the frequency of use of all features. It should be a power law distribution. Where a feature network extends into deeply into the long tail, that&#8217;s where the opportunity lies to live with a lower service level.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger L. Cauvin</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/comment-page-1/#comment-607620</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Sun, 20 Jun 2010 14:51:18 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822#comment-607620</guid>
		<description>Scott, I agree that many nonfunctional requirements will in a sense apply to most stories.  However, I&#039;d clarify to state that most &lt;i&gt;attributes&lt;/i&gt; (e.g. &lt;a href=&quot;http://blog.cauvin.org/2006/05/availability.html&quot; rel=&quot;nofollow&quot;&gt;availability&lt;/a&gt; or, more specifically, uptime) will apply to all or most stories, and that what Weinberg calls &lt;i&gt;constraints&lt;/i&gt; (the measurement tied to an attribute, e.g. uptime &gt;= XX%) will often vary by story.

For example, for most web sites, it&#039;s much more important for it to be available to visitors than it is that the administrator can change the content or formatting of the web site.</description>
		<content:encoded><![CDATA[<p>Scott, I agree that many nonfunctional requirements will in a sense apply to most stories.  However, I&#8217;d clarify to state that most <i>attributes</i> (e.g. <a href="http://blog.cauvin.org/2006/05/availability.html" rel="nofollow">availability</a> or, more specifically, uptime) will apply to all or most stories, and that what Weinberg calls <i>constraints</i> (the measurement tied to an attribute, e.g. uptime &gt;= XX%) will often vary by story.</p>
<p>For example, for most web sites, it&#8217;s much more important for it to be available to visitors than it is that the administrator can change the content or formatting of the web site.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

