<?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>Tyner Blain &#187; Polls</title>
	<atom:link href="http://tynerblain.com/blog/category/polls/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog</link>
	<description>Software product success.</description>
	<lastBuildDate>Wed, 17 Mar 2010 04:31:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Product Manager Role Details and Survey Results</title>
		<link>http://tynerblain.com/blog/2007/02/09/product-manager-role-details/</link>
		<comments>http://tynerblain.com/blog/2007/02/09/product-manager-role-details/#comments</comments>
		<pubDate>Sat, 10 Feb 2007 01:37:24 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[moduct manager survey]]></category>
		<category><![CDATA[product management activities]]></category>
		<category><![CDATA[product manager]]></category>
		<category><![CDATA[product manager role]]></category>
		<category><![CDATA[product manager role definition]]></category>
		<category><![CDATA[product marketing manager]]></category>
		<category><![CDATA[product marketing manager role definition]]></category>
		<category><![CDATA[technical product manager]]></category>
		<category><![CDATA[technical product manager role definition]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/02/09/product-manager-role-details/</guid>
		<description><![CDATA[Pragmatic Marketing runs an annual survey of product managers.  We looked at 440 results from the 2006 Product Manager Survey to uncover the trends in how different product manager roles are defined.  The survey involved questions breaking down the allocation of time to different activities.  In this article we look at how those activities varied for product managers, product marketing managers, segment / market managers, and technical product managers.]]></description>
			<content:encoded><![CDATA[<p><img title="survey" alt="survey" src="http://sehlhorst.smugmug.com/photos/122784977-M.jpg" /></p>
<p>Pragmatic Marketing runs an annual survey of product managers.  We looked at 440 results from the <a title="2006 Product Manager Survey" href="http://www.pragmaticmarketing.com/productmarketing/survey/">2006 Product Manager Survey</a> to uncover the trends in how different product manager roles are defined.  The survey involved questions breaking down the allocation of time to different activities.  In this article we look at how those activities varied for product managers, product marketing managers, segment / market managers, and technical product managers.</p>
<h2>Previous Analyses</h2>
<p>For most people, the first thing they want to do is understand <a title="2006 Product Manager Compensation Data" href="http://tynerblain.com/blog/2006/12/11/pm-glass-ceiling/">product manager compensation data</a>.  That article included an analysis of gender bias in product manager compensation.  We quickly followed with another article that provided details on <a title="2006 Product Manager Compensation Detailed Data" href="http://tynerblain.com/blog/2006/12/15/product-mgr-salary-survey-2006/">product manager compensation versus company size</a>.  In response to reader questions, we took a look at <a title="2006 Product Manager Staffing Levels" href="http://tynerblain.com/blog/2007/01/16/pm-staffing-levels/">product manager staffing levels</a>.  In that article, we tried to determine how many product managers to have for X products.</p>
<p>Now that we know how many product managers to hire, what should we have them do?</p>
<h2>Product Manager Role Details</h2>
<p>The role of a product manager is strategic.  There are six areas of activity that are critical to product management.</p>
<blockquote><p><strong>The six areas</strong></p>
<ol>
<li>Market Research</li>
<li>Product Definition and Design</li>
<li>Project Management</li>
<li>Evangelize the Product</li>
<li>Product Marketing</li>
<li>Product Life Cycle Management</li>
</ol>
<p><cite><a title="Strategic Product Mgr Role Definition" href="http://tynerblain.com/blog/2006/04/09/product-manager-role-definition/">Product Manager Role Definition</a></cite></p></blockquote>
<p>Within those six areas are a number of activities, and respondents to Pragmatic Marketing&#8217;s survey provided a lot of data about what they do on a weekly basis.  The survey asked product managers how much time they spent on each of <em>seventeen </em>different activities.</p>
<h2>Pragmatic&#8217;s Activity List</h2>
<p>Each respondent was asked if they spent less than an hour, less than half a day, a full day, or more than a day on each of the following product management activities:</p>
<ol>
<li>Researching Market Needs</li>
<li>Preparing Business Case</li>
<li>Writing Product Requirements</li>
<li>Writing Detailed Specifications</li>
<li>Monitoring Development Projects</li>
<li>Writing Copy for Promotional Material</li>
<li>Approving Promotional Material</li>
<li>Creating Sales Presentations and Demos</li>
<li>Training Sales People</li>
<li>Going on Sales Calls</li>
<li>Visiting Sites (Without Sales People)</li>
<li>Performing Win/Loss Analysis</li>
<li>Planning and Managing Marketing Programs</li>
<li>Measuring Marketing Programs</li>
<li>Work with Press or Analysts</li>
<li>Creating Original Content For Customers</li>
<li>Creating Original Content For Employees</li>
</ol>
<h2>Survey Results By Activity</h2>
<p>Here&#8217;s the breakdown of time spent by activity for all survey respondents.</p>
<p><img alt="Combined Product Manager Activity Data" title="Combined Product Manager Activity Data" src="http://sehlhorst.smugmug.com/photos/128591802-M.jpg" /></p>
<p>[<a title="Combined Product Manager Activity Data" href="http://sehlhorst.smugmug.com/photos/128591669-O.jpg">larger image</a>]</p>
<p>Each activity has a row in the table.  To read the table, each column represents the amount of time spent on the activity.  The headings represent the exact text presented in the survey.  From left to right, the columns represent</p>
<ul>
<li>The name of the activity as described in the survey</li>
<li>&#8220;Under an hour&#8221; spent per week</li>
<li>&#8220;Under a half a day&#8221; spent per week</li>
<li>&#8220;A full day&#8221; spent per week</li>
<li>&#8220;More than a day&#8221; spent per week</li>
</ul>
<p>The numbers in each cell are the number of respondents that selected that level of effort for each activity.  When a cell represents more than 25% of the respondents, the text is colored red and marked in italics.</p>
<p>For each activity, the level of effort that had the greatest number of respondents is also bold with a gold background.</p>
<p>The results show a fairly even distribution of activities in each product manager&#8217;s week.  The areas that received concentrated attention were</p>
<ul>
<li>Researching Market Needs</li>
<li>Writing Product Requirements</li>
<li>Monitoring Development Projects</li>
<li>Creating Sales Presentations and Demos</li>
</ul>
<p>Very consistent with the <em>elevator pitch</em> (30 seconds or less) description of what a product manager does.  And all but the last one (sales-support) are identified as strategic activities.  More than half of the respondents spent a day or more monitoring development activities, though.  That seems a little high.  Perhaps a more detailed analysis of the data will shed some light.The survey data asked people to describe their titles too.  Next we evaluated the levels of effort by title.</p>
<h2>Product Management Titles</h2>
<p>The survey results included data from people who identified their titles as being most like one of the following:</p>
<ol>
<li>Product Manager</li>
<li>Product Marketing Manager</li>
<li>Segment/Industry/Market Manager</li>
<li>Technical Product Manager</li>
</ol>
<p>Here are the same tables, but filtered to include only the responses by title.</p>
<h2>Product Manager</h2>
<p><img alt="Product Manager Activity Levels" title="Product Manager Activity Levels" src="http://sehlhorst.smugmug.com/photos/128591764-M.jpg" /></p>
<p>[<a title="Product Manager Activity Levels" href="http://sehlhorst.smugmug.com/photos/128591536-O.jpg">larger image</a>]</p>
<p>The data for respondents with the title <em>Product Manager</em> is very consistent with the overall group data.</p>
<h2>Product Marketing Manager</h2>
<p><img alt="Product Marketing Manager Activity Levels" title="Product Marketing Manager Activity Levels" src="http://sehlhorst.smugmug.com/photos/128591771-M.jpg" /></p>
<p>Product marketing managers have a very clear focus on sales and marketing support.  They spend as little time as possible monitoring development activities.  They also don&#8217;t appear to be sacrificing a subset of the marketing activities &#8211; their effort appears to be relatively evenly distributed.<br />
[<a title="Product Marketing Manager Activity Levels" href="http://sehlhorst.smugmug.com/photos/128591575-O.jpg">larger image</a>]</p>
<h2>Segment / Industry / Market Manager</h2>
<p><img alt="Segment Manager Activity Levels" title="Segment Manager Activity Levels" src="http://sehlhorst.smugmug.com/photos/128591780-M.jpg" /></p>
<p>[<a title="Segment Manager Activity Levels" href="http://sehlhorst.smugmug.com/photos/128591604-O.jpg">larger image</a>]</p>
<p>There were very few <em>product-line</em> manager responses in the data, but the areas of distinction are that they spend more time on preparing business cases and approving promotional material.  They also spent far more time planning and managing marketing programs.  This is good &#8211; these are the activities best leveraged <em>across</em> products.</p>
<h2>Technical Product Manager</h2>
<p><img alt="Technical Product Manager Activity Levels" title="Technical Product Manager Activity Levels" src="http://sehlhorst.smugmug.com/photos/128591790-M.jpg" /></p>
<p>[<a title="Technical Product Manager Activity Levels" href="http://sehlhorst.smugmug.com/photos/128591630-O.jpg">larger image</a>]</p>
<p>Technical product managers spend much more time on inbound activities like monitoring the development team.  They also are more heavily involved in writing detailed specifications.  They still have healthy levels of market research and writing requirements.  And they minimize the time they spend on outbound activities like sales and marketing support.</p>
<h2>Conclusion</h2>
<p>The levels of effort are generally reasonably well distributed across the many activities identified in the survey.  Further, the roles that have distinct focus (inbound, outbound, multi-product) spend their time appropriately.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Product+Manager+Role+Details+and+Survey+Results+http://bit.ly/cX4+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/02/09/product-manager-role-details/&amp;t=Product+Manager+Role+Details+and+Survey+Results" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/02/09/product-manager-role-details/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMMI and RMM One Minute Survey</title>
		<link>http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/</link>
		<comments>http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 02:47:16 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm levels]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[cmmi level]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 2]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level 5]]></category>
		<category><![CDATA[cmmi poll]]></category>
		<category><![CDATA[cmmi survey]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[rmm level]]></category>
		<category><![CDATA[rmm poll]]></category>
		<category><![CDATA[rmm survey]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/</guid>
		<description><![CDATA[See what CMMI levels and RMM levels other teams are using.  Take a minute out of your day to tell us your CMMI level and RMM level.  We all want to know, but we need your help - if you don't answer, you won't learn anything.  Thanks for clicking through!  And check back later to see the results as they come in.]]></description>
			<content:encoded><![CDATA[<p><img title="timed test" alt="timed test" src="http://sehlhorst.smugmug.com/photos/127153565-M.jpg" /></p>
<p>Please take <strong>one minute</strong> to answer the following two questions, because people need to know how their process maturity compares with everyone else. You&#8217;ll be answering two easy questions -</p>
<ul>
<li>What is your CMMI level?</li>
<li>What is your RMM level?</li>
</ul>
<p><strong>Background</strong></p>
<p>We just completed a series of six articles about <a title="Intro to CMMI and RMM" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">CMMI levels and RMM levels</a>.  We discussed how the two frameworks can be connected, and explored the reasons for trying to reach the next level on either scale.</p>
<p><strong>Question 1</strong></p>
<p>[poll=2]</p>
<p><strong>Question 2</strong></p>
<p>[poll=3]</p>
<p>Thanks for taking the survey, and if you have any thoughts about the results, just comment here.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+and+RMM+One+Minute+Survey+http://bit.ly/1nD5pM+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/&amp;t=CMMI+and+RMM+One+Minute+Survey" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pragmatic Marketing 2006 Survey</title>
		<link>http://tynerblain.com/blog/2006/10/23/pm-survey/</link>
		<comments>http://tynerblain.com/blog/2006/10/23/pm-survey/#comments</comments>
		<pubDate>Tue, 24 Oct 2006 04:38:44 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Polls]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[new product management]]></category>
		<category><![CDATA[new product manager]]></category>
		<category><![CDATA[product management survey]]></category>
		<category><![CDATA[product management survey results]]></category>
		<category><![CDATA[product management trends]]></category>
		<category><![CDATA[product manager survey]]></category>
		<category><![CDATA[software product management]]></category>
		<category><![CDATA[software product manager]]></category>
		<category><![CDATA[survey results]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/10/23/pm-survey/</guid>
		<description><![CDATA[The polls are open!  Go to their announcement to take the annual Product Management and Marketing Survey!  Then check our our post for links to previous survey results and trends.]]></description>
			<content:encoded><![CDATA[<p><img title="survey" alt="survey" src="http://sehlhorst.smugmug.com/photos/104940146-M.jpg" /></p>
<p>The polls are open!  Go to <a title="2006 product management survey" href="http://www.pragmaticmarketing.com/Blogs/2006/10/annual-product-management-and.asp">their announcement</a> to take the annual Product Management and Marketing Survey!</p>
<p><strong>Previous Results</strong></p>
<ul>
<li><a title="2000" href="http://www.pragmaticmarketing.com/productmarketing/survey/2000/index.asp">2000 Survey Results</a>.</li>
<li><a title="2001" href="http://www.pragmaticmarketing.com/productmarketing/survey/2001/index.asp">2001 Survey Results</a>.</li>
<li><a title="2002" href="http://www.pragmaticmarketing.com/productmarketing/survey/2002/index.asp">2002 Survey Results</a>.</li>
<li><a title="2003" href="http://www.pragmaticmarketing.com/productmarketing/survey/2003/index.asp">2003 Survey Results</a>.</li>
<li><a title="2004" href="http://www.pragmaticmarketing.com/productmarketing/survey/2004/index.asp">2004 Survey Results</a>.</li>
<li><a title="2005" href="http://www.pragmaticmarketing.com/productmarketing/survey/2005/index.asp">2005 Survey Results</a>.</li>
</ul>
<p><strong>Salary Trends</strong></p>
<p>Pragmatic has some good detailed analysis of the data within each year&#8217;s survey results.  We thought it would be interesting to look at trends over time.  Interaction design tells us to focus on <a title="Personas" href="http://tynerblain.com/blog/2006/03/22/how-to-create-personas-for-goal-driven-development/"><em>personal goals</em></a> as defining the framework for how someone approaches their job.  Surveys aren&#8217;t really going to capture those driving goals, or things like <em>utility</em>, <em>job satisfaction</em>, etc.  The closest thing we have to a normalizer is looking at <strong>product management salary trends</strong> over the years of the survey.  We also don&#8217;t have normalizing data that would show us years of experience, cost of living, or a normalizing stock-option method (like <a title="Black Scholes" href="http://en.wikipedia.org/wiki/Black-Scholes">Black &#8211; Scholes</a>) to create an &#8220;equivalent compensation&#8221; analysis across the years.</p>
<p>Within each year&#8217;s results, there are some demographic breakdowns by region of the country &#8211; but those only help a little.  Markets like Silicon Valley, Austin, and Boston will skew the data relative to smaller markets.  It would be interesting to see (in future survey results) what the salary data looks like as a scatterplot versus a cost-of-living index for the locale (city, not region) of the respondants.</p>
<p><img alt="salary trend data" title="salary trend data" src="http://sehlhorst.smugmug.com/photos/104950616-M.jpg" /></p>
<p>We saw salary rises immediately following the dot-com bust, followed by some stagnation and deflation in recent years.</p>
<p>If we adjust for <a title="Inflation" href="http://inflationdata.com/Inflation/Inflation_Rate/CurrentInflation.asp">inflation </a> we see some less optimistic annual changes in real earnings.</p>
<ul>
<li>2001: 0.7% Loss in buying power</li>
<li>2002: 3.2% Increase in buying power</li>
<li>2003: 4.0% Increase in buying power</li>
<li>2004: 3.3% Loss in buying power</li>
<li>2005: 4.2% Loss in buying power</li>
</ul>
<p>Looks even worse.  If we show the same graph as above, but in 2000 dollars, we get the following:</p>
<p><img alt="inflation chart" title="inflation chart" src="http://sehlhorst.smugmug.com/photos/104957497-M.jpg" /><br />
This highlights the fairly rapid decay in product manager salaries over the past few years.</p>
<p><strong>Women&#8217;s Suffrage</strong></p>
<p>Notice also the unreasonably large gap between blue (female) and maroon (male) overall compensation data.</p>
<p><strong>Next</strong>: Go <a title="2006 survey link" href="http://www.pragmaticmarketing.com/Blogs/2006/10/annual-product-management-and.asp">take the 2006 survey</a>.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Pragmatic+Marketing+2006+Survey+http://bit.ly/dWHvm+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/10/23/pm-survey/&amp;t=Pragmatic+Marketing+2006+Survey" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/10/23/pm-survey/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Take this poll or we&#8217;ll shoot this kitten</title>
		<link>http://tynerblain.com/blog/2006/01/26/take-this-poll-or-well-shoot-this-kitten/</link>
		<comments>http://tynerblain.com/blog/2006/01/26/take-this-poll-or-well-shoot-this-kitten/#comments</comments>
		<pubDate>Fri, 27 Jan 2006 05:27:44 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Polls]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[RDD]]></category>
		<category><![CDATA[requirements driven development]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/01/26/take-this-poll-or-well-shoot-this-kitten/</guid>
		<description><![CDATA[
[Ed: If you read Tyner Blain via RSS you have to visit the site to vote in the poll.  Also, we'll use a camera.]
An earlier post on CRUD use cases started a fantastic debate (both public and private) about what it means to write great software, and if it&#8217;s even possible to write good [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Really cute kitten" alt="Really cute kitten" src="http://sehlhorst.smugmug.com/photos/48780346-M.jpg" /></p>
<p><em>[Ed: If you read Tyner Blain via RSS you have to visit the site to vote in the poll.  Also, we'll use a camera.]</em></p>
<p>An earlier post<a title="CRUD use cases and Shakespeare" href="http://tynerblain.com/blog/2005/12/29/cruddy-use-cases-and-shakespeare/"> on CRUD use cases</a> started a fantastic debate (both public and private) about what it means to write great software, and <strong><em>if it&#8217;s even possible to write good software when we start with requirements</em></strong>.  This leads to a discussion of the value of requirements driven development (RDD).  If you search on Google, you&#8217;ll see at least one whitepaper from every RDD-application vendor.  Not exactly impartial.</p>
<p>So, here&#8217;s a poll.  Coerced, maybe.  Impartial &#8211; probably.  If you&#8217;re new to the Likert scale &#8211; the unlabeled numbers (2,3,5,6) just serve to graduate the space between the &#8220;well described&#8221; positions.</p>
<p><strong>Our poll asks how you feel on a McLaughlin scale about the impact of requirements on the <em>greatness</em> of software.<br />
</strong></p>
<p><strong>1. Metaphysical dependency</strong>.  Great requirements <em>enable</em> great software (required, but not sufficient for greatness)</p>
<p><strong>2.</strong></p>
<p><strong>3.</strong></p>
<p><strong>4. Take it or leave it.</strong>  The benefits of requirements balance out the cost of managing them &#8211; no more, no less.</p>
<p><strong>5.</strong></p>
<p><strong>6.</strong></p>
<p><strong>7. Inverse dependency.</strong>  Requirements suck the life out of our team and our project &#8211; we&#8217;d be better off without them.</p>
<p>The poll:</p>
<p><!--adsense#dpoll_1481--></p>
<p>Thanks for voting!  And add comments if you want to explain your vote.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Take+this+poll+or+we%E2%80%99ll+shoot+this+kitten+http://bit.ly/alDnY+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/01/26/take-this-poll-or-well-shoot-this-kitten/&amp;t=Take+this+poll+or+we%E2%80%99ll+shoot+this+kitten" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/01/26/take-this-poll-or-well-shoot-this-kitten/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Top Ten Use Case Mistakes</title>
		<link>http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/</link>
		<comments>http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/#comments</comments>
		<pubDate>Thu, 26 Jan 2006 11:56:09 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[brief use case]]></category>
		<category><![CDATA[business use case]]></category>
		<category><![CDATA[CRUD]]></category>
		<category><![CDATA[CRUD use cases]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[top ten]]></category>
		<category><![CDATA[use case analysis]]></category>
		<category><![CDATA[use case mistakes]]></category>
		<category><![CDATA[use case tutorial]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/</guid>
		<description><![CDATA[
The top ten use case mistakes
We&#8217;re reiterating the top five use case mistakes from Top five use case blunders  and adding five more.  For details on the first five, go back to that post.
There&#8217;s also a poll at the end of this post &#8211; vote for the worst mistake.

Inconsistency.
Incorrectness.
Wrong priorities.
Implementation cues.
Broken traceability.
Unanticipated error [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="broken glasses" title="broken glasses" src="http://sehlhorst.smugmug.com/photos/53921544-M.jpg" /><br />
<strong>The top ten use case mistakes</strong></p>
<p>We&#8217;re reiterating the top five use case mistakes from <a title="Top five use case mistakes" href="http://tynerblain.com/blog/2005/12/23/top-five-use-case-blunders/"><em>Top five use case blunders</em></a>  and adding five more.  For details on the first five, <a href="http://tynerblain.com/blog/2005/12/23/top-five-use-case-blunders/">go back to that post</a>.</p>
<p>There&#8217;s also a poll at the end of this post &#8211; <strong>vote for the worst mistake</strong>.</p>
<ol>
<li><strong>Inconsistency.</strong></li>
<li><strong>Incorrectness.</strong></li>
<li><strong>Wrong priorities.</strong></li>
<li><strong>Implementation cues.</strong></li>
<li><strong>Broken traceability.</strong></li>
<li><strong>Unanticipated error conditions</strong>. The error conditions are explicitly called out in a <a title="Use case series - formal use cases" href="http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/"><em>formal</em> use case</a> as exception courses.  When we fail to think about how things can go wrong, we take a bad situation (an error) and make it worse by leaving our users with no reasonable way to deal with the errors.</li>
<li><strong>Overlooking system responses. </strong>When people use computers, the computers respond.  It is a cause and effect relationship &#8211; and ideally one that is predictable and comfortable to the user.  Reading a use case should be like watching a tennis match, with activities being performed alternately by the user and the system.  &#8220;The user does X, the system does Y, the user does Z&#8230;&#8221;</li>
<li><strong>Undefined actors.</strong>  Novice and expert users have different ways of using an application.  Different design tradeoffs will be made to accomodate for these users.  Understanding the domain of the user can also be important.  Imagine a calculator application &#8211; the use case of &#8220;get a quick answer to a calculation while doing something else&#8221; will be very different for a loan application officer than it will be for a research scientist.</li>
<li><strong>Impractical use cases.</strong>  We have to remember to validate with our developers that they can implement the use cases, given the current project constraints.  As a former co-worker is fond of saying &#8211; &#8220;It&#8217;s software &#8211; <em>we can do anything</em>&#8221; which is true.  But considering the skills of the currently staffed team, the budget and timeline for the project, and the relative priority of the use case is prudent.</li>
<li><strong>Out of scope use cases</strong>.  If we don&#8217;t define the system boundaries, or scope of our effort, we risk wasting a lot of time and money documenting irrelevant processes.  Starting with the specious argument &#8211; although our user has to drive to the office in order to perform her job, we don&#8217;t include her commute in the scope of our solution.  An online fantasy sports league application would certainly include a use case for picking players for individual teams &#8211; it may or may not include researching player-statistics.  Knowing where the boundary is will prevent us from defining and building undesired or unnecessary functionality.</li>
</ol>
<p><strong>More discussion on common use case mistakes</strong></p>
<p>I liked <a title="Use case pitfalls" href="http://www.sdmagazine.com/documents/s=815/sdm0001d/">this article by Susan Lily on use case pitfalls</a>.  Susan goes into more detail on <em>out of scope use cases</em>(#10 above), where she talks about defining the system boundary in <a title="Use case series - UML diagrams" href="http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/">UML use case diagrams</a> as a means of helping to avoid out of scope use cases.  She also encourages using a standard template for use cases (<em>Inconsistency &#8211; </em>#1) and proposes a minimum set of criteria for creating your own templates.  She provides a good argument against CRUD use cases &#8211; in a nutshell, they do not represent primary user goals (but rather tertiary goals).</p>
<p>At one point she proposes a compromise of including <em>low-fidelity</em> screen mockups in use cases as a means to make them easier to understand and more efficient to communicate.  I disagree with her here &#8211; this is at best a slippery slope, and more likely the use case equivalent of <a title="A requirements documentation mistake" href="http://tynerblain.com/blog/2006/01/25/a-requirements-documentation-mistake/">my requirements documentation mistake</a>.  Because images can be so powerful &#8211; even the simplest screen design elements will provide design guidance (<em>Implementation cues </em>- #4) to the developers &#8211; IMHO, it is unavoidable.</p>
<p><em>&#8211;</em></p>
<p><em><strong>We&#8217;ve added a new feature to Tyner Blain &#8211; polls on individual posts!</strong>  We&#8217;re going back and adding polls to the most popular posts, and including them in many of the new ones.  Each poll can have up to 7 entries &#8211; if an item isn&#8217;t displayed, hover over the up or down arrows and the list will scroll.  If the text for an entry appears truncated, hover over it with the mouse and the text will scroll.  </em><em>Vote early and vote often, and thanks for your vote!  </em><br />
&#8211;</p>
<p><strong>Poll: The worst use case mistake is</strong></p>
<p><!--adsense#dpoll_1414--></p>
<p>If you selected <em>&#8216;Other &#8211; not on the list&#8217;</em> please add a comment and tell us why!</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Top+Ten+Use+Case+Mistakes+http://bit.ly/mBqB3+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/&amp;t=Top+Ten+Use+Case+Mistakes" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Software Testing Series: Black Box vs White Box Testing</title>
		<link>http://tynerblain.com/blog/2006/01/13/software-testing-series-black-box-vs-white-box-testing/</link>
		<comments>http://tynerblain.com/blog/2006/01/13/software-testing-series-black-box-vs-white-box-testing/#comments</comments>
		<pubDate>Fri, 13 Jan 2006 13:04:25 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Polls]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[automated testing]]></category>
		<category><![CDATA[black box]]></category>
		<category><![CDATA[black box testing]]></category>
		<category><![CDATA[blackbox]]></category>
		<category><![CDATA[blackbox testing]]></category>
		<category><![CDATA[clear box]]></category>
		<category><![CDATA[clear box testing]]></category>
		<category><![CDATA[clearbox]]></category>
		<category><![CDATA[clearbox testing]]></category>
		<category><![CDATA[graybox]]></category>
		<category><![CDATA[graybox test]]></category>
		<category><![CDATA[graybox testing]]></category>
		<category><![CDATA[greybox]]></category>
		<category><![CDATA[greybox test]]></category>
		<category><![CDATA[greybox testing]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[unit tests]]></category>
		<category><![CDATA[white box]]></category>
		<category><![CDATA[white box testing]]></category>
		<category><![CDATA[whitebox]]></category>
		<category><![CDATA[whitebox testing]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/01/13/software-testing-series-black-box-vs-white-box-testing/</guid>
		<description><![CDATA[Should I use black box testing or white box testing for my software?

You will hear three answers to this question - black, white, and gray. We recently published a foundation series post on black box and white box testing - which serves as a good background document.  We also mention greybox (or gray box) testing as a layered approach to combining both disciplines.

Given those definitions, let's look at the pros and cons of each style of testing.]]></description>
			<content:encoded><![CDATA[<p><img alt="Armwrestling" title="Armwrestling" src="http://sehlhorst.smugmug.com/photos/50675610-M.jpg" /></p>
<p><strong>Should I use black box testing or white box testing for my software?</strong></p>
<p>You will hear three answers to this question &#8211; black, white, and gray.  We recently published a <a title="Black box and white box software testing definitions" href="http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/"><em>foundation series</em> post on black box and white box testing</a> &#8211; which serves as a good background document.  We also mention greybox (or gray box) testing as a layered approach to combining both disciplines.</p>
<p>Given those definitions, let&#8217;s look at the pros and cons of each style of testing.</p>
<p><strong>Black box software testing</strong></p>
<p><img alt="Black box" title="Black box" src="http://sehlhorst.smugmug.com/photos/51916324-M.jpg" /></p>
<p><strong>pros</strong></p>
<ul>
<li><strong>The focus is on the goals of the software</strong> with a requirements-validation approach to testing.   Thanks Roger for pointing that out on the previous post.  These tests are most commonly used for <a title="Foundation Series on Functional Testing" href="http://tynerblain.com/blog/2006/05/17/foundation-series-functional-testing-of-software/">functional testing</a>.</li>
<li><strong>Easier to staff a team</strong>.  We don&#8217;t need software developers or other experts to perform these tests (note: expertise <em>is</em> required to identify which tests to run, etc).  Manual testers are also easier to find at lower rates than developers &#8211; presenting an opportunity to save money, or test more, or both.</li>
</ul>
<p><strong>cons</strong></p>
<ul>
<li><strong>Higher maintenance cost with automated testing</strong>.  Application changes tend to break black-box tests, because of their reliance on the constancy of the interface.</li>
<li><strong>Redundancy of tests</strong>.  Without insight into the implementation, the same code paths can get tested repeatedly, while others are not tested at all.</li>
</ul>
<p><strong>White box software testing</strong></p>
<p><img alt="White box" title="White box" src="http://sehlhorst.smugmug.com/photos/52152337-M.jpg" /></p>
<p><strong>pros</strong></p>
<ul>
<li><strong>More efficient automated testing</strong>.  Unit tests can be defined that isolate particular areas of the code, and they can be tested independently.  This enables faster test suite processing</li>
<li><strong>More efficient debugging of problems.</strong>  When a regression error is introduced during development, the source of the error can be more efficiently found &#8211; the tests that identify an error are closely related (or directly tied) to the troublesome code.  This reduces the effort required to find the bug.</li>
<li><strong>A key component of TDD</strong>.  Test driven development (an Agile practice) depends upon the creation of tests during the development process &#8211; implicitly dependent upon knowledge of the implementation.  Unit tests are also a critical element for <a title="Ten Essential Practices of Continuous Integration" href="http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/">continuous integration</a>.</li>
</ul>
<p><strong>cons</strong></p>
<ul>
<li><strong>Harder to use to validate requirements</strong>.  White box tests incorporate (and often focus on) <em>how</em> something is implemented, not <a title="The importance of asking why" href="http://tynerblain.com/blog/2005/12/13/everything-i-needed-to-know-i-forgot-in-kindergarden/"><em>why</em></a> it is implemented.  Since product requirements express &#8220;full system&#8221; outputs, black box tests are better suited to validating requirements.  Carefull white box tests can be designed to test requirements.</li>
<li><strong>Hard to catch misinterpretation of requirements</strong>.  Developers read the requirements.  They also design the tests.  If they implement the wrong idea in the code because the requirement is ambiguous, the white box test will also check for the wrong thing.  Specifically, the developers risk testing that <a title="Passing the wrong whitebox tests" href="http://tynerblain.com/blog/2006/03/30/passing-the-wrong-whitebox-tests/">the <em>wrong </em>requirement is properly implemented</a>.</li>
<li><strong>Hard to test unpredictable behavior</strong>.  Users will do the strangest things.  If they aren&#8217;t anticipated, a white box test won&#8217;t catch them.  I recently saw this with a client, where a bug only showed up if the user visited all of the pages in an application (effectively caching them) before going back to the first screen to enter values in the controls.</li>
<li><strong>Requires more expertise and training</strong>.  Before someone can run tests that utilize knowledge of the implementation, that person needs to learn about how the software is implemented.</li>
</ul>
<p><strong>Which testing approach should we use?</strong></p>
<p>There is also the concept of gray box testing, or<strong> <em>layered testing</em></strong> &#8211; using both black box and white box techniques to balance the pros and cons for a project.  We have seen this approach work very effectively for larger teams.  Developers utilize white box tests to prevent submission of bugs to a testing team that uses  black box tests to validate that requirements have been met (and to perform system level testing).  This approach also allows for a mixture of manual and automated testing.  Any <a title="Foundation Series on Continuous Integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration</a> strategy should utilize both forms of testing.<br />
<strong>Weekend reading (links with more links warning):</strong></p>
<p><a title="Blog post on white vs black box testing" href="http://agiletesting.blogspot.com/2005/08/white-box-vs-black-box-testing.html">White box vs. black box testing</a> by Grig Gheorghiu.  Includes links to a debate and examples.</p>
<p><a title="Blog post about black box testing" href="http://blogs.msdn.com/steverowe/archive/2005/04/28/413093.aspx">Black box testing</a> by Steve Rowe.</p>
<p><a title="Microsoft honeypot tests use black box approach" href="http://agiletesting.blogspot.com/2005/09/honeymonkeys-adventure-in-black-box.html">A case study of effective black box testing</a> from the Agile Testing blog</p>
<p><a title="Explanation of layered testing" href="http://quality-assurance-software-testing.blogspot.com/2005/08/benefits-of-automated-testing.html">Benefits of automated testing</a> from the Quality Assurance and Automated Testing blog</p>
<p><strong>What book should I read to learn more?</strong></p>
<p><a title="Link to the ebook at Amazon" href="http://www.amazon.com/exec/obidos/ASIN/B0002YJN9S/tynerblain-20">Software Testing, by Ron Patton (the eBook version, which is cheaper)</a>.</p>
<p>Here&#8217;s a review from Randy Rice &#8220;Software Testing Consultant &#038; Trainer&#8221; (Oklahoma City, OK)</p>
<blockquote><p>Software Testing is a book oriented toward people just entering or considering the testing field, although there are nuggets of information that even seasoned professionals will find helpful. Perhaps the greatest value of this book would be a resource for test team leaders to give to their new testers or test interns. To date, I haven?t seen a book that gives a better introduction to software testing with this amount of coverage. Ron Patton has written this book at a very understandable level and gives practical examples of every test type he discusses in the book. Plus, Patton uses examples that are accessible to most people, such as basic Windows utilities.</p>
<p>I like the simplicity and practicality of this book. There are no complex formulas or processes to confuse the reader that may be getting into testing for the first time. However, the important of process is discussed. I also have to say a big THANK YOU to Ron Patton for drawing the distinction between QA and testing! Finally, the breadth of coverage in Software Testing is super. Patton covers not only the most important topics, such as basic functional testing, but also attribute testing, such as usability and compatibility. He also covers web-based testing and test automation ? and as in all topics covered in the book, Patton knew when to stop. If you want to drill deeper on any of the topics in this book, there are other fine books that can take you there!</p>
<p>I love this book because it is practical, gives a good introduction to software testing, and has some things that even experienced testers will find of interest. This book is also a tool to communicate what testing and QA are all about. This is something that test organizations need as they make the message to management, developers and users. No test library should be without a copy of Software Testing by Ron Patton!</p></blockquote>
<p>- &#8211; -</p>
<p>Check out the <a title="Software testing series index" href="http://tynerblain.com/blog/software-testing-series-index/">index of <em>software testing series posts</em></a> for more articles.<br />
<a title="Top three measurements of software quality" href="http://tynerblain.com/blog/2006/02/02/software-testing-series-top-three-measurements-of-quality/" /></p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Software+Testing+Series%3A+Black+Box+vs+White+Box+Testing+http://bit.ly/2z1DH1+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/01/13/software-testing-series-black-box-vs-white-box-testing/&amp;t=Software+Testing+Series%3A+Black+Box+vs+White+Box+Testing" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/01/13/software-testing-series-black-box-vs-white-box-testing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Foundation Series: Black Box and White Box Software Testing</title>
		<link>http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/</link>
		<comments>http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/#comments</comments>
		<pubDate>Thu, 12 Jan 2006 20:13:40 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Foundation series]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[black box]]></category>
		<category><![CDATA[black box test]]></category>
		<category><![CDATA[black box testing]]></category>
		<category><![CDATA[blackbox]]></category>
		<category><![CDATA[clear box test]]></category>
		<category><![CDATA[clear box testing]]></category>
		<category><![CDATA[clearbox]]></category>
		<category><![CDATA[clearbox testing]]></category>
		<category><![CDATA[gray box tests]]></category>
		<category><![CDATA[graybox testing]]></category>
		<category><![CDATA[grey box testing]]></category>
		<category><![CDATA[grey box tests]]></category>
		<category><![CDATA[greybox testing]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[white box]]></category>
		<category><![CDATA[white box test]]></category>
		<category><![CDATA[white box testing]]></category>
		<category><![CDATA[whitebox]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/</guid>
		<description><![CDATA[Blackbox tests and whitebox tests.
These terms get thrown about quite a bit. In a previous post, we referenced Marc Clifton's advanced unit testing series. If you were already familiar with the domain, his article could immediately build on that background knowledge and extend it.

Software testing can be most simply described as "for a given set of inputs into a software application, evaluate a set of outputs." Software testing is a cause-and-effect analysis.]]></description>
			<content:encoded><![CDATA[<p><img src="http://sehlhorst.smugmug.com/photos/50445724-M.jpg" /></p>
<h2>Blackbox tests and whitebox tests.</h2>
<p>These terms get thrown about quite a bit.  <a href="http://tynerblain.com/blog/2005/12/16/marc-clifton%e2%80%99s-advanced-unit-testing-articles/">In a previous post, we referenced Marc Clifton&#8217;s advanced unit testing series</a>.  If you were already familiar with the domain, his article could immediately build on that background knowledge and extend it.Software testing can be most simply described as &#8220;for a given set of inputs into a software application, evaluate a set of outputs.&#8221;<br />
Software testing is a <em>cause-and-effect analysis</em>.</p>
<p><span id="more-66"></span></p>
<p>The inputs can be user actions, data from external systems, or any combination of the two.</p>
<p>The outputs can be outputs on the computer screen, data output to a file (like a log or report), a communication with other computers (like web services responses), or any other <span style="font-style: italic">change in state</span> of the system.</p>
<p>As an example of simple inputs and outputs, a calculator program has the requirement: &#8220;Allow user to calculate the result of dividing one number by another, non-zero number.&#8221;  If a/b=c, the inputs would be the dividend (a) and the divisor (b).  The outputs would be the quotient (c).</p>
<p>As an example of <em>change in state </em>as an output, consider a requirement: &#8220;After the user logs in, the system will make future decisions based upon that user&#8217;s predefined preferences.&#8221;  For that requirement, an input would be &#8220;logged-in user id&#8221; and an output (or change in state) would be &#8220;system loads user&#8217;s preferences.&#8221;</p>
<h2>Black box testing</h2>
<p>Black box testing is a stimulus-response analysis of behavior.  To run (or define) a black box test, we don&#8217;t need to know <span style="font-style: italic">anything</span> about how the software works.  We provide it with a stimulus (user selects &#8220;advanced search&#8221; button) and inspect for a response (advanced search page input form is presented to the user).<img src="http://sehlhorst.smugmug.com/photos/51928637-M.jpg" /><br />
In biology class, we performed black box tests on dead frogs.  We hooked up electrodes to their legs and applied current.  The legs kicked.  We didn&#8217;t know anything about how the frogs worked, or we were told that the muscles would respond to small electrical currents by contracting.  And we didn&#8217;t need to know.  We just <em>tested</em> the frogs.</p>
<p>With a calculator program, we don&#8217;t need to know the hoops that the cpu jumps through to calculate the quotient.  We don&#8217;t need to wonder if the program is written in php or python or c++.  All we need to do is inspect the output for a given set of inputs.</p>
<p>This highlights the <strong>primary benefit of black box testing</strong>: a system can be tested by someone with no knowledge of how it works.</p>
<p>This allows us to more easily find people capable of testing our software &#8211; the pool of available people with the skills to keep track of what they input and what they output is <em>much</em> larger than that of people who understand the stuff &#8220;under the hood&#8221;.  It also saves our testers from having to learn <em>how</em> it works &#8211; they can start testing immediately.</p>
<p>When a team is organized with a dedicated testing (only) staff, the tests they create are typically black box tests &#8211; because the team can be staffed more cost effectively.</p>
<p>Blackbox tests are sometimes referred to as <em>opaque</em> tests or <em>closed-box tests</em>.  They are sometimes also referred to as <em>behavioral tests</em> &#8211; in that they only test the behavior of the system, not how (or how well) it is constructed.</p>
<h2>White box testing</h2>
<p>A white box test is one that requires insight into <em>how the code is implemented</em>.  The test takes advantage of understanding the data structures or flows to provide specific information about <em>how the code is working</em> as an output of the test.</p>
<p><img title="inspection machine" alt="inspection machine" src="http://sehlhorst.smugmug.com/photos/51916332-M.jpg" /></p>
<p>White box tests are also sometimes called <em>clear-box tests</em> or <em>structural tests</em> because they can provide insight into how the code is performing.</p>
<p>When you take your car for a state inspection test, it is a black-box test.  The overall performance (breaking distance, emissions levels, no sharp edges, etc) is inspected.  When you take your car for an oil change, you usually get a set of white-box test results (air-filter cleanliness check, coolant mixture analysis).  These pieces of detailed information (coolant at 60% mix) don&#8217;t tell you if the car is &#8220;good&#8221; &#8211; but they give you insight into how it&#8217;s running.</p>
<p>Unit testing, or testing a subset of the functionality of a piece of software can use black box or white box testing, but is most commonly done using white box tests.  A unit test is a test that provides a piece of specific information (like coolant mix, or testing a connection to a database, or the speed of a SQL query), without neccessarily making a statement about the overall quality of the software or system.</p>
<p>The <strong>primary benefit of white box testing</strong> is that you can use insight of how the software is constructed to efficiently test it.  This testing efficiency comes from having the ability to target specific areas of the code for testing, and also allows more efficient selections of tests to run.  The weakness of white box testing is that it requires knowledge of how the software is written in order to design the appropriate tests.  Another weakness is that misinterpretation of the requirements can result in <a title="Passing the wrong whitebox tests" href="http://tynerblain.com/blog/2006/03/30/passing-the-wrong-whitebox-tests/">whitebox tests of the wrong functionality</a>.</p>
<p>When a team is organized so that developers are responsible for testing their own code, they are more likely to incorporate white box tests, and more specifically unit tests.  There are efficiencies to using these types of tests, making the development process easier.</p>
<h2>Grey box testing</h2>
<p>When we combine black box and white box tests in the same test suite, we get what is called grey box testing, or greybox testing.  This systematic approach to testing allows us to combine the benefits of both blackbox testing and whitebox testing in the same test suite.</p>
<h2>Test automation</h2>
<p>Both black box and white box tests can be automated.  Different tools and techniques are applied for the different types of tests, but both are feasible and common.  <a title="Foundation Series on Continuous Integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">Continuous integration</a> is a development process that leverages test automation to reduce costs and improve quality.</p>
<p>There are more articles on software testing in our <a title="Software testing series introduction" href="http://tynerblain.com/blog/2006/01/10/software-testing-series-introduction/">Software Testing Series</a>.</p>
<h2>What book should I read to learn more?</h2>
<p><a title="Link to the ebook at Amazon" href="http://www.amazon.com/exec/obidos/ASIN/0672327988/tynerblain-20">Software Testing, by Ron Patton</a>.</p>
<p>Here&#8217;s a review from Randy Rice &#8220;Software Testing Consultant &#038; Trainer&#8221; (Oklahoma City, OK)</p>
<blockquote><p>Software Testing is a book oriented toward people just entering or considering the testing field, although there are nuggets of information that even seasoned professionals will find helpful. Perhaps the greatest value of this book would be a resource for test team leaders to give to their new testers or test interns. To date, I haven?t seen a book that gives a better introduction to software testing with this amount of coverage. Ron Patton has written this book at a very understandable level and gives practical examples of every test type he discusses in the book. Plus, Patton uses examples that are accessible to most people, such as basic Windows utilities.</p>
<p>I like the simplicity and practicality of this book. There are no complex formulas or processes to confuse the reader that may be getting into testing for the first time. However, the important of process is discussed. I also have to say a big THANK YOU to Ron Patton for drawing the distinction between QA and testing! Finally, the breadth of coverage in Software Testing is super. Patton covers not only the most important topics, such as basic functional testing, but also attribute testing, such as usability and compatibility. He also covers web-based testing and test automation ? and as in all topics covered in the book, Patton knew when to stop. If you want to drill deeper on any of the topics in this book, there are other fine books that can take you there!</p>
<p>I love this book because it is practical, gives a good introduction to software testing, and has some things that even experienced testers will find of interest. This book is also a tool to communicate what testing and QA are all about. This is something that test organizations need as they make the message to management, developers and users. No test library should be without a copy of Software Testing by Ron Patton!</p></blockquote>
<p>- &#8211; -</p>
<p>Check out the index of the <a title="Index of background topics in requirements and software" href="http://tynerblain.com/blog/foundation-series-index/"><em>Foundation Series</em> posts</a> for other introductory articles.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Foundation+Series%3A+Black+Box+and+White+Box+Software+Testing+http://bit.ly/110mmH+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/&amp;t=Foundation+Series%3A+Black+Box+and+White+Box+Software+Testing" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Use case series: UML 2.0 use case diagrams</title>
		<link>http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/</link>
		<comments>http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/#comments</comments>
		<pubDate>Mon, 26 Dec 2005 12:38:08 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Polls]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[actor]]></category>
		<category><![CDATA[actors]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[pros and cons]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[software process]]></category>
		<category><![CDATA[uml diagram]]></category>
		<category><![CDATA[UML Modeling]]></category>
		<category><![CDATA[use case analysis]]></category>
		<category><![CDATA[use case diagram]]></category>
		<category><![CDATA[use case matrix]]></category>
		<category><![CDATA[use case tutorial]]></category>
		<category><![CDATA[use cases]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[users]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/</guid>
		<description><![CDATA[
The UML way to organize and manage use cases.
Pros

Provides a high level view of the use cases in a system, solution, or application.
Clearly shows which actors perform which use cases, and how use cases combine to form business processes

Cons

Presents an “inside-out” view of the sytem. This description reflects “what it is” not “why it is” [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://sehlhorst.smugmug.com/photos/48777356-M.jpg" /></p>
<p><strong>The UML way to organize and manage use cases.</strong></p>
<p>Pros</p>
<ul>
<li>Provides a high level view of the use cases in a system, solution, or application.</li>
<li>Clearly shows which actors perform which use cases, and how use cases combine to form business processes</li>
</ul>
<p>Cons</p>
<ul>
<li>Presents an “inside-out” view of the sytem. This description reflects “what it is” not “<a title="the importance of asking why" href="http://tynerblain.com/blog/2005/12/13/everything-i-needed-to-know-i-forgot-in-kindergarden/">why it is</a>” &#8211; and it is easy to lose sight of why a particular use case is important.</li>
<li>Poor communication tool when speaking to users and stakeholders about why and when the system will do what it will do.</li>
<li>Time consuming to create and maintain</li>
</ul>
<p>Instead of duplicating the explanation and summary work already done by Chris at <a href="http://grillcheese.blogspot.com/">grillcheese.blogspot.com</a>, I’ll point you to his post, <a href="http://grillcheese.blogspot.com/2005/09/introduction-to-uml-2-use-case.html">Introduction to UML-2 use case diagrams</a>.  Agile modeling has <a href="http://www.agilemodeling.com/artifacts/useCaseDiagram.htm%29.">a detailed post on UML-2 use case diagrams</a>.<br />
There are ultimately four pieces of information you want to know about use cases.  UML diagrams will show you two of them.</p>
<ol>
<li><strong>Which actors perform a particular use case?</strong>  UML diagrams show this.</li>
<li><strong>Which use cases are combined to create a business process?</strong>  UML diagrams show this.</li>
<li><strong>When is a use case scheduled for availability?</strong> UML diagrams do not show this.</li>
<li><strong>Why are we doing a particular use case?</strong>  UML diagrams do not show this.</li>
</ol>
<p>Knowing that we can’t answer all 4 questions with a single communication tool, here’s what we should do:<br />
(1&#038;3) Create a <a title="Use cases as a scheduling tool" href="http://tynerblain.com/blog/2005/12/22/communicating-a-delivery-schedule-with-use-cases/">matrix view of use cases versus actors</a> to show which actors perform each use case, and when they will be available.<br />
<img title="use case matrix" alt="use case matrix" src="http://sehlhorst.smugmug.com/photos/51491861-M.jpg" /><br />
(2) Create a UML 2.0 use case diagram if you find that the benefits for your communication outweigh the costs of maintaining the diagrams.  In projects I’ve worked on in the past, a simple flow chart with use case names have been used.  These simple charts can be made in a fraction of the time, are more easily scannable, and present information more densely.  If you are managing requirements with a tool that automatically generates the diagrams, then do it &#8211; but don’t spend a lot of time on them.  A flowchart takes almost no time to draw, and communicates the information just as effectively (and more succinctly).  Suggestion &#8211; use the flow chart.<br />
(4) Ultimately, UML diagrams (often referred to as “use case cartoons”) focus your attention on what you are building, at the expense of losing focus on why you are building it.  Create a mapping or maintain links (traceability) from use cases to goals.</p>
<p>The <a href="http://tynerblain.com/blog/2005/12/13/everything-i-needed-to-know-i-forgot-in-kindergarden/"><em>why</em></a> of the use case is the most important information.  Don’t let use case cartoons distract you from it.</p>
<p><strong>Poll: Which use case format do you use?</strong></p>
<p><!--adsense#dpoll_1408--></p>
<p>If you answered <em>&#8216;Other&#8217;</em> please comment and let us know what you use!<br />
<strong>Quick links to posts in this series</strong></p>
<ul>
<li><a title="Introduction to the series on use cases" href="http://tynerblain.com/blog/2005/12/18/use-case-series-introduction/">Use case series: Introduction</a></li>
<li><a title="Pros and cons of Formal use cases" href="http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/">Use case series: Formal use case</a></li>
<li><a title="Pros and cons of informal use cases" href="http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/">Use case series: Informal use case</a></li>
<li><a title="Pros and cons of uml use case diagrams" href="http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/">Use case series: UML 2.0 use case diagrams</a></li>
</ul>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Use+case+series%3A+UML+2.0+use+case+diagrams+http://bit.ly/3Bgz5B+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/&amp;t=Use+case+series%3A+UML+2.0+use+case+diagrams" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Use case series: Informal Use Case</title>
		<link>http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/</link>
		<comments>http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/#comments</comments>
		<pubDate>Thu, 22 Dec 2005 01:49:31 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Polls]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[brief use case]]></category>
		<category><![CDATA[informal use case]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[use case analysis]]></category>
		<category><![CDATA[use case article]]></category>
		<category><![CDATA[use case tutorial]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/</guid>
		<description><![CDATA[The informal use case is the tool of the Agile Requirements Manager. It is a paragraph describing the user’s goals and steps. Also referred to as a basic use case.]]></description>
			<content:encoded><![CDATA[<p><img src="http://sehlhorst.smugmug.com/photos/48777369-M.jpg" /></p>
<p>The informal use case is the tool of the Agile Requirements Manager. It is a paragraph describing the user’s goals and steps. Also referred to as a <em>basic</em> use case.</p>
<p><strong> Pros:</strong></p>
<ul>
<li>Easy to create – quick development, iteration, and collaboration. This enables a rapid approach to documenting use cases, and minimizes the cost of developing the use cases.</li>
<li>When done correctly, yields the most bang for the      buck of any use case approach.</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Challenging to be rigorous – the short format makes it difficult to capture all the relevant information (and difficult to avoid capturing irrelevant information).</li>
<li>Lack of consistent structure – can be transition from      use case to use case, since the format is free-form</li>
<li>Capturing the right level of content for <em>your</em> team can be tricky.</li>
</ul>
<p>Note that the paragraph format can also be replaced by a numbered series of steps – the key differentiator of this form relative to a <em>formal</em> use case is the lack of structured fields for “everything else” about a use case (preconditions, assumptions, etc).</p>
<p>An example of the <a href="http://www.agilemodeling.com/artifacts/systemUseCase.htm#FigureI1"><em>informal</em> use case format</a> in the wild, in direct contrast to <a href="http://www.agilemodeling.com/artifacts/systemUseCase.htm#Figure1">a <em>formal</em> format</a> for the same use case.</p>
<p>[<strong>Update 2007/01/20</strong>: Download our <a title="Free informal use case template" href="http://tynerblain.com/blog/2007/01/19/informal-use-case-template/">free informal use case template</a> today]</p>
<p>Rosenberg and Scott published a series of articles about incorporating use cases into their ICONIX software development process – the first article is here –<em> <a href="http://www.sdmagazine.com/documents/s=737/sdm0012c/0012c.htm">Driving Design with Use Cases</a></em> free subscription. They describe a “semi-formal” use case format, which is between informal and formal. They also describe ICONIX as a process that lives in the space between RUP (Rational Unified Process) and XP (Extreme Programming). Their process is a UML-centric approach to system representation, which incorporates the use case information into a structured and larger framework.</p>
<p>The rest of the articles in the series are:</p>
<p><a href="http://www.sdmagazine.com/documents/s=732/sdm0104c/articles/2001/0101//documents/sdm0101c/"><em>Driving Design: The Process Domain</em></a></p>
<p><a href="http://www.sdmagazine.com/documents/s=732/sdm0104c/articles/2001/0102//documents/sdm0102c/"><em>Top Ten Use Case Mistakes</em></a></p>
<p><a href="http://www.sdmagazine.com/documents/s=732/sdm0104c/articles/2001/0103//documents/sdm0103c/"><em>Successful Robustness Analysis</em></a></p>
<p><a href="http://www.sdmagazine.com/documents/s=732/sdm0104c/0104c.htm"><em>Sequence Diagrams, One Step at a Time</em></a></p>
<p>The goal in this agile approach is to be “just barely good enough.”</p>
<p>That does range an interesting question – <em>is good enough good enough?</em>  And how do we define it?  There are several factors that weigh into making this decision.</p>
<ul>
<li>Domain expertise of the current team, and are there      any switch-hitters?</li>
<li>Amount of time the current team has spent working      together (and how well they know each other).</li>
<li>Geographic and temporal displacement of team members (are we working through emails and document repositories, or are we scribbling on white-boards together”)</li>
<li>Language barriers, pedants and mavens – the      personalities on our team</li>
</ul>
<p>The bottom line is that it all comes down to communication. If brevity is inhibiting our ability to be unambiguous, we should use a <em>semi-formal</em> or <em>formal</em> format for our use cases.  If project schedule requires, and our team enables rapid iteration, we should use <em>informal</em> structure for our use cases.<br />
<strong>Quick links to posts in this series</strong></p>
<ul>
<li><a title="Introduction to the series on use cases" href="http://tynerblain.com/blog/2005/12/18/use-case-series-introduction/">Use  case series: Introduction</a></li>
<li><a title="Pros and cons of Formal use cases" href="http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/">Use  case series: Formal use case</a></li>
<li><a title="Pros and cons of informal use cases" href="http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/">Use  case series: Informal use case</a></li>
<li><a title="Pros and cons of uml use case diagrams" href="http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/">Use  case series: UML 2.0 use case diagrams</a></li>
</ul>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Use+case+series%3A+Informal+Use+Case+http://bit.ly/Zs1wp+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/&amp;t=Use+case+series%3A+Informal+Use+Case" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Use Case Series: Formal Use Case</title>
		<link>http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/</link>
		<comments>http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/#comments</comments>
		<pubDate>Tue, 20 Dec 2005 06:43:35 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Polls]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[formal use case]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[tyner blain]]></category>
		<category><![CDATA[tynerblain]]></category>
		<category><![CDATA[use case analysis]]></category>
		<category><![CDATA[use case series]]></category>
		<category><![CDATA[use case tutorial]]></category>
		<category><![CDATA[use cases]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/</guid>
		<description><![CDATA[This is the classic use case as described by someone who talks about Software Engineering. All of the training classes (other than Agile classes) that I’ve been to teach formal use case development as a component in a system of requirements management.]]></description>
			<content:encoded><![CDATA[<p><img src="http://sehlhorst.smugmug.com/photos/48777360-M.jpg" /></p>
<p>This is the classic use case as described by someone who talks about <em>Software Engineering</em>.  All of the training classes (other than <em>Agile</em> classes) that I’ve been to teach formal use case development as a component in a system of requirements management.  Here&#8217;s an introductory article on <a title="How to read a formal use case" href="http://tynerblain.com/blog/2006/06/26/foundation-series-how-to-read-a-formal-use-case/">how to read a formal use case</a>.</p>
<p><strong> Pros:</strong></p>
<ul>
<li>Detailed      information about use cases, making it easy to estimate the cost of      implementation.</li>
<li>Thorough      coverage of the use cases is influenced by the use of a template.</li>
<li>Easy      for readers to absorb.  The      structure of the document makes scanning easy, and also helps targeted <em>lookups</em> when a reader needs a      specific piece of information.</li>
<li>Consistency      with other use cases is much easier to assure when using a template.</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Expensive to maintain. Mapping a “use case” to the template requires some effort. Since formal use cases contain more (explicit) information than other use cases, there is more content to document, validate and modify. More content equals more cost (of maintenance).</li>
</ul>
<p>The formal, or classic use case, is a tool used to gather structured information about how users will use the software. Formal use cases are gathered in a template, which structures the information. While this structure can vary from company to company, or even project to project, there are a few common and critical sections to the structure. The two main benefits of having the structure are that it helps with thoroughness (much harder to leave a field blank than it is to forget about it), and it helps with scanning by readers of the document.</p>
<p>Some common elements in a use case template:</p>
<ul>
<li><strong>Actor      </strong>– The person or people who will perform the steps of this use case.</li>
<li><strong>Preconditions      </strong>– A description of the relevant and non-trivial state(s) of the system      prior to the use case starting.</li>
<li><strong>Normal course</strong> – A description of the use case itself. This description can either be in narrative form, or a numbered list (1..N) of specific user steps. When a use case (such as “User approves/rejects customer requests”) has more than one way that a user can accomplish the needed steps, the most common way is shown here – only a single path is shown.</li>
<li><strong>Alternate courses</strong> – Descriptions of alternatives to, or deviations from the normal course. For example, the most common course might be to view the oldest unaddressed customer requests. An alternate course may be to view the unaddressed requests from the largest customers.</li>
<li><strong>Exception      courses</strong> – Descriptions of what the user will experience when something      goes wrong.</li>
<li><strong>Post-conditions</strong>      – Description of the affected portions of the state of the system after      the use case has completed.</li>
<li><strong>Frequency      of use</strong> – An estimate of how often a particular use case will be exercised.</li>
<li><strong>Assumptions      </strong>– Any assumptions that are implicit in the definition of the use case.</li>
</ul>
<p>The formal use case can be considered as a contract, in that if the preconditions are met prior to initiating the use case, the post-conditions will be met after its completion. This contract provides a great framework for defining the functional requirements required to support the use case.  Rodolfo Ruiz posts a good approach and insights on pre and post-conditions in <a href="http://rodolforuiz.blogspot.com/2005/09/some-thoughts-on-use-cases.html"><em>Some thoughts on use cases</em></a>.</p>
<p><strong>Quick links to posts in this series</strong></p>
<ul>
<li><a title="Introduction to the series on use cases" href="http://tynerblain.com/blog/2005/12/18/use-case-series-introduction/">Use Case Series: Introduction</a></li>
<li><a title="Pros and cons of Formal use cases" href="http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/">Use Case Series: Formal Use Case</a></li>
<li><a title="Pros and cons of informal use cases" href="http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/">Use Case Series: Informal Use Case</a></li>
<li><a title="Pros and cons of uml use case diagrams" href="http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/">Use Case Series: UML 2.0 Use Case Diagrams</a></li>
</ul>
<p><strong>Some references</strong></p>
<p>Here are some examples of use case templates in use in the real world</p>
<p>From <a href="http://www.processimpact.com/process_assets/use_case_template.doc">process impact</a> .</p>
<p>From <a href="http://members.aol.com/acockburn/papers/uctempla.htm">Alistair Cockburn</a>.<br />
Very detailed explanation from Alistair Cockburn on <a href="http://alistair.cockburn.us/crystal/articles/sucwg/structuringucswithgoals.htm">how to develop a formal use case.</a></p>
<p>A <a href="http://www.medinfo.rochester.edu/hl7/v3.0/mdf_02.htm">detailed document</a> from the HL7 Working group on how to approach the process of writing formal use cases.</p>
<p>From <a title="Sample formal use case" href="http://blogs.infosupport.com/harryn/articles/3340.aspx">Harry Nieboer</a>.</p>
<p>Related blog post</p>
<p><a href="http://www.carnegiequality.com/2005/11/15/why-use-use-cases"><em>Why use use cases?</em></a>  from the <a href="http://www.carnegiequality.com/">Carnegie Quality</a> blog</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Use+Case+Series%3A+Formal+Use+Case+http://bit.ly/HjbFN+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/&amp;t=Use+Case+Series%3A+Formal+Use+Case" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
