<?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></title>
	<atom:link href="http://www.kim-herzig.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kim-herzig.de</link>
	<description>Kim Herzig &#124; Software Engineering Chair &#124; Saarland University</description>
	<lastBuildDate>Sat, 05 May 2012 18:14:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Fuzzing with Code Fragments @USENIX Security 2012</title>
		<link>http://www.kim-herzig.de/2012/04/27/fuzzing-with-code-fragments-usenix-security-2012/</link>
		<comments>http://www.kim-herzig.de/2012/04/27/fuzzing-with-code-fragments-usenix-security-2012/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 08:03:10 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=859</guid>
		<description><![CDATA[Fuzz testing is an automated technique providing random data as input to a software system in the hope to expose a vulnerability. In order to be effective, the fuzzed input must be common enough to pass elementary consistency checks; a JavaScript interpreter, for instance, would only accept a semantically valid program. On the other hand, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Fuzz testing is an automated technique providing random data as input to a software system in the hope to expose a vulnerability. In order to be effective, the fuzzed input must be common enough to pass elementary consistency checks; a JavaScript interpreter, for instance, would only accept a semantically valid program. On the other hand, the fuzzed input must be uncommon enough to trigger exceptional behavior, such as a crash of the interpreter. The LangFuzz approach resolves this conflict by using a grammar to randomly generate valid programs; the code fragments, however, partially stem from programs known to have caused invalid behavior before. Lang- Fuzz is an effective tool for security testing. Applied on the Mozilla JavaScript interpreter, it discovered a total of 105 new severe vulnerabilities within three months of operation (and thus became one of the top security bug bounty collectors within this period); applied on the PHP interpreter, it discovered 18 new defects causing crashes.<br />
<br/><br/></p>
<h4>Reference</h4>
<div>[2012]&nbsp;C. Holler, K. Herzig, and A. Zeller, &quot;Fuzzing with Code Fragments&quot;, in <em>Proceedings of the 21st Usenix Security Symposium</em>,  2012.&nbsp;</div>
<h4>BibTeX Entry</h4>
<pre class="bibtexentry">@inproceedings{holler-usenix-2012,<br/> title = {Fuzzing with Code Fragments}, 
 &nbsp; author={Christian Holler and Kim Herzig and Andreas Zeller}, 
 &nbsp; year = {2012}, 
 &nbsp; month = {August}, 
 &nbsp; booktitle={Proceedings of the 21st Usenix Security Symposium}, 
 &nbsp; }</pre>
<p>	&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2012/04/27/fuzzing-with-code-fragments-usenix-security-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Google GData Library (1+)</title>
		<link>http://www.kim-herzig.de/2012/04/01/fixing-google-gdata-library-1/</link>
		<comments>http://www.kim-herzig.de/2012/04/01/fixing-google-gdata-library-1/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 22:53:03 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=795</guid>
		<description><![CDATA[Google has many products and projects. The problem is that for many projects, the current version is deprecated and the new one not ready yet. For GData, Google&#8217;s library to access core API infrastructure such as Google&#8217;s project hosting services is not getting maintained anymore. For me this is a major drawback since APIs are [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Google has many products and projects. The problem is that for many projects, the current version is deprecated and the new one not ready yet. For GData, Google&#8217;s library to access core API infrastructure such as Google&#8217;s project hosting services is not getting maintained anymore. For me this is a major drawback since APIs are the better way to access software project repositories than parsing HTML. </p>
<p>Currently we are working on a mining framework called &#8220;mozkito&#8221; that will combine all our mining techniques including bug tracker parsing and processing. Parsing bug reports is easy when you have working APIs at hand but tedious when you have to parse the human target front end&#8212;basically you have to parse HTML. Now, parsing public Google bug trackers from <a href="code.google.com" target="_blank"><i>code.google.com</i></a> seems to be easy since you can use the <a href="http://code.google.com/p/support/wiki/IssueTrackerAPIJava" target="_blank">Google&#8217;s Project Hosting JAVA API</a> to access the content of each issue tracker programmatically. So far in theory. In practice this work well unless you want to combine your mining tool with libraries that depend on a current version of <a href="http://code.google.com/p/guava-libraries/" target="_blank">Google&#8217;s <i>Guava</i> library</a>. </p>
<p>Now, to understand the problem, we have to understand the history of the GUAVA library. GUAVA is a set of libraries developed by Google. Before GUAVA was released, the single libraries now contained in GUAVA were released separately. So far so good. The basic problem concerning Google&#8217;s project hosting library (we will use the acronym CODE LIB for the remainder of this text) is that CODE LIB depends the former and now deprecated <a href="http://code.google.com/p/google-collections/" target="_blank">Google collections library</a> (short GCOLLECTIONS) instead of it&#8217;s replacement library GUAVA. If your own project (like mine) depends (direct or inherited) on GUAVA then you will run into the problem, that GUAVA and GCOLLECTIONS need to be put on the same CLASSPATH. Although GUAVA should be fully backward compatible with GCOLLECTIONS it turns out that this is simply not the case. The GCOLLECTIONS class <i>ImmutableSet</i> is not compatible with it&#8217;s corresponding class in GUAVA missing a method definition required for CODE LIB.</p>
<p>Since Google does not maintain multiple of their central API libraries anymore, this issue is unresolved since quite some time. The issue reports covering this issue are old but still unresolved. Well, let&#8217;s do the job for Google then. We won&#8217;t get the Google salary for this but at least we can continue parsing their deprecated and unmaintained services.</p>
<p>For those of you who do not care about the solution but simply need a version that does the trick: here you find the <a href="https://nexus.own-hero.net/service/local/artifact/maven/redirect?r=external&#038;g=com.google.guava&#038;a=guava&#038;v=11.0.2-mozkito&#038;e=jar" target="_blank">GUAVA.MOZKITO</a> version and here the modified <a href="https://nexus.own-hero.net/service/local/artifact/maven/redirect?r=external&#038;g=com.google.gdata&#038;a=gdata-core-1.0&#038;v=1.41.5.guava&#038;e=jar" target="_blank">GDATA-CORE.GUAVA</a> and <a href="https://nexus.own-hero.net/service/local/artifact/maven/redirect?r=external&#038;g=com.google.gdata&#038;a=gdata-projecthosting-2.1&#038;v=1.41.5.guava&#038;e=jar" target="_blank">GDATA-PROJECTHOSTING.GUAVA</a> library. All modified libraries come with no warranty nor guarantees and are as they are. Maven users can use our maven nexus instance <a href="https://nexus.own-hero.net/" target="_blank">https://nexus.own-hero.net/</a> as repository and adding the following dependencies to their <i>pom.xml</i>:</p>
<div class="codecolorer-container xml blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.google.gdata<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gdata-core-1.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.41.5.guava<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.google.gdata<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gdata-projecthosting-2.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.41.5.guava<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.google.guava<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>guava<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>11.0.2-mozkito<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></td></tr></tbody></table></div>
<p>Those of you who want to see the solution on detail just have to read the remainder. The solution has two major step: first we have to bug fix the <i>ImmutableSet</i> class GUAVA before using the revised version of GUAVA to build a new version of GDATA (containing CODE LIB). </p>
<h3>Fixing GUAVA</h3>
<p>Now first, clone the current version of GDATA from Google using <a href="http://git-scm.com/" target="_blank">git</a>:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git clone</span> https:<span style="color: #000000; font-weight: bold;">//</span>code.google.com<span style="color: #000000; font-weight: bold;">/</span>p<span style="color: #000000; font-weight: bold;">/</span>guava-libraries<span style="color: #000000; font-weight: bold;">/</span></div></td></tr></tbody></table></div>
<p>Then, we have to path the class <i>ImmutableSet</i>. This class contains a number of unusual classes defining the same method over and over again just using a different number of arguments all having the same type before defining the method with a variable set of arguments.</p>
<p>The code looks like this (stripped JavaDoc):</p>
<div class="codecolorer-container java blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000000; font-weight: bold;">class</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">extends</span> ImmutableCollection<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">implements</span> Set<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#41;</span> EmptyImmutableSet.<span style="color: #006633;">INSTANCE</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> SingletonImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span>element<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E e1, E e2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> construct<span style="color: #009900;">&#40;</span>e1, e2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E e1, E e2, E e3<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> construct<span style="color: #009900;">&#40;</span>e1, e2, e3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E e1, E e2, E e3, E e4<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> construct<span style="color: #009900;">&#40;</span>e1, e2, e3, e4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E e1, E e2, E e3, E e4, E e5<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> construct<span style="color: #009900;">&#40;</span>e1, e2, e3, e4, e5<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E e1, E e2, E e3, E e4, E e5, E e6,<br />
&nbsp; &nbsp; &nbsp; E... <span style="color: #006633;">others</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> paramCount <span style="color: #339933;">=</span> <span style="color: #cc66cc;">6</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> elements <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a><span style="color: #009900;">&#91;</span>paramCount <span style="color: #339933;">+</span> others.<span style="color: #006633;">length</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; elements<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> e1<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; elements<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> e2<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; elements<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> e3<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; elements<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> e4<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; elements<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> e5<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; elements<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> e6<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> paramCount<span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> elements.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; elements<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> others<span style="color: #009900;">&#91;</span>i <span style="color: #339933;">-</span> paramCount<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> construct<span style="color: #009900;">&#40;</span>elements<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> construct<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a>... <span style="color: #006633;">elements</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; ....<br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; ....<br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>The reason for methods like on line 19</p>
<div class="codecolorer-container java blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E e1, E e2, E e3, E e4<span style="color: #009900;">&#41;</span></div></td></tr></tbody></table></div>
<p>when having a method like on line 43:</p>
<div class="codecolorer-container java blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> construct<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a>... <span style="color: #006633;">elements</span><span style="color: #009900;">&#41;</span></div></td></tr></tbody></table></div>
<p>is due to type safety. Let&#8217;s make things simple and remove all the existing <i>of()</i> methods and add a method whose signature stems from <i>google-collections</i>:</p>
<div class="codecolorer-container java blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> ImmutableSet<span style="color: #339933;">&lt;</span>E<span style="color: #339933;">&gt;</span> of<span style="color: #009900;">&#40;</span>E... <span style="color: #006633;">elements</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">return</span> construct<span style="color: #009900;">&#40;</span>elements<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>The patch we applied is available here: <a href="http://www.kim-herzig.de/wp-content/uploads/2012/04/ImmutableSet.diff_.zip" targer="_blank">http://www.kim-herzig.de/wp-content/uploads/2012/04/ImmutableSet.diff_.zip</a>. This should do the trick. Next, we have to compile the modified GUAVA. Which again can be complicated. On our machine, we had to compile GUAVA using JDK1.7 because the maven build system caused an JDK1.6 compiler to fail silently resulting in a compiled GUAVA that contains not all required and necessary class files. So switch to JDK1.7 and then run</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mvn clean mvn clean package source:jar javadoc:jar</div></td></tr></tbody></table></div>
<p>In <i>guava/target/</i> you find the newly compiled GUAVA library. We strongly recommend to rename this version of GUAVA to indicate that this is your self-modified version of GUAVA. For the remainder of this text we call the library jar file: <i>guava-11.0.2-mozkito.jar</i>.</p>
<h3>Fixing GDATA</h3>
<p>The second phase of this Google code fixing session is more easy. Basically, we have to rebuild the GDATA library replacing it&#8217;s dependency on GCOLLECTIONS with our newly backed <i>guava-11.0.2-mozkito.jar</i>. </p>
<p>First, <a href="http://code.google.com/p/guava-libraries/" target="_blank">download the latest version of GDATA (currently 1.46.0)</a> and unzip the downloaded file. Unzipping GDATA yields a set of directories and files similar to this:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">kim<span style="color: #000000; font-weight: bold;">@</span>grid1 <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>gdata<span style="color: #000000; font-weight: bold;">/</span>java $ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-llah</span> <br />
total 52K<br />
drwxr-xr-x <span style="color: #000000;">11</span> kim staff 4.0K Mar <span style="color: #000000;">28</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">11</span> .<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-xr-x &nbsp;<span style="color: #000000;">3</span> kim staff 4.0K Mar &nbsp;<span style="color: #000000;">9</span> <span style="color: #000000;">16</span>:<span style="color: #000000;">38</span> ..<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-x--- &nbsp;<span style="color: #000000;">2</span> kim staff 4.0K Mar <span style="color: #000000;">28</span> <span style="color: #000000;">18</span>:02 build-src<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #660033;">-rw-------</span> &nbsp;<span style="color: #000000;">1</span> kim staff 3.7K Sep &nbsp;<span style="color: #000000;">9</span> &nbsp;<span style="color: #000000;">2011</span> build-src.xml<br />
drwxr-xr-x <span style="color: #000000;">25</span> kim staff 4.0K Mar <span style="color: #000000;">28</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">12</span> classes<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-x--- &nbsp;<span style="color: #000000;">3</span> kim staff 4.0K Mar <span style="color: #000000;">28</span> <span style="color: #000000;">18</span>:01 deps<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-x--- &nbsp;<span style="color: #000000;">4</span> kim staff 4.0K Sep &nbsp;<span style="color: #000000;">9</span> &nbsp;<span style="color: #000000;">2011</span> doc<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-xr-x &nbsp;<span style="color: #000000;">4</span> kim staff 4.0K Mar &nbsp;<span style="color: #000000;">9</span> <span style="color: #000000;">17</span>:<span style="color: #000000;">49</span> genfiles<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-x--- &nbsp;<span style="color: #000000;">2</span> kim staff 4.0K Mar <span style="color: #000000;">28</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">12</span> lib<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-x--- &nbsp;<span style="color: #000000;">2</span> kim staff 4.0K Sep &nbsp;<span style="color: #000000;">6</span> &nbsp;<span style="color: #000000;">2011</span> manifest<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-x--- &nbsp;<span style="color: #000000;">3</span> kim staff 4.0K Sep &nbsp;<span style="color: #000000;">9</span> &nbsp;<span style="color: #000000;">2011</span> src<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #660033;">-rw-------</span> &nbsp;<span style="color: #000000;">1</span> kim staff 1.3K Sep &nbsp;<span style="color: #000000;">9</span> &nbsp;<span style="color: #000000;">2011</span> version.properties</div></td></tr></tbody></table></div>
<p>To replace the dependency of GCOLLECTIONS with our own GUAVA version we have to place the <i>guava-11.0.2-mozkito.jar</i> file into the <i>deps</i> folder. To make things rock solid, we deleted the GCOLLECTIONS jar file from the <i>deps</i> directory.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">kim<span style="color: #000000; font-weight: bold;">@</span>grid1 <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>gdata<span style="color: #000000; font-weight: bold;">/</span>java $ <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-llah</span> deps<span style="color: #000000; font-weight: bold;">/</span><br />
total 2.9M<br />
drwxr-x--- &nbsp;<span style="color: #000000;">3</span> kim staff 4.0K Mar <span style="color: #000000;">28</span> <span style="color: #000000;">18</span>:01 .<span style="color: #000000; font-weight: bold;">/</span><br />
drwxr-xr-x <span style="color: #000000;">11</span> kim staff 4.0K Mar <span style="color: #000000;">28</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">11</span> ..<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #660033;">-rw-r--r--</span> &nbsp;<span style="color: #000000;">1</span> kim staff 1.6M Mar &nbsp;<span style="color: #000000;">9</span> <span style="color: #000000;">18</span>:01 guava-11.0.2-mozkito.jar<br />
<span style="color: #660033;">-rw-------</span> &nbsp;<span style="color: #000000;">1</span> kim staff &nbsp;33K Sep &nbsp;<span style="color: #000000;">6</span> &nbsp;<span style="color: #000000;">2011</span> jsr305.jar<br />
drwxr-xr-x &nbsp;<span style="color: #000000;">3</span> kim staff 4.0K Feb <span style="color: #000000;">22</span> 09:01 META-INF<span style="color: #000000; font-weight: bold;">/</span></div></td></tr></tbody></table></div>
<p>Next, we have to tell the build system to use OUR own GUAVA instead of GCOLLECTIONS. Open the file <i>build-src/build.properties</i> and replace the line <i>google-collect.jar=deps/google-collect-1.0-rc1.jar</i> on line 13 referring to our own GUAVA version:</p>
<div class="codecolorer-container properties blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="properties codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;"># Points to a external library dependancies</span><br />
<span style="color: #808080; font-style: italic;"># EDIT-THIS: If rebuilding the authsub or gbase/recipe sample point to,</span><br />
<span style="color: #808080; font-style: italic;"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;servlet jar in Sun's Servlet API library.</span><br />
<span style="color: #000080; font-weight:bold;">servlet.jar</span><span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">/tmp/gdata_dep/servlet-api-2.4.jar</span><br />
<span style="color: #808080; font-style: italic;"># EDIT-THIS: Point to mail.jar lib in Sun's Java Mail API.</span><br />
<span style="color: #000080; font-weight:bold;">mail.jar</span><span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">/tmp/gdata_dep/mail.jar</span><br />
<span style="color: #808080; font-style: italic;"># EDIT-THIS: If using version older than JDK 1.6, </span><br />
<span style="color: #808080; font-style: italic;"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Point to activation.jar in Sun's activation framework library.</span><br />
<span style="color: #000080; font-weight:bold;">activation.jar</span><span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">/tmp/gdata_dep/activation.jar</span><br />
<br />
<span style="color: #808080; font-style: italic;"># EDIT-THIS: Point to google-collect lib</span><br />
<span style="color: #808080; font-style: italic;">#google-collect.jar=deps/google-collect-1.0-rc1.jar</span><br />
<span style="color: #000080; font-weight:bold;">google-guava.jar</span><span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">deps/guava-11.0.2.jar</span><br />
<span style="color: #000080; font-weight:bold;">google-jsr305.jar</span><span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">deps/jsr305.jar</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Include debugging information in built library files. Possible values &quot;on&quot; or &quot;off&quot;</span><br />
<span style="color: #000080; font-weight:bold;">javac.debug</span><span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">true</span><br />
<span style="color: #000080; font-weight:bold;">javac.debuglevel</span><span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">lines,vars,source</span></div></td></tr></tbody></table></div>
<p>This should be it. Compile you own version of GDATA using the following commands (requires <a href="http://ant.apache.org/" target="_blank">Apache ANT</a>.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ant clean build <span style="color: #660033;">-f</span> build-src.xml <span style="color: #660033;">-lib</span> deps</div></td></tr></tbody></table></div>
<p>Done. Now, you have your own fixed version of GUAVA and GDATA and can do you own job. <img src='http://www.kim-herzig.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2012/04/01/fixing-google-gdata-library-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stacked Bar Plots with GGPlot2</title>
		<link>http://www.kim-herzig.de/2012/03/14/stacked-bar-plots-with-ggplot2/</link>
		<comments>http://www.kim-herzig.de/2012/03/14/stacked-bar-plots-with-ggplot2/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 17:54:48 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[ggplot2]]></category>
		<category><![CDATA[R]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=745</guid>
		<description><![CDATA[When plotting contribution shares, pie charts seem to be logic. But pie charts look ugly and do not add much more information than presenting the data in a table. But there is an alterative: stacker bar charts. In R you can use the ggplot2 package to plot them easily. Below, you find the very same [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>When plotting contribution shares, pie charts seem to be logic. But pie charts look ugly and do not add much more information than presenting the data in a table. But there is an alterative: stacker bar charts. In <a href="http://cran.r-project.org/">R</a> you can use the <a href="http://had.co.nz/ggplot2/">ggplot2</a> package to plot them easily. Below, you find the very same data plotted using two different layout. Left the stacked bar chart. Right you see the stacked bar chart using polar coordinates.</p>
<p><a href="http://www.kim-herzig.de/wp-content/uploads/2012/03/ggplot1.png"><img src="http://www.kim-herzig.de/wp-content/uploads/2012/03/ggplot1.png" width="250px"/></a><a href="http://www.kim-herzig.de/wp-content/uploads/2012/03/ggplot2.png"><img src="http://www.kim-herzig.de/wp-content/uploads/2012/03/ggplot2.png" width="250px"/></a></p>
<p>To reproduce both charts, copy and paste the following code to your R-Shell.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">library<span style="color: #7a0874; font-weight: bold;">&#40;</span>RColorBrewer<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
library<span style="color: #7a0874; font-weight: bold;">&#40;</span>ggplot2<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
project <span style="color: #000000; font-weight: bold;">&lt;</span>- c<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'ArgoUML'</span>,<span style="color: #ff0000;">'ArgoUML'</span>,<span style="color: #ff0000;">'ArgoUML'</span>,<span style="color: #ff0000;">'ArgoUML'</span>,<span style="color: #ff0000;">'ArgoUML'</span>,<span style="color: #ff0000;">'GWT'</span>,<span style="color: #ff0000;">'GWT'</span>,<span style="color: #ff0000;">'GWT'</span>,<span style="color: #ff0000;">'GWT'</span>,<span style="color: #ff0000;">'GWT'</span>,<span style="color: #ff0000;">'Jaxen'</span>,<span style="color: #ff0000;">'Jaxen'</span>,<span style="color: #ff0000;">'Jaxen'</span>,<span style="color: #ff0000;">'Jaxen'</span>,<span style="color: #ff0000;">'Jaxen'</span>,<span style="color: #ff0000;">'JRuby'</span>,<span style="color: #ff0000;">'JRuby'</span>,<span style="color: #ff0000;">'JRuby'</span>,<span style="color: #ff0000;">'JRuby'</span>,<span style="color: #ff0000;">'JRuby'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <br />
<br />
component <span style="color: #000000; font-weight: bold;">&lt;</span>- c<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'FileDistance'</span>,<span style="color: #ff0000;">'PackageDistance'</span>,<span style="color: #ff0000;">'DataDependency'</span>,<span style="color: #ff0000;">'CallGraphDistance'</span>,<span style="color: #ff0000;">'ChangeCouplings'</span>,<span style="color: #ff0000;">'FileDistance'</span>,<span style="color: #ff0000;">'PackageDistance'</span>,<span style="color: #ff0000;">'DataDependency'</span>,<span style="color: #ff0000;">'CallGraphDistance'</span>,<span style="color: #ff0000;">'ChangeCouplings'</span>,<span style="color: #ff0000;">'FileDistance'</span>,<span style="color: #ff0000;">'PackageDistance'</span>,<span style="color: #ff0000;">'DataDependency'</span>,<span style="color: #ff0000;">'CallGraphDistance'</span>,<span style="color: #ff0000;">'ChangeCouplings'</span>,<span style="color: #ff0000;">'FileDistance'</span>,<span style="color: #ff0000;">'PackageDistance'</span>,<span style="color: #ff0000;">'DataDependency'</span>,<span style="color: #ff0000;">'CallGraphDistance'</span>,<span style="color: #ff0000;">'ChangeCouplings'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
numbers <span style="color: #000000; font-weight: bold;">&lt;</span>- c<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">16</span>,<span style="color: #000000;">22</span>,<span style="color: #000000;">46</span>,<span style="color: #000000;">10</span>,<span style="color: #000000;">6</span>,<span style="color: #000000;">46</span>,<span style="color: #000000;">22</span>,<span style="color: #000000;">10</span>,<span style="color: #000000;">12</span>,<span style="color: #000000;">10</span>,<span style="color: #000000;">20</span>,<span style="color: #000000;">20</span>,<span style="color: #000000;">20</span>,<span style="color: #000000;">20</span>,<span style="color: #000000;">20</span>,<span style="color: #000000;">0</span>,<span style="color: #000000;">36</span>,<span style="color: #000000;">33</span>,<span style="color: #000000;">20</span>,<span style="color: #000000;">11</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">df</span> <span style="color: #000000; font-weight: bold;">&lt;</span>- data.frame<span style="color: #7a0874; font-weight: bold;">&#40;</span>project,component,numbers<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
<span style="color: #666666; font-style: italic;">#plot the stacked bar plot</span><br />
ggplot<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">df</span>, aes<span style="color: #7a0874; font-weight: bold;">&#40;</span>x = project<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> + geom_bar<span style="color: #7a0874; font-weight: bold;">&#40;</span>aes<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">weight</span>=numbers, fill = component<span style="color: #7a0874; font-weight: bold;">&#41;</span>, position = <span style="color: #ff0000;">'fill'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> + scale_y_continuous<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span>, <span style="color: #007800;">breaks</span>=NA<span style="color: #7a0874; font-weight: bold;">&#41;</span> + scale_fill_manual<span style="color: #7a0874; font-weight: bold;">&#40;</span>values = <span style="color: #c20cb9; font-weight: bold;">rev</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>brewer.pal<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">6</span>, <span style="color: #ff0000;">&quot;Purples&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
<span style="color: #666666; font-style: italic;">#plot the stacked bar plot with polar coordinates</span><br />
ggplot<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">df</span>, aes<span style="color: #7a0874; font-weight: bold;">&#40;</span>x = project<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> + geom_bar<span style="color: #7a0874; font-weight: bold;">&#40;</span>aes<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">weight</span>=numbers, fill = component<span style="color: #7a0874; font-weight: bold;">&#41;</span>, position = <span style="color: #ff0000;">'fill'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> + scale_y_continuous<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span>, <span style="color: #007800;">breaks</span>=NA<span style="color: #7a0874; font-weight: bold;">&#41;</span> + scale_fill_manual<span style="color: #7a0874; font-weight: bold;">&#40;</span>values = <span style="color: #c20cb9; font-weight: bold;">rev</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>brewer.pal<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">6</span>, <span style="color: #ff0000;">&quot;Purples&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> + coord_polar<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></div></td></tr></tbody></table></div>
<p>More in the coolest plotting framework ever on <a href="http://had.co.nz/ggplot2/">http://had.co.nz/ggplot2/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2012/03/14/stacked-bar-plots-with-ggplot2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>―エビデンスが変えるソフトウェア開発</title>
		<link>http://www.kim-herzig.de/2011/11/20/making_software_japan/</link>
		<comments>http://www.kim-herzig.de/2011/11/20/making_software_japan/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 21:41:26 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=729</guid>
		<description><![CDATA[The book Making Software is published now also available in Japan language. The article written by Andreas Zeller and myself is translated as 自力でのエビデンスマイニング (Mine your own evidence). Thanks to O’Reilly Japan and the translators for translating this great book.]]></description>
			<content:encoded><![CDATA[<p></p><p>The book <a href="http://shop.oreilly.com/product/9780596808303.do" target="_blank">Making Software</a> is published now also available in Japan language. The <a href="http://www.kim-herzig.de/2010/10/29/mining-your-own-evidence-making-software/" target="_blank">article written by Andreas Zeller and myself</a> is translated as 自力でのエビデンスマイニング (Mine your own evidence). </p>
<p>Thanks to O’Reilly Japan and the translators for translating this great book.</p>
<p><img alt="make_software_japan" src="http://thomas-zimmermann.com/wp-content/uploads/picture_medium978-4-87311-511-5.jpg" title="Make Software: Japan" class="alignnone" width="250" height="320" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2011/11/20/making_software_japan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mining Cause-Effect-Chains from Version Histories &#8211; ISSRE 2011</title>
		<link>http://www.kim-herzig.de/2011/09/28/mining-cause-effect-chains-from-version-histories-issre-2011/</link>
		<comments>http://www.kim-herzig.de/2011/09/28/mining-cause-effect-chains-from-version-histories-issre-2011/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 14:44:43 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=720</guid>
		<description><![CDATA[Software reliability is heavily impacted by soft- ware changes. How do these changes relate to each other? By analyzing the impacted method definitions and usages, we determine dependencies between changes, resulting in a change genealogy that captures how earlier changes enable and cause later ones. Model checking this genealogy reveals temporal process patterns that encode [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Software reliability is heavily impacted by soft- ware changes. How do these changes relate to each other? By analyzing the impacted method definitions and usages, we determine dependencies between changes, resulting in a change genealogy that captures how earlier changes enable and cause later ones. Model checking this genealogy reveals temporal process patterns that encode key features of the software process such as pending development activities: “Whenever class A is changed, its test case is later updated as well.” Such patterns can be validated automatically: In an evaluation of four open source histories, our prototype would recommend pending activities with a precision of 60–72%.<br />
<br/><br/></p>
<h4>Reference</h4>
<div>[2011]&nbsp;K. Herzig and A. Zeller, &quot;Mining Cause-Effect-Chains from Version Histories&quot;, in <em>Proceedings of the 22nd International Symposium on Software Reliability Engineering</em>,  2011.&nbsp;</div>
<h4>BibTeX Entry</h4>
<pre class="bibtexentry">@inproceedings{herzig-issre-2011,<br/> title = {Mining Cause-Effect-Chains from Version Histories}, 
 &nbsp; author={Kim Herzig and Andreas Zeller}, 
 &nbsp; year = {2011}, 
 &nbsp; month = {November}, 
 &nbsp; booktitle={Proceedings of the 22nd International Symposium on Software Reliability Engineering} 
 &nbsp; }</pre>
<p>	&nbsp;</p>
<div style="width:425px" id="__ss_10392636"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kim.herzig/mining-cause-effect-chains-from-version-archives-issre-2011" title="Mining Cause Effect Chains from Version Archives - ISSRE 2011">Mining Cause Effect Chains from Version Archives &#8211; ISSRE 2011</a></strong><object id="__sse10392636" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=issre2011-111130004221-phpapp02&#038;stripped_title=mining-cause-effect-chains-from-version-archives-issre-2011&#038;userName=kim.herzig" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse10392636" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=issre2011-111130004221-phpapp02&#038;stripped_title=mining-cause-effect-chains-from-version-archives-issre-2011&#038;userName=kim.herzig" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/kim.herzig">Kim Herzig</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2011/09/28/mining-cause-effect-chains-from-version-histories-issre-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Network versus Code Metrics to Predict Defects: A Replication Study &#8211; ESEM 2011</title>
		<link>http://www.kim-herzig.de/2011/05/21/network-versus-code-metrics-to-predict-defects-a-replication-study-esem-2011/</link>
		<comments>http://www.kim-herzig.de/2011/05/21/network-versus-code-metrics-to-predict-defects-a-replication-study-esem-2011/#comments</comments>
		<pubDate>Sat, 21 May 2011 15:41:00 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=701</guid>
		<description><![CDATA[Several defect prediction models have been proposed to identify which entities in a software system are likely to have defects before its release. This paper presents a replication of one such study conducted by Zimmermann and Nagappan [1] on Windows Server 2003 where the authors leveraged dependency relationships between software entities captured using social network [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Several defect prediction models have been proposed to identify which entities in a software system are likely to have defects before its release. This paper presents a replication of one such study conducted by Zimmermann and Nagappan [1] on Windows Server 2003 where the authors leveraged dependency relationships between software entities captured using social network metrics to predict whether they are likely to have defects. <span id="more-701"></span> They found that network metrics perform significantly better than source code metrics at predicting defects. In order to corroborate the generality of their findings, we replicate their study on three open source Java projects, viz., JRuby, ArgoUML, and Eclipse. Our results are in agreement with the original study by Zimmermann and Nagappan when using a similar experimental setup as them (random sampling). However, when we evaluated the metrics using setups more suited for industrial use – forward-release and cross-project prediction – we found network metrics to offer no vantage over code metrics. Moreover, code metrics may be preferable to network metrics considering the data is easier to collect and we used only 8 code metrics compared to approximately 58 network metrics.<br />
<br/><br/></p>
<h4>Reference</h4>
<div>[2011]&nbsp;R. Premraj and K. Herzig, &quot;Network versus Code Metrics to Predict Defects: A Replication Study&quot;, in <em>Proceedings of the Fifth International Symposium on Empirical Software Engineering and Measurement</em>,  2011.&nbsp;</div>
<h4>BibTeX Entry</h4>
<pre class="bibtexentry">@inproceedings{premraj-esem-2011,<br/> title = {Network versus Code Metrics to Predict Defects: A Replication Study}, 
 &nbsp; author={Premraj, Rahul and Herzig, Kim}, 
 &nbsp; year = {2011}, 
 &nbsp; month = {september}, 
 &nbsp; booktitle={Proceedings of the Fifth International Symposium on Empirical Software Engineering and Measurement}
}</pre>
<p>	Download <a href='http://www.kim-herzig.de/wp-content/uploads/2011/09/premraj_esem_2011.pdf' title='premraj-esem-2011'>PDF</a> version</p>
<div style="width:425px" id="__ss_9442929"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kim.herzig/network-vs-code-metrics-to-predict-defects-a-replication-study" title="Network vs. Code Metrics  to Predict Defects: A Replication Study">Network vs. Code Metrics  to Predict Defects: A Replication Study</a></strong><object id="__sse9442929" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=esem11-110927082918-phpapp02&#038;stripped_title=network-vs-code-metrics-to-predict-defects-a-replication-study&#038;userName=kim.herzig" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse9442929" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=esem11-110927082918-phpapp02&#038;stripped_title=network-vs-code-metrics-to-predict-defects-a-replication-study&#038;userName=kim.herzig" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/kim.herzig">Kim Herzig</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2011/05/21/network-versus-code-metrics-to-predict-defects-a-replication-study-esem-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spell checking LaTeX Documents</title>
		<link>http://www.kim-herzig.de/2011/01/29/spell-checking-latex-documents/</link>
		<comments>http://www.kim-herzig.de/2011/01/29/spell-checking-latex-documents/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 11:17:29 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=667</guid>
		<description><![CDATA[LaTeX is great and there is no better environment to write professional documents. But spell-checking text within LaTeX is difficult and all projects trying to solve this issue failed at various levels. One of the tools to check for spelling and grammar errors is Microsoft Word. To use MS Word to spell and grammar check [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>LaTeX is great and there is no better environment to write professional documents. But spell-checking text within LaTeX is difficult and all projects trying to solve this issue failed at various levels. One of the tools to check for spelling and grammar errors is <a href="http://office.microsoft.com/en-us/word" target="_blank">Microsoft Word</a>. To use MS Word to spell and grammar check LaTeX documents, one has to convert the LaTeX documents to a format readable by MS Word: <a href="http://en.wikipedia.org/wiki/Rich_Text_Format" target="_blank"><i>Rich Text Format</i> (RTF)</a>.  The <a href="http://www.tug.org/utilities/texconv/latex2rtf.html" target="_blank">latex2rtf</a> project at Sourceforge is transforming LaTeX document to RTF documents. Opening the RTF document using Word allows you to spell and grammar check your document. </p>
<p>There are some limitations to latex2rtf. It cannot handle LaTeX environments like</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">\usepackage{boxenminipage}</div></td></tr></tbody></table></div>
<p>. For more advanced LaTeX documents I normally stick to Acrobat Professional converting the compiled PDF documents into RTF or MS Word format directly. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2011/01/29/spell-checking-latex-documents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Empirical Study of the Factors Relating Field Failures and Dependencies &#8211; ICST 2011</title>
		<link>http://www.kim-herzig.de/2010/11/30/an-empirical-study-of-the-factors-relating-field-failures-and-dependencies/</link>
		<comments>http://www.kim-herzig.de/2010/11/30/an-empirical-study-of-the-factors-relating-field-failures-and-dependencies/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 08:31:26 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=632</guid>
		<description><![CDATA[Changing source code in large software systems is complex and requires a good understanding of dependencies between software components. Modification to components with little regard to dependencies may have an adverse impact on the quality of the latter, i.e., increase their risk to fail. We conduct an empirical study to understand the relationship between the [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Changing source code in large software systems is complex and requires a good understanding of dependencies between software components. Modification to components with little regard to dependencies may have an adverse impact on the quality of the latter, i.e., increase their risk to fail. We conduct an empirical study to understand the relationship between the quality of components and the characteristics of their dependencies such as their frequency of change, their complexity, number of past failures and the like. Our study has been conducted on two large software systems: Microsoft VISTA and ECLIPSE. Our results show that components that have outgoing dependencies to components with higher object-oriented complexity tend to have fewer field failures for VISTA, but the opposite relation holds for ECLIPSE. Likewise, other notable observations have been made through our study that (a) confirm that certain characteristics of components increase the risk of their dependencies to fail and (b) some of the characteristics are project specific while some were also found to be common. We expect that such results can be leveraged for use to provide new directions for research in defect prediction, test prioritization and related research fields that utilize code dependencies in their empirical analysis. Additionally, these results provide insights to engineers on the potential reliability impacts of new component dependencies based upon the characteristics of the component.<br />
<br/><br/></p>
<h4>Reference</h4>
<div>[2011]&nbsp;T. Zimmerman, N. Nagappan, K. Herzig, R. Premraj, and L. Williams, &quot;An Empirical Study of the Factors Relating Field Failures and Dependencies&quot;, in <em>Software Testing, Verification and Validation (ICST), 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation</em>,  2011, pp. 347-356.&nbsp;</div>
<h4>BibTeX Entry</h4>
<pre class="bibtexentry">@inproceedings{zimmermann-icst-2011,<br/> title = {An Empirical Study of the Factors Relating Field Failures and Dependencies}, 
 &nbsp; author={Zimmerman, Thomas and Nagappan, Nachiappan and Herzig, Kim and Premraj, Rahul and Williams, Laurie}, 
 &nbsp; year = {2011}, 
 &nbsp; month = {march}, 
 &nbsp; booktitle={Software Testing, Verification and Validation (ICST), 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation}<br/> pages={347--356}, 
 &nbsp; doi={10.1109/ICST.2011.39}
}</pre>
<p>	Download <a href='http://www.kim-herzig.de/wp-content/uploads/2011/02/zimmermann-icst-2011.pdf' title='zimmermann-icst-2011'>PDF</a> version</p>
<div style="width:425px" id="__ss_7386898"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kim.herzig/factors-relating-field-failures-and-dependencies-icst-2011" title="Factors Relating Field Failures and Dependencies - ICST 2011">Factors Relating Field Failures and Dependencies &#8211; ICST 2011</a></strong><object id="__sse7386898" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=icst2011-110325085117-phpapp02&#038;stripped_title=factors-relating-field-failures-and-dependencies-icst-2011&#038;userName=kim.herzig" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7386898" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=icst2011-110325085117-phpapp02&#038;stripped_title=factors-relating-field-failures-and-dependencies-icst-2011&#038;userName=kim.herzig" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/kim.herzig">kim.herzig</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2010/11/30/an-empirical-study-of-the-factors-relating-field-failures-and-dependencies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mining Your Own Evidence &#8211; Making Software</title>
		<link>http://www.kim-herzig.de/2010/10/29/mining-your-own-evidence-making-software/</link>
		<comments>http://www.kim-herzig.de/2010/10/29/mining-your-own-evidence-making-software/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 13:52:47 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=616</guid>
		<description><![CDATA[Throughout this book, you will find examples of how to gather evidence—evidence on the effectiveness of testing, the quality of bug reports, the role of complexity metrics, and so on. But do these findings actually apply to your project? The definite way to find this out is to repeat the appropriate study on your data, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Throughout this book, you will find examples of how to gather evidence—evidence on the effectiveness of testing, the quality of bug reports, the role of complexity metrics, and so on. But do these findings actually apply to your project? The definite way to find this out is to repeat the appropriate study on your data, in your environment. This way, you will not only gather lots of insight into your own project; you will also experience the joys of experimental research. Unfortunately, you may also encounter the downside: empirical studies can be very expensive, in particular if they involve experiments with developers.<br/><br/><br />
Fortunately, there is a relatively inexpensive way to gather lots of evidence about your project. Software archives, such as version or bug repositories, record much of the activity around your product, in terms of problems occurring, changes made, and problems fixed. By mining these archives automatically, you can obtain lots of initial evidence about your product—evidence that already is worthy in itself, but which may also pave the path toward further experiments and further insights. In this chapter, we give a hands-on tutorial into mining software archives, covering both the basic technical steps and possible pitfalls that you may encounter on the way.<br />
<br/><br />
<br/></p>
<h4>See also</h4>
<pre>
<a href="http://oreilly.com/catalog/9780596808303" target="_blank">http://oreilly.com/catalog/9780596808303</a><br/>
<a href="http://www.amazon.com/gp/mpd/permalink/mCW1SH53SU70/ref=ent_fb_link" target="_blank">Screencast</a>
</pre>
<h4>Reference</h4>
<div>[2010]&nbsp;K. Herzig and A. Zeller, &quot;Mining Your Own Evidence.&quot; O&#8217;Reilly Media, 2010, pp. 517-529.&nbsp;</div>
<h4>BibTeX Entry</h4>
<pre class="bibtexentry">@inbook{herzig-makingsoftware-2010,<br/> title = "Mining Your Own Evidence",<br/> author = "Kim Herzig and Andreas Zeller",<br/> year = "2010",<br/> month = "October",<br/> booktitle = "Making Software: What Really Works, and Why We Believe It",<br/> chapter = "Mining Your Own Evidence",<br/> editors = "Andy Oram and Greg Wilson",<br/> pages = "517--529",<br/> publisher = "O'Reilly Media",<br/> ISBN = "9780596808327"
}</pre>
<p>	&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2010/10/29/mining-your-own-evidence-making-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Funded by Google Research Award</title>
		<link>http://www.kim-herzig.de/2010/09/07/funded-by-google-research-award/</link>
		<comments>http://www.kim-herzig.de/2010/09/07/funded-by-google-research-award/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 14:25:52 +0000</pubDate>
		<dc:creator>kim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Award]]></category>
		<category><![CDATA[Fund]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Sponsor]]></category>

		<guid isPermaLink="false">http://www.kim-herzig.de/?p=537</guid>
		<description><![CDATA[Google rewarded Andreas Zeller&#8216;s research proposal was successful. Google rewarded our chair with a Google Research Award. The money funds my new research project conducted with and within Google.]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.kim-herzig.de/2010/09/07/funded-by-google-research-award/" title="Permanent link to Funded by Google Research Award"><img class="post_image alignleft" src="http://www.kim-herzig.de/wp-content/uploads/2010/09/google_logo.jpg" width="150" height="62" alt="google logo" /></a>
</p><p>Google rewarded <a href="http://www.st.cs.uni-saarland.de/zeller" target="_blank">Andreas Zeller</a>&#8216;s research proposal was successful. Google rewarded our chair with a <a href="http://www.google.com/research/university/relations/research_awards.html" target="_blank">Google Research Award</a>. The money funds my new research project conducted with and within Google.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kim-herzig.de/2010/09/07/funded-by-google-research-award/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.kim-herzig.de @ 2012-05-20 05:57:28 -->
