<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Software sins of omission</title>
	<atom:link href="http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/</link>
	<description>The blog of John D. Cook</description>
	<lastBuildDate>Sat, 11 Feb 2012 01:10:06 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: ARaybould</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-117682</link>
		<dc:creator>ARaybould</dc:creator>
		<pubDate>Sun, 27 Nov 2011 15:15:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-117682</guid>
		<description>Having a high percentage of errors of omission does not strike me as surprising when we start from a blank state and add code until we seem to have finished. I would think that coding by modifying or otherwise reusing existing code would lead to a higher proportion of errors of commission (case in point: the failure of the first Ariane 5 launch.) Perhaps the difference between Marick&#039;s and Grass&#039; figures, if statistically significant, can be attributed to different patterns of development over time or applications.</description>
		<content:encoded><![CDATA[<p>Having a high percentage of errors of omission does not strike me as surprising when we start from a blank state and add code until we seem to have finished. I would think that coding by modifying or otherwise reusing existing code would lead to a higher proportion of errors of commission (case in point: the failure of the first Ariane 5 launch.) Perhaps the difference between Marick&#8217;s and Grass&#8217; figures, if statistically significant, can be attributed to different patterns of development over time or applications.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nunc dimittis &#8212; The Endeavour</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-115976</link>
		<dc:creator>Nunc dimittis &#8212; The Endeavour</dc:creator>
		<pubDate>Sat, 19 Nov 2011 16:58:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-115976</guid>
		<description>[...] Software sins of omission (Software and the Book of Common Prayer) Doing good work with bad tools (Charlie Parker story) Dave Brubeck mass (Mass composed by a jazz icon) [...]</description>
		<content:encoded><![CDATA[<p>[...] Software sins of omission (Software and the Book of Common Prayer) Doing good work with bad tools (Charlie Parker story) Dave Brubeck mass (Mass composed by a jazz icon) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Marick</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-59079</link>
		<dc:creator>Brian Marick</dc:creator>
		<pubDate>Wed, 05 Jan 2011 00:54:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-59079</guid>
		<description>Back when I had dreams of a PhD, I did a survey of many classifications of errors. 75% is on the high side for faults of omission. That&#039;s not to say that I&#039;m downplaying them - on the contrary, they&#039;ve &lt;a href=&quot;http://www.exampler.com/testing-com/writings/omissions.html&quot; rel=&quot;nofollow&quot;&gt;obsessed me&lt;/a&gt; for many years. But we should realize the % of faults of omission is pretty context-dependent.

Regarding Jester and other weak-mutation coverage tools, I didn&#039;t find them wildly &lt;a href=&quot;http://www.exampler.com/testing-com/writings/experience.pdf&quot; rel=&quot;nofollow&quot;&gt;successful&lt;/a&gt; at signaling faults of omission. Most of the current crop of mutation tools are fairly limited in the kind of program transformations they can do. My GCT tool did a lot more, but I concluded that was a blind alley.</description>
		<content:encoded><![CDATA[<p>Back when I had dreams of a PhD, I did a survey of many classifications of errors. 75% is on the high side for faults of omission. That&#8217;s not to say that I&#8217;m downplaying them &#8211; on the contrary, they&#8217;ve <a href="http://www.exampler.com/testing-com/writings/omissions.html" rel="nofollow">obsessed me</a> for many years. But we should realize the % of faults of omission is pretty context-dependent.</p>
<p>Regarding Jester and other weak-mutation coverage tools, I didn&#8217;t find them wildly <a href="http://www.exampler.com/testing-com/writings/experience.pdf" rel="nofollow">successful</a> at signaling faults of omission. Most of the current crop of mutation tools are fairly limited in the kind of program transformations they can do. My GCT tool did a lot more, but I concluded that was a blind alley.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Lemire</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-59068</link>
		<dc:creator>Daniel Lemire</dc:creator>
		<pubDate>Tue, 04 Jan 2011 23:33:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-59068</guid>
		<description>Ironically, here&#039;s what I get when I visit Glass&#039; web page:

http://www.robertlglass.com/

&quot;user warning: Incorrect key file for table &#039;node&#039;&quot;

;-)

Obviously, he didn&#039;t plan for this type of error, otherwise, we would get a user-friendly message.</description>
		<content:encoded><![CDATA[<p>Ironically, here&#8217;s what I get when I visit Glass&#8217; web page:</p>
<p><a href="http://www.robertlglass.com/" rel="nofollow">http://www.robertlglass.com/</a></p>
<p>&#8220;user warning: Incorrect key file for table &#8216;node&#8217;&#8221;</p>
<p> <img src='http://www.johndcook.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Obviously, he didn&#8217;t plan for this type of error, otherwise, we would get a user-friendly message.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Davis</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-30830</link>
		<dc:creator>John Davis</dc:creator>
		<pubDate>Fri, 15 Jan 2010 15:24:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-30830</guid>
		<description>Interesting posting but a slight error I think in your definition:

&quot;The things left undone are called sins of omission; things which ought not to have been done are called sins of commission.&quot;

Sins of comission are usually defined as things which we know are wrong but we do them anyway ! It is the knowledge of its wrongness that is the key, I&#039;m not sure that too many software bugs ever fall into this category - well I hope not anyway !</description>
		<content:encoded><![CDATA[<p>Interesting posting but a slight error I think in your definition:</p>
<p>&#8220;The things left undone are called sins of omission; things which ought not to have been done are called sins of commission.&#8221;</p>
<p>Sins of comission are usually defined as things which we know are wrong but we do them anyway ! It is the knowledge of its wrongness that is the key, I&#8217;m not sure that too many software bugs ever fall into this category &#8211; well I hope not anyway !</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gene Harris</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-30760</link>
		<dc:creator>Gene Harris</dc:creator>
		<pubDate>Thu, 14 Jan 2010 04:23:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-30760</guid>
		<description>Thanks for this posting.  It reminded me of a paper I wrote for Pentasafe a few years ago: Software developers are [usually] bad software testers.</description>
		<content:encoded><![CDATA[<p>Thanks for this posting.  It reminded me of a paper I wrote for Pentasafe a few years ago: Software developers are [usually] bad software testers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Filip van Laenen</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-30661</link>
		<dc:creator>Filip van Laenen</dc:creator>
		<pubDate>Tue, 12 Jan 2010 21:41:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-30661</guid>
		<description>You should try mutation testing, like e.g. Heckle does for Ruby. It&#039;s amazing how many errors it can find, both sins of omission and commission. The tool is actually pretty annoying when you start to use it (I had a lot of reactions of the type “but why would you try to do that?”) but after a while you don&#039;t want to work without it any more. Unfortunately, it doesn&#039;t work for user interfaces :-(</description>
		<content:encoded><![CDATA[<p>You should try mutation testing, like e.g. Heckle does for Ruby. It&#8217;s amazing how many errors it can find, both sins of omission and commission. The tool is actually pretty annoying when you start to use it (I had a lot of reactions of the type “but why would you try to do that?”) but after a while you don&#8217;t want to work without it any more. Unfortunately, it doesn&#8217;t work for user interfaces <img src='http://www.johndcook.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Wolever</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-30642</link>
		<dc:creator>David Wolever</dc:creator>
		<pubDate>Tue, 12 Jan 2010 16:38:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-30642</guid>
		<description>The more I&#039;m writing code, the more I believe this. I used to be skeptical of the &lt;a href=&quot;http://www.joelonsoftware.com/articles/Wrong.html&quot; rel=&quot;nofollow&quot;&gt;suggestion that&lt;/a&gt; &lt;a href=&quot;http://blogs.msdn.com/oldnewthing/archive/2005/01/14/352949.aspx&quot; rel=&quot;nofollow&quot;&gt;exceptions are bad&lt;/a&gt;… But, for exactly the reason you&#039;re talking about here, I&#039;ve now come to see the light.

This is actually one of the features I really, really like about languages which are based on pattern matching: it&#039;s a lot easier to notice when error cases aren&#039;t handled. For example, it only takes a basic knowledge of Erlang to see that:
&lt;code&gt;
case file:open(SomeFile) of
    { ok, File } -&gt; print_lines_in(File).
&lt;/code&gt;
Is very obviously missing &lt;code&gt;{ error, _ }&lt;/code&gt; error handling.

But, given roughly the same Python code:
&lt;code&gt;
file = open(some_file)
print_lines_in(file)
&lt;/code&gt;
It&#039;s a lot harder to see that an error handler is missing.</description>
		<content:encoded><![CDATA[<p>The more I&#8217;m writing code, the more I believe this. I used to be skeptical of the <a href="http://www.joelonsoftware.com/articles/Wrong.html" rel="nofollow">suggestion that</a> <a href="http://blogs.msdn.com/oldnewthing/archive/2005/01/14/352949.aspx" rel="nofollow">exceptions are bad</a>… But, for exactly the reason you&#8217;re talking about here, I&#8217;ve now come to see the light.</p>
<p>This is actually one of the features I really, really like about languages which are based on pattern matching: it&#8217;s a lot easier to notice when error cases aren&#8217;t handled. For example, it only takes a basic knowledge of Erlang to see that:<br />
<code><br />
case file:open(SomeFile) of<br />
    { ok, File } -&gt; print_lines_in(File).<br />
</code><br />
Is very obviously missing <code>{ error, _ }</code> error handling.</p>
<p>But, given roughly the same Python code:<br />
<code><br />
file = open(some_file)<br />
print_lines_in(file)<br />
</code><br />
It&#8217;s a lot harder to see that an error handler is missing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Rodrigues</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-30641</link>
		<dc:creator>Kevin Rodrigues</dc:creator>
		<pubDate>Tue, 12 Jan 2010 16:30:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-30641</guid>
		<description>Considering that it is difficult to test all the logical paths that the software can take, perhaps it is better to have beta testing by the users and then note down the issues that they faced and what improvements they would want. This can be done faster by prototyping or tracer bullet method to pin down as close as possible what the users actually need i.e what all logical paths are going to be used in the field. Once this is done, making the necessary implementations, reviews and testing would be much more easier because of their concreteness.</description>
		<content:encoded><![CDATA[<p>Considering that it is difficult to test all the logical paths that the software can take, perhaps it is better to have beta testing by the users and then note down the issues that they faced and what improvements they would want. This can be done faster by prototyping or tracer bullet method to pin down as close as possible what the users actually need i.e what all logical paths are going to be used in the field. Once this is done, making the necessary implementations, reviews and testing would be much more easier because of their concreteness.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-30633</link>
		<dc:creator>John</dc:creator>
		<pubDate>Tue, 12 Jan 2010 14:18:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-30633</guid>
		<description>Mat, I agree with you that TDD could help reduce sins of omission. It&#039;s easier to think about what needs to be done when you don&#039;t (yet) need to implement it. But after-the-fact unit testing won&#039;t help as much. If you write your code first, it&#039;s natural to see your code base as your to-do list for writing tests. In that case you&#039;re mostly going to write tests that correspond to code you&#039;ve written, though a few more logic paths may come to mind in the process.</description>
		<content:encoded><![CDATA[<p>Mat, I agree with you that TDD could help reduce sins of omission. It&#8217;s easier to think about what needs to be done when you don&#8217;t (yet) need to implement it. But after-the-fact unit testing won&#8217;t help as much. If you write your code first, it&#8217;s natural to see your code base as your to-do list for writing tests. In that case you&#8217;re mostly going to write tests that correspond to code you&#8217;ve written, though a few more logic paths may come to mind in the process.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mat roberts</title>
		<link>http://www.johndcook.com/blog/2010/01/12/software-sins-of-omission/comment-page-1/#comment-30629</link>
		<dc:creator>mat roberts</dc:creator>
		<pubDate>Tue, 12 Jan 2010 13:58:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=4163#comment-30629</guid>
		<description>My experience when writing code test first, is that it actually help a lot with error conditions, and other sins of omission.  The process just helps me think much more clearly about what can go wrong.  It also forces you to right code  in such a way that error conditions can be simulated.  So I don&#039;t entirely agree with you that Unit Testing (or a least TDD) doesn&#039;t help with sins of omission.  

You are of course right though that Unit Testing won&#039;t stop all bugs, so review and also exploratory testing are still very important.</description>
		<content:encoded><![CDATA[<p>My experience when writing code test first, is that it actually help a lot with error conditions, and other sins of omission.  The process just helps me think much more clearly about what can go wrong.  It also forces you to right code  in such a way that error conditions can be simulated.  So I don&#8217;t entirely agree with you that Unit Testing (or a least TDD) doesn&#8217;t help with sins of omission.  </p>
<p>You are of course right though that Unit Testing won&#8217;t stop all bugs, so review and also exploratory testing are still very important.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

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

