<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: The capture-recapture code inspection</title>
	<atom:link href="http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/feed/" rel="self" type="application/rss+xml" />
	<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/</link>
	<description>Essays on the Continuous Delivery of High Quality Information Systems</description>
	<pubDate>Sat, 06 Sep 2008 00:05:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Bernie Thompson</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2094</link>
		<dc:creator>Bernie Thompson</dc:creator>
		<pubDate>Tue, 11 Mar 2008 19:37:20 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2094</guid>
		<description>A sample spreadsheet template for this method is available from us at http://leansoftwareengineering.com/capture-recapture-inspection/</description>
		<content:encoded><![CDATA[<p>A sample spreadsheet template for this method is available from us at <a href="http://leansoftwareengineering.com/capture-recapture-inspection/" rel="nofollow">http://leansoftwareengineering.....nspection/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Corey Ladas</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2093</link>
		<dc:creator>Corey Ladas</dc:creator>
		<pubDate>Tue, 11 Mar 2008 17:04:50 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2093</guid>
		<description>@Michael,

Sometimes terminology can help clarify a point.  The practice I described here as a review would be more accurately described as an inspection, the purpose of which is defect removal.  The benefits you describe are usually conferred by a "walkthrough".  Unfortunately, both these types of meetings get lumped together under the ambiguous category of "review".  My workflows usually contain at least one walkthrough, in addition to an inspection.  Efficient walkthroughs might be a good topic for another article!
</description>
		<content:encoded><![CDATA[<p>@Michael,</p>
<p>Sometimes terminology can help clarify a point.  The practice I described here as a review would be more accurately described as an inspection, the purpose of which is defect removal.  The benefits you describe are usually conferred by a &#8220;walkthrough&#8221;.  Unfortunately, both these types of meetings get lumped together under the ambiguous category of &#8220;review&#8221;.  My workflows usually contain at least one walkthrough, in addition to an inspection.  Efficient walkthroughs might be a good topic for another article!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Grossberg</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2084</link>
		<dc:creator>Joe Grossberg</dc:creator>
		<pubDate>Mon, 10 Mar 2008 20:32:21 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2084</guid>
		<description>It's an interesting metric, but I can think of two problems:

* the visibility issue mentioned above -- people might always catch the most obvious bugs, in the same way that trappers will catch the animals most likely to get trapped (gullible, less cautious, hungrier for the bait, etc.)

* as you say, "The trick to making the population estimate work is the statistical independence of the samples." If two programmers have very similar approaches to smoking out bugs, the results will be akin to two biologists who tend to place traps in similar areas.</description>
		<content:encoded><![CDATA[<p>It&#8217;s an interesting metric, but I can think of two problems:</p>
<p>* the visibility issue mentioned above &#8212; people might always catch the most obvious bugs, in the same way that trappers will catch the animals most likely to get trapped (gullible, less cautious, hungrier for the bait, etc.)</p>
<p>* as you say, &#8220;The trick to making the population estimate work is the statistical independence of the samples.&#8221; If two programmers have very similar approaches to smoking out bugs, the results will be akin to two biologists who tend to place traps in similar areas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Chermside</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2082</link>
		<dc:creator>Michael Chermside</dc:creator>
		<pubDate>Mon, 10 Mar 2008 12:55:54 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2082</guid>
		<description>A really brilliant idea! I think this is an excellent approach for measuring unseen bug counts. The only method I knew of previously was based on the assumption that bugs found per day of QA in a given piece of code followed an exponential decay. This method had the property (good or bad... your call) that it *always* predicted there were more bugs to be found.

But I want to vigorously disagree with your final paragraph. Your thesis statement: "There really is only one legitimate purpose for a code review: to find defects." is simply false. Finding defects is ONE benefit of performing code reviews, but it is one of the more minor benefits.

Bigger benefits include: (1) increased communication among team members: they actually talk about the code to each other, forcing people to describe and defend their commonly used idioms and practices, (2) mentoring opportunities, (3) increasing reuse due to awareness of different parts of the code: if you've never seen a piece of code, how likely are you to reuse it; conversely if you've code reviewed something you'll likely remember it the next time you need that subroutine, (4) no piece of code ever languishes unmaintainable because only a single developer understands how it works. There are other benefits (mostly centered around communication and understanding), but this gives you the flavor.

I DO agree that beyond a certain point code reviews are no longer improving communication and they can become "expensive and bureaucratic". The solution is the same one that fixes "carpenter's thumb": if it hurts (isn't benefiting the code or the team), then *stop doing it*!</description>
		<content:encoded><![CDATA[<p>A really brilliant idea! I think this is an excellent approach for measuring unseen bug counts. The only method I knew of previously was based on the assumption that bugs found per day of QA in a given piece of code followed an exponential decay. This method had the property (good or bad&#8230; your call) that it *always* predicted there were more bugs to be found.</p>
<p>But I want to vigorously disagree with your final paragraph. Your thesis statement: &#8220;There really is only one legitimate purpose for a code review: to find defects.&#8221; is simply false. Finding defects is ONE benefit of performing code reviews, but it is one of the more minor benefits.</p>
<p>Bigger benefits include: (1) increased communication among team members: they actually talk about the code to each other, forcing people to describe and defend their commonly used idioms and practices, (2) mentoring opportunities, (3) increasing reuse due to awareness of different parts of the code: if you&#8217;ve never seen a piece of code, how likely are you to reuse it; conversely if you&#8217;ve code reviewed something you&#8217;ll likely remember it the next time you need that subroutine, (4) no piece of code ever languishes unmaintainable because only a single developer understands how it works. There are other benefits (mostly centered around communication and understanding), but this gives you the flavor.</p>
<p>I DO agree that beyond a certain point code reviews are no longer improving communication and they can become &#8220;expensive and bureaucratic&#8221;. The solution is the same one that fixes &#8220;carpenter&#8217;s thumb&#8221;: if it hurts (isn&#8217;t benefiting the code or the team), then *stop doing it*!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul W. Homer</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2080</link>
		<dc:creator>Paul W. Homer</dc:creator>
		<pubDate>Mon, 10 Mar 2008 03:30:03 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2080</guid>
		<description>Way back, someone once told me that in C, for example there was an expectation of one bug for every 200 lines of code (for normal or better coders). I've always kept track of the number of 'new' and changed lines going into any implementation. That frequently leaves me in testing with some 'expectation' for the number of bugs we are looking for. I'll go up or down depending on the coders and the complexity of the changes. If the results in my head are way over or way under, I'll generally start looking around for reasons. 


Paul.</description>
		<content:encoded><![CDATA[<p>Way back, someone once told me that in C, for example there was an expectation of one bug for every 200 lines of code (for normal or better coders). I&#8217;ve always kept track of the number of &#8216;new&#8217; and changed lines going into any implementation. That frequently leaves me in testing with some &#8216;expectation&#8217; for the number of bugs we are looking for. I&#8217;ll go up or down depending on the coders and the complexity of the changes. If the results in my head are way over or way under, I&#8217;ll generally start looking around for reasons. </p>
<p>Paul.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Corey Ladas</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2066</link>
		<dc:creator>Corey Ladas</dc:creator>
		<pubDate>Sat, 08 Mar 2008 05:49:59 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2066</guid>
		<description>Hi Michael,

Capture-recapture is a practice associated with SEI Team Software Process.  Mature TSP teams have been documented to produce code with quality on a scale of 10 defects per million lines of code.  Different practices tend to discover different types of defects, so TSP/PSP employs multiple, complementary practices, with feedback and statistical analysis to systematically eliminate the root causes of defect insertion.  Inspections tend to find some kinds of things, static analysis tends to finds other kinds of things, etc.  But then there also can be correlations between the results of different practices, and that's where things get really interesting.

Then your goal is limited to the more manageable problem of:

&lt;em&gt;Make your inspections good at finding the things that inspections are good at finding.  And make them efficient.&lt;/em&gt;

One of the things we're trying to do is to simplify some of the methods of TSP/PSP for the Agile audience, and provide a gentler learning curve.  Of course, we think that Lean provides some of the right tools for that, and deep down, we know that TSP and Lean have Deming and SPC in common.

&lt;a href="http://www.ddj.com/architect/184415470" rel="nofollow"&gt;http://www.ddj.com/architect/184415470&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Hi Michael,</p>
<p>Capture-recapture is a practice associated with SEI Team Software Process.  Mature TSP teams have been documented to produce code with quality on a scale of 10 defects per million lines of code.  Different practices tend to discover different types of defects, so TSP/PSP employs multiple, complementary practices, with feedback and statistical analysis to systematically eliminate the root causes of defect insertion.  Inspections tend to find some kinds of things, static analysis tends to finds other kinds of things, etc.  But then there also can be correlations between the results of different practices, and that&#8217;s where things get really interesting.</p>
<p>Then your goal is limited to the more manageable problem of:</p>
<p><em>Make your inspections good at finding the things that inspections are good at finding.  And make them efficient.</em></p>
<p>One of the things we&#8217;re trying to do is to simplify some of the methods of TSP/PSP for the Agile audience, and provide a gentler learning curve.  Of course, we think that Lean provides some of the right tools for that, and deep down, we know that TSP and Lean have Deming and SPC in common.</p>
<p><a href="http://www.ddj.com/architect/184415470" rel="nofollow">http://www.ddj.com/architect/184415470</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2065</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Sat, 08 Mar 2008 02:05:14 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-2065</guid>
		<description>Very elegant idea, but what about the "visibility" of bugs?  It seems to me that some bugs are very easy to catch and some only manifest themseleves in very specialized situations.  This ordering of the bugs in terms of their visibility or ease of detection could lead to a false assumption that two independent testers have found more of the bugs than they have.  

Do you have any experience with or data about this phenonmenon?  Also, have you checked the results of this heuristic against a more in depth inspection to see what its success rate is?</description>
		<content:encoded><![CDATA[<p>Very elegant idea, but what about the &#8220;visibility&#8221; of bugs?  It seems to me that some bugs are very easy to catch and some only manifest themseleves in very specialized situations.  This ordering of the bugs in terms of their visibility or ease of detection could lead to a false assumption that two independent testers have found more of the bugs than they have.  </p>
<p>Do you have any experience with or data about this phenonmenon?  Also, have you checked the results of this heuristic against a more in depth inspection to see what its success rate is?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: J.D. Meier's Blog</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-53</link>
		<dc:creator>J.D. Meier's Blog</dc:creator>
		<pubDate>Fri, 08 Jun 2007 18:16:28 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-53</guid>
		<description>&lt;strong&gt;Get Lean, Eliminate Waste...&lt;/strong&gt;

If you want to tune your software engineering, take a look at Lean . Lean is a great discipline with...</description>
		<content:encoded><![CDATA[<p><strong>Get Lean, Eliminate Waste&#8230;</strong></p>
<p>If you want to tune your software engineering, take a look at Lean . Lean is a great discipline with&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Arnold</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-51</link>
		<dc:creator>Joe Arnold</dc:creator>
		<pubDate>Wed, 06 Jun 2007 01:00:23 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-51</guid>
		<description>This is totally awesome.

It might be something that could be built into bug tracking tools (if you use one). Most tools have a 'Merge Duplicate' feature. Perhaps a 'Hey, I found it too' feature could be used to capture data. Although that sounds like it would pollute the statistical independence.

Also, I disagree with the sole reason for code reviews (which is to find defects). I've also seen it used (in a very cheap and un-bureaucratic way) to share knowledge of system changes. 

-Joe Arnold</description>
		<content:encoded><![CDATA[<p>This is totally awesome.</p>
<p>It might be something that could be built into bug tracking tools (if you use one). Most tools have a &#8216;Merge Duplicate&#8217; feature. Perhaps a &#8216;Hey, I found it too&#8217; feature could be used to capture data. Although that sounds like it would pollute the statistical independence.</p>
<p>Also, I disagree with the sole reason for code reviews (which is to find defects). I&#8217;ve also seen it used (in a very cheap and un-bureaucratic way) to share knowledge of system changes. </p>
<p>-Joe Arnold</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Noah Iliinsky</title>
		<link>http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-50</link>
		<dc:creator>Noah Iliinsky</dc:creator>
		<pubDate>Tue, 05 Jun 2007 22:24:04 +0000</pubDate>
		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/06/05/the-capture-recapture-code-inspection/#comment-50</guid>
		<description>Interesting. It's sort of an inversion of the the logic for calculating how many combinations of n items can be selected from a field of N. 

As n approaches N, the number of combinations decreases, and the contents of n1 and n2 must necessarily become similar. 

The proof is left as an exercise to the reader. ;-)</description>
		<content:encoded><![CDATA[<p>Interesting. It&#8217;s sort of an inversion of the the logic for calculating how many combinations of n items can be selected from a field of N. </p>
<p>As n approaches N, the number of combinations decreases, and the contents of n1 and n2 must necessarily become similar. </p>
<p>The proof is left as an exercise to the reader. <img src='http://leansoftwareengineering.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.466 seconds -->
