<?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>Rahul Premraj</title>
	<atom:link href="http://www.cs.vu.nl/~rpremraj/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cs.vu.nl/~rpremraj</link>
	<description>Assistant Professor in Empirical Software Engineering at Vrije Universiteit Amsterdam</description>
	<lastBuildDate>Wed, 06 Apr 2011 05:45:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2-bleeding</generator>
		<item>
		<title>ESEM-2011</title>
		<link>http://www.cs.vu.nl/~rpremraj/2011/03/esem-2011-2/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2011/03/esem-2011-2/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 19:19:34 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=4911</guid>
		<description><![CDATA[ESEM-2011 This page provides supplementary material for our research paper submitted to ESEM 2011. We provide access to both data and scripts used to perform the experiments. Our goal is to encourage means and methods to foster transparency, replicability, and &#8230; <a href="http://www.cs.vu.nl/~rpremraj/2011/03/esem-2011-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<hr />
<h2><a name="_esem_2011"></a>ESEM-2011</h2>
<p>This page provides supplementary material for our research paper submitted to ESEM 2011. We provide access to both data and scripts used to perform the experiments. Our goal is to encourage means and methods to foster transparency, replicability, and reproduction of our experiments.</p>
<p>The experiments have been conducted using the R programming language. Hence the data and scripts are in the corresponding formats. We assume that readers have basic understanding of R to use the resources shared below. In the future, we will make the data available in more widely accessible formats such as CSV.</p>
<p>Your feedback to improve this page is welcome.</p>
<p>&#8212;&#8201;Rahul Premraj and Kim Herzig</p>
<p>Script to run the experiments:</p>
<p>Load all required R libraries.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; rm(list = ls(all = TRUE))
&gt; library(caret)
&gt; library(gdata)
&gt; library(plyr)
&gt; library(reshape)
&gt; library(R.utils)</pre>
</td>
</tr>
</table>
<p>We demonstrate our experiments on code data from JRuby 1.0 using the stratified repeated holdout setup. The code can be easily adapted/re-used to work with data from other projects and other experimental setups used in the paper.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; load("jruby_1.0.RData")
&gt; ls()
[1] "all.data"     "code.data"    "network.data" "project"      "version"</pre>
</td>
</tr>
</table>
<p>Several utility functions needed to execute the experiments. This function splits a data set into training inputs (dataX) and outputs (dataY).</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; prepData &lt;- function(data) {
+     data &lt;- data[!duplicated(data$file), ]
+     rownames(data) &lt;- data$file
+     data$file &lt;- NULL
+     dataX &lt;&lt;- data[, 1:(ncol(data) - 1)]
+     dataY &lt;- data[, ncol(data)]
+     dataY &lt;&lt;- factor(ifelse(dataY &gt; 0, "One", "Zero"))
+ }
&gt; prepData(code.data)
&gt; ls()
[1] "all.data"     "code.data"    "dataX"        "dataY"        "network.data" "prepData"     "project"
[8] "version"</pre>
</td>
</tr>
</table>
<p>This function is a generic one to train prediction models.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; trainModel &lt;- function(method) {
+     model &lt;- train(trainX, trainY, method = method, tuneLength = tuneLengthValue, trControl = train.control,
+         metric = "Kappa")
+     return(model)
+ }</pre>
</td>
</tr>
</table>
<p>These functions process the results from the prediction models.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; getPrecision &lt;- function(x) as.numeric(unname(x$byClass[3]))
&gt; getRecall &lt;- function(x) as.numeric(unname(x$byClass[1]))
&gt; getFmeasure &lt;- function(x, y) 2 * ((x * y)/(x + y))</pre>
</td>
</tr>
</table>
<p>The following code snippets run the experiments. For the sake of simplicity and illustration, we only present the code to run <strong>one</strong> stratified random split run. We used a marginally modified version of the following code to utilize multiple cores on our machines using (architecture specific) R packages to allow parallelization. We used foreach and doMC to run our experiments on 300 samples of data.</p>
<p>Each of the following snippets is annotated with the corresponding steps presented in the paper in Section 5. The descriptions of the steps have been copied in verbatim from the paper.</p>
<p><strong>Step 1</strong> &#8211; createDataPartition(): Generate 300 train- ing and test set from the data using stratified sampling (note that the following steps were run on each pair of training/test set).</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; inTrain &lt;- createDataPartition(dataY, times = 1, p = 2/3)
&gt; trainX &lt;- dataX[inTrain[[1]], ]
&gt; trainY &lt;- dataY[inTrain[[1]]]
&gt; testX &lt;- dataX[-inTrain[[1]], ]
&gt; testY &lt;- dataY[-inTrain[[1]]]</pre>
</td>
</tr>
</table>
<p><strong>Step 2</strong> &#8211; nearZeroVar():  Remove       numerical       input columns from the training set that have near zero variance (essentially a single value) to avoid any undue influence on the models. The same columns were then removed from the test set.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; train.nzv &lt;- nearZeroVar(trainX)
&gt; if (length(train.nzv) &gt; 0) {
+     trainX &lt;- trainX[, -train.nzv]
+     testX &lt;- testX[, -train.nzv]
+ }</pre>
</td>
</tr>
</table>
<p><strong>Step 3</strong> &#8211; findCorrelation(): Remove input columns from the training set that correlate with other columns with p &gt; .90 to avoid any undue influence on the models. The same columns were then removed from the test set.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; trainX.corr &lt;- cor(trainX)
&gt; trainX.highcorr &lt;- findCorrelation(trainX.corr, 0.9)
&gt; if (length(trainX.highcorr) &gt; 0) {
+     trainX &lt;- trainX[, -trainX.highcorr]
+     testX &lt;- testX[, -trainX.highcorr]
+ }</pre>
</td>
</tr>
</table>
<p><strong>Step 4</strong> &#8211; preProcess() and predict(): Rescale the training data using the center and rescale to minimize the effect of large values on the prediction model. We additionally experimented with performing principal component analysis on our data (similar to Z &amp; N), but this often led to inferior results. Hence we restricted ourselves to normalize our data by centering and rescaling it. The corresponding test data was centered and rescaled accordingly using the predict() function.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; xTrans &lt;- preProcess(trainX, method = c("center", "scale"))
&gt; trainX &lt;- predict(xTrans, trainX)
&gt; testX &lt;- predict(xTrans, testX)</pre>
</td>
</tr>
</table>
<p><strong>Step 5</strong> &#8211; train() We used several prediction models for our experiments. These are listed in Table III. Each model offers one or more parameters that can be tuned to optimize performance. This is internally handled by the train() function when the number of values (tuneLength) to validate is specified. We set this number to 5.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; train.control &lt;- trainControl(number = 2)
&gt; set.seed(2)
&gt; tuneLengthValue &lt;- 5
&gt; svmRadialFit &lt;- trainModel("svmRadial")
Fitting: sigma=2.523217, C=0.25
Fitting: sigma=2.523217, C=0.5
Fitting: sigma=2.523217, C=1
Fitting: sigma=2.523217, C=2
Fitting: sigma=2.523217, C=4
Aggregating results
Selecting tuning parameters
Fitting model on full training set
&gt; multinomFit &lt;- trainModel("multinom")
Fitting: decay=0
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 188.071046
final  value 186.988533
converged
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 172.820357
iter  20 value 170.667647
final  value 170.667625
converged
Fitting: decay=1e-04
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 188.071455
final  value 186.989001
converged
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 172.820790
iter  20 value 170.668299
final  value 170.668277
converged
Fitting: decay=0.001
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 188.075143
final  value 186.993210
converged
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 172.824685
iter  20 value 170.674161
final  value 170.674139
converged
Fitting: decay=0.01
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 188.112222
final  value 187.035170
converged
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 172.863571
iter  20 value 170.732468
final  value 170.732448
converged
Fitting: decay=0.1
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 188.504346
final  value 187.442268
converged
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 173.246182
iter  20 value 171.287476
final  value 171.287467
converged
Aggregating results
Selecting tuning parameters
Fitting model on full training set
# weights:  12 (11 variable)
initial  value 277.952019
iter  10 value 188.040943
final  value 186.127838
converged
&gt; rpartFit &lt;- trainModel("rpart")
Fitting: maxdepth=9
Aggregating results
Selecting tuning parameters
Fitting model on full training set
&gt; knnFit &lt;- trainModel("knn")
Fitting: k=5
Fitting: k=7
Fitting: k=9
Fitting: k=11
Fitting: k=13
Aggregating results
Selecting tuning parameters
Fitting model on full training set
&gt; treebagFit &lt;- trainModel("treebag")
Fitting: parameter=none
Aggregating results
Fitting model on full training set
&gt; nbFit &lt;- trainModel("nb")
Fitting: usekernel=TRUE
Fitting: usekernel=FALSE
Aggregating results
Selecting tuning parameters
Fitting model on full training set</pre>
</td>
</tr>
</table>
<p><strong>Step 6</strong> &#8211; extractPrediction() Each trained model was evaluated against the test data. The evaluation measures that we computed include precision, recall, and F-measure.</p>
<table border="0" bgcolor="#e8e8e8" width="100%" style="margin:0.2em 0;">
<tr>
<td style="padding:0.5em;">
<pre style="margin:0; padding:0;">&gt; models &lt;- list(knn3 = knnFit, multinom = multinomFit, rpart = rpartFit, svmRadial = svmRadialFit,
+     treebag = treebagFit, nb = nbFit)
&gt; pred.values &lt;- extractPrediction(models, testX, testY)
&gt; pred.values &lt;- subset(pred.values, dataType == "Test")
&gt; pred.values.split &lt;- split(pred.values, pred.values$object)
&gt; n.row = length(pred.values.split)
&gt; results &lt;- NULL
&gt; results &lt;- dataFrame(colClasses = c(Model = "character", Precision = "double", Recall = "double",
+     F.Measure = "double"), nrow = n.row)
&gt; for (j in 1:length(pred.values.split)) {
+     conf.matrix &lt;- confusionMatrix(pred.values.split[[j]]$pred, pred.values.split[[j]]$obs,
+         positive = "One")
+     precision &lt;- getPrecision(conf.matrix)
+     recall &lt;- getRecall(conf.matrix)
+     f.measure &lt;- getFmeasure(precision, recall)
+     results[j, 1] &lt;- names(pred.values.split)[j]
+     results[j, 2:4] &lt;- c(precision, recall, f.measure)
+ }
&gt; print(results)
      Model Precision    Recall F.Measure
1      knn3 0.6060606 0.4651163 0.5263158
2  multinom 0.6153846 0.1860465 0.2857143
3        nb 0.5217391 0.5581395 0.5393258
4     rpart 0.6486486 0.5581395 0.6000000
5 svmRadial 0.7000000 0.3255814 0.4444444
6   treebag 0.5952381 0.5813953 0.5882353</pre>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2011/03/esem-2011-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do Stack Traces Help Developers Fix Bugs?</title>
		<link>http://www.cs.vu.nl/~rpremraj/2010/03/do-stack-traces-help-developers-fix-bugs/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2010/03/do-stack-traces-help-developers-fix-bugs/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 14:12:28 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[bug tracking systems]]></category>
		<category><![CDATA[research]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=3901</guid>
		<description><![CDATA[A widely shared belief in the software engineering community is that stack traces are much sought after by developers to support them in debugging. But limited empirical evidence is available to confirm the value of stack traces to developers. In &#8230; <a href="http://www.cs.vu.nl/~rpremraj/2010/03/do-stack-traces-help-developers-fix-bugs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A widely shared belief in the software engineering community is that stack traces are much sought after by developers to support them in debugging. But limited empirical evidence is available to confirm the value of stack traces to developers. In this paper, we seek to provide such evidence by conducting an empirical study on the usage of stack traces by developers from the ECLIPSE project. Our results provide strong evidence to this effect and also throws light on some of the patterns in bug fixing using stack traces. We expect the findings of our study to further emphasize the importance of adding stack traces to bug reports and that in the future, software vendors will provide more support in their products to help general users make such information available when filing bug reports.</p>
<p><a title="Do Stack Traces Help Developers Fix BUgs?" href="http://www.cs.vu.nl/~rpremraj/publications/do-stack-traces-help-developers-fix-bugs/" target="_self">[Click here to download paper.]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2010/03/do-stack-traces-help-developers-fix-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interactive Exploration of Co-evolving Software Entities</title>
		<link>http://www.cs.vu.nl/~rpremraj/2010/03/interactive-exploration-of-co-evolving-software-entities/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2010/03/interactive-exploration-of-co-evolving-software-entities/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 16:53:32 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[research]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=3581</guid>
		<description><![CDATA[by Adam Vanya · Rahul Premraj · Hans van Vliet at CSMR 2010

Frequent changes to groups of software entities belonging to different parts of the system may indicate struc- tural issues in the system’s decomposition. An in-depth analysis of such groups of entities is needed to understand the underly- ing reasons for co-changes, and also determine how to resolve the issues. To date, static visualizations have been proposed to identify possible structural issues in software systems, but they help only to a certain extent. In this paper we discuss how interactive visualizations can further support the process of analyzing the identified structural issues. We implemented a tool that interactively visualizes software evolution and applied it to a large embedded software system having a development history of more than a decade. Our experience in using the tool along with the architects and developers suggests that interactivity adds much value when analyzing groups of co- changed software entities. <a href="http://www.cs.vu.nl/~rpremraj/2010/03/interactive-exploration-of-co-evolving-software-entities/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Frequent changes to groups of software entities belonging to different parts of the system may indicate structural issues in the system’s decomposition. An in-depth analysis of such groups of entities is needed to understand the underlying reasons for co-changes, and also determine how to resolve the issues. To date, static visualizations have been proposed to identify possible structural issues in software systems, but they help only to a certain extent. In this paper we discuss how interactive visualizations can further support the process of analyzing the identified structural issues. We implemented a tool that interactively visualizes software evolution and applied it to a large embedded software system having a development history of more than a decade. Our experience in using the tool along with the architects and developers suggests that interactivity adds much value when analyzing groups of co-changed software entities.</p>
<p><a title="Interactive Exploration of Co-evolving Software Entities" href="http://www.cs.vu.nl/~rpremraj/publications/interactive-exploration-of-co-evolving-software-entities/" target="_self">[Click here to download paper.]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2010/03/interactive-exploration-of-co-evolving-software-entities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated: How Developer Communication Frequency Relates to Bug Introducing Changes</title>
		<link>http://www.cs.vu.nl/~rpremraj/2009/08/updated-how-developer-communication-frequency-relates-to-bug-introducing-changes/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2009/08/updated-how-developer-communication-frequency-relates-to-bug-introducing-changes/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 08:19:49 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=3201</guid>
		<description><![CDATA[Presentation on How Developer Communication Frequency Relates to Bug Introducing Changes at IWPSE/EVOL &#8217;09 is uploaded. [Click here to read more.]]]></description>
			<content:encoded><![CDATA[<p>Presentation on How Developer Communication Frequency Relates to Bug Introducing Changes at IWPSE/EVOL &#8217;09 is uploaded.</p>
<p><a href="http://www.cs.vu.nl/~rpremraj/publications/how-developer-communication-frequency-relates-to-bug-introducing-changes/">[Click here to read more.]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2009/08/updated-how-developer-communication-frequency-relates-to-bug-introducing-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ESEC/FSE &#8217;09 on Twitter</title>
		<link>http://www.cs.vu.nl/~rpremraj/2009/08/esecfse-09-on-twitter/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2009/08/esecfse-09-on-twitter/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 13:31:15 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=3141</guid>
		<description><![CDATA[If you are attending ESEC/FSE &#8217;09 in Amsterdam next week, feel free to follow esecfse on Twitter to be kept updated on the latest news.]]></description>
			<content:encoded><![CDATA[<p class="introduction">If you are attending ESEC/FSE &#8217;09 in Amsterdam next week, feel free to follow <a href="http://twitter.com/esecfse" target="blank">esecfse</a> on Twitter to be kept updated on the latest news.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2009/08/esecfse-09-on-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Investigating Information Needs to Improve Cooperation Between Developers and Bug Reporters</title>
		<link>http://www.cs.vu.nl/~rpremraj/2009/08/investigating-information-needs-to-improve-cooperation-between-developers-and-bug-reporters/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2009/08/investigating-information-needs-to-improve-cooperation-between-developers-and-bug-reporters/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 12:41:04 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[bug tracking systems]]></category>
		<category><![CDATA[research]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=3101</guid>
		<description><![CDATA[For many software projects, bug tracking systems play a central role in supporting collaboration between the developers and the users of the software. To better understand this collaboration and how tool support can be improved, we have quantitatively and qualitatively &#8230; <a href="http://www.cs.vu.nl/~rpremraj/2009/08/investigating-information-needs-to-improve-cooperation-between-developers-and-bug-reporters/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For many software projects, bug tracking systems play a central role in supporting collaboration between the developers and the users of the software. To better understand this collaboration and how tool support can be improved, we have quantitatively and qualitatively analysed the questions asked in a sample of 600 bug reports from the MOZILLA and ECLIPSE projects. We categorised the questions and analysed response rates and times by category and project. Our results show that the role of users goes beyond simply reporting bugs: their active and ongoing participation is important for making progress on the bugs they report. Based on the results, we suggest four ways in which bug tracking systems can be improved.</p>
<p><a href="http://www.cs.vu.nl/~rpremraj/publications/investigating-information-needs-to-improve-cooperation-between-developers-and-bug-reporters/">[Click here to download paper.]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2009/08/investigating-information-needs-to-improve-cooperation-between-developers-and-bug-reporters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Developer Communication Frequency Relates to Bug Introducing Changes</title>
		<link>http://www.cs.vu.nl/~rpremraj/2009/08/how-developer-communication-frequency-relates-to-bug-introducing-changes/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2009/08/how-developer-communication-frequency-relates-to-bug-introducing-changes/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 15:18:48 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[bug tracking systems]]></category>
		<category><![CDATA[research]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=2971</guid>
		<description><![CDATA[Communication between developers plays a very central role in team-based software development for a variety of tasks such as coordinating development and maintenance activities, discussing requirements for better comprehension, assessing alternative solutions to complex problems, and like. However, the frequency &#8230; <a href="http://www.cs.vu.nl/~rpremraj/2009/08/how-developer-communication-frequency-relates-to-bug-introducing-changes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Communication between developers plays a very central role in team-based software development for a variety of tasks such as coordinating development and maintenance activities, discussing requirements for better comprehension, assessing alternative solutions to complex problems, and like. However, the frequency of communication varies from time to time—sometimes developers exchange more messages with each other than at other times. In this paper, we investigate whether developer communication has any bearing with software quality by examining the relationship between communication frequency and number of bugs injected into the software. The data used for this study is drawn from the bug database, version archive, and mailing lists of the JDT sub-project in ECLIPSE. Our results show a statistically signiﬁcant positive correlation between communication frequency and number of injected bugs in the software. We also noted that communication levels of key developers in the project do no correlate with number of injected bugs. Moreover, we show that defect prediction models can accommodate social aspects of the development process and potentially deliver more reliable results.</p>
<p><a href="http://www.cs.vu.nl/~rpremraj/publications/how-developer-communication-frequency-relates-to-bug-introducing-changes/">[Click here to download paper.]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2009/08/how-developer-communication-frequency-relates-to-bug-introducing-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome!</title>
		<link>http://www.cs.vu.nl/~rpremraj/2008/12/welcome/</link>
		<comments>http://www.cs.vu.nl/~rpremraj/2008/12/welcome/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 13:30:37 +0000</pubDate>
		<dc:creator>Rahul Premraj</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[introduction]]></category>

		<guid isPermaLink="false">http://www.cs.vu.nl/~rpremraj/?p=1</guid>
		<description><![CDATA[Welcome to my blog. I am Rahul Premraj and have recently been appointed as an assistant professor in empirical software engineering at Vrije Universiteit Amsterdam. I work here in the software engineering group of Prof. Hans van Vliet. You can &#8230; <a href="http://www.cs.vu.nl/~rpremraj/2008/12/welcome/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Welcome to my blog. I am Rahul Premraj and have recently been appointed as an assistant professor in empirical software engineering at Vrije Universiteit Amsterdam. I work here in the software engineering group of <a href="http://www.cs.vu.nl/~hans/">Prof. Hans van Vliet</a>. You can find more about me on <a title="About me" href="http://www.cs.vu.nl/~rpremraj/about/">this</a> page.</p>
<p>This is my first attempt to maintain a blog as a substitute to a simple web page. I wish to keep it constantly updated with entries related to my latest on-going research (including some of the things I did in the past). Once in a while, I&#8217;ll also post on topics that I am passionate about such as interesting papers by other software engineering researchers, cool Mac OS apps (sometimes Windows apps too), the R statistical software, and once in a while, on the beautiful city of Amsterdam and good food.</p>
<p>I am working towards bringing this web-site up to speed. You can already learn a lot about my research from the <a title="Publications" href="http://www.cs.vu.nl/~rpremraj/publications/" target="_self">publications</a> page. As time permits, I&#8217;ll update the <a title="Research" href="http://www.cs.vu.nl/~rpremraj/research/">research</a> page that is intended to summarise my research interests and links them to relevant publications.</p>
<p>I hope you enjoy your visit to my site, look around, and return soon.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.vu.nl/~rpremraj/2008/12/welcome/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

