-
Notifications
You must be signed in to change notification settings - Fork 1
/
ISSE21_index.html
140 lines (128 loc) · 6.11 KB
/
ISSE21_index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-180076082-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-180076082-1');
</script>
<title>Refactoring Lab</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<style>
/* Remove the navbar's default margin-bottom and rounded borders */
.navbar {
margin-bottom: 0;
border-radius: 0;
}
/* Set height of the grid so .sidenav can be 100% (adjust as needed) */
.row.content {height: 800px}
/* Set gray background color and 100% height */
.sidenav {
padding-top: 20px;
background-color: #f1f1f1;
height: 100%;
}
/* Set black background color, white text and some padding */
footer {
background-color: #555;
color: white;
padding: 15px;
}
/* On small screens, set height to 'auto' for sidenav and grid */
@media screen and (max-width: 767px) {
.sidenav {
height: auto;
padding: 15px;
}
.row.content {height:auto;}
}
</style>
</head>
<body>
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li class="active"><a href="index.html">Home</a></li>
<li class="active"><a href="ISSE21_Experiment.html">Experiment</a></li>
<li class="active"><a href="ISSE21_Example.html">Example</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid text-center">
<div class="row content">
<div class="col-sm-2 sidenav">
<h3>Collected Data</h3>
<div class="well">
<p></p>
<p><a href="./Data/Project_CommitId.csv">Project & CommitId</a></p>
</div>
<div class="well">
<p></p>
<p><a href="./Data/MetricGeneration_Reusability.zip">Metric Calculation (Script)</a></p>
</div>
<div class="well">
<p></p>
<p><a href="./Data/MetricValues_Reusability.zip">Metric Values Before & After Reusability Refactorings</a></p>
</div>
</div>
<div class="col-sm-8 text-left">
<h1>Refactoring for Reuse: An Empirical Study</h1>
<hr>
<p>In this empirical study, we aim at identifying, among the various quality models presented in the literature, the ones that are more in-line with the
developer's vision of reusability optimization, when they explicitly mention that they are refactoring to improve them. We extract a large corpus of design-related refactoring
activities that are applied and documented by developers during their daily changes from 1,828 curated open source
Java projects. In particular, we extract structural metrics from
which we identify 1,967 reusability improvement commits with their corresponding refactoring operations, as perceived by software engineers. Thereafter, we empirically analyze the impact of these refactoring operations on a set of common state-of-the-art design quality metrics.</p><br>
<p>More specifically, the research questions that we investigated are:</p>
<p><strong>RQ1. Do developers refactor code differently for the purpose of improving
reusability?</strong></p>
<p>To answer this research question, we extract
the type of refactorings that are chosen by developers to improve reusability.
We also investigate if there are any refactoring patterns that are specific to
reusability, by comparing the distribution of reusability-related refactorings, with
the distribution of refactorings for other mainstream development tasks. Then,
we identify any significant differences between the distribution values in the two
populations.</p>
<p><strong>RQ2. What is the impact of reusability refactorings on structural metrics?</strong></p>
<p>To answer this research question, we consider the state-of-the-art reusability
structural metrics, extracted from previous studies. We calculate these
metrics on fles before and after they were refactored for improving reusability.
Then we analyze the impact of refactorings on the variation of these metrics, to
see if they were capturing the improvement.</p>
<p><strong>RQ3. What triggers developers to refactor the code for the purpose of code reuse?</strong></p>
<p>To answer this research question, we perform case studies that demonstrate GitHub developers’ intentions when refactoring source code to improve code reusability.</p>
</br>
<p>If you are interested to learn more about the process we followed, please refer to our paper.</p>
<hr>
<h3>Related Paper</h3>
<p>Eman Abdullah AlOmar, Tianjia Wang, Vaibhavi Raut, Mohamed Wiem Mkaouer, Christian
Newman, and Ali Ouni, "Refactoring for Reuse: An Empirical Study", the Innovations in Systems and Software Engineering (ISSE'2021). <a href="./Preprint/ISSE21-preprint.pdf">[preprint]</a></p>
</div>
<div class="col-sm-2 sidenav">
</div>
</div>
</div>
<footer class="container-fluid text-center">
<p></p>
</footer>
<!-- Google Analytics -->
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','../../www.google-analytics.com/analytics.js','ga');ga('create','UA-180076082-1','auto');ga('send','pageview');</script>
</body>
</html>