<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>It Will Never Work in Theory</title>
	
	<link>http://www.neverworkintheory.org</link>
	<description>Software development research that is relevant in practice</description>
	<lastBuildDate>Thu, 13 Jun 2013 18:23:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ItWillNeverWorkInTheory" /><feedburner:info uri="itwillneverworkintheory" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>UML in Practice</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/HfeWxkNSt_8/</link>
		<comments>http://www.neverworkintheory.org/?p=542#comments</comments>
		<pubDate>Thu, 13 Jun 2013 17:43:36 +0000</pubDate>
		<dc:creator>gvwilson</dc:creator>
				<category><![CDATA[Case Studies]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=542</guid>
		<description><![CDATA[Marian Petre: &#8220;UML in practice&#8221; ICSE&#8217;13, 2013. http://oro.open.ac.uk/35805/. UML has been described by some as &#8220;the lingua franca of software engineering&#8221;. Evidence from industry does not necessarily support such endorsements. How exactly is UML being used in industry — if it is? This paper presents a corpus of interviews with 50 professional software engineers in [...]]]></description>
				<content:encoded><![CDATA[<p>Marian Petre: &#8220;UML in practice&#8221; <cite>ICSE&#8217;13</cite>, 2013. <a href="http://oro.open.ac.uk/35805/">http://oro.open.ac.uk/35805/</a>.</p>
<blockquote><p><em>UML has been described by some as &#8220;the lingua franca of software engineering&#8221;. Evidence from industry does not necessarily support such endorsements. How exactly is UML being used in industry — if it is? This paper presents a corpus of interviews with 50 professional software engineers in 50 companies and identifies 5 patterns of UML use.</em></p></blockquote>
<p>The abstract for this distinguished paper doesn&#8217;t do it justice. Over two years, the author interviewed over 50 developers from a broad cross-section of industries and countries. She found their use fell into five broad categories:</p>
<table>
<tbody>
<tr>
<td>Category</td>
<td>Number</td>
</tr>
<tr>
<td>no UML</td>
<td align="center">35</td>
</tr>
<tr>
<td>selective</td>
<td align="center">11</td>
</tr>
<tr>
<td>automated code generation</td>
<td align="center">3</td>
</tr>
<tr>
<td>retrofit</td>
<td align="center">1</td>
</tr>
<tr>
<td>wholehearted</td>
<td align="center">0</td>
</tr>
</tbody>
</table>
<p>Among the reasons given for not using it were:</p>
<ul>
<li>Lack of context: UML deals with architecture, rather than with the whole system.</li>
<li>The overheads of understanding the notation.</li>
<li>Issues of synchronization and consistency.</li>
</ul>
<p>Perhaps the most interesting category is the second: those people who selectively use some elements of UML, but not the whole notation. Some of the partial uses identified were:</p>
<ul>
<li>UML as a &#8216;thought tool&#8217;</li>
<li>communicating with stakeholders</li>
<li>collaborative dialogs</li>
<li>adaptation (i.e., using a homegrown variant of the &#8220;real&#8221; notation), and</li>
<li>selective traction (i.e., using it just as long as is useful, then moving on)</li>
</ul>
<p>while the parts used were:</p>
<table>
<tbody>
<tr>
<td>Diagram</td>
<td>Number</td>
</tr>
<tr>
<td>Class diagrams</td>
<td align="center">7</td>
</tr>
<tr>
<td>Sequence diagrams</td>
<td align="center">6</td>
</tr>
<tr>
<td>Activity diagrams</td>
<td align="center">6</td>
</tr>
<tr>
<td>State machine diagrams</td>
<td align="center">3</td>
</tr>
<tr>
<td>Use case diagrams</td>
<td align="center">1</td>
</tr>
</tbody>
</table>
<p>But there is much more in this paper than merely statistics. One of Petre&#8217;s many insightful comments is:</p>
<blockquote><p><em>Responses concerning UML use tend to be polarized, between design use and implementation use&#8230; Despite the notional accommodation of the whole process, informants tend to use UML either in early design, or in implementation, rarely both (even when informants&#8217; roles include the whole process).</em></p></blockquote>
<p>There are two ways to react to this work. The first is to read it as an indictment: after 20 years, UML is still mostly not used and not valued. The second, and more hopeful, is as a concrete step toward improving it. Parts of UML <em>are</em> used; the more we learn about which ones, where, why, and how, the better our chances of building something better.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/HfeWxkNSt_8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=542</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=542</feedburner:origLink></item>
		<item>
		<title>Automatic Patch Generation Learned from Human-Written Patches</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/DRD1QaHrxI4/</link>
		<comments>http://www.neverworkintheory.org/?p=533#comments</comments>
		<pubDate>Thu, 06 Jun 2013 17:39:39 +0000</pubDate>
		<dc:creator>Fayola Peters</dc:creator>
				<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=533</guid>
		<description><![CDATA[Dongsun Kim, Jaechang Nam, Jaewoo Song, and Sunghun Kim: &#8220;Automatic Patch Generation Learned from Human-Written Patches.&#8221; ICSE&#8217;13, 2013, http://www.cse.ust.hk/~hunkim/papers/kim-icse2013.pdf. Patch generation is an essential software maintenance task because most software systems inevitably have bugs that need to be fixed. Unfortunately, human resources are often insufficient to fix all reported and known bugs. To address this [...]]]></description>
				<content:encoded><![CDATA[<p>Dongsun Kim, Jaechang Nam, Jaewoo Song, and Sunghun Kim: &#8220;Automatic Patch Generation Learned from Human-Written Patches.&#8221; <cite>ICSE&#8217;13</cite>, 2013, <a href="http://www.cse.ust.hk/~hunkim/papers/kim-icse2013.pdf">http://www.cse.ust.hk/~hunkim/papers/kim-icse2013.pdf</a>.</p>
<blockquote><p><em>Patch generation is an essential software maintenance task because most software systems inevitably have bugs that need to be fixed. Unfortunately, human resources are often insufficient to fix all reported and known bugs. To address this issue, several automated patch generation techniques have been proposed. In particular, a genetic-programming-based patch generation technique, GenProg, proposed by Weimer et al., has shown promising results. However, these techniques can generate nonsensical patches due to the randomness of their mutation operations.<br />
To address this limitation, we propose a novel patch generation approach, Pattern-based Automatic program Repair (PAR), using fix patterns learned from existing human-written patches. We manually inspected more than 60,000 human-written patches and found there are several common fix patterns. Our approach leverages these fix patterns to generate program patches automatically. We experimentally evaluated PAR on 119 real bugs. In addition, a user study involving 89 students and 164 developers confirmed that patches generated by our approach are more acceptable than those generated by GenProg. PAR successfully generated patches for 27 out of 119 bugs, while GenProg was successful for only 16 bugs.</em></p></blockquote>
<p>Software products are released with known and unknown bugs. For example, this paper by Kim et al. mentions that Windows 2000 was released with over 60K known bugs. Why? Bug repairs are for the most part done manually and there are not enough resources to repair all of them. Automatic patch generation methods have been devise to reduce this manual effort.</p>
<p>To add to this field of research, Kim et al. integrate the human element with machine learning. They do this by manually reviewing human written patches to create fix-pattern templates used to then generate &#8220;candidate&#8221; patches. The purpose in doing this was to solve the issue of what they consider to be &#8220;nonsensical patches&#8221; produced by GenProg (<a href="https://www.cs.virginia.edu/~weimer/p/weimer-icse2012-genprog-preprint.pdf">https://www.cs.virginia.edu/~weimer/p/weimer-icse2012-genprog-preprint.pdf</a>). GenProg&#8217;s approach to automated patch generation is based on genetic programming used to search the vast space of possible program repairs.</p>
<p>Two interesting aspects of the Kim et al. paper are that the patches generated from one project are used successfully on other projects and the fix-pattern templates once created can be use repeatedly. However, one element not measured in this paper is the monetary cost of fixing each bug (measured in GenProg), considering the bounties offered for bug fixes by some companies, it would be interesting to see such a result included in future automatic patch generation methods.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/DRD1QaHrxI4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=533</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=533</feedburner:origLink></item>
		<item>
		<title>Does Bug Prediction Support Human Developers? Findings From a Google Case Study</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/SLAu6WwoJyg/</link>
		<comments>http://www.neverworkintheory.org/?p=531#comments</comments>
		<pubDate>Thu, 06 Jun 2013 17:38:22 +0000</pubDate>
		<dc:creator>Fayola Peters</dc:creator>
				<category><![CDATA[Case Studies]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=531</guid>
		<description><![CDATA[Chris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, and E. James Whitehead Jr.: &#8220;Does Bug Prediction Support Human Developers? Findings From a Google Case Study.&#8221; ICSE&#8217;13, 2013, http://www.cflewis.com/publications/google.pdf?attredirects=3D0. While many bug prediction algorithms have been developed by academia, they&#8217;re often only tested and verified in the lab using automated means. We do not [...]]]></description>
				<content:encoded><![CDATA[<p>Chris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, and E. James Whitehead Jr.: &#8220;Does Bug Prediction Support Human Developers? Findings From a Google Case Study.&#8221; <cite>ICSE&#8217;13</cite>, 2013, <a href="http://www.cflewis.com/publications/google.pdf?attredirects=3D0">http://www.cflewis.com/publications/google.pdf?attredirects=3D0</a>.</p>
<blockquote><p><em>While many bug prediction algorithms have been developed by academia, they&#8217;re often only tested and verified in the lab using automated means. We do not have a strong idea about whether such algorithms are useful to guide human developers. We deployed a bug prediction algorithm across Google, and found no identifiable change in developer behavior. Using our experience, we provide several characteristics that bug prediction algorithms need to meet in order to be accepted by human developers and truly change how developers evaluate their code. </em></p></blockquote>
<p>This paper highlights the divide between the success of bug prediction algorithms in academia and the lack of their adoption in software engineering practice. Lewis et al. presented volunteer software developers at Google with the results of two state-of-the-art algorithms. The first, the award winning FIxCache which caches files that are predicted to be bug-prone (Lewis et al. used two versions of this algorithm, one biased to cache newer files and the other biased to cache older files) and the second is what they call the Rahman algorithm which uses &#8220;the number of closed bugs to rank files from most bug-prone to least bug-prone&#8221;.</p>
<p>The highlight of this paper is the list of three must-have characteristics for a bug prediction algorithm to be adopted as part of the software development process:</p>
<ol>
<li>Actionable messages: The output of a bug prediction algorithm should be actionable.</li>
<li>Obvious reasoning: When a bug prediction algorithm flags a file as bug prone, developers would like to know why to allay any fears that the flag is a false positive.</li>
<li>Bias towards the new: Developers are more concerned with files that are currently causing problems.</li>
</ol>
<p>These characteristics were born from conversations with Google developers which led Lewis et al. to create TWS (an optimized version of the Rahman algorithm). TWS addressed two of the three must-have characteristics (2 and 3 above). The results showed that developer behavior did not change significantly before and after TWS was deployed. Lewis et al. looked at this result as a failure of TWS which did not present developers with actionable messages.</p>
<p>This work opens a line of discussion as to the real success of bug prediction algorithms, who are their most likely users, and what they should offer beyond precision, recall and F-measures.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/SLAu6WwoJyg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=531</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=531</feedburner:origLink></item>
		<item>
		<title>First Impressions of MSR</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/vafBlZBLwfg/</link>
		<comments>http://www.neverworkintheory.org/?p=525#comments</comments>
		<pubDate>Tue, 04 Jun 2013 16:12:53 +0000</pubDate>
		<dc:creator>gvwilson</dc:creator>
				<category><![CDATA[Conferences]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=525</guid>
		<description><![CDATA[Mike Hoye, Mozilla&#8217;s Engineering Community Manager, attended the Mining Software Repositories conference for the first time this year. Here are his impressions. The MSR program is at http://2013.msrconf.org/ along with links, where possible, to the papers being discussed. Sadly, the IEEE is not in the information-sharing business, but many of the papers can be found [...]]]></description>
				<content:encoded><![CDATA[<p><em><a href="http://exple.tive.org/blarg/">Mike Hoye</a>, Mozilla&#8217;s Engineering Community Manager, attended the <a href="http://2013.msrconf.org/">Mining Software Repositories</a> conference for the first time this year. Here are his impressions. </em></p>
<p>The MSR program is at <a href="http://2013.msrconf.org/">http://2013.msrconf.org/</a> along with links, where possible, to the papers being discussed. Sadly, the IEEE is not in the information-sharing business, but many of the papers can be found linked from <a href="http://2013.msrconf.org/program.php">here</a>. Prof. Gail Murphy opened the talk with a pretty straightforward question: what is developer productivity? Her slides are <a href="https://speakerdeck.com/murphygc/software-development-productivity">here</a>, but they don&#8217;t really convey how good a talk it was.</p>
<p>The one thing that we as an industry were repeatedly asked for, and this came up a lot—perhaps unsurprisingly, given that this is a group of people whose job is mining software repositories—was this:</p>
<blockquote><p><em> You should have instrumentation and logging around your processes. </em></p></blockquote>
<p>This isn&#8217;t pure altruism on their part, of course, but it&#8217;s not pure self-interest either. Over and over again, the papers being presented drove home the points that there are a surprising number of tool-assisted efficiencies hidden in your software&#8217;s history, provided that history is around to be analyzed in the first place. Instrumentation grows up to become automation informed by logs that turn into history, and good tooling around a project&#8217;s history can play an active role in building its future.</p>
<p>Dr. Murphy&#8217;s talk got a lot more specific and a lot heavier, than that—read the slides, at the very least. But one point that I thought she went through a too fast was: what if it was simple? What if it was easy to drill into comprehensive lifecycle data, see trends, and reflect on my own place and role in those trends? I&#8217;ve got some theories about that, but I&#8217;ll get back to them shortly.</p>
<p>So, right from the opening, there were results being presented that jumped out at me as being relevant to our work at Mozilla, particularly given our very much inbox-driven development and communication approach. For example, the <a href="http://dl.acm.org/citation.cfm?id=2487090">paper by Mukherjee and Garg</a> about triaging email notifications proposes:</p>
<blockquote><p><em> …a machine learning based approach to predict whether a notification will prompt any action from its recipient. Such a prediction can help to suitably mark up notifications and to decide whether a notification needs to be sent out immediately or be bundled in a message digest. </em></p></blockquote>
<p>This certainly seems like something we could use, as do the other two papers in that timeslot, describing different approaches to automatically triaging bugs. Later on in the day it was shown that the #1 factor affecting how long it takes a bug to be fixed is fast, accurate triage, so a tool-guided bug triage process seems like a pretty big win, particularly one that learns over the long term.</p>
<p>Over the course of the day, as we moved into the MSR-Mobile and Mining Challenge parts of the conference, even things that weren&#8217;t directly on-point for Mozilla were still pretty compelling. Textual analysis of Stack Overflow and other help sites that highlights pain points for our community across our products and services is a great idea. Automated approaches to figuring out which parts of an API are brittle or hard to use, which parts of our documentation need help, what new features people are asking for…are we doing that? Not in depth, I don&#8217;t think, and not to drive decision-making. The Mozilla Developer Network (MDN) is making some moves in that direction, but I think there&#8217;s some opportunities there we&#8217;re not taking advantage of.</p>
<p>Another thing that came to light during the Stack Overflow data analysis talks was that the activity from people who are awarded &#8220;marathon&#8221; badges—500 edits, 500 comments, that sort of thing—drops way off after they&#8217;ve received the badge. I&#8217;d like to dig into that a bit more, to try and understand the causal relationship there: is it that people just get the achievement and then stop, is it that people suddenly realize how much time they&#8217;ve spent on Stack Overflow and decide to maybe go outside instead? Still, that discovery should inform some of our badging efforts as we start to ramp up the OpenBadges efforts on Mozillians.</p>
<p>The Analysis Of Bug Reports section of the talk…just read the whole thing. I&#8217;d be doing it a disservice to summarize, but certainly in light of the well-documented problems porting defect-prediction methods across software projects (a noble endeavor with a <a href="http://thomas-zimmermann.com/publications/files/zimmermann-esecfse-2009.pdf">96% failure rate</a>, if you needed a windmill to tilt at this week) it was pretty great that so many of the papers presented here were built on Mozilla&#8217;s historical data. Go team! (Incidentally, this is the part of the day that &#8220;accurate triage is the most important thing&#8221; comes from, courtesy of Mani et al.)</p>
<p>There&#8217;s a lot more to say about this, but shortly after this the content of the talks went a little bit past my pay grade. I spent more than a few of them feeling like that <a href="http://www.youtube.com/watch?v=Ccoj5lhLmSQ">one guy in GoodBurger</a>: &#8220;Hmm, yeah… I know some of these words&#8221;.</p>
<p>What I want to talk about most is building out tools with an eye towards future machine learning and tool-driven analysis. I&#8217;ve been a sysadmin by trade for a long time, and one of the most important things I&#8217;ve learned there is that if you&#8217;re in a complex environment with a lot of moving parts, you absolutely must have comprehensive, centralized logging. It&#8217;s at the core of virtually everything you need to accomplish, whether it&#8217;s today&#8217;s sev-1 incident response or next year&#8217;s capacity planning, and without it you&#8217;re flying deaf and blind. But if you&#8217;ve got it, you&#8217;ve got notifications, advance warnings, statistical analysis, fault prediction—dozens and maybe hundreds of options and opportunities open up on timescales from preemptive to strategic.</p>
<p>I think we should try to apply the same approach to development tools and developer machines. Disk space isn&#8217;t super-expensive—not free, I know, but I&#8217;m talking about text here—so here&#8217;s my one-point plan: if you&#8217;re building a tool that reports back to stdout/stderr, whatever it is, build in an option to send that information (or a structured version of it) to syslog at the same time. If you&#8217;re part of a team using those tools, centralize those logs. It seems like an odd thing to do—certainly I don&#8217;t know of anyone else doing that—but while I don&#8217;t know for sure, I&#8217;m willing to bet after a while, the information we&#8217;ll be able to learn from those logs will surprise us. And even if we don&#8217;t know what to do with it, the people at MSR who are keen to collaborate with us will.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/vafBlZBLwfg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=525</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=525</feedburner:origLink></item>
		<item>
		<title>A Characteristic Study on Failures of Production Distributed Data-Parallel Programs</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/N4zqYdbc-5A/</link>
		<comments>http://www.neverworkintheory.org/?p=518#comments</comments>
		<pubDate>Tue, 16 Apr 2013 18:08:23 +0000</pubDate>
		<dc:creator>gvwilson</dc:creator>
				<category><![CDATA[Qualitative Studies]]></category>
		<category><![CDATA[Quantitative Studies]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=518</guid>
		<description><![CDATA[Sihan Li, Hucheng Zhou, Haoxiang Lin, Tian Xiao, Haibo Lin, Wei Lin, and Tao Xie: &#8220;A Characteristic Study on Failures of Production Distributed Data-Parallel Programs&#8220;. Proc. ICSE 2013. SCOPE is adopted by thousands of developers from tens of different product teams in Microsoft Bing for daily web-scale data processing, including index building, search ranking, and [...]]]></description>
				<content:encoded><![CDATA[<p>Sihan Li, Hucheng Zhou, Haoxiang Lin, Tian Xiao, Haibo Lin, Wei Lin, and Tao Xie: &#8220;<a href="http://research.microsoft.com/apps/pubs/default.aspx?id=185279">A Characteristic Study on Failures of Production Distributed Data-Parallel Programs</a>&#8220;. <em>Proc. ICSE 2013</em>.</p>
<blockquote><p><em>SCOPE is adopted by thousands of developers from tens of different product teams in Microsoft Bing for daily web-scale data processing, including index building, search ranking, and advertisement display. A SCOPE job is composed of declarative SQL-like queries and imperative C# user-defined functions (UDFs), which are executed in pipeline by thousands of machines. There are tens of thousands of SCOPE jobs executed on Microsoft clusters per day, while some of them fail after a long execution time and thus waste tremendous resources. Reducing SCOPE failures would save significant resources.</em></p>
<p><em>This paper presents a comprehensive characteristic study on 200 SCOPE failures/fixes and 50 SCOPE failures with debugging statistics from Microsoft Bing, investigating not only major failure types, failure sources, and fixes, but also current debugging practice. Our major findings include (1) most of the failures (84.5%) are caused by defects in data processing rather than defects in code logic; (2) table-level failures (22.5%) are mainly caused by programmers&#8217; mistakes and frequent data-schema changes while row-level failures (62%) are mainly caused by exceptional data; (3) 93% of fixes do not change data processing logic; (4) there are 8% failures with root cause not at the failure-exposing stage, making current debugging practice insufficient in this case. Our study results provide valuable guidelines for future development of data-parallel programs. We believe that these guidelines are not limited to SCOPE, but can also be generalized to other similar data-parallel platforms.</em></p></blockquote>
<p>This insightful little paper is a great example of how a small investment in studying how things actually work can beneficially impact where developers focus their effort. A similar fault analysis of (for example) the way novices do joins in SQL, or of how they get list comprehensions in Python wrong, would be very welcome. We look forward to seeing how the team at Microsoft incorporates these findings into the next version of SCOPE.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/N4zqYdbc-5A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=518</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=518</feedburner:origLink></item>
		<item>
		<title>Comments on Firefox Available for Analysis</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/Dex0YMoCT3g/</link>
		<comments>http://www.neverworkintheory.org/?p=508#comments</comments>
		<pubDate>Sun, 24 Mar 2013 12:55:22 +0000</pubDate>
		<dc:creator>gvwilson</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=508</guid>
		<description><![CDATA[A team of Mozilla developers ran a Reddit &#8220;Ask Me Anything&#8221; on Firefox two weeks ago. Several thousand comments were submitted, and Blake Winton has now sorted and classified them. It seems like it would be a useful data set for someone doing empirical software engineering research; if you&#8217;d like to have a look, please [...]]]></description>
				<content:encoded><![CDATA[<p>A team of Mozilla developers ran a Reddit <a href="http://www.reddit.com/r/IAmA/comments/19x7up/we_are_the_firefox_user_experience_team_this_is/">&#8220;Ask Me Anything&#8221; on Firefox</a> two weeks ago. Several thousand comments were submitted, and Blake Winton has now sorted and classified them. It seems like it would be a useful data set for someone doing empirical software engineering research; if you&#8217;d like to have a look, please <a href="mailto:greg@mozillafoundation.org">get in touch</a>.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/Dex0YMoCT3g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=508</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=508</feedburner:origLink></item>
		<item>
		<title>Halving Fail Rates using Peer Instruction</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/RuzGR0oyMyk/</link>
		<comments>http://www.neverworkintheory.org/?p=503#comments</comments>
		<pubDate>Fri, 08 Mar 2013 15:46:25 +0000</pubDate>
		<dc:creator>gvwilson</dc:creator>
				<category><![CDATA[Education]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=503</guid>
		<description><![CDATA[Leo Porter, Cynthia Bailey-Lee, and Beth Simon: &#8220;Halving Fail Rates using Peer Instruction: A Study of Four Computer Science Courses&#8220;. Proc. SIGCSE 2013. Peer Instruction (PI) is a teaching method that supports student- centric classrooms, where students construct their own understanding through a structured approach featuring questions with peer discussions. PI has been shown to [...]]]></description>
				<content:encoded><![CDATA[<p>Leo Porter, Cynthia Bailey-Lee, and Beth Simon: &#8220;<a href="http://db.grinnell.edu/sigcse/sigcse2013/Program/viewAcceptedProposal.pdf?sessionType=paper&amp;sessionNumber=176">Halving Fail Rates using Peer Instruction: A Study of Four Computer Science Courses</a>&#8220;. <em>Proc. SIGCSE 2013</em>.</p>
<blockquote><p><em>Peer Instruction (PI) is a teaching method that supports student- centric classrooms, where students construct their own understanding through a structured approach featuring questions with peer discussions. PI has been shown to increase learning in STEM disciplines such as physics and biology. In this report we look at another indicator of student success – the rate at which students pass the course or, conversely, the rate at which they fail. Evaluating 10 years of instruction of 4 different courses spanning 16 PI course instances, we find that adoption of the PI methodology in the classroom reduces fail rates by a per-course average of 61% (20% reduced to 7%) compared to Standard Instruction (SI). Moreover, we also find statistically significant improvements within-instructor. For the same instructor teaching the same course, we find PI decreases the fail rate, on average, by 67% (from 23% to 8%) compared to SI. As an in-situ study, we discuss the various threats to the validity of this work and consider implications of wide-spread adoption of PI in computing programs.<br />
</em></p></blockquote>
<p>This paper, which has just been presented at SIGCSE 2013 in Denver, may be one of the most significant empirical results we&#8217;ve ever reported. As the abstract says, a specific teaching technique can cut the failure rate in introductory classes by more than half; it also increases self-reported learner satisfaction. To find out more, check out <a href="http://www.peerinstruction4cs.org/">http://www.peerinstruction4cs.org/</a>.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/RuzGR0oyMyk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=503</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=503</feedburner:origLink></item>
		<item>
		<title>Experimental Assessment of Software Metrics Using Automated Refactoring</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/-5EQxjxWcjU/</link>
		<comments>http://www.neverworkintheory.org/?p=488#comments</comments>
		<pubDate>Tue, 12 Feb 2013 17:33:08 +0000</pubDate>
		<dc:creator>FelienneHermans</dc:creator>
				<category><![CDATA[Metrics]]></category>
		<category><![CDATA[Refactoring]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=488</guid>
		<description><![CDATA[Mel Ó Cinnéide, Laurence Tratt, Mark Harman, Steve Counsell, and Iman Hemati Moghadam, Experimental Assessment of Software Metrics Using Automated Refactoring, ESEM &#8217;12, Lund, Sweden. The impact and applicability of software metrics continues to be a subject of debate, especially since there are many metrics that measure similar properties, like cohesion. This raises the question of the extent to [...]]]></description>
				<content:encoded><![CDATA[<p><em>Mel Ó Cinnéide, Laurence Tratt, Mark Harman, Steve Counsell, and Iman Hemati Moghadam, <strong><a href="http://tratt.net/laurie/research/pubs/papers/o_cinneide_tratt_harman_counsell__experimental_assessment_of_software_metrics_using_automated_refactoring.pdf">Experimental Assessment of Software Metrics Using Automated Refactoring</a></strong>, ESEM &#8217;12, Lund, Sweden.</em></p>
<p>The impact and applicability of software metrics continues to be a subject of <a href="http://www.neverworkintheory.org/?p=58">debate</a>, especially since there are many metrics that measure similar properties, like cohesion. This raises the question of the extent to which these metrics agree or not.</p>
<p>The interesting idea that this paper proposes is to not only analyze the agreement and disagreement of metrics, but to also investigate how the metrics change on refactored versions of the same code. The authors do so by randomly applying automated refactorings to a code base and observing how these refactorings impact the metrics. By running these automated refactoring analysis, the authors want to distinguish between what they call <em>volatile</em> metrics, those that are easily impacted, and <em>inert</em> metrics that hardly change under refactoring. Furthermore, they want to know what metrics change in relation with one another, are the refactorings that cause one metric to increase, while another (supposedly measuring a similar property) decreases.</p>
<p>They applied their method to 300KLOC of Java code of 8 open source systems and investigated the following five metrics:</p>
<ul>
<li>Tight Class Cohesion(TCC)</li>
<li>Lack of Cohesion between Methods (LCOM5)</li>
<li>Class Cohesion (CC)</li>
<li>Sensitive Class Cohesion (SCOM)</li>
<li>Low-level Similarity Base Class Cohesion. (LSCC)</li>
</ul>
<p>Their evaluation shows that LSCC, CC and LCOM5 are all highly volatile metrics: in 99% of the refactorings, these were either increased or decreased. The results, however, were different for the 8 systems under consideration. In one case, for example, all metrics turned out to be volatile. Even when normalizing for relative volatility, the variance remained high.</p>
<p>In a second evaluation, the relationship between two of the cohesion metrics, LSCC and TCC, is explored in more detail. Refatorings where one of those two metrics is lowered, while the other is increased are studied in more detail.</p>
<p>What makes this work so interesting, apart from the cool originality of applying automated refactoring in the context of metrics, is the fact that it changes our perception of metrics. Where we previously assumed that different metrics for cohesion were mainly a matter of taste (and hence debate), this papers finds that metrics can not only differ, but that they can be conflicting in many cases.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/-5EQxjxWcjU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=488</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=488</feedburner:origLink></item>
		<item>
		<title>MSR 2013 – Call for Papers</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/X7mN5BlA1qc/</link>
		<comments>http://www.neverworkintheory.org/?p=474#comments</comments>
		<pubDate>Tue, 29 Jan 2013 21:37:15 +0000</pubDate>
		<dc:creator>gvwilson</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Mining]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=474</guid>
		<description><![CDATA[10th Working Conference on Mining Software Repositories May 18-19, 2013. San Francisco, CA, USA http://2013.msrconf.org Co-located with the 35th ACM/IEEE International Conference on Software Engineering (ICSE 2013) Sponsored by IEEE TCSE and ACM SIGSOFT NEW IN 2013! Data papers for describing data sets curated by their authors and making them available to the research community [...]]]></description>
				<content:encoded><![CDATA[<p><strong>10th Working Conference on Mining Software Repositories</strong><br />
May 18-19, 2013. San Francisco, CA, USA<br />
<a href="http://2013.msrconf.org">http://2013.msrconf.org</a></p>
<p>Co-located with the 35th ACM/IEEE International Conference on Software Engineering (ICSE 2013)<br />
Sponsored by IEEE TCSE and ACM SIGSOFT</p>
<p>NEW IN 2013!</p>
<ul>
<li>Data papers for describing data sets curated by their authors and making them available to the research community</li>
<li>Practice papers for experiences of applying mining repository algorithms in an industry/open source organization context</li>
<li>Microsoft Surface tablet with Windows RT as prize for the best Mining Challenge, sponsored by Microsoft Research.</li>
</ul>
<p>IMPORTANT DATES</p>
<ul>
<li>Research/Practice abstracts: Feb 8, 2013</li>
<li>Research/Practice papers: Feb 15, 2013</li>
<li>Data papers: Feb 15, 2013</li>
<li>Challenge papers: Mar 04, 2013</li>
<li>Author notification: Mar 15, 2013</li>
<li>Camera-ready copy: Mar 29, 2013</li>
<li>Conference: May 18-19, 2013</li>
</ul>
<p>All submission deadlines are 11:59 PM (Pago Pago, American Samoa) on the dates indicated.</p>
<p>CALL FOR PAPERS</p>
<p>Software repositories such as source control systems, archived communications between project personnel, and defect tracking systems are used to help manage the progress of software projects. Software practitioners and researchers are recognizing the benefits of mining this information to support the maintenance of software systems, improve software design/reuse, and empirically validate novel ideas and techniques. Research is now proceeding to uncover the ways in which mining these repositories can help to understand software development and software evolution, to support predictions about software development, and to exploit this knowledge concretely in planning future development. The goal of this two-day working conference is to advance the science and practice of software engineering via the analysis of data stored in software repositories.</p>
<p>This year, we will solicit three tracks of papers: Research, Practice, and Data. As in previous MSR editions, there will be a Mining Challenge on Stack Overflow data and a special issue of best MSR papers in the Empirical Software Engineering journal.</p>
<p>Research papers: Research papers can be short papers (4 pages) and full papers (10 pages). Short research papers should discuss controversial issues in the field, or describe interesting or thought provoking ideas that are not yet fully developed. Accepted short papers will present their ideas in a short lightning talk. Full research papers are expected to describe new research results, and have a higher degree of technical rigor than short papers.</p>
<p>Practice papers: (New!) Practice papers should report experiences of applying mining repository algorithms in an industry/open source organization context. Practice papers aim at reporting positive or negative experiences of applying known algorithms, but adapting existing algorithms or proposing new algorithms for practical use would be plus. Practice papers also can be short papers (4 pages) and full papers (10 pages).</p>
<p>Data papers: (New!) We want to encourage researchers to share their data. Data papers should describe data sets curated by their authors and made available to others. They are expected to be at most 4 pages long and should address the following: description of the data, including its source; methodology used to gather it; description of the schema used to store it, and any limitations and/or challenges of this data set. The data should be made available at the time of submission of the paper for review, but will be considered confidential until publication of the paper. Further details about data papers are available on the conference website.</p>
<p>Mining challenge: In the Mining Challenge, we invite researchers to demonstrate the usefulness of their mining tools on preselected software repositories and summarize their findings in a challenge report (4 pages). Please visit our Challenge Web Site for details about the Mining Challenge. This year, the challenge is on the Stack Overflow data. We provide the dump for the Stack Overflow web service and you should use your brain, tools, computational power, and magic to uncover interesting findings related to it.</p>
<p>EMSE SPECIAL ISSUE</p>
<p>A selection of the best research papers will be invited for consideration in a special issue of the journal, Empirical Software Engineering (EMSE), edited by Springer.</p>
<p>TOPICS</p>
<p>Papers may address issues along the general themes, including but not limited to the following:</p>
<ul>
<li>Analysis of software ecosystems and mining of repositories across multiple projects</li>
<li>Models for social and development processes that occur in large software projects</li>
<li>Prediction of future software qualities via analysis of software repositories</li>
<li>Models of software project evolution based on historical repository data</li>
<li>Characterization, classification, and prediction of software defects based on analysis of software repositories</li>
<li>Techniques to model reliability and defect occurrences</li>
<li>Search-driven software development, including search techniques to assist developers in finding suitable components and code fragments for reuse, and software search engines</li>
<li>Analysis of change patterns and trends to assist in future development</li>
<li>Visualization techniques and models of mined data</li>
<li>Techniques and tools for capturing new forms of data for storage in software repositories, such as effort data, fine-grained changes, and refactoring</li>
<li>Characterization of bias in mining and guidelines to ensure quality results</li>
<li>Privacy and ethics in mining software repositories</li>
<li>Meta-models, exchange formats, and infrastructure tools to facilitate the sharing of extracted data and to encourage reuse and repeatability</li>
<li>Empirical studies on extracting data from repositories of large long-lived and/or industrial projects</li>
<li>Methods of integrating mined data from various historical sources</li>
<li>Approaches, applications, and tools for software repository mining</li>
<li>Mining software licensing and copyrights</li>
<li>Mining execution traces and logs</li>
<li>Analysis of natural language artifacts in software repositories</li>
</ul>
<p>SUBMISSION</p>
<p>All papers must conform at time of submission to the ICSE/MSR 2013 Formatting Instructions and must not exceed the page limits (research/practice papers: 10 pages; short papers: 4 pages; data papers: 4 pages; challenge reports: 4 pages), including all text, references, appendices and figures. All submissions must be in English and in PDF format.</p>
<p>Papers submitted for consideration should not have been published elsewhere and should not be under review or submitted for review elsewhere for the duration of consideration. ACM plagiarism policies and procedures shall be followed for cases of double submission.</p>
<p>Papers must be submitted electronically through EasyChair using the following URL: <a href="http://easychair.org/conferences/?conf=msr2013">http://easychair.org/conferences/?conf=msr2013</a></p>
<p>Upon notification of acceptance, all authors of accepted papers will be asked to complete an IEEE Copyright form and will receive further instructions for preparing their camera ready versions. At least one author of each paper is expected to present the results at the MSR 2013 conference. All accepted contributions will be published in the conference electronic proceedings.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/X7mN5BlA1qc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=474</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=474</feedburner:origLink></item>
		<item>
		<title>Why We Need Evidence</title>
		<link>http://feedproxy.google.com/~r/ItWillNeverWorkInTheory/~3/Lump4Mz2DmY/</link>
		<comments>http://www.neverworkintheory.org/?p=457#comments</comments>
		<pubDate>Sun, 30 Dec 2012 21:19:16 +0000</pubDate>
		<dc:creator>gvwilson</dc:creator>
				<category><![CDATA[Questions]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.neverworkintheory.org/?p=457</guid>
		<description><![CDATA[Our previous post, &#8220;Empirical Evidence for the Value of Version Control&#8220;, generated a lot of comments. Many sought to explain why version control is helpful, but that&#8217;s not what we were looking for: we were looking for empirical evidence that it is. To see why we need it, take a look at this response from [...]]]></description>
				<content:encoded><![CDATA[<p>Our previous post, &#8220;<a href="http://www.neverworkintheory.org/?p=451">Empirical Evidence for the Value of Version Control</a>&#8220;, generated a lot of comments. Many sought to explain <em>why</em> version control is helpful, but that&#8217;s not what we were looking for: we were looking for empirical evidence that it is. To see why we need it, take a look at <a href="http://modeling-languages.com/next-time-you-ask-for-proof-of-the-benefits-of-software-modeling-i-will/">this response</a> from Jordi Cabot [1]. In it, he says:</p>
<blockquote><p>
Quite regularly, I get questions about what empirical evidence supports my &#8220;belief&#8221; that models are good&#8230; Until now, I used to point to the (true, few) scientific empirical studies on the effectiveness of software modeling&#8230;but now I have an even anser to give you: “Empirical Evidence of the Value of Version Control”.<br />
No, I haven&#8217;t lost my mind. The point of this link is to show you that there&#8217;s no proof that version control is better for software development, and yet, I don&#8217;t think any of you would argue against it.<br />
Same for modeling and model-driven engineering. It would be great to have more proof but the absence of proof alone should not be used against it unless you want to start also abandoning other unproven things like version control.
</p></blockquote>
<p>He&#8217;s right: if we&#8217;re willing to accept that version control is valuable, without proof, then we can hardly require advocates of modeling to prove their case.  Or advocates of functional programming, or literate programming, or <a href="http://en.wikipedia.org/wiki/Hungarian_notation">Hungarian notation</a>. Heck, if we don&#8217;t require proof for <em>our</em> claims, then we&#8217;re honor-bound to accept that Perl is &#8220;intuitive&#8221; because its grammar has as many special cases and contradictions as the grammars of natural languages, aren&#8217;t we? Or that learning <a href="http://en.wikipedia.org/wiki/Befunge">Befunge</a> makes you a better programmer (seriously, I&#8217;ve heard that claim too).</p>
<p>At some point, the statement, &#8220;If we don&#8217;t need to prove the value of version control, we don&#8217;t need to prove the value of X&#8221; becomes absurd. However, everyone&#8217;s threshold of absurdity is different. I personally <em>don&#8217;t</em> think that modeling adds value for most developers in most situations&mdash;I think that if it did, or if its benefits really were as significant as its advocates claim, more developers would have adopted it by now&mdash;but <em>I don&#8217;t <u>know</u></em>. What I do know is, if we can&#8217;t demonstrate the value of something that most of us believe in, like version control, what chance do we have of telling whether other practices, like modeling and test-driven development, are worth adopting (or rather, when they&#8217;re worth adopting and by whom, since I doubt there&#8217;s a one-size-fits-all answer)?</p>
<p>So here are my requests:</p>
<ol>
<li>Tell us what kind of study would convince you that using Befunge <em>didn&#8217;t</em> make programmers more productive.</li>
<li>Then tell us what kind of study would convince you that version control didn&#8217;t either.</li>
</ol>
<p>If your answer to the second question is is, &#8220;Nothing ever could,&#8221; then version control is an article of faith for you, and there&#8217;s no point arguing further [2]. If your answer to the second is different from your answer to the first, please tell us why.</p>
<p>[1] Full disclosure: Jordi and I co-authored <a href="http://www.drdobbs.com/tools/tools-for-teams-a-survey-of-web-based-so/220301068">a study of web-based software project portals</a>. And either way, we hope you have a happy and productive 2013.</p>
<p>[2] This request is inspired by Karl Popper&#8217;s notion of <a href="http://en.wikipedia.org/wiki/Falsificationism">falsifiability</a>: a claim is only scientific if there is some way to prove it wrong.</p>
<img src="http://feeds.feedburner.com/~r/ItWillNeverWorkInTheory/~4/Lump4Mz2DmY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.neverworkintheory.org/?feed=rss2&amp;p=457</wfw:commentRss>
		<slash:comments>23</slash:comments>
		<feedburner:origLink>http://www.neverworkintheory.org/?p=457</feedburner:origLink></item>
	</channel>
</rss>
