<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments for Tyner Blain</title>
	<atom:link href="http://tynerblain.wordpress.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.wordpress.com</link>
	<description>Requirements, Software, Development, and Process</description>
	<lastBuildDate>Fri, 21 Apr 2006 00:31:50 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on We&#8217;ve moved! by JennyJenkins</title>
		<link>http://tynerblain.wordpress.com/2006/01/04/weve-moved/#comment-55</link>
		<dc:creator>JennyJenkins</dc:creator>
		<pubDate>Fri, 21 Apr 2006 00:31:50 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2006/01/04/weve-moved/#comment-55</guid>
		<description>So glad to hear you are doing well!    I always knew you would make it big!   Keep up the awesone work!</description>
		<content:encoded><![CDATA[<p>So glad to hear you are doing well!    I always knew you would make it big!   Keep up the awesone work!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Intimate Domains â€“ navigating areas of expertise by Tyner Blain &#187; Readability and requirements</title>
		<link>http://tynerblain.wordpress.com/2005/12/01/intimate-domains-%e2%80%93-navigating-areas-of-expertise/#comment-54</link>
		<dc:creator>Tyner Blain &#187; Readability and requirements</dc:creator>
		<pubDate>Wed, 04 Jan 2006 08:39:25 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/01/intimate-domains-%e2%80%93-navigating-areas-of-expertise/#comment-54</guid>
		<description>[...] The goal of writing a requirement is not pedantic accuracy, itâ€™s effective communication. In addition to crossing domain-boundaries with the different audiences that consume our requirements, we often are crossing language barriers and varying educational levels. Itâ€™s hard enough conveying concepts that presume contextual knowledge, our readers shouldnâ€™t have to parse the text repeatedly. [...]</description>
		<content:encoded><![CDATA[<p>[...] The goal of writing a requirement is not pedantic accuracy, itâ€™s effective communication. In addition to crossing domain-boundaries with the different audiences that consume our requirements, we often are crossing language barriers and varying educational levels. Itâ€™s hard enough conveying concepts that presume contextual knowledge, our readers shouldnâ€™t have to parse the text repeatedly. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Use case series: Formal use case by Tyner Blain &#187; CRUDdy use cases and Shakespeare</title>
		<link>http://tynerblain.wordpress.com/2005/12/19/use-case-series-formal-use-case/#comment-53</link>
		<dc:creator>Tyner Blain &#187; CRUDdy use cases and Shakespeare</dc:creator>
		<pubDate>Wed, 04 Jan 2006 08:26:44 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/19/use-case-series-formal-use-case/#comment-53</guid>
		<description></description>
		<content:encoded><![CDATA[<p>[...] When we write use cases, we donâ€™t include trivial steps. For example, the precondition for a formal usc case could include the user being logged in and authenticated with the ability to access the relevant information. We would not document logging in and authentication as part of the â€œcreate a reportâ€? use case. It is (nearly) redundant information, because it is (or should be) generally understood that the user must be logged in, if the system has an ACL. The user must also be using a computer, and it must be turned on. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Everything I needed to know I forgot in kindergarden by Tyner Blain &#187; Why we should invest in requirements management</title>
		<link>http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-52</link>
		<dc:creator>Tyner Blain &#187; Why we should invest in requirements management</dc:creator>
		<pubDate>Wed, 04 Jan 2006 08:23:36 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-52</guid>
		<description></description>
		<content:encoded><![CDATA[<p>[...] There is a lot more in the post, but the key high level â€œWhy should we invest in managing our software projects?â€? answers are summarized from several research reports: [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Use case series: Introduction by Tyner Blain &#187; Use case series: UML 2.0 use case diagrams</title>
		<link>http://tynerblain.wordpress.com/2005/12/18/use-cases-series-introduction/#comment-51</link>
		<dc:creator>Tyner Blain &#187; Use case series: UML 2.0 use case diagrams</dc:creator>
		<pubDate>Wed, 04 Jan 2006 08:11:00 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/18/use-cases-series-introduction/#comment-51</guid>
		<description>[...]  [...]</description>
		<content:encoded><![CDATA[<p>[...]  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Use case series: UML 2.0 use case diagrams by Tyner Blain &#187; Use case series: Formal use case</title>
		<link>http://tynerblain.wordpress.com/2005/12/26/use-case-series-uml-20-use-case-diagrams/#comment-50</link>
		<dc:creator>Tyner Blain &#187; Use case series: Formal use case</dc:creator>
		<pubDate>Wed, 04 Jan 2006 08:09:02 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/26/use-case-series-uml-20-use-case-diagrams/#comment-50</guid>
		<description>[...]  [...]</description>
		<content:encoded><![CDATA[<p>[...]  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Use case series: Introduction by Tyner Blain &#187; Use case series: Formal use case</title>
		<link>http://tynerblain.wordpress.com/2005/12/18/use-cases-series-introduction/#comment-49</link>
		<dc:creator>Tyner Blain &#187; Use case series: Formal use case</dc:creator>
		<pubDate>Wed, 04 Jan 2006 08:04:11 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/18/use-cases-series-introduction/#comment-49</guid>
		<description>[...]  [...]</description>
		<content:encoded><![CDATA[<p>[...]  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Foundation series: Software process (waterfall process versus incremental process) by Tyner Blain &#187; Requirements and software development process and where bugs come from</title>
		<link>http://tynerblain.wordpress.com/2006/01/02/foundation-series-software-process-waterfall-process-versus-incremental-process/#comment-48</link>
		<dc:creator>Tyner Blain &#187; Requirements and software development process and where bugs come from</dc:creator>
		<pubDate>Wed, 04 Jan 2006 07:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2006/01/02/foundation-series-software-process-waterfall-process-versus-incremental-process/#comment-48</guid>
		<description>[...] Update (20060103): Hereâ€™s a link to the Foundation series post on software processes to provide some context. That post talks about processes at a higher level, and this post dives more deeply into the three steps (decide, develop, deliver). We were proposing the redesign of their personal and team development processes for a large software development team at our client. We were able to leverage much of the research done in analyzing the sources of bugs into manufacturing processes. There is a huge body of work that makes this type of analysis straightforward. By describing the software development process as a set of inputs and processing steps (much like materials inputs and creation of code/docs/tests), we were able to develop some insights into the process and communicate clearly to some of the less technical stakeholders at our client (a major manufacturer with a large internal software development team). [...]</description>
		<content:encoded><![CDATA[<p>[...] Update (20060103): Hereâ€™s a link to the Foundation series post on software processes to provide some context. That post talks about processes at a higher level, and this post dives more deeply into the three steps (decide, develop, deliver). We were proposing the redesign of their personal and team development processes for a large software development team at our client. We were able to leverage much of the research done in analyzing the sources of bugs into manufacturing processes. There is a huge body of work that makes this type of analysis straightforward. By describing the software development process as a set of inputs and processing steps (much like materials inputs and creation of code/docs/tests), we were able to develop some insights into the process and communicate clearly to some of the less technical stakeholders at our client (a major manufacturer with a large internal software development team). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Intimate Domains â€“ navigating areas of expertise by Tyner Blain &#187; More on talking to your audience</title>
		<link>http://tynerblain.wordpress.com/2005/12/01/intimate-domains-%e2%80%93-navigating-areas-of-expertise/#comment-47</link>
		<dc:creator>Tyner Blain &#187; More on talking to your audience</dc:creator>
		<pubDate>Wed, 04 Jan 2006 06:12:34 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/01/intimate-domains-%e2%80%93-navigating-areas-of-expertise/#comment-47</guid>
		<description>[...] Kevin talks in particular about how to communicate with different team members as part of incorporating UI designs into the finished product - by understanding that you need to communicate with people in the language to which they are accustomed. I just wrote about this same topic at a general level in my recent post, Intimate domains. Kevin provides great specific suggestions along the same vein. [...]</description>
		<content:encoded><![CDATA[<p>[...] Kevin talks in particular about how to communicate with different team members as part of incorporating UI designs into the finished product &#8211; by understanding that you need to communicate with people in the language to which they are accustomed. I just wrote about this same topic at a general level in my recent post, Intimate domains. Kevin provides great specific suggestions along the same vein. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Getting past the &#8217;suck threshold&#8217; by Tyner Blain &#187; Watson from Intellext</title>
		<link>http://tynerblain.wordpress.com/2005/12/14/getting-past-the-suck-threshold/#comment-46</link>
		<dc:creator>Tyner Blain &#187; Watson from Intellext</dc:creator>
		<pubDate>Wed, 04 Jan 2006 06:11:56 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/14/getting-past-the-suck-threshold/#comment-46</guid>
		<description></description>
		<content:encoded><![CDATA[<p>[...] This morning I was working on a â€œHow to design unit testsâ€? document for my client, and I opened Watson, and I canâ€™t tell you how good all of the links were, because the first one was so perfect. (Advanced Unit Testing, Part I &#8211; Overview, By Marc Clifton). While I was working away, I wanted to find a good link to an explanation of pair-wise testing, and in an intuitive place in the Watson UI was a widget that let me narrow my results &#8211; I entered â€œpair-wiseâ€?, and boom &#8211; first link again. It shows up as a sidebar on your desktop (like Trillian, ICQ and others), and can be minimized to the system tray (a lightbulb icon) I canâ€™t tell you anything else about it yet, because I havenâ€™t spent more than a total of 20 seconds interacting with the interface. To me, thatâ€™s high praise for the UI. And probably record time for clearing the suck-threshold. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Foundation series: Introduction by Ed Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2006/01/01/foundation-series-introduction/#comment-45</link>
		<dc:creator>Ed Sehlhorst</dc:creator>
		<pubDate>Tue, 03 Jan 2006 20:09:34 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2006/01/01/foundation-series-introduction/#comment-45</guid>
		<description>Hi, good reading.  Got me to thinking about my old development days.  THE 2 most difficult parts of a project are defining the deliverable in terms both the developer and the client understand (very hard to do) and eliminating scope creep (even harder to do).</description>
		<content:encoded><![CDATA[<p>Hi, good reading.  Got me to thinking about my old development days.  THE 2 most difficult parts of a project are defining the deliverable in terms both the developer and the client understand (very hard to do) and eliminating scope creep (even harder to do).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Scott Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-44</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Tue, 03 Jan 2006 17:53:01 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-44</guid>
		<description>From &lt;em&gt;Don&#039;t shoot the messenger&lt;/em&gt;:

&quot;[...]Is the challenge about requirements or the formal requirements process? If the latter, what&#039;s really being asked is &quot;Can one build great software in a committee?&quot; And the answer is &quot;no.&quot; Committees bring compromise at every step of the process and the result is a hodge-podge of technology.&quot;

&lt;!-- D([&quot;mb&quot;,&quot;product management and 2) a misguided view of innovation.

In the technology industry, innovation is the name assigned to \&#039;creativity\&#039; while
requirements equates to \&#039;dull.\&#039; What\&#039;s missing both from typical innovation and from
formal requirements is context: What is the problem? Why does it occur? Who is having it?
How do they deal with it now?

The poster-child of innovation, IDEO\&#039;s method of innovation begins with a clear statement
of the problem and then field observation of it. Sounds like requirements to me.

What innovation is NOT is creating cool stuff in the isolation of a development lab.
Innovation is not just adding more features.

Railing against requirements is often another way of railing against poor product
management. Too often, product managers are trying to document their opinions of a
successful product. Students of Pragmatic Marketing have learned that product managers
are messengers for the market. They know that &quot;your opinion, although interesting, is
irrelevant.&quot; Product managers should bring market facts to the planning session instead of
their opinions. And most of all, they should put those facts into context with problems,
use scenarios, and personas.

The relationship between product manager and development manager is like a
partnership, a marriage. Each brings something to the relationship: the product manager
brings market information; the development manager brings technical prowess. One
handles the business decisions while the other handles the creative decisions. And when
conflict occurs--and it will--the answer can be found in market data rather than opinion.

One more point about market facts: we\&#039;re not interested in what features customers say
they want as much as an articulation of problems they have. Customers will ask for more
of the same while continuing to struggle with problems. Great product managers observe
the problems and report them to development... in the form of requirements.
&quot;,1] );  //--&gt;&quot;[...]The negative vibe on requirements generally comes down to two problems: 1) poor product management and 2) a misguided view of innovation.&quot;
&quot;[...]Railing against requirements is often another way of railing against poor product management. Too often, product managers are trying to document their opinions of a successful product. Students of Pragmatic Marketing have learned that product managers are messengers for the market. They know that &quot;your opinion, although interesting, is irrelevant.&quot; Product managers should bring market facts to the planning session instead of their opinions. And most of all, they should put those facts into context with problems, use scenarios, and personas.&quot;</description>
		<content:encoded><![CDATA[<p>From <em>Don&#8217;t shoot the messenger</em>:</p>
<p>&#8220;[...]Is the challenge about requirements or the formal requirements process? If the latter, what&#8217;s really being asked is &#8220;Can one build great software in a committee?&#8221; And the answer is &#8220;no.&#8221; Committees bring compromise at every step of the process and the result is a hodge-podge of technology.&#8221;</p>
<p><!-- D(["mb","product management and 2) a misguided view of innovation.</p>
<p>In the technology industry, innovation is the name assigned to \'creativity\' while<br />
requirements equates to \'dull.\' What\'s missing both from typical innovation and from<br />
formal requirements is context: What is the problem? Why does it occur? Who is having it?<br />
How do they deal with it now?</p>
<p>The poster-child of innovation, IDEO\'s method of innovation begins with a clear statement<br />
of the problem and then field observation of it. Sounds like requirements to me.</p>
<p>What innovation is NOT is creating cool stuff in the isolation of a development lab.<br />
Innovation is not just adding more features.</p>
<p>Railing against requirements is often another way of railing against poor product<br />
management. Too often, product managers are trying to document their opinions of a<br />
successful product. Students of Pragmatic Marketing have learned that product managers<br />
are messengers for the market. They know that &quot;your opinion, although interesting, is<br />
irrelevant.&quot; Product managers should bring market facts to the planning session instead of<br />
their opinions. And most of all, they should put those facts into context with problems,<br />
use scenarios, and personas.</p>
<p>The relationship between product manager and development manager is like a<br />
partnership, a marriage. Each brings something to the relationship: the product manager<br />
brings market information; the development manager brings technical prowess. One<br />
handles the business decisions while the other handles the creative decisions. And when<br />
conflict occurs--and it will--the answer can be found in market data rather than opinion.</p>
<p>One more point about market facts: we\'re not interested in what features customers say<br />
they want as much as an articulation of problems they have. Customers will ask for more<br />
of the same while continuing to struggle with problems. Great product managers observe<br />
the problems and report them to development... in the form of requirements.<br />
",1] );  //-->&#8220;[...]The negative vibe on requirements generally comes down to two problems: 1) poor product management and 2) a misguided view of innovation.&#8221;<br />
&#8220;[...]Railing against requirements is often another way of railing against poor product management. Too often, product managers are trying to document their opinions of a successful product. Students of Pragmatic Marketing have learned that product managers are messengers for the market. They know that &#8220;your opinion, although interesting, is irrelevant.&#8221; Product managers should bring market facts to the planning session instead of their opinions. And most of all, they should put those facts into context with problems, use scenarios, and personas.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Scott Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-43</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Tue, 03 Jan 2006 17:50:35 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-43</guid>
		<description></description>
		<content:encoded><![CDATA[<p>From <em>I&#8217;ll know it when I see it</em>:<br />
&#8220;[...]People donâ€™t depend on Shakespeare for reliable transportation, to save their life in an accident, to diagnose heart disease, etc.  People depend on engineering to handle these functions.  Formal requirements are not about writing â€œgreatâ€? software, whatever that is.  Formal requirements are for writing consistent, maintainable, secure software that does exactly what itâ€™s supposed to â€“ no more and no less. &#8221;</p>
<p>&#8220;[...]Formal requirements are about getting what you ask for, and about documenting what you ask for so that execs, marketing, sales, and all the other parts of your organization know exactly what they are supposed to be doing.  Itâ€™s even more critical if you are outsourcing parts of your development, like validation, for example.  In outsourcing, if itâ€™s not documented in a formal spec, it definitely wonâ€™t be done properly (but itâ€™s not a guarantee, eitherâ€¦).&#8221;</p>
<p>&#8220;[...]And what the hell is a â€œsoftware work of art?â€?  Before you write a reply, I used to be a coder, programmer, software developer, whatever you want to call it; I understand the concept of â€œelegant code.â€?  Itâ€™s has the same recognition criteria as â€œpornographyâ€? vs. artâ€¦people can only identify it by example, as in â€œIâ€™ll know it when I see it.â€?  Iâ€™ll observe that elegant code does not affect a productâ€™s probability of success because itâ€™s not visible to the folks who buy and use the software.&#8221;</p>
<p><strong>My thoughts on his response</strong><strong><br />
</strong> These are some great comments about the value of a <a rel="nofollow" href="http://tynerblain.wordpress.com/2006/01/02/foundation-series-software-process-waterfall-process-versus-incremental-process/">methodical software development process</a> being critical to the success of critical software.</p>
<p>However, I do not believe that engineering and art are mutually exclusive.  Elegance in engineering isn&#8217;t just about bit-twiddling, it is about understanding what problems to solve and finding innovative ways to solve them.</p>
<p>The notion of using Lagrange functions to estimate traffic levels and manage quality of service in telecommunication hardware is elegant.  It redefines the problem in a tractable way, allowing for reasonable solutions.</p>
<p>Sending information on an AC power line by superimposing higher frequency data is elegant, as are TDM and WDM protocols for optical communication.</p>
<p>Being able to control the tire pressure on a Humvee from the driver&#8217;s seat, both to reinflate a flat and to adjust traction levels based upon terrain is a great solution to the &#8220;I get shot when I try and change a flat&#8221; problem.  Much better than trying to design the perfect tire.</p>
<p>Velcro for little kids shoes probably saves every mom an hour a week.</p>
<p>Putting soap on the tip of a screw before driving it into wood (to prevent splitting) saves the time of predrilling a hole for the screw, and yields a stronger joint.</p>
<p><strong>These same &#8220;higher level&#8221; signs of elegance are present in software too.</strong><br />
o Gmail uses tags for organizing email.<br />
o Search-based configuration software allows solutions to otherwise intractable problems.<br />
o Mapping software calculates fastest routes for me (and incorporates construction information)<br />
o RSS readers allow me to pull information instead of publishers having to push it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Scott Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-42</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Tue, 03 Jan 2006 17:34:10 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-42</guid>
		<description>Thanks all for the great comments.  Muser has posted &lt;a rel=&quot;nofollow&quot; href=&quot;http://mikemccown.blogspot.com/2005/12/deforestation-of-requirements.html&quot;&gt;The Deforestation of Requirements&lt;/a&gt; on his blog.  He goes more into details about his perspective and opinions.  Good stuff and worth a read!

I&#039;ve also received a handfull of emails from folks who chose not to post.  I&#039;ll post some excerpts from these emails (anonymously) in the following comments.  Thanks again all!</description>
		<content:encoded><![CDATA[<p>Thanks all for the great comments.  Muser has posted <a rel="nofollow" href="http://mikemccown.blogspot.com/2005/12/deforestation-of-requirements.html">The Deforestation of Requirements</a> on his blog.  He goes more into details about his perspective and opinions.  Good stuff and worth a read!</p>
<p>I&#8217;ve also received a handfull of emails from folks who chose not to post.  I&#8217;ll post some excerpts from these emails (anonymously) in the following comments.  Thanks again all!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Kevin Smith</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-41</link>
		<dc:creator>Kevin Smith</dc:creator>
		<pubDate>Tue, 03 Jan 2006 03:09:01 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-41</guid>
		<description>I can think of a number of advantages to having documented requirements up front:
(1) Shared understanding of goals (product to be built)
(2) Forcing stakeholders to think in depth about end result prior to desing
(3) Controlling scope creep.  A strong change management process is essential, but isn&#039;t worth nearly as much if you don&#039;t have a solid baseline.  When the customer (external or interal) wants to make a change, conversations are much easier (and much less expensive) when you&#039;ve already agreed on the requirements.
(4) Reference.  If reqs aren&#039;t well-documented, diverse developers may have diverse approaches, which can get expensive.
(5) Customer sat. through comparison of end result to inital reqs + formally requested changes.</description>
		<content:encoded><![CDATA[<p>I can think of a number of advantages to having documented requirements up front:<br />
(1) Shared understanding of goals (product to be built)<br />
(2) Forcing stakeholders to think in depth about end result prior to desing<br />
(3) Controlling scope creep.  A strong change management process is essential, but isn&#8217;t worth nearly as much if you don&#8217;t have a solid baseline.  When the customer (external or interal) wants to make a change, conversations are much easier (and much less expensive) when you&#8217;ve already agreed on the requirements.<br />
(4) Reference.  If reqs aren&#8217;t well-documented, diverse developers may have diverse approaches, which can get expensive.<br />
(5) Customer sat. through comparison of end result to inital reqs + formally requested changes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Bjorn Aannestad</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-40</link>
		<dc:creator>Bjorn Aannestad</dc:creator>
		<pubDate>Sat, 31 Dec 2005 17:08:51 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-40</guid>
		<description>My view of requirements documentation (and engineering documentation too) is that their main purpose is to help everyone on the assembly line come to a shared understanding of how the system is to behave.  

The goal isn&#039;t to document every detail, but to reduce the chance that customers, management, sales, and the product manager are surprised by what got built.

The are cases where (maybe big) up-front requirements are necessary -- when the software contains complex calculations based on domain expertise.  Likewise, if the software is to implement new algorithms or a new architecture these should ideally be designed via prototypes, and then specified in detail before being handed to the implementation team.  These  specifictions must include details of why things were and were not done a certain way, so that implementation team can improve that design.  This makes them &quot;big&quot;, but necessarily so.

I&#039;ve found that agile development works best for those parts of the system that are &quot;shallow&quot; like user interface, navigation, reporting, workflow.  Agile techniques also work best when the team is already experienced, disciplined, and can instrictively head toward optimal solutions most of the time.</description>
		<content:encoded><![CDATA[<p>My view of requirements documentation (and engineering documentation too) is that their main purpose is to help everyone on the assembly line come to a shared understanding of how the system is to behave.  </p>
<p>The goal isn&#8217;t to document every detail, but to reduce the chance that customers, management, sales, and the product manager are surprised by what got built.</p>
<p>The are cases where (maybe big) up-front requirements are necessary &#8212; when the software contains complex calculations based on domain expertise.  Likewise, if the software is to implement new algorithms or a new architecture these should ideally be designed via prototypes, and then specified in detail before being handed to the implementation team.  These  specifictions must include details of why things were and were not done a certain way, so that implementation team can improve that design.  This makes them &#8220;big&#8221;, but necessarily so.</p>
<p>I&#8217;ve found that agile development works best for those parts of the system that are &#8220;shallow&#8221; like user interface, navigation, reporting, workflow.  Agile techniques also work best when the team is already experienced, disciplined, and can instrictively head toward optimal solutions most of the time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Roger L. Cauvin</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-39</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Sat, 31 Dec 2005 14:45:38 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-39</guid>
		<description>Agile development bridges the gap between top-down versus bottom-up approaches.  The fundamental premise behind agile methods is that you will get it wrong the first time.  That is, your conception of the requirements will be wrong, and the initial architecture will be suboptimal.

So agile methods avoid BUFR (big up-front requirements) and BUFD (big up-front design).  But agile still calls for UFR and UFD, just wihout the &quot;big&quot; part.  Then you iterate, revisiting and revising the requirements and design each iteration.  Essentially, you do a bit of top down and a bit of bottom up each iteration.</description>
		<content:encoded><![CDATA[<p>Agile development bridges the gap between top-down versus bottom-up approaches.  The fundamental premise behind agile methods is that you will get it wrong the first time.  That is, your conception of the requirements will be wrong, and the initial architecture will be suboptimal.</p>
<p>So agile methods avoid BUFR (big up-front requirements) and BUFD (big up-front design).  But agile still calls for UFR and UFD, just wihout the &#8220;big&#8221; part.  Then you iterate, revisiting and revising the requirements and design each iteration.  Essentially, you do a bit of top down and a bit of bottom up each iteration.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Scott Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-38</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Sat, 31 Dec 2005 13:44:36 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-38</guid>
		<description>Muser - thanks for the comments. 

99.9% of software is written by developers who place the keyboard squarely in front of the monitor and sit with good posture in chairs while they work.

We know from the body of ergonomics research that this is a good way to sit at the keyboard, but it certainly isn&#039;t sufficient to make software not suck.  Proper posture definitely won&#039;t assure great software - and neither will managing requirements.  Doesn&#039;t mean that we shouldn&#039;t do either one of them.

Would love to hear more about why you&#039;ve lost faith in RDD.  I believe that if you&#039;re not getting value out of requirements, you&#039;re not doing them right or you didn&#039;t have the right people doing them.</description>
		<content:encoded><![CDATA[<p>Muser &#8211; thanks for the comments. </p>
<p>99.9% of software is written by developers who place the keyboard squarely in front of the monitor and sit with good posture in chairs while they work.</p>
<p>We know from the body of ergonomics research that this is a good way to sit at the keyboard, but it certainly isn&#8217;t sufficient to make software not suck.  Proper posture definitely won&#8217;t assure great software &#8211; and neither will managing requirements.  Doesn&#8217;t mean that we shouldn&#8217;t do either one of them.</p>
<p>Would love to hear more about why you&#8217;ve lost faith in RDD.  I believe that if you&#8217;re not getting value out of requirements, you&#8217;re not doing them right or you didn&#8217;t have the right people doing them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by A Muser</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-37</link>
		<dc:creator>A Muser</dc:creator>
		<pubDate>Fri, 30 Dec 2005 15:27:39 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-37</guid>
		<description>I&#039;ve come to fundamentally disagree with the whole concept of requirements driven development.  (Not with the concept that you need to figure out what you want to build before you build it, but with the concept that the gedanken experiment of a formal requirements document is the way to get there).

Your analogies using Shakespeare are apt - it is unlikely that Shakespeare, given either &quot;end&quot; of the requirements driven process (defning or implementation) could have produced the works of art he did. 

To produce software works of art, an assembly line doesn&#039;t work.  If you can point to even a few examples of software works generally considered brilliant that were built this way, I would be surprised.  And if you had to look hard, it makes my point - 99.9% of software is built this way, and it sucks.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve come to fundamentally disagree with the whole concept of requirements driven development.  (Not with the concept that you need to figure out what you want to build before you build it, but with the concept that the gedanken experiment of a formal requirements document is the way to get there).</p>
<p>Your analogies using Shakespeare are apt &#8211; it is unlikely that Shakespeare, given either &#8220;end&#8221; of the requirements driven process (defning or implementation) could have produced the works of art he did. </p>
<p>To produce software works of art, an assembly line doesn&#8217;t work.  If you can point to even a few examples of software works generally considered brilliant that were built this way, I would be surprised.  And if you had to look hard, it makes my point &#8211; 99.9% of software is built this way, and it sucks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CRUDdy use cases and Shakespeare by Scott Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-33</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Thu, 29 Dec 2005 17:33:39 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/29/cruddy-use-cases-and-shakespeare/#comment-33</guid>
		<description>Here&#039;s a link to an article at IBM&#039;s developerWorks from Simon Johnston, talking about the tradeoffs between bottom-up and top-down approaches to defining SOA (service oriented architecture) requirements.  He notes that bottom-up approaches tend to drive more CRUD.

http://www-128.ibm.com/developerworks/blogs/dw_blog_comments.jspa?blog=352&amp;entry=96749</description>
		<content:encoded><![CDATA[<p>Here&#8217;s a link to an article at IBM&#8217;s developerWorks from Simon Johnston, talking about the tradeoffs between bottom-up and top-down approaches to defining SOA (service oriented architecture) requirements.  He notes that bottom-up approaches tend to drive more CRUD.</p>
<p><a href="http://www-128.ibm.com/developerworks/blogs/dw_blog_comments.jspa?blog=352&amp;entry=96749" rel="nofollow">http://www-128.ibm.com/developerworks/blogs/dw_blog_comments.jspa?blog=352&amp;entry=96749</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Intimate Domains â€“ navigating areas of expertise by Scott Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2005/12/01/intimate-domains-%e2%80%93-navigating-areas-of-expertise/#comment-32</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Thu, 29 Dec 2005 04:59:36 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/01/intimate-domains-%e2%80%93-navigating-areas-of-expertise/#comment-32</guid>
		<description>Marcus has posted a complimentary article on his site at http://rationalizedthoughts.blogspot.com/2005/12/why-of-business-analysis.html

It&#039;s worth a read</description>
		<content:encoded><![CDATA[<p>Marcus has posted a complimentary article on his site at <a href="http://rationalizedthoughts.blogspot.com/2005/12/why-of-business-analysis.html" rel="nofollow">http://rationalizedthoughts.blogspot.com/2005/12/why-of-business-analysis.html</a></p>
<p>It&#8217;s worth a read</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Communicating a delivery schedule with use cases by Roger L. Cauvin</title>
		<link>http://tynerblain.wordpress.com/2005/12/22/communicating-a-delivery-schedule-with-use-cases/#comment-21</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Thu, 22 Dec 2005 18:50:55 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/22/communicating-a-delivery-schedule-with-use-cases/#comment-21</guid>
		<description>Good observation regarding features versus use cases.  As you mention, users don&#039;t care so much about features per se; they care about accomplishing their goals.  Scheduling around use cases helps product developers keep their eyes on the ball (focus on what matters to the prospective customer).

In many cases, use cases often aren&#039;t sufficiently granular (nor should they be) for scheduling.  Craig Larman recommends dividing use cases into versions in such cases.  I touch on this approach here:

http://cauvin.blogspot.com/2005/08/approaches-to-iterating.html

An example is a Purchase Items use case.  You can break it into versions as follows:

Purchase Items (cash only, no receipt)
Purchase Items (cash, receipt)
Purchase Items (cash and check, receipt)
Purchase Items (cash, check, credit, receipt)

That way you&#039;re delivering end-to-end value to the user after every version.</description>
		<content:encoded><![CDATA[<p>Good observation regarding features versus use cases.  As you mention, users don&#8217;t care so much about features per se; they care about accomplishing their goals.  Scheduling around use cases helps product developers keep their eyes on the ball (focus on what matters to the prospective customer).</p>
<p>In many cases, use cases often aren&#8217;t sufficiently granular (nor should they be) for scheduling.  Craig Larman recommends dividing use cases into versions in such cases.  I touch on this approach here:</p>
<p><a href="http://cauvin.blogspot.com/2005/08/approaches-to-iterating.html" rel="nofollow">http://cauvin.blogspot.com/2005/08/approaches-to-iterating.html</a></p>
<p>An example is a Purchase Items use case.  You can break it into versions as follows:</p>
<p>Purchase Items (cash only, no receipt)<br />
Purchase Items (cash, receipt)<br />
Purchase Items (cash and check, receipt)<br />
Purchase Items (cash, check, credit, receipt)</p>
<p>That way you&#8217;re delivering end-to-end value to the user after every version.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Use case series: Formal use case by Scott Sehlhorst</title>
		<link>http://tynerblain.wordpress.com/2005/12/19/use-case-series-formal-use-case/#comment-20</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Wed, 21 Dec 2005 06:28:07 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/19/use-case-series-formal-use-case/#comment-20</guid>
		<description>I went back and forth on including training as a con for formal use cases.  I&#039;ve been trying not to list anything that&#039;s true of all the use case models, and I started with the presumption that training was required to use any of them, so I didn&#039;t break that out as a differentiator.  I think the training needed to do use cases well is roughly the same cost, regardless of which format people use.  Although it&#039;s much easier to imagine a pointy-haired manager saying &quot;What training cost?  Just write a paragraph.  You can write a paragraph, can&#039;t you?&quot;  If you show said manager a template with 20 fields, &quot;You&#039;re gonna need to be trained to fill out that form&quot; is more likely.

Thanks, Brad, and please let us know your thoughts on the other posts in the series as I get them out.

Scott</description>
		<content:encoded><![CDATA[<p>I went back and forth on including training as a con for formal use cases.  I&#8217;ve been trying not to list anything that&#8217;s true of all the use case models, and I started with the presumption that training was required to use any of them, so I didn&#8217;t break that out as a differentiator.  I think the training needed to do use cases well is roughly the same cost, regardless of which format people use.  Although it&#8217;s much easier to imagine a pointy-haired manager saying &#8220;What training cost?  Just write a paragraph.  You can write a paragraph, can&#8217;t you?&#8221;  If you show said manager a template with 20 fields, &#8220;You&#8217;re gonna need to be trained to fill out that form&#8221; is more likely.</p>
<p>Thanks, Brad, and please let us know your thoughts on the other posts in the series as I get them out.</p>
<p>Scott</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Use case series: Formal use case by Brad Kuhn</title>
		<link>http://tynerblain.wordpress.com/2005/12/19/use-case-series-formal-use-case/#comment-19</link>
		<dc:creator>Brad Kuhn</dc:creator>
		<pubDate>Tue, 20 Dec 2005 20:39:59 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/19/use-case-series-formal-use-case/#comment-19</guid>
		<description>Tyner-

Nice series so far on Use Cases - a few comments:
- On the &quot;cons&quot; side firms should consider training costs as well.  Not everyone is going to be comfortable writing and using Use Cases day one.  Not that training is a big cost - just need to budget time to take care of it.  Of course, Use Cases are no different than any other artifact of software development - and believe me, it&#039;s a lot easier to teach someone to read a Use Case and get feedback from them than to read a functional spec.
- Maintenance is certainly a factor when collecting a lot of detail.  And once you go into Design, you know things are going to change.  One option is to use Use Cases to bootstrap the project - get everyone on the same page and get rolling into requirements, then drop them.  Of course, you don&#039;t get the benefit of using Use Cases in the future that way (e.g. Test Scripts, starting point for future projects/enhancements).
- I like the IMS link, never came across that one before.  Interesting idea, though there&#039;s not a lot there yet.</description>
		<content:encoded><![CDATA[<p>Tyner-</p>
<p>Nice series so far on Use Cases &#8211; a few comments:<br />
- On the &#8220;cons&#8221; side firms should consider training costs as well.  Not everyone is going to be comfortable writing and using Use Cases day one.  Not that training is a big cost &#8211; just need to budget time to take care of it.  Of course, Use Cases are no different than any other artifact of software development &#8211; and believe me, it&#8217;s a lot easier to teach someone to read a Use Case and get feedback from them than to read a functional spec.<br />
- Maintenance is certainly a factor when collecting a lot of detail.  And once you go into Design, you know things are going to change.  One option is to use Use Cases to bootstrap the project &#8211; get everyone on the same page and get rolling into requirements, then drop them.  Of course, you don&#8217;t get the benefit of using Use Cases in the future that way (e.g. Test Scripts, starting point for future projects/enhancements).<br />
- I like the IMS link, never came across that one before.  Interesting idea, though there&#8217;s not a lot there yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Everything I needed to know I forgot in kindergarden by tynerblain</title>
		<link>http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-16</link>
		<dc:creator>tynerblain</dc:creator>
		<pubDate>Thu, 15 Dec 2005 14:41:07 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-16</guid>
		<description>Roger, I couldn&#039;t agree more with your statement &quot;least stringent conditions&quot; - we are definitely on the same page.  In a previous post (http://tynerblain.wordpress.com/2005/11/25/telescopes-microscopes-and-macro-scopes-%e2%80%93-how-to-view-requirements/) I talk about how to find that Goldilocks spec.  Einsten had it right too - &quot;as simple as possible, but not one bit simpler&quot;.  We&#039;re definitely on the right track with this thread.

Your example about red/green buttons is a good &quot;real world&quot; example, because it can go either way, imho.  It&#039;s definitely not a requirement - I agree on that.  I also completely agree with the rationale (it could also be structured as a goal) to minimize user confusion in the UI design.

Depending upon the nature of validation/signoff conversations with the stakeholders, it may be a constraint.  I&#039;ve worked with clients before who had &#039;corporate policies&#039; to which all new software development must adhere.  And I&#039;ve seen those policies talk about the minimum number of pixels between controls, specify fonts, graphics, screen layout, etc.  When those are in place, and considered to be &quot;out of scope&quot;, they should be captured as constraints - and referenced as external documents.

I also worked with a client who was given dietific power over all things related to the project (by his boss, who signed the check), and who was a micro-manager with &quot;very strong opinions&quot;.  After beating your head against the wall of trying to remove his constraints about every nuance of the deployment, ultimately we elected to pick our battles and fight against his fiats for only the most important issues.  In that case, his omnipresent opinions became constraints for our project.

Roger&#039;s right - when you can remove &quot;design details&quot; from the acceptance criteria definitely do it.  When you can&#039;t, capture them as constraints.</description>
		<content:encoded><![CDATA[<p>Roger, I couldn&#8217;t agree more with your statement &#8220;least stringent conditions&#8221; &#8211; we are definitely on the same page.  In a previous post (<a href="http://tynerblain.wordpress.com/2005/11/25/telescopes-microscopes-and-macro-scopes-%e2%80%93-how-to-view-requirements/" rel="nofollow">http://tynerblain.wordpress.com/2005/11/25/telescopes-microscopes-and-macro-scopes-%e2%80%93-how-to-view-requirements/</a>) I talk about how to find that Goldilocks spec.  Einsten had it right too &#8211; &#8220;as simple as possible, but not one bit simpler&#8221;.  We&#8217;re definitely on the right track with this thread.</p>
<p>Your example about red/green buttons is a good &#8220;real world&#8221; example, because it can go either way, imho.  It&#8217;s definitely not a requirement &#8211; I agree on that.  I also completely agree with the rationale (it could also be structured as a goal) to minimize user confusion in the UI design.</p>
<p>Depending upon the nature of validation/signoff conversations with the stakeholders, it may be a constraint.  I&#8217;ve worked with clients before who had &#8216;corporate policies&#8217; to which all new software development must adhere.  And I&#8217;ve seen those policies talk about the minimum number of pixels between controls, specify fonts, graphics, screen layout, etc.  When those are in place, and considered to be &#8220;out of scope&#8221;, they should be captured as constraints &#8211; and referenced as external documents.</p>
<p>I also worked with a client who was given dietific power over all things related to the project (by his boss, who signed the check), and who was a micro-manager with &#8220;very strong opinions&#8221;.  After beating your head against the wall of trying to remove his constraints about every nuance of the deployment, ultimately we elected to pick our battles and fight against his fiats for only the most important issues.  In that case, his omnipresent opinions became constraints for our project.</p>
<p>Roger&#8217;s right &#8211; when you can remove &#8220;design details&#8221; from the acceptance criteria definitely do it.  When you can&#8217;t, capture them as constraints.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Everything I needed to know I forgot in kindergarden by Roger L. Cauvin</title>
		<link>http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-15</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Wed, 14 Dec 2005 15:06:35 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-15</guid>
		<description>Including rationale in some format, whether it be italics or something else, does mitigate the problem in which readers of the document scratch their heads and wonder how the specification relates to their situation.  You want the customer to be able to read the requirements document and connect the dots to their business (or consumer) problems.

But I think there&#039;s some confusion here about the difference, if any, between a &quot;rationale&quot; and a &quot;requirement&quot;.  In many cases, the requirement and the rationale are one and the same.  In fact, if you find yourself tempted to append explanatory rationale to a specification, it&#039;s worth questioning whether the specification is a requirement or a design specification.

To illustrate, here is a concrete example.  In my MarketingProfs.com article on requirements (see http://www.cauvin-inc.com/articles/ProductFailure.htm), I wrote:

&quot;Imagine that you tell the user interface designers of a software application that &#039;OK&#039; buttons should be colored red and &#039;Cancel&#039; buttons should be colored blue. You have an important reason for this mandate: all of your key users are used to this color scheme and may press the wrong buttons if you deviate from it. Eurekaâ€”now youâ€™re closer to the real requirementâ€”avoiding the data loss or waste of time that might result from a different color scheme.&quot;

In this example, you might categorize the OK and Cancel button specifications as requirements.  The rationale for this mandate is avoiding data loss and waste of user time and effort.  I don&#039;t agree with these categorizations.

User interface design specifications are not requirements.  In this example, contraints on data loss and user time and effort are not just the rationale, but the requirement.  Mandates about the OK and Cancel buttons are useful solutions for the UI designer to consider, but they are not requirements.

My definition of requirement (see http://cauvin.blogspot.com/2005/06/definition-of-requirement.html) is:

&quot;A requirement specifies the least stringent condition that must hold to solve or avoid a prospect problem (problem that a prospective customer faces).&quot;

In the example, mandates about the colors of UI buttons may be binary conditions, but they by no means are the least stringent ones that must hold to solve or avoid the customer&#039;s problem.</description>
		<content:encoded><![CDATA[<p>Including rationale in some format, whether it be italics or something else, does mitigate the problem in which readers of the document scratch their heads and wonder how the specification relates to their situation.  You want the customer to be able to read the requirements document and connect the dots to their business (or consumer) problems.</p>
<p>But I think there&#8217;s some confusion here about the difference, if any, between a &#8220;rationale&#8221; and a &#8220;requirement&#8221;.  In many cases, the requirement and the rationale are one and the same.  In fact, if you find yourself tempted to append explanatory rationale to a specification, it&#8217;s worth questioning whether the specification is a requirement or a design specification.</p>
<p>To illustrate, here is a concrete example.  In my MarketingProfs.com article on requirements (see <a href="http://www.cauvin-inc.com/articles/ProductFailure.htm)" rel="nofollow">http://www.cauvin-inc.com/articles/ProductFailure.htm)</a>, I wrote:</p>
<p>&#8220;Imagine that you tell the user interface designers of a software application that &#8216;OK&#8217; buttons should be colored red and &#8216;Cancel&#8217; buttons should be colored blue. You have an important reason for this mandate: all of your key users are used to this color scheme and may press the wrong buttons if you deviate from it. Eurekaâ€”now youâ€™re closer to the real requirementâ€”avoiding the data loss or waste of time that might result from a different color scheme.&#8221;</p>
<p>In this example, you might categorize the OK and Cancel button specifications as requirements.  The rationale for this mandate is avoiding data loss and waste of user time and effort.  I don&#8217;t agree with these categorizations.</p>
<p>User interface design specifications are not requirements.  In this example, contraints on data loss and user time and effort are not just the rationale, but the requirement.  Mandates about the OK and Cancel buttons are useful solutions for the UI designer to consider, but they are not requirements.</p>
<p>My definition of requirement (see <a href="http://cauvin.blogspot.com/2005/06/definition-of-requirement.html)" rel="nofollow">http://cauvin.blogspot.com/2005/06/definition-of-requirement.html)</a> is:</p>
<p>&#8220;A requirement specifies the least stringent condition that must hold to solve or avoid a prospect problem (problem that a prospective customer faces).&#8221;</p>
<p>In the example, mandates about the colors of UI buttons may be binary conditions, but they by no means are the least stringent ones that must hold to solve or avoid the customer&#8217;s problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Everything I needed to know I forgot in kindergarden by tynerblain</title>
		<link>http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-14</link>
		<dc:creator>tynerblain</dc:creator>
		<pubDate>Wed, 14 Dec 2005 14:00:36 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-14</guid>
		<description>Thanks Roger and Tony!

Tony, I hadn&#039;t heard of the technique of including the rationale in italics under each requirement that supports them.  As you alluded, in complex systems (where multiple requirements support a given rationale, or where multiple rationale are supported by a given requirement), this would be very hard to manage.  Rationale are more stable than requirements, but they are still a moving target - especially in Agile development.

Would it make more sense to reference the rationale from the requirement body?  We reduce the risk of stale rationale hiding in the requirements, and we avoid the cost of updating the rationale for a bunch of requirements.  Maybe keeping it in the body of the requirement forces us to validate that changes in rationale do/don&#039;t affect their supporting requirements this way.

What do folks who&#039;ve used this (embed the rationale) technique think?</description>
		<content:encoded><![CDATA[<p>Thanks Roger and Tony!</p>
<p>Tony, I hadn&#8217;t heard of the technique of including the rationale in italics under each requirement that supports them.  As you alluded, in complex systems (where multiple requirements support a given rationale, or where multiple rationale are supported by a given requirement), this would be very hard to manage.  Rationale are more stable than requirements, but they are still a moving target &#8211; especially in Agile development.</p>
<p>Would it make more sense to reference the rationale from the requirement body?  We reduce the risk of stale rationale hiding in the requirements, and we avoid the cost of updating the rationale for a bunch of requirements.  Maybe keeping it in the body of the requirement forces us to validate that changes in rationale do/don&#8217;t affect their supporting requirements this way.</p>
<p>What do folks who&#8217;ve used this (embed the rationale) technique think?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Everything I needed to know I forgot in kindergarden by Anthony C.</title>
		<link>http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-13</link>
		<dc:creator>Anthony C.</dc:creator>
		<pubDate>Wed, 14 Dec 2005 05:31:57 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-13</guid>
		<description>Hey Roger, great post! There is a concept called &quot;rationale&quot; in software engineering which is basically the reason for the requirement. A rationale is effectively equivalent to a goal (even if it is syntactically different).  

Without a tool the traceability that you mentioned is very difficult, especially if there are a lot of requirements. In an environment where a requirements management tool is not being used, how do you do the traceability between goals and requirements?

The standard way to document a rationale is to include it under the requirement and in italics. There may end up being some repetition if a single rationale maps to multiple requirements.</description>
		<content:encoded><![CDATA[<p>Hey Roger, great post! There is a concept called &#8220;rationale&#8221; in software engineering which is basically the reason for the requirement. A rationale is effectively equivalent to a goal (even if it is syntactically different).  </p>
<p>Without a tool the traceability that you mentioned is very difficult, especially if there are a lot of requirements. In an environment where a requirements management tool is not being used, how do you do the traceability between goals and requirements?</p>
<p>The standard way to document a rationale is to include it under the requirement and in italics. There may end up being some repetition if a single rationale maps to multiple requirements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Everything I needed to know I forgot in kindergarden by Roger L. Cauvin</title>
		<link>http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-12</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Tue, 13 Dec 2005 14:42:48 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/12/everything-i-needed-to-know-i-forgot-in-kindergarden/#comment-12</guid>
		<description>http://cauvin.blogspot.com/2005/08/when-to-stop-asking-why.html

Great minds think alike, Scott!</description>
		<content:encoded><![CDATA[<p><a href="http://cauvin.blogspot.com/2005/08/when-to-stop-asking-why.html" rel="nofollow">http://cauvin.blogspot.com/2005/08/when-to-stop-asking-why.html</a></p>
<p>Great minds think alike, Scott!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to deal with untestable requirements &#8211; rewrite them by Roger L. Cauvin</title>
		<link>http://tynerblain.wordpress.com/2005/11/29/how-to-deal-with-untestable-requirements-rewrite-them/#comment-11</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Tue, 13 Dec 2005 14:21:05 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/11/29/how-to-deal-with-untestable-requirements-rewrite-them/#comment-11</guid>
		<description>Scott, I fully agree specifications directly testable in practice are important for testers and developers, and that someone on the team should formulate these specifications.  Where we differ is in calling these specifications &quot;requirements&quot; when the underlying motivator - what I in this thread have called the &quot;real requirement&quot; - is something unambiguously testable in principle.

By the way, I don&#039;t agree that &quot;controls must be at least 10 pixels apart&quot; is a requirement.  My belief is that true user interface requirements generally specify how easy it is to accomplish functional goals, not designs or design guidelines.  See &quot;Mistake 5&quot; in my article, &quot;How to Guarantee Product Failure&quot;.  The link is http://www.cauvin-inc.com/articles/ProductFailure.htm.</description>
		<content:encoded><![CDATA[<p>Scott, I fully agree specifications directly testable in practice are important for testers and developers, and that someone on the team should formulate these specifications.  Where we differ is in calling these specifications &#8220;requirements&#8221; when the underlying motivator &#8211; what I in this thread have called the &#8220;real requirement&#8221; &#8211; is something unambiguously testable in principle.</p>
<p>By the way, I don&#8217;t agree that &#8220;controls must be at least 10 pixels apart&#8221; is a requirement.  My belief is that true user interface requirements generally specify how easy it is to accomplish functional goals, not designs or design guidelines.  See &#8220;Mistake 5&#8243; in my article, &#8220;How to Guarantee Product Failure&#8221;.  The link is <a href="http://www.cauvin-inc.com/articles/ProductFailure.htm" rel="nofollow">http://www.cauvin-inc.com/articles/ProductFailure.htm</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to deal with untestable requirements &#8211; rewrite them by tynerblain</title>
		<link>http://tynerblain.wordpress.com/2005/11/29/how-to-deal-with-untestable-requirements-rewrite-them/#comment-10</link>
		<dc:creator>tynerblain</dc:creator>
		<pubDate>Tue, 13 Dec 2005 02:38:15 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/11/29/how-to-deal-with-untestable-requirements-rewrite-them/#comment-10</guid>
		<description>Roger,

Thanks for the comment and insight.  I completely agree that it is the responsibility of someone on the development team (coder or tester) to design the particular tests - or in the car example, a quality engineer.

However, part of the validation of a requirement is that it can be implemented - or it shouldn&#039;t be a requirement.  One component of validating a requirement is assessing the language of the requirement, to determine if you can unambiguously identify it as being complete.  The QE needs to manage the design of the test, but as part of accepting the requirement from the requirement writer, the QE should make sure that he knows how to test it.

Collaboration and iteration are key to writing great requirements - feedback from the QE is what helps the requirement writer rewrite the requirement.  And that feedback cycle is important, because the requirement writer will then have to get signoff from the stakeholders that the rewritten requirement is sufficient - perhaps they only need 80% confidence.

Also, the design engineers need to know when they&#039;re done.  Do they have to build a Yugo, or a Volvo?  Without an objective criteria as an input to their design process, you can reasonably expect that they will design something you don&#039;t want.

You make an excellent point about &quot;losing sight of the real requirement&quot; - I will post in depth on this topic soon.  The goal (or &quot;Goal&quot;) is high reliability for the car, and presumably someone has done an ROI analysis that says that 7 years without breakage is more profitable than 6 or 8.  This should absolutely be documented.  A supporting functional requirement should include the actionable details.

Thanks again for the comments, and keep posting good stuff to your blog - I enjoy it.  Oh yeah - Tyner Blain is the company - I&#039;m Scott :)</description>
		<content:encoded><![CDATA[<p>Roger,</p>
<p>Thanks for the comment and insight.  I completely agree that it is the responsibility of someone on the development team (coder or tester) to design the particular tests &#8211; or in the car example, a quality engineer.</p>
<p>However, part of the validation of a requirement is that it can be implemented &#8211; or it shouldn&#8217;t be a requirement.  One component of validating a requirement is assessing the language of the requirement, to determine if you can unambiguously identify it as being complete.  The QE needs to manage the design of the test, but as part of accepting the requirement from the requirement writer, the QE should make sure that he knows how to test it.</p>
<p>Collaboration and iteration are key to writing great requirements &#8211; feedback from the QE is what helps the requirement writer rewrite the requirement.  And that feedback cycle is important, because the requirement writer will then have to get signoff from the stakeholders that the rewritten requirement is sufficient &#8211; perhaps they only need 80% confidence.</p>
<p>Also, the design engineers need to know when they&#8217;re done.  Do they have to build a Yugo, or a Volvo?  Without an objective criteria as an input to their design process, you can reasonably expect that they will design something you don&#8217;t want.</p>
<p>You make an excellent point about &#8220;losing sight of the real requirement&#8221; &#8211; I will post in depth on this topic soon.  The goal (or &#8220;Goal&#8221;) is high reliability for the car, and presumably someone has done an ROI analysis that says that 7 years without breakage is more profitable than 6 or 8.  This should absolutely be documented.  A supporting functional requirement should include the actionable details.</p>
<p>Thanks again for the comments, and keep posting good stuff to your blog &#8211; I enjoy it.  Oh yeah &#8211; Tyner Blain is the company &#8211; I&#8217;m Scott :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to deal with untestable requirements &#8211; rewrite them by Roger L. Cauvin</title>
		<link>http://tynerblain.wordpress.com/2005/11/29/how-to-deal-with-untestable-requirements-rewrite-them/#comment-9</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Mon, 12 Dec 2005 23:36:12 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/11/29/how-to-deal-with-untestable-requirements-rewrite-them/#comment-9</guid>
		<description>Tyner, you&#039;re quite right that you can rewrite requirements so that they are directly testable.  Unfortunately, in some cases you then lose sight of the real requirement.

As I mentioned in my post, the seven year requirement is, in principle, testable.  It just takes seven years to test it.  It is testability in principle that ensures the requirement is clear and unambiguous.  (You are right that driving habits and such would also need to be included.)

The seven year requirement is not practical to test directly, however.  Thus, as you suggest, we must devise a test that is reasonably expected to simulate (or predict) what will happen in seven years.  But that is the job of the tester, not the requirements analyst.  For testability in practice is not what ensures a good requirement.  Testability in practice is important .. er .. for testing!</description>
		<content:encoded><![CDATA[<p>Tyner, you&#8217;re quite right that you can rewrite requirements so that they are directly testable.  Unfortunately, in some cases you then lose sight of the real requirement.</p>
<p>As I mentioned in my post, the seven year requirement is, in principle, testable.  It just takes seven years to test it.  It is testability in principle that ensures the requirement is clear and unambiguous.  (You are right that driving habits and such would also need to be included.)</p>
<p>The seven year requirement is not practical to test directly, however.  Thus, as you suggest, we must devise a test that is reasonably expected to simulate (or predict) what will happen in seven years.  But that is the job of the tester, not the requirements analyst.  For testability in practice is not what ensures a good requirement.  Testability in practice is important .. er .. for testing!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agile Requirements by tynerblain</title>
		<link>http://tynerblain.wordpress.com/2005/12/04/agile-requirements/#comment-6</link>
		<dc:creator>tynerblain</dc:creator>
		<pubDate>Tue, 06 Dec 2005 01:35:10 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/04/agile-requirements/#comment-6</guid>
		<description>Sorry about the typo - with a name like Sehlhorst, I really should do better.  Fixed now.

Scott</description>
		<content:encoded><![CDATA[<p>Sorry about the typo &#8211; with a name like Sehlhorst, I really should do better.  Fixed now.</p>
<p>Scott</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Agile Requirements by James Shore</title>
		<link>http://tynerblain.wordpress.com/2005/12/04/agile-requirements/#comment-5</link>
		<dc:creator>James Shore</dc:creator>
		<pubDate>Tue, 06 Dec 2005 01:24:09 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/12/04/agile-requirements/#comment-5</guid>
		<description>Thanks for the kind words. By the way, it&#039;s James Shore, not James Short.

Cheers,
Jim</description>
		<content:encoded><![CDATA[<p>Thanks for the kind words. By the way, it&#8217;s James Shore, not James Short.</p>
<p>Cheers,<br />
Jim</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Collision Detection by Richard Krog</title>
		<link>http://tynerblain.wordpress.com/2005/11/24/collision-detection/#comment-4</link>
		<dc:creator>Richard Krog</dc:creator>
		<pubDate>Mon, 05 Dec 2005 16:45:12 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.wordpress.com/2005/11/24/collision-detection/#comment-4</guid>
		<description>I came across a problem just like the overlapping rectangles, but with only one dimention -- time. &quot;Do date ranges overlap?&quot;  We came up with:
 
Overlap = A.start before B.end &amp;&amp; B.start before A.end
 
Likewise, you can remove the negative logic with the following:

   1. the right edge of A is to the *RIGHT* of the left edge of B
   2. the left edge of A is to the *LEFT* of the right edge of B
   3. the bottom of A is *BELOW* the top of B
   4. the top of A is *ABOVE* the bottom of B 

IF (1 &amp;&amp; 2 &amp;&amp; 3 &amp;&amp; 4) THEN collision == TRUE;
 
Both solutions are fail-fast, so the change is mostly semantic.</description>
		<content:encoded><![CDATA[<p>I came across a problem just like the overlapping rectangles, but with only one dimention &#8212; time. &#8220;Do date ranges overlap?&#8221;  We came up with:</p>
<p>Overlap = A.start before B.end &amp;&amp; B.start before A.end</p>
<p>Likewise, you can remove the negative logic with the following:</p>
<p>   1. the right edge of A is to the *RIGHT* of the left edge of B<br />
   2. the left edge of A is to the *LEFT* of the right edge of B<br />
   3. the bottom of A is *BELOW* the top of B<br />
   4. the top of A is *ABOVE* the bottom of B </p>
<p>IF (1 &amp;&amp; 2 &amp;&amp; 3 &amp;&amp; 4) THEN collision == TRUE;</p>
<p>Both solutions are fail-fast, so the change is mostly semantic.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
