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

<channel>
	<title>Jonathan Babcock &#187; Requirements</title>
	<atom:link href="http://jonathanbabcock.com/category/requirements/feed" rel="self" type="application/rss+xml" />
	<link>http://jonathanbabcock.com</link>
	<description>Business Analysis &#124; Software Methodology &#124; Process Improvement</description>
	<pubDate>Fri, 05 Sep 2008 03:19:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Requirements Management Tool Resources</title>
		<link>http://jonathanbabcock.com/2008/09/04/requirements-management-tool-resources/</link>
		<comments>http://jonathanbabcock.com/2008/09/04/requirements-management-tool-resources/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 02:08:31 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Featured]]></category>

		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[Management]]></category>

		<category><![CDATA[Tools]]></category>

	<!-- AutoMeta Start -->
	<category>survey</category>
	<category>incose</category>
	<category>selection</category>
	<category>telelogic</category>
	<category>doors</category>
	<category>caliber</category>
	<category>requirement</category>
	<category>management</category>
	<category>tool</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/?p=247</guid>
		<description><![CDATA[My company has been looking at requirements management solutions, which has provided me with the unique opportunity to play the "user" role for a change, and to do a little research into the attributes that make requirements management successful.

Anyway, what I'd like to do with this post is to share a few items I've found on the Web as well as some of my own thoughts on what might be of use to others who might be looking for a requirements management solution.]]></description>
			<content:encoded><![CDATA[<p><a href="http://jonathanbabcock.com/wp-content/uploads/2008/09/tools2_300x2002.jpg"><img class="alignright size-full wp-image-252" title="tools2_300x2002" src="http://jonathanbabcock.com/wp-content/uploads/2008/09/tools2_300x2002.jpg" alt="" width="300" height="200" /></a>My company has been looking at requirements management solutions, which has provided me with the unique opportunity to play the &#8220;user&#8221; role for a change, and to do a little research into the attributes that make requirements management successful. <br id="iwka" /><br id="iwka0" />Anyway, what I&#8217;d like to do with this post is to share a few items I&#8217;ve found on the Web as well as some of my own thoughts on what might be of use to others who might be looking for a requirements management solution.<br id="nifn" /></p>
<ul id="pd:u">
<li id="pd:u0"><a href="http://www.paper-review.com/tools/rms/read.php" id="brz4" title="INCOSE Requirements Management Tools Survey" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.paper-review.com');">INCOSE Requirements Management Tools Survey</a> - This survey, provided in table form, compares over 40 different requirements management systems based on how well they conform to over 75 common requirements. Information ranges from as early as 2004 to the summer of 2008, so you&#8217;ll have to bear in mind that some of the information may not be the latest and greatest. The INCOSE survey at least gives you a start and can save you quite a bit of preliminary information gathering work regarding the various tools available in the market, and some initial requirements. If you&#8217;re interested, here is a <a href="http://www.paper-review.com/tools/rms/INCOSERMToolSurvey.doc" id="ol9o" title="text version of the survey requirements" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.paper-review.com');">text version of the survey requirements</a>.<br id="ctq_" /></li>
</ul>
<ul id="pd:u2">
<li id="pd:u3">Forbes.com also provides a <a href="http://software.forbes.com/requirements-management-software" id="vtp7" title="directory of requirements management tools" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/software.forbes.com');">directory of requirements management tools</a> that can be filtered by popular features. I&#8217;d refer to the INCOSE survey first, but there is some good information here as well.</li>
</ul>
<ul id="pd:u5">
<li id="pd:u6"><a href="http://requirements.seilevel.com/blog/2007/07/seilevels-requirements-management-tool.html" id="cobi" title="Seilevel’s Requirements Management Tool Selection" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/requirements.seilevel.com');">Seilevel’s Requirements Management Tool Selection</a> - I&#8217;ve always enjoyed the Seilevel blog and message board as a resource for business analysis insight. In post linked above, Joy shares Seilevel&#8217;s process in selecting a requirements management tool to recommend to their clients. She also provides a useful comparison between three &#8220;heavy hitters&#8221; in the requirements management space - <a href="http://www.telelogic.com/products/doors/index.cfm?CampaignID=Q5KP9A08LYPB" id="xw7x" title="Telelogic (now IBM) Doors" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.telelogic.com');">Telelogic (now IBM) Doors</a>, <a href="http://www-01.ibm.com/software/awdtools/reqpro/" id="vvk7" title="Rational Requisite Pro" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www-01.ibm.com');">Rational Requisite Pro</a>, and <a href="http://www.borland.com/us/products/caliber/index.html" id="oqzb" title="Borland Caliber Analyst" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.borland.com');">Borland Caliber Analyst</a>. I won&#8217;t steal their thunder and share their final recommendation here, but advise you to go have a read.</li>
</ul>
<p><!--[if gte mso 10]><br />
<mce :style>< !   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} --></p>
<ul id="lw4m">
<li id="lw4m0">Ralph Young <a href="http://www.ralphyoung.net/publications/Requirements_Tools_Trade_Study1.doc" id="twhg" title="has an interesting document" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.ralphyoung.net');">has an interesting document</a> on his site that outlines his process and requirements for selecting a requirements management tool. His document compares a few of the leading tools, but the document is from 2002, so it is more useful as a template to use to pattern a selection process than as a resource to decide between the listed products.</li>
</ul>
<ul id="pd:u8">
<li id="pd:u9">In a separate post from the one mentioned above, Seilevel also shares their <a href="http://requirements.seilevel.com/blog/2007/04/requirements-in-supplier-selection.html" id="n6nc" title="requirements for deciding on a 3rd party solution provider" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/requirements.seilevel.com');">requirements for deciding on a 3rd party solution provider</a> and describes how this process is different from the requirements process for home-grown software. My company has been following a very similar process in choosing our management tool.</li>
</ul>
<p>I will probably have more to share as we continue our selection process, but hopefully these will make a good start. If you know of any additional, useful resources for evaluating requirements management tools, I&#8217;ll be grateful if you&#8217;d share them in the comments below.</mce></p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=Requirements%20Management%20Tool%20Resources&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2008%2F09%2F04%2Frequirements-management-tool-resources%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="Requirements Management Tool Resources";
		a2a_linkurl="http://jonathanbabcock.com/2008/09/04/requirements-management-tool-resources/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2008/09/04/requirements-management-tool-resources/">Requirements Management Tool Resources</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2008/09/04/requirements-management-tool-resources/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Looking for Sample Requirement Specifications and Templates?</title>
		<link>http://jonathanbabcock.com/2008/08/14/looking-for-sample-requirement-specifications-and-templates/</link>
		<comments>http://jonathanbabcock.com/2008/08/14/looking-for-sample-requirement-specifications-and-templates/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 16:26:18 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Featured]]></category>

		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[samples]]></category>

		<category><![CDATA[Specification]]></category>

		<category><![CDATA[SRS]]></category>

	<!-- AutoMeta Start -->
	<category>filetype</category>
	<category>bring</category>
	<category>samples</category>
	<category>templates</category>
	<category>specs</category>
	<category>format</category>
	<category>varieties</category>
	<category>tweak</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/?p=224</guid>
		<description><![CDATA[Quick, simple tips to find sample requirement specs and templates.]]></description>
			<content:encoded><![CDATA[<p><a href="http://jonathanbabcock.com/wp-content/uploads/2008/08/913588_books_and_pages.jpg"><img class="size-full wp-image-227 alignright" title="913588_books_and_pages" src="http://jonathanbabcock.com/wp-content/uploads/2008/08/913588_books_and_pages.jpg" alt="" width="300" height="200" /></a></p>
<p>Do you like to look at examples of others&#8217; requirement specs and templates to see what you can learn? I do from time to time and thought I&#8217;d share a quick, simple tip that I use to find sample documents. Hopefully some of you will find it useful.</p>
<p>There are so many varieties and formats of software specification documents. Looking at samples from other companies and industries gives me an opportunity to compare the way things are done in &#8220;my world&#8221; to how they&#8217;re done across the world.</p>
<p>Once in a while I&#8217;ll find something - maybe the document layout, or just a concise turn of phrase - that someone else is doing that I like and will try to incorporate it into my work. Even if not, I find it interesting to observe the varying levels of specificity and requirement format/syntax that others use.</p>
<p>If you think that you, too, may be interested in taking a look at what others in the field are doing, an easy way to find hundreds of examples is to go to Google and type in:</p>
<p><a href="http://www.google.com/search?q=software+requirements+specification+filetype%3Adoc" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.google.com');">Software Requirements Specification filetype:doc</a></p>
<p>It will bring up enough samples and templates to keep you busy for a while, and obviously you can tweak the search to bring back slightly different results.</p>
<p>For example, you might try a variations on the search string like &#8220;<a href="http://www.google.com/search?num=100&amp;hl=en&amp;safe=active&amp;q=functional+requirements+filetype%3Adoc" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.google.com');">functional requirements</a>&#8221; or &#8220;<a href="http://www.google.com/search?num=100&amp;hl=en&amp;safe=active&amp;q=use+case+filetype%3Adoc" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.google.com');">use case</a>&#8221; or change the filetype to pdf (filetype:pdf) to bring up specs in pdf format.</p>
<p>Anyway, nothing groundbreaking here, but hopefully this will be useful to a few of you.</p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=Looking%20for%20Sample%20Requirement%20Specifications%20and%20Templates%3F&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2008%2F08%2F14%2Flooking-for-sample-requirement-specifications-and-templates%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="Looking for Sample Requirement Specifications and Templates?";
		a2a_linkurl="http://jonathanbabcock.com/2008/08/14/looking-for-sample-requirement-specifications-and-templates/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2008/08/14/looking-for-sample-requirement-specifications-and-templates/">Looking for Sample Requirement Specifications and Templates?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2008/08/14/looking-for-sample-requirement-specifications-and-templates/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick Tip to Help Identify Use Case Actors</title>
		<link>http://jonathanbabcock.com/2008/05/21/quick-tip-to-help-identify-use-case-actors/</link>
		<comments>http://jonathanbabcock.com/2008/05/21/quick-tip-to-help-identify-use-case-actors/#comments</comments>
		<pubDate>Thu, 22 May 2008 02:17:13 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Featured]]></category>

		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[books]]></category>

		<category><![CDATA[use case]]></category>

	<!-- AutoMeta Start -->
	<category>actors</category>
	<category>actor</category>
	<category>played</category>
	<category>dialogue</category>
	<category>hardware</category>
	<category>jacobson</category>
	<category>ivar</category>
	<category>physical</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/?p=219</guid>
		<description><![CDATA[A few thoughts on identifying use case actors and a job-aid that may help simplify the effort.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright alignnone size-full wp-image-223" style="float: right; margin-top: 3px; margin-bottom: 3px; margin-left: 7px; margin-right: 7px;" title="msn_buddy-128" src="http://jonathanbabcock.com/wp-content/uploads/2008/05/msn_buddy-128.png" alt="" width="128" height="128" />Wikipedia (with help from Ivar Jacobson) defines actors as:</p>
<blockquote>
<p class="MsoNormal">[S]omething or someone which exists outside the system under study, and that take part in a sequence of activities in a dialogue with the system, to achieve some goal: they may be end users, other systems, or hardware devices. Each use case is a complete series of events, described from the point of view of the actor.</p>
<p>Ivar Jacobson (1992). <span style="text-decoration: underline;">Object-Oriented Software Engineering</span>. Addison Wesley Professional. ISBN 0-201-54435.</p></blockquote>
<p class="MsoNormal">To further clarify, the OMG in their UML spec describes an actor in the following terms:</p>
<blockquote>
<p class="MsoNormal">Actors may represent roles played by human users, external hardware, or other subjects. Note that an actor does not necessarily represent a specific physical entity but merely a particular facet (i.e., “role”) of some entity that is relevant to the specification of its associated use cases. Thus, a single physical instance may play the role of several different actors and, conversely, a given actor may be played by multiple different instances.</p>
<p><a href="http://www.omg.org/cgi-bin/doc?ptc/2004-10-02" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.omg.org');">UML Superstructure Specification</a>, ptc/04-10-02, October 8, 2004, p. 661 – emphasis mine.</p></blockquote>
<p class="MsoNormal">I’ve found that it’s easy to identify the actors that are users of the system, but sometimes less evident to identify other systems or non-human participants in the use case dialogue. This can be especially true for those that are new to writing use cases.</p>
<p class="MsoNormal">I’ve always liked quick, little job-aids that help break down and simplify things. To that point, Miles and Hamilton provide a simple diagram for identifying actors in the book <a href="http://www.amazon.com/gp/product/0596009828?ie=UTF8&amp;tag=jnotes-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=0596009828" id="static_preview" name="evtst|a|0596009828" onclick="javascript:pageTracker._trackPageview ('/outbound/www.amazon.com');">Learning UML 2.0 (Learning)</a>. I’ve made some minor tweaks to the diagram and included it below in case it might be of use to some of you:</p>
<p class="MsoNormal">
<p class="MsoNormal" style="text-align: center;"><img class="alignnone size-full wp-image-221" title="determining-actors" src="http://jonathanbabcock.com/wp-content/uploads/2008/05/determining-actors.jpg" alt="" width="497" height="703" /></p>
<p class="MsoNormal">
<p class="MsoNormal"><!--[if gte vml 1]><v :shapetype id="_x0000_t75" coordsize="21600,21600"  o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"  stroked="f"> <v :stroke joinstyle="miter" /> </v><v :formulas> <v :f eqn="if lineDrawn pixelLineWidth 0" /> <v :f eqn="sum @0 1 0" /> <v :f eqn="sum 0 0 @1" /> <v :f eqn="prod @2 1 2" /> <v :f eqn="prod @3 21600 pixelWidth" /> <v :f eqn="prod @3 21600 pixelHeight" /> <v :f eqn="sum @0 0 1" /> <v :f eqn="prod @6 1 2" /> <v :f eqn="prod @7 21600 pixelWidth" /> <v :f eqn="sum @8 21600 0" /> <v :f eqn="prod @7 21600 pixelHeight" /> <v :f eqn="sum @10 21600 0" /> </v> <v :path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o :lock v:ext="edit" aspectratio="t" /> <v :shape id="_x0000_i1025" type="#_x0000_t75" style="width:298.5pt;  height:422.25pt" mce_style="width:298.5pt;  height:422.25pt"> <v :imagedata src="file:///C:\DOCUME~1\324843~1.GEN\LOCALS~1\Temp\msohtml1\01\clip_image001.png" mce_src="file:///C:\DOCUME~1\324843~1.GEN\LOCALS~1\Temp\msohtml1\01\clip_image001.png"   o:title="Determining Actors" /> </v>< ![endif]--><!--[if !vml]--><!--[endif]--></p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=Quick%20Tip%20to%20Help%20Identify%20Use%20Case%20Actors&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2008%2F05%2F21%2Fquick-tip-to-help-identify-use-case-actors%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="Quick Tip to Help Identify Use Case Actors";
		a2a_linkurl="http://jonathanbabcock.com/2008/05/21/quick-tip-to-help-identify-use-case-actors/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2008/05/21/quick-tip-to-help-identify-use-case-actors/">Quick Tip to Help Identify Use Case Actors</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2008/05/21/quick-tip-to-help-identify-use-case-actors/feed/</wfw:commentRss>
		</item>
		<item>
		<title>More on User Stories</title>
		<link>http://jonathanbabcock.com/2008/05/07/more-on-user-stories/</link>
		<comments>http://jonathanbabcock.com/2008/05/07/more-on-user-stories/#comments</comments>
		<pubDate>Thu, 08 May 2008 03:45:56 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Featured]]></category>

		<category><![CDATA[Methodology]]></category>

		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[user stories]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/?p=210</guid>
		<description><![CDATA[In my business analysis group, we identify user requirements through use cases, but we don't use user stories. As I am not extremely well-versed when it comes to some of the agile methods, I thought I'd do some research to learn more about user stores and to determine how user stories are different from use cases and from traditional requirements.]]></description>
			<content:encoded><![CDATA[<p><a href="http://jonathanbabcock.com/wp-content/uploads/2008/05/stories.jpg"><img class="alignright size-full wp-image-211" style="margin-top: 3px; margin-bottom: 3px; margin-left: 7px; margin-right: 7px; float: right;" title="stories" src="http://jonathanbabcock.com/wp-content/uploads/2008/05/stories.jpg" alt="" width="232" height="185" /></a>I must admit that I am not as knowledgeable as I&#8217;d like to be when it comes to some of the agile methods. To remedy this, I&#8217;ve been doing some research to learn more about user stores and to determine how they are different from use cases and from traditional requirements.</p>
<p>Here are some of my recent findings of interest that I wanted to share in case others of you may be in the same boat.</p>
<p>Martin Fowler specifically addresses the question, &#8220;<a href="http://martinfowler.com/bliki/UseCasesAndStories.html" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/martinfowler.com');">What is the difference between UseCases and XP&#8217;s 	stories?</a>&#8220;:</p>
<blockquote><p>Use cases organize requirements to form a 	narrative of how users relate to and use a system. Hence they focus 	on user goals and how interacting with a system satisfies the 	goals. XP stories&#8230; break 	requirements into chunks for planning purposes. Stories are explicitly 	broken down until they can be estimated as part of XP&#8217;s release 	planning process. Because these uses of requirements are different, 	heuristics for good use cases and stories will differ.</p></blockquote>
<p>Mike Cohn, whom I&#8217;ve <a href="http://jonathanbabcock.com/2007/11/03/what-are-user-stories-and-why-should-i-use-them/" target="_self">cited before</a> on the topic of user stories, provides insight on <a href="http://blog.mountaingoatsoftware.com/?p=24" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/blog.mountaingoatsoftware.com');">a format for articulating user stories</a> that he has found to work well.</p>
<blockquote><p>I advocate writing user stories in the form of “As a &lt;type of user&gt;, I want &lt;some goal&gt; so that &lt;some reason&gt;.”</p></blockquote>
<p>For example, &#8220;As a corporate finance user, I want to know yearly how much in taxes are due to the state treasury so that the company can comply with state tax regulations (and avoid penalties for non-compliance).&#8221;</p>
<p>I think this format could be just as beneficial in a non-XP environment as a mechanism for requirements elicitation. In fact, I&#8217;m going to use the <a href="http://www.mountaingoatsoftware.com/system/asset/file/62/backlog.jpg" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mountaingoatsoftware.com');">spreadsheet form</a> of which he provides a sample for use in one of my new projects. I plan to ask my stakeholders to put themselves in the place of the user (in at least one case, the stakeholder will actually be one of the users) and let them state, from a first-person perspective, what they need to be able to do, and the value of being able to do it.</p>
<p>Too often as I&#8217;ve written traditional SRS documents I&#8217;ve either been asked or wondered to myself what was the value of a given requirement or set of requirements. With this format, we&#8217;d include a statement of business value with each user requirement. Good stuff.</p>
<p>For your reference, and contrasts them with traditional requirements.</p>
<p>In summary, here is what I&#8217;ve gathered so far based from my readings on user stories (much of this is derived from ExtremeProgramming.org&#8217;s <a href="http://www.extremeprogramming.org/rules/userstories.html" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.extremeprogramming.org');">useful description of user stories</a>) :</p>
<ol>
<li>User stories are primarily used to estimate development time, as opposed to use cases which focus on how users (actors) interact with a system.</li>
<li>User stories focus on user needs and are technology/implementation detail agnostic.</li>
<li>User stories become acceptance test scenarios.</li>
<li>User stories are typically written on cards and not diagrammed using the UML as are use cases.</li>
<li>User stories are an alternative to the traditional SRS document full of &#8220;shalls&#8221;. When it comes to detailed functional, system and quality requirements, those are worked out between developers and the customer.</li>
<li>User stories are most often identified with the XP (<a href="http://en.wikipedia.org/wiki/Extreme_Programming" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">extreme programming</a>) approach to release planning and development, which is a form of agile development.</li>
</ol>
<p>I am a student as much as a practitioner of requirements analysis, and am always open to new information in tips. If you have any additional information or personal feedback on user stories or extreme programming or other agile methods, then please share. I&#8217;m always interested in learning more.</p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=More%20on%20User%20Stories&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2008%2F05%2F07%2Fmore-on-user-stories%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="More on User Stories";
		a2a_linkurl="http://jonathanbabcock.com/2008/05/07/more-on-user-stories/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2008/05/07/more-on-user-stories/">More on User Stories</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2008/05/07/more-on-user-stories/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Couple Tips on Keeping Use Cases Simple</title>
		<link>http://jonathanbabcock.com/2008/01/22/a-couple-tips-on-keeping-use-cases-simple/</link>
		<comments>http://jonathanbabcock.com/2008/01/22/a-couple-tips-on-keeping-use-cases-simple/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 06:10:32 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/jnotes5/public_html/jonathanbabcock/wp-content/plugins/autometa/autometa.php</b> on line <b>300</b><br />

		<category><![CDATA[Featured]]></category>

		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[books]]></category>

		<category><![CDATA[reuse]]></category>

		<category><![CDATA[use case]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/2008/01/22/a-couple-tips-on-keeping-use-cases-simple/</guid>
		<description><![CDATA[ Use cases are atomic functions that are portable and not dependent upon a certain situation. They are requirement “objects” in the “object oriented” sense. I think that modularity and “reusability” are among the most valuable aspects of using use cases to express requirements.

This modularity can be undermined, though, if we allow our use cases to get too far into specifics and implementation detail.

The book “Use Cases: Requirements in Context”, by Kulak and Guiney, provides us with a couple simple ways to self-check our use cases to ensure that they include the appropriate level of detail, but aren’t reaching too far into design.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0321154983?ie=UTF8&amp;tag=jnotes-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321154983" onclick="javascript:pageTracker._trackPageview ('/outbound/www.amazon.com');"><img src="http://jonathanbabcock.com/wp-content/uploads/2008/01/21wanajh84l_aa_sl160_.jpg" alt="21wanajh84l_aa_sl160_.jpg" align="right" border="0" hspace="7" vspace="3" /></a><img src="http://www.assoc-amazon.com/e/ir?t=jnotes-20&amp;l=as2&amp;o=1&amp;a=0321154983" style="border: medium none ; margin: 0px" border="0" height="1" width="1" /> Use cases are great. I consider them requirement “objects” in the “object oriented” sense. They are atomic functions that are portable and not necessarily dependent upon a certain situation. I think that modularity and “reusability” are among the most valuable aspects of using use cases to express requirements.</p>
<p>This modularity can be undermined, though, if we allow our use cases to get too far into specifics and implementation detail.</p>
<p>The book <a href="http://www.amazon.com/gp/product/0321154983?ie=UTF8&amp;tag=jnotes-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321154983" onclick="javascript:pageTracker._trackPageview ('/outbound/www.amazon.com');">Use Cases: Requirements in Context (2nd Edition)</a><img src="http://www.assoc-amazon.com/e/ir?t=jnotes-20&amp;l=as2&amp;o=1&amp;a=0321154983" style="border: medium none ; margin: 0px" border="0" height="1" width="1" />, by Kulak and Guiney, provides us with a couple simple ways to self-check our use cases to ensure that they include the appropriate level of detail, but aren’t reaching too far into design.<span id="more-166"></span></p>
<h3>Use Case Naming</h3>
<p>According to Kulak and Guiney, there are guidelines to naming use case that can help keep them at the appropriate level of detail. Use case names:</p>
<blockquote>
<ul>
<li>Should conform to verb-noun construction: mail checks, determine eligibility, trace shipment, print letter</li>
<li>Can contain adjectives or adverbs</li>
<li>Should not contain any situation-specific data</li>
<li>Should not be tied to an organization structure, paper forms, computer implementation, or manual process: enter form 104-B, complete approval window, get approval from immediate supervisor in Accounting DepartmentShould not use &#8220;weak verbs&#8221; … that do not describe the action: process, complete, do, track</li>
</ul>
</blockquote>
<p>One of my stumbling points when I first began authoring use cases was that I was prone to getting into the “who, what, when, where and how” in my use case names. Doing so isn’t necessarily wrong from a correctness standpoint, but it certainly undermines what is, as I mentioned above, one of the best things about use cases: their modularity. A name that is that two lines long is probably indicative to deep a level of detail in the use case. What I prefer to do now, and what I think it pretty standard, is to use the use case goal as the name.</p>
<p>So, the use case name should be brief, concise, and indicative of what the use case is accomplishing. Obviously, you can give a use case a short name and still include too much fluff, and this tip is offered more as a “helpful hint” type of tool than a fix-all. Here’s another way to check your use cases for appropriate detail:</p>
<h3>Is “the system” stealing the show?</h3>
<p>Does the use case take a user’s (actor’s) perspective, or does it appear that the user is just along for the ride while the system steals the show? Kulak &amp; Guiney’s tip here is this:</p>
<blockquote><p>When design creeps into a use case, it becomes quite obvious. When the system is performing several steps before responding to a user, it sounds an alarm that perhaps internal system design is being created and exposed.</p></blockquote>
<p>Do you sometimes look back at your use cases and have to admit that they are difficult to distinguish from fully detailed test scripts, replete with steps including buttons to click, screens to access, where the system is going to grab a certain piece of data, etc.?</p>
<p>We get off the use case “straight-and-narrow” when we begin including detail in the steps of the use case that may need to change based on how the use case is implemented. Whether we use buttons or text links; 1 screen or 5 screens; or jsp’s, asp’s, or php’s, the user goal is the same. We want the steps of our use cases to include what a user or system must do to accomplish the goal, not on all the dirty details of how, and all the intricate functions the system may have to perform to support the user goal. That&#8217;s not to say that some of that detail doesn&#8217;t have it&#8217;s place in the use case. By all means, include business rules with use cases - but in a business rules section, or in a separate business rule repository and not as steps in the use case.</p>
<p>Anyway, I am finding the book to be an easy read and a nice resource of practical information on how to effectively express requirements through use cases. I’d encourage you to <a href="http://www.amazon.com/gp/product/0321154983?ie=UTF8&amp;tag=jnotes-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321154983" onclick="javascript:pageTracker._trackPageview ('/outbound/www.amazon.com');">grab a copy of the book</a><img src="http://www.assoc-amazon.com/e/ir?t=jnotes-20&amp;l=as2&amp;o=1&amp;a=0321154983" style="border: medium none ; margin: 0px" border="0" height="1" width="1" /> if you want to learn more about use cases, but have a hard time staying with <a href="http://www.amazon.com/gp/product/0201702258?ie=UTF8&amp;tag=jnotes-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0201702258" onclick="javascript:pageTracker._trackPageview ('/outbound/www.amazon.com');">Cockburn&#8217;s books</a><img src="http://www.assoc-amazon.com/e/ir?t=jnotes-20&amp;l=as2&amp;o=1&amp;a=0201702258" style="border: medium none ; margin: 0px" border="0" height="1" width="1" />, which are great resources, but have never been mistaken for light reading.</p>
<p>Do you have any little tips or tricks for keeping your use cases at the appropriate level of detail? Any preferred books or resources on use case basics? If so, please feel free to share. I always appreciate your comments!</p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=A%20Couple%20Tips%20on%20Keeping%20Use%20Cases%20Simple&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2008%2F01%2F22%2Fa-couple-tips-on-keeping-use-cases-simple%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="A Couple Tips on Keeping Use Cases Simple";
		a2a_linkurl="http://jonathanbabcock.com/2008/01/22/a-couple-tips-on-keeping-use-cases-simple/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2008/01/22/a-couple-tips-on-keeping-use-cases-simple/">A Couple Tips on Keeping Use Cases Simple</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2008/01/22/a-couple-tips-on-keeping-use-cases-simple/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Precision Tools: Requirement Structure</title>
		<link>http://jonathanbabcock.com/2007/12/26/precision-tools-requirement-structure/</link>
		<comments>http://jonathanbabcock.com/2007/12/26/precision-tools-requirement-structure/#comments</comments>
		<pubDate>Wed, 26 Dec 2007 17:28:11 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/jnotes5/public_html/jonathanbabcock/wp-content/plugins/autometa/autometa.php</b> on line <b>300</b><br />

		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[accurate]]></category>

		<category><![CDATA[precise]]></category>

		<category><![CDATA[SRS]]></category>

		<category><![CDATA[structure]]></category>

		<category><![CDATA[uniformity]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/2007/12/26/precision-tools-requirement-structure/</guid>
		<description><![CDATA[I recently posted about the need for accuracy and precision in requirements. In that post, I mentioned that natural language requirements are probably the least precise format for expressing requirements. Many BA's, myself included, write specs composed of natural language requirements and a few flow diagrams for clarification and context. So, given that natural language is not inherently precise, how do we at least make them as precise as possible?]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/">recently posted</a> about the need for accuracy and precision in requirements. In that post, I mentioned that natural language requirements are probably the least precise format for expressing requirements. Many BA&#8217;s, myself included, write specs composed of natural language requirements and a few flow diagrams for clarification and context. So, given that natural language is not inherently precise, how do we at least make them as precise as possible?</p>
<p>To me, it boils down to a few main points.</p>
<ul>
<li>Uniformity of requirement structure</li>
<li>Clearly defined requirement syntax and project      vocabulary</li>
<li>Attention to grammar and word usage</li>
<li>Repeat, Repeat, Repeat</li>
</ul>
<p>In this post, I&#8217;ll cover the first bullet - requirement structure, and touch on the last.<span id="more-160"></span></p>
<h4>Uniformity of requirement structure</h4>
<p>I&#8217;ve always thought it logical to apply a consistent structure to each requirement in a specification, but it was in a recent training session that I was shown a simple technique for ensuring consistency. It isn&#8217;t a major process breakthrough, or a cutting-edge meeting management technique. As I said, it is actually a very, very simple. And the simplicity is, in fact, the benefit. Here&#8217;s how my requirements will be structured:</p>
<p><em><strong>Subject + Capability + Constraint*</strong></em></p>
<p>There it is. That&#8217;s my formula. I&#8217;ll explain.</p>
<ul>
<li> <strong>Subject:</strong> Every requirement will begin with the subject, or entity performing the action. This will typically be the user of the system or the system itself. In times past, I&#8217;d be inclined to start out with a condition, like, &#8220;If the user is logged in, the system shall&#8230;.&#8221;, or, &#8220;When the order is in open status, a user shall be able to&#8230;.&#8221; Always leading with the subject helps me to avoid writing in passive voice, which might be great for prose, but is less than ideal for requirements.</li>
</ul>
<ul>
<li> <strong>Capability:</strong> This is what the subject &#8220;shall be able&#8221; to do. There will be one and only one capability in each of my requirements.</li>
</ul>
<ul>
<li> <strong>Constraint:</strong> The reason for the asterisk next to &#8220;Constraint&#8221; is that not all of my requirements will necessarily include a constraint. Most probably will, though. The constraint will be a condition or that will be applied to the Capability.</li>
</ul>
<p>So, as a sample requirement I&#8217;d write:</p>
<p>&#8220;A user shall be able to print his/her statement from the account summary page.&#8221;</p>
<p>In this case, &#8220;user&#8221; is my subject, the ability to print the statement is the capability, and the fact that it will be printed from the account summary page is the constraint.</p>
<p>Note that the subject, capability and constraint are also included in the requirement in that order. The reason for this is that uniformity makes the requirements easier to understand.</p>
<p>With &#8220;S+C+C&#8221;, I&#8217;ve found that by using the same formula for EVERY requirement (repeat, repeat, repeat), consumers of my documents became accustomed to the structure and the flow. For a system requirements spec (SRS), many of the document&#8217;s consumers are designers or developers who are versed in the language of software development. Logic expressed in software code is very uniform and consistent. Using the same structure for all requirements is - albeit only slightly - more like &#8220;speaking in their language.&#8221;</p>
<p>Now before I finish, I want to make it clear that there is nothing wrong or inaccurate about stating requirements that lead with a condition, or that vary from my adopted format. My point is that it&#8217;s important to pick a way that works for you and your document&#8217;s consumers and to not deviate from it. Ever.</p>
<p>I&#8217;ll write more on my other main points listed above in the coming days. In the meantime, I&#8217;ll be interested in hearing any other ideas you may have on what works and what doesn&#8217;t regarding  requirement structure.</p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=Precision%20Tools%3A%20Requirement%20Structure&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2007%2F12%2F26%2Fprecision-tools-requirement-structure%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="Precision Tools: Requirement Structure";
		a2a_linkurl="http://jonathanbabcock.com/2007/12/26/precision-tools-requirement-structure/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2007/12/26/precision-tools-requirement-structure/">Precision Tools: Requirement Structure</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2007/12/26/precision-tools-requirement-structure/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Good Requirements Are More Than Just Accurate</title>
		<link>http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/</link>
		<comments>http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 16:26:52 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[accuracy]]></category>

		<category><![CDATA[Elicitation]]></category>

		<category><![CDATA[natural language]]></category>

		<category><![CDATA[precision]]></category>

		<category><![CDATA[Specification]]></category>

		<category><![CDATA[UML]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/</guid>
		<description><![CDATA[In Requirements, Accuracy Isn&#8217;t Enough
Allow me to reflect and maybe even toot my own horn here for just a second. Since I&#8217;ve been a business analyst, I think it&#8217;s fair to say that I&#8217;ve written accurate requirements. By this I mean that they have accurately represented what a user needed to be able to do, [...]]]></description>
			<content:encoded><![CDATA[<h4>In Requirements, Accuracy Isn&#8217;t Enough</h4>
<p>Allow me to reflect and maybe even toot my own horn here for just a second. Since I&#8217;ve been a business analyst, I think it&#8217;s fair to say that I&#8217;ve written accurate requirements. By this I mean that they have accurately represented what a user needed to be able to do, and what the system needed to be able to do to meet the business requirements. Despite my presumed accuracy, I&#8217;ve faced projects where there has seemed to be an inordinate amount of churn around the wording and language used in expressing requirements - sometimes to seemingly annoyingly inane levels (&#8221;Hmmm&#8230; That all depends on what the meaning of &#8216;is&#8217; is&#8230;.&#8221;). Especially as a younger BA, I couldn&#8217;t understand why the designers and testers couldn&#8217;t understand plain English and just do what the requirements said.</p>
<p>Well, years and experience have tempered me somewhat, and although I still have room for improvement in a lot of areas, one concept has helped me improve a great deal as a business analyst. It has also helped me to understand the angst of the QA analyst and design architect. Today, I&#8217;d like to pass it on to those who may benefit from the same lesson. That is:</p>
<p><em>It&#8217;s not enough for requirements to be accurate, they must also be precise.</em></p>
<p><a href="http://en.wikipedia.org/wiki/Accuracy#Accuracy_vs_precision_-_the_target_analogy" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">What is the difference</a>, you ask? <span id="more-154"></span>Have a look at the image below.</p>
<p><a href="http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/158/" target="_blank" rel="attachment wp-att-158"></a></p>
<p style="text-align: center"><a href="http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/158/" target="_blank" rel="attachment wp-att-158"><img src="http://jonathanbabcock.com/wp-content/uploads/2007/12/accuracy.jpg" /></a></p>
<p align="center"><font color="#999999">Image above originally sourced from <a href="http://www.alcontrol.co.uk/LinkedFiles/accuracy.jpg" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.alcontrol.co.uk');">Alcontrol.co.uk</a>. </font></p>
<p>Accuracy, as you can see on the examples on the right side of the image above, is hitting close to the target. Precision, as evidenced in the top left and lower right examples, is consistently hitting close to the same spot. Obviously, both are important, and the good BA must strive for requirements that are accurate and precise.</p>
<p>So, while I was writing accurate requirements, I was only meeting half of my obligation to downstream delivery teams. To be a good business analyst, I need to communicate in terms that are not only accurate but clear and consistent.</p>
<h4>Natural language is inherently ambiguous</h4>
<p>The odds are stacked against the BA when it comes to writing requirements that are both accurate and precise, as natural language is inherently ambiguous. The same phrase, punctuated or intoned differently can take on a variety of meanings. For example,</p>
<p>&#8220;I, John Doe, am glad to see you here!&#8221;</p>
<p>Am I John Doe, and telling someone ( or maybe even a group of people) that I am happy to see him (/her/them) here, or am I addressing myself to John Doe and telling him I am glad to see him here? The statement is accurate, and both are are valid interpretations of the sentence, but only one is the correct result. This is an example of the difficulty I was experiencing with my &#8220;accurate requirements&#8221;. Different people can understand the same phrase differently depending on the individual and the context. So, how does a BA cope with this?</p>
<p>Some shops adopt different, more precise ways of expressing requirements such as UML, pseudo code, and formal specification language. Here are a few examples of alternatives and how they compare to natural language requirements:</p>
<p style="text-align: center"><img src="http://jonathanbabcock.com/wp-content/uploads/2007/12/undprec442x382.png" /></p>
<ul>
<li><u><strong>Natural Language</strong></u> which includes your typical &#8220;user shall&#8221; or &#8220;system shall&#8221; requirements. These are considered the most &#8220;understandable&#8221; because natural language is the language in which we speak and write. In theory, anyone who can read the language should be able to understand what the requirements are saying. For example, a business stakeholder who has no technology experience, and doesn&#8217;t care to bother learning UML or more precise forms of specification will prefer natural language requirements. In my experience, we pretty much always write up our business requirements in this way - be it just a list including vision and objectives, a few user stories, or whatever the case may be. As we mentioned before, natural language is the most open to multiple interpretations and hence the least precise method.</li>
</ul>
<ul>
<li><strong><u>Structured Languages</u></strong> like UML that represent natural language through the use of graphics and rules within a structure where each element has a distinct meaning. The symbols and notation rules in UML allow for it to be a more precise means of expressing requirements. UML is still relatively easy to understand, but not as easy as natural language as it does require a little bit of study or training to understand the ins-and-outs. UML diagrams - especially activity diagrams and use case diagrams - are a great alternative to natural language as a way of expressing user and functional requirements.</li>
</ul>
<ul>
<li><strong><u>Pseudo Code</u></strong>, or more descriptive languages include if/then/else and other logical statements that read as much like code as they do natural language. It doesn&#8217;t necessarily resemble any one particular programming language, but uses common syntax and attributes that allow it to be flexible across technologies. Again, the rules, conventions, and structure of this type of method makes it very precise, although very difficult to read for those that aren&#8217;t familiar with the language and logic of software development. Detailed system and design specs are most likely to include this type of language.</li>
</ul>
<ul>
<li><strong><u>Formal specification language</u></strong> goes a step beyond pseudo code to include mathematical logic and a code-like format. I&#8217;ve never been in an environment that uses this type of specification, but I&#8217;ve been told that it is common in aerospace and weapons technology - where lives are at stake, and precision is of the utmost importance - and the user group is familiar with the technical terminology. If you&#8217;re curious, <a href="http://www.csci.csusb.edu/dick/samples/z.syntax.html" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.csci.csusb.edu');">here is a link</a> to a page that describes some of the syntax of formal specification language below. <a href="http://en.wikipedia.org/wiki/Formal_language" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Wikipedia</a> also has a worthwhile entry. <a href="http://www.rbjones.com/rbjpub/cs/csfm02.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.rbjones.com');">This link</a> describes the different types of formal specification languages.  I&#8217;ll also give an example just to emphasize the low-understandability aspect.</li>
</ul>
<blockquote><p>Delete(Insert(s, e), e&#8217;) ==<br />
if e=e&#8217;<br />
then Delete(s, e&#8217;)<br />
else Insert(Delete(s, e&#8217;), e);</p></blockquote>
<h4>How do I write accurate and precise requirements?</h4>
<p>This post is addressed chiefly to the good, old natural language requirement writer, though. Given that natural language is the least precise method of expressing requirements, and given that we need to increase the precision of our requirements for them to be of good quality and use to their consumers, what do we do?</p>
<p>We make our requirements reliable. We make them consistent in form and structure. We adopt a limited, well-understood vocabulary and stick to it. We make our requirements &#8220;boring&#8221;. This allows us to ensure that each arrow (requirement) is hitting very close to the last. It gives us precision in addition to our accuracy. I have some ideas on how to standardize requirements and make them more consistent and precise, but I&#8217;m getting a little long-winded here, so I think I&#8217;ll share those in a different entry.</p>
<p>My main point here, and I hope I&#8217;ve been able express it adequately, is that the business analyst&#8217;s job is not complete if the requirements are written and accurate but not precise. The key is to find a way of articulating requirements that is as precise and as easy to read by the target audience as possible. I&#8217;ve found that as my requirements become more precise, the churn around language and semantics decreases significantly. I suspect that many BA&#8217;s may find the same to be true.</p>
<p>Anyway, look for follow-on posts in the coming days that will address requirement structure, requirement vocabulary, and any other tricks of the trade I&#8217;ve picked up that I think worthwhile to pass along.</p>
<p>In the meantime, take a quick look back at the image detailing accuracy vs. precision. I found it interesting to briefly contemplate the ways that writing precise but not accurate, or accurate but not precise requirements could impact a project.</p>
<p>As always, I&#8217;ll be glad for any comments or experiences that you may have had in dealing with issues of accuracy and/or precision in your requirements.</p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=Good%20Requirements%20Are%20More%20Than%20Just%20Accurate&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2007%2F12%2F18%2Fgood-requirements-are-more-than-just-accurate%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="Good Requirements Are More Than Just Accurate";
		a2a_linkurl="http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/">Good Requirements Are More Than Just Accurate</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2007/12/18/good-requirements-are-more-than-just-accurate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What are user stories, and why should I use them?</title>
		<link>http://jonathanbabcock.com/2007/11/03/what-are-user-stories-and-why-should-i-use-them/</link>
		<comments>http://jonathanbabcock.com/2007/11/03/what-are-user-stories-and-why-should-i-use-them/#comments</comments>
		<pubDate>Sat, 03 Nov 2007 16:00:44 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[Use Cases]]></category>

		<category><![CDATA[user stories]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/2007/11/03/what-are-user-stories-and-why-should-i-use-them/</guid>
		<description><![CDATA[I have used user stories - or at least something similar -  to help me identify user requirements, but have never used them as the means of documenting requirements. I am somewhat familiar with the concept, though, and have been interested in learning more.
I found a great deal of help in Mike Cohn&#8217;s article, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jonathanbabcock.com/wp-content/uploads/2007/11/open_book.thumbnail.jpg" align="left" hspace="8" vspace="3" />I have used user stories - or at least something similar -  to help me identify user requirements, but have never used them as the means of documenting requirements. I am somewhat familiar with the concept, though, and have been interested in learning more.</p>
<p>I found a great deal of help in Mike Cohn&#8217;s article, <a href="http://www.mountaingoatsoftware.com/article_view/27-advantages-of-user-stories-for-requirements" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mountaingoatsoftware.com');">Advantages of User Stories for Requirements</a>.  In this article, Cohn explains user stories and the advantages of using them over traditional, natural language requirements and use cases.</p>
<p>Below is a brief synopsis, but you&#8217;ll really want to read the full article. Mike has gone to a fair amount of detail providing useful, practical examples for comparitive purposes.</p>
<p><em><strong>On the composition of user stories:</strong> </em></p>
<blockquote><p>Each user story is composed of three aspects:</p>
<ol>
<li>Written description of the story, used for planning and as a         reminder</li>
<li>Conversations about the story that serve to flesh out the details          of the story</li>
<li>Tests that convey and document details that can be used to determine         when a story is complete</li>
</ol>
</blockquote>
<p><strong><em>On the weaknesses of natural-language requirements specifications:</em></strong></p>
<ul>
<li>IEEE 830-style requirements (&#8221;The system shall&#8230;&#8221;) are &#8220;tedious, error-prone, and very time-consuming.&#8221;</li>
<li>Traditional requirements are boring to read, which means that for longer documents, readers are inclined to skim through the document and skip sections.</li>
<li>Traditional requirements focus on a &#8220;checklist of requirements rather than the user&#8217;s goals.&#8221;</li>
<li>It is difficult to prioritize individual requirements listed in a specification of hundreds of requirements.</li>
<li>It isn&#8217;t practical to provide budget and time estimates for individual requirements, but it is for user stories.</li>
<li>User stories are more reader-friendly and easier to prioritize.</li>
</ul>
<p><strong><em>Comparing user stories to use cases:</em></strong></p>
<ul>
<li>Use cases typically convey larger scope than user stories. User stories are purposely capped to fit within a targeted delivery time frame.</li>
<li>A user story basically corresponds to the main success scenario of the use case.</li>
<li>Use cases often become permanent system documents; user stories &#8220;are not intended to outlive the iteration in which they&#8217;re added to the software.&#8221;</li>
<li>Use cases often include interface and implementation detail. User stories do not.</li>
</ul>
<p>Cohn is pretty convincing, and, having read his article I definitely understand some of the merits of user stories. However, I am left with a few questions to research. For example, I understand that user stories are not intended to serve as system documentation. Often they&#8217;re torn up and tossed after the iteration in which they&#8217;re implemented.</p>
<p>I think there is great value in having a documented repository of system requirements or use cases, though - basically a snapshot of what our system does today. I wonder how that is addressed in an environment that uses user stories for requirements?</p>
<p>In any case, Cohn provides a great starting point for understanding user stories, and I&#8217;m certainly interested in learning more.</p>
<p>Have any comments or successes to share on user stories? I&#8217;ll be interested to hear them.</p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=What%20are%20user%20stories%2C%20and%20why%20should%20I%20use%20them%3F&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2007%2F11%2F03%2Fwhat-are-user-stories-and-why-should-i-use-them%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="What are user stories, and why should I use them?";
		a2a_linkurl="http://jonathanbabcock.com/2007/11/03/what-are-user-stories-and-why-should-i-use-them/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2007/11/03/what-are-user-stories-and-why-should-i-use-them/">What are user stories, and why should I use them?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2007/11/03/what-are-user-stories-and-why-should-i-use-them/feed/</wfw:commentRss>
		</item>
		<item>
		<title>UML Use Case Modeling - A Little Help?</title>
		<link>http://jonathanbabcock.com/2007/10/22/uml-use-case-modeling-a-little-help/</link>
		<comments>http://jonathanbabcock.com/2007/10/22/uml-use-case-modeling-a-little-help/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 02:22:30 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Requirements]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[UML]]></category>

		<category><![CDATA[use case]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/2007/10/22/uml-use-case-modeling-a-little-help/</guid>
		<description><![CDATA[Recently, I&#8217;ve been fortunate enough to participate in some very interesting training sessions relating to business process re-engineering, and UML modeling. Now, I have long understood the value of use cases, but have never fully leveraged them or taken advantage of some of the added features inherent in tools designed specifically for UML modeling. In [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jonathanbabcock.com/wp-content/uploads/2007/10/actor.thumbnail.jpg" align="left" hspace="7" vspace="3" />Recently, I&#8217;ve been fortunate enough to participate in some very interesting training sessions relating to business process re-engineering, and UML modeling. Now, I have long understood the value of use cases, but have never fully leveraged them or taken advantage of some of the added features inherent in tools designed specifically for UML modeling. In my experience, for the fully-dressed use case, I typically just use a MS Word template with tables. For the diagrams, I just use the UML functionality inherent in Visio.</p>
<p>Now that I&#8217;ve sat through some of the training, and gotten a quick peek at some of the tools available, I wanted to appeal to my audience here for some guidance regarding modeling tools.</p>
<p>I&#8217;ve dabbled a bit with <a href="http://www.sparxsystems.com.au/" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.sparxsystems.com.au');">Enterprise Architect</a> (I&#8217;ve downloaded the trial). It seems pretty complete and it very reasonably priced.  I downloaded <a href="http://staruml.sourceforge.net/en/" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/staruml.sourceforge.net');">StarUML</a> a couple days back and began playing with it a bit. The best thing about StarUML is that it is open source (free!). It doesn&#8217;t seem quite as user-friendly as EA, but you can&#8217;t argue with the price. There also seem to be some add-on features for it that might make it more appealing. I&#8217;ve also looked at <a href="http://argouml.tigris.org/" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/argouml.tigris.org');">ArgoUML</a> in the past, and it is ok. It doesn&#8217;t appear to be up to UML 2 standards yet, though.</p>
<p>Other than that, there are, of course, the <a href="http://www-306.ibm.com/software/rational/sw-bycategory/subcategory/SW740.html" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www-306.ibm.com');">Rational</a> and <a href="http://www.borland.com/us/products/index.html" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.borland.com');">Borland</a> tools which are great, but are probably overkill - especially in terms of price - for what we&#8217;re doing.</p>
<p>Honestly, I&#8217;d be fine with what MS Visio offers if I could just figure out a way to print use case diagrams with the accompanying text attributes. I haven&#8217;t been able to figure out for the life of me how to get that to work, though.</p>
<p>I&#8217;m not asking for much, either. Basically, all I need is a tool that allows you to:</p>
<ul>
<li> Output to Word or PDF</li>
<li>Output the diagrams AND accompanying text (i.e., main success path, preconditions, postconditions, goal, etc.) in a usable/readable form.</li>
<li>Create links and relationships between use cases across an entire system.</li>
<li>Cost efficient - we&#8217;re not hardcore. We just want something that meets the basic requirements above.</li>
<li>This is gravy, but it would be great if version control were built into the tool.</li>
</ul>
<p>So, can you help a fella out? What UML modeling tool(s) do you prefer?  I&#8217;ll be glad to hear your comments and words of experience/advice.</p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=UML%20Use%20Case%20Modeling%20-%20A%20Little%20Help%3F&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2007%2F10%2F22%2Fuml-use-case-modeling-a-little-help%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="UML Use Case Modeling - A Little Help?";
		a2a_linkurl="http://jonathanbabcock.com/2007/10/22/uml-use-case-modeling-a-little-help/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2007/10/22/uml-use-case-modeling-a-little-help/">UML Use Case Modeling - A Little Help?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2007/10/22/uml-use-case-modeling-a-little-help/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Handy Requirements Quality Digest/Checklist</title>
		<link>http://jonathanbabcock.com/2007/09/18/handy-requirements-quality-digestchecklist/</link>
		<comments>http://jonathanbabcock.com/2007/09/18/handy-requirements-quality-digestchecklist/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 13:40:44 +0000</pubDate>
		<dc:creator>JB</dc:creator>
		
		<category><![CDATA[Requirements]]></category>

	<!-- AutoMeta Start -->
	<category>business</category>
	<category>analyst</category>
	<category>requirements</category>
	<category>quality</category>
	<category>quality</category>
	<category>attributes</category>
	<category>business</category>
	<category>analysis</category>
	<category>specification</category>
	<category>checklist</category>
	<category>iiba</category>
	<category>cbap</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://jonathanbabcock.com/2007/09/18/handy-requirements-quality-digestchecklist/</guid>
		<description><![CDATA[This quick post is just to share an article I came across that I thought might be beneficial, especially to the relatively new analyst. &#8220;Specifying Good Requirements&#8220;, by Donald Firesmith, includes some good, basic information about requirement quality assurance.
Basically, the article consists of a list of common requirement quality attributes (you know.. complete, correct, unambiguous, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jonathanbabcock.com/wp-content/uploads/2007/09/document.thumbnail.jpg" title="document.jpg" alt="document.jpg" align="left" hspace="7" vspace="3" />This quick post is just to share an article I came across that I thought might be beneficial, especially to the relatively new analyst. &#8220;<a href="http://www.jot.fm/issues/issue_2003_07/column7" onclick="javascript:pageTracker._trackPageview ('/outbound/www.jot.fm');">Specifying Good Requirements</a>&#8220;, by Donald Firesmith, includes some good, basic information about requirement quality assurance.</p>
<p>Basically, the article consists of a list of common requirement quality attributes (you know.. complete, correct, unambiguous, etc.) accompanied by questions that can be used as a checklist to ensure that your requirements meet the criteria of each attribute.</p>
<p>Firestone points out,</p>
<blockquote><p>[J]ust as we all had to learn the rules for writing grammatically correct English, we also have to learn the rules for writing high-quality requirements. And just as not everyone who can read and write can also author a publishable book, not everyone who can write individual requirements can organize them into a high quality requirements specification. Whereas the rules for properly specifying individual requirements are relatively easy to use once you learn them, experience shows that they are also not obvious to most people who actually specify real requirements on real projects.</p></blockquote>
<p>Considering that these rules may not be obvious to most, I thought I&#8217;d do my part and share the &#8220;good word&#8221;.</p>
<p>Firestone admits that the information he provides is really a summary of information that is readily available from many other texts and training. There is nothing new or groundbreaking here, but a quick scan of the article may provide some insight on things that you could be doing a little better.</p>
<p>Reference:</p>
<p>Donald Firesmith: â€œSpecifying Good Requirementsâ€, in <em>Journal of Object Technology</em>, vol. 2, no. 4, July-August 2003, pp. 77-87. <a href="http://www.jot.fm/issues/issue_2003_07/column7" onclick="javascript:pageTracker._trackPageview ('/outbound/www.jot.fm');">http://www.jot.fm/issues/issue_2003_07/column7</a></p>
<p class="addtoany_share_save_container">
    <a class="a2a_dd addtoany_share_save" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/share_save?sitename=Jonathan%20Babcock&amp;siteurl=http%3A%2F%2Fjonathanbabcock.com%2F&amp;linkname=Handy%20Requirements%20Quality%20Digest%2FChecklist&amp;linkurl=http%3A%2F%2Fjonathanbabcock.com%2F2007%2F09%2F18%2Fhandy-requirements-quality-digestchecklist%2F"><img src="http://jonathanbabcock.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="Handy Requirements Quality Digest/Checklist";
		a2a_linkurl="http://jonathanbabcock.com/2007/09/18/handy-requirements-quality-digestchecklist/";
				a2a_show_title=1;		    </script>
    <script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>

	</p><p>Originally posted on <a hfref="http://jonathanbabcock.com">JonathanBabcock.com</a> as:</p>
<p><a href="http://jonathanbabcock.com/2007/09/18/handy-requirements-quality-digestchecklist/">Handy Requirements Quality Digest/Checklist</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanbabcock.com/2007/09/18/handy-requirements-quality-digestchecklist/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
