<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Techdoer Times &#187; Requirements</title>
	<atom:link href="http://techdoertimes.com/tag/requirements/feed" rel="self" type="application/rss+xml" />
	<link>http://techdoertimes.com</link>
	<description></description>
	<lastBuildDate>Sun, 11 Dec 2011 22:20:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Clarifying Requirements – Verification vs. Validation</title>
		<link>http://techdoertimes.com/agile/clarifying-requirements-verification-vs-validation</link>
		<comments>http://techdoertimes.com/agile/clarifying-requirements-verification-vs-validation#comments</comments>
		<pubDate>Mon, 28 Jul 2008 10:05:51 +0000</pubDate>
		<dc:creator>Sergio Bogazzi</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Effectiveness]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">http://www.techdoer.com/?p=156</guid>
		<description><![CDATA[<li>User requirements should be written without referencing a specific technology or implementation approach.
<li>System requirements should be written so that the functional behavior and non-functional characteristics of the solution are specified, but without describing how they should be implemented.
<li>Functional requirements describe the desired behavior of the system whereas non-functional requirements describe the characteristics of this behavior.
<li>Validation answers the question <em>Are we doing the right thing?</em>, verification answers the question <em>Are we doing the thing right?</em>
<li>A requirement should be written so that it is unambiguous, concise, and complete.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">In <a href="/?p=115">part 1</a> I discussed how user needs are at the core to any good requirement.  The restaurant example  highlighted the key differences between needs, features and requirements.  In <a href="/?p=149">part 2</a> I showed how features, or the range of options and constraints across people, process and technology, will thread these user needs through to the requirements specification process.  In part 3, I&#8217;ll talk about the categories of a requirement, the difference between their validation and verification and conclude with a brief summary of the linguistic features behind a good requirement.</p>
<h3 style="text-align: left;"><a name="userVssystem"></a></h3>
<p style="text-align: left;">When talking about requirements specification there are many factors to consider. First, it is important to distinguish between user requirements and system requirements.  User requirements are typically written without any reference to a solution, technology or implementation approach.  Instead they are centered on the needs of the user in the problem domain, the characteristics and surrounding context for these needs, and may incorporate elements from an overarching vision statement.</p>
<p style="text-align: left;">System requirements, on the other hand,  contain references to technologies and solutions but ultimately should be written so that the functional behavior and non-functional characteristics of the solution are specified without describing how they should be implemented.  Use cases, for example are system requirements rooted in the solution domain that describe how the system is used and how it should respond to user input.</p>
<table border="0">
<tbody>
<tr>
<td>
<p style="text-align: center;"><img class="aligncenter" src="/wp-content/uploads/2009/13/requirements_pyramid.jpg" alt="" /></p>
<div style="text-align: center;">Requirements Pyramid &#8211; www.ibm.com</div>
</td>
</tr>
</tbody>
</table>
<h3><a name="functionalNonfunctional"></a></h3>
<p>System requirements can also be classified as functional or non-functional in nature.  This distinction is an ongoing source of much confusion.  Functional requirements describe the behavior of the system whereas non-functional requirements describe the characteristics of this behavior (click <a href="/?p=380">here</a> for examples of non-functional requirements from our <em>Agile on Wall Street </em>presentation).   Indicating that a system should first authenticate a user&#8217;s credentials before allowing him to proceed to the reservation booking page is an example of a functional requirement.   Indicating that this process should take no longer than one second is an example of a non-functional requirement.</p>
<h3>Verification vs. Validation</h3>
<p>The differences between verification and validation in the software context are similar to those between efficiency and effectiveness in the business context.  For our purposes, validation refers to ensuring the right needs are being met.  In <a href="/?p=115">part 1</a>, I discussed the importance of correctly defining the user group from which needs will be elicited.   Successful software projects will prioritize the needs of this group so they can answer the validation question &#8211; <strong>Are we doing the right thing?</strong></p>
<p>Verification, on the other hand, refers to the process of ensuring the correct implementation of these needs.  In other words, verification answers the question - <strong>Are we doing the thing right?</strong></p>
<p>Any project that begins the software development phase with a validated set of requirements, and finishes the software deployment phase by verifying this set, is on the brink of satisfying customer demands.</p>
<h3>Linguistic Characteristics</h3>
<p>Quite simply, any stated requirement should satisfy the following criteria: the requirement should be written in such a way so that it is <em>unambiguous</em>, <em>concise</em>, and <em>complete</em>.</p>
<p>This concludes the series on <em>Clarifying Requirements</em>.  If you have any questions or comments on this article please email techdoer@gmail.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://techdoertimes.com/agile/clarifying-requirements-verification-vs-validation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clarifying Requirements – Features</title>
		<link>http://techdoertimes.com/agile/clarifying-requirements-features</link>
		<comments>http://techdoertimes.com/agile/clarifying-requirements-features#comments</comments>
		<pubDate>Fri, 25 Jul 2008 07:36:14 +0000</pubDate>
		<dc:creator>Sergio Bogazzi</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Effectiveness]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">http://www.techdoer.com/?p=149</guid>
		<description><![CDATA[<li>Once all user needs are identified and specified, it is the responsibility of the project's business and engineering teams to understand how they can capably solve these needs.
<li>Hierarchy of needs, features, requirements and the boundary that separates them in the problem and solution domains.
<li>Features can better be understood as the range of options and constraints across people, process and technology that will influence the ultimate approach towards solving the problem. 
]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">In <a href="/?p=115">part 1</a> I talked about stakeholder needs, both implicit and explicit and how these needs should be the core to any good requirement.   I also talked about the importance of correctly defining the user group from which needs will be elicited.</p>
<p style="text-align: left;">Once all user needs are identified and specified, it is the responsibility of the project&#8217;s business and engineering teams to understand how they can capably solve these needs.   In our restaurant example, the patron who entered the restaurant craving a sizzling stake would be wasting his time in a restaurant that only served raw food.</p>
<p style="text-align: left;">The requirements pyramid below shows the hierarchy of needs, features, requirements and the boundary that separates them in the problem and solution domains.</p>
<p style="text-align: left;">
<p style="text-align: center;"><img class="aligncenter" src="/wp-content/uploads/2009/13/requirements_pyramid.jpg" alt="Requirements Pyramid" /></p>
<p style="text-align: center;">Source: http://www.ibm.com</p>
<p style="text-align: left;">The reference to features can better be understood as the range of options and constraints across people, process and technology that will influence the method and approach used to solve the problem.  Understanding and matching features with user needs will drive the requirement specification process.</p>
<p style="text-align: left;">Click here for <a href="/?p=156">part three</a> to our series on <em>Clarifying Requirements</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://techdoertimes.com/agile/clarifying-requirements-features/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clarifying Requirements – User Needs</title>
		<link>http://techdoertimes.com/agile/clarifying-requirements-user-needs</link>
		<comments>http://techdoertimes.com/agile/clarifying-requirements-user-needs#comments</comments>
		<pubDate>Wed, 23 Jul 2008 10:13:17 +0000</pubDate>
		<dc:creator>Sergio Bogazzi</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Effectiveness]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">http://www.techdoer.com/?p=115</guid>
		<description><![CDATA[<li>User needs exist in the problem domain, features and requirements exist in the solution domain.
<li>Correctly capturing, specifying  and maintaining stakeholder requirements throughout a project's lifecycle remains the single most important task to ensure customer satisfaction.
<li>Customers may not always know what they need and it's the job of marketing, business and engineering to help them towards this understanding.
<li>Identify the right users from which to elicit needs.  In addition to end-users, remember to also include the needs of project sponsors, investors, operators, developers, testers, and regulators.]]></description>
			<content:encoded><![CDATA[<p>Many software teams struggle with the process of identifying and defining requirements.  Independent of the development process they practice (e.g. Agile, RUP, Waterfall, SCRUM or MSF), correctly capturing, specifying  and maintaining stakeholder requirements throughout a project&#8217;s lifecycle remains the single most important task to ensure customer satisfaction.</p>
<p>Towards this goal, it is important to understand the structure of a good requirement both from a linguistic perspective as well as its relationship to the hierarchy that includes needs and features.  In this series on <em>Clarifying Requirements</em>, I&#8217;ll expose this relationship as well as cover some of the basic linguistic characteristics of a good requirement.</p>
<h3>User Needs</h3>
<p>At the heard of any good requirement is the core user need &#8211; best illustrated by the the requirements pyramid and example below:</p>
<p style="text-align: center;"><img class="aligncenter" src="/wp-content/uploads/2009/13/requirements_pyramid.jpg" alt="" /></p>
<p style="text-align: center;">Figure 1: source:http://www.ibm.com</p>
<p style="text-align: left;">
<h4>Restaurant Patron Example</h4>
<p style="text-align: left;">A customer who enters a restaurant craving a steak may express this need to his or her waiter.  It is the waiter&#8217;s responsibility to identify this need, and match it to the customer&#8217;s budget, capabilities of the chef and the fresh produce of the day, among other things.   Suggesting a vegetarian dish to such a customer will almost certainly disappoint them.  There may also be be additional cravings that need to be elicited from this customer.   For example, a sommelier may get involved to find the perfect red wine to accompany with the steak.  The point here is that a single customer need (i.e. steak craving) leads to the discovery of an implicit need (i.e. accompanying wine) before the order was specified to the kitchen staff.</p>
<p style="text-align: left;">This customer order is loosely analogous to a good user requirement in the software world, where customer needs (i.e. steak craving, red wine), and the restaurant&#8217;s &#8216;features&#8217; (dinner menu, patron&#8217;s budget, chef&#8217;s capabilities) led to the requirement for a grilled Black Angus steak served with sauteed broccoli rabe and a smooth, silky 1995 second-label Bordeaux on table 12.   Managing the status of this order throughout the patron&#8217;s dinner is the job of a waiter that will ultimately determine the level of satisfaction experienced by the customer.  Sure customers may not always know what they need, but it&#8217;s the job of marketing, business and engineering to help them towards this understanding.</p>
<p style="text-align: left;">Equally important is identifying the right pool of user (i.e. stakeholders) from which to elicit these needs.  Marketing efforts that correctly identify a solution&#8217;s customer base will simplify the requirements process.   Also remember that customers are only a subset of this user group, albeit an important one.  Project sponsors, investors, operators, developers, testers, and regulators are also stakeholders whose needs will need to be considered during the requirements elicitation process.</p>
<p style="text-align: left;">In <a href="/?p=149">part 2</a> to the series on <em>Clarifying Requirements</em>, we talk about features and their role in the requirements specification process.</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://techdoertimes.com/agile/clarifying-requirements-user-needs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

