Watch out for this commit! a study of influential software changes

Daoyuan Li, Li Li, Dongsun Kim, Tegawendé F. Bissyandé, David Lo, Yves Le Traon

Research output: Contribution to journalArticleResearchpeer-review

Abstract

One single code change can significantly influence a wide range of software systems and their users. For example, (a) adding a new feature can spread defects in several modules, while (b) changing an API method can improve the performance of all client programs. Unfortunately, developers often may not clearly know whether code changes are influential at commit time. This paper investigates influential software changes and proposes an approach to identify them immediately when they are applied. Our goals are to (a) identify existing influential changes (ICs) in software projects, (b) understand their characteristics, and (c) build a classification model of ICs to help developers find and address them early. We first conduct a post-mortem analysis to discover existing influential changes by using intuitions (eg, changes referred by other changes). Then, we re-categorize all identified changes through an open-card sorting process. Subsequently, we conduct a survey with about 100 developers to finalize a taxonomy. Finally, from our ground truth, we extract features, including metrics such as the complexity of changes and file centrality in co-change graphs to build machine learning classifiers. The experiment results show that our classification model with random samples achieves 86.8% precision, 74% recall, and 80.4% F-measure, respectively.

Original languageEnglish
Number of pages25
JournalJournal of Software: Evolution and Process
Volume31
Issue number12
DOIs
Publication statusPublished - 19 Aug 2019
Externally publishedYes

Keywords

  • change prediction
  • change risk
  • influential change
  • software changes
  • software evolution

Cite this

Li, Daoyuan ; Li, Li ; Kim, Dongsun ; Bissyandé, Tegawendé F. ; Lo, David ; Le Traon, Yves. / Watch out for this commit! a study of influential software changes. In: Journal of Software: Evolution and Process. 2019 ; Vol. 31, No. 12.
@article{3d0886e63faa4b3aba2099ab07749fd1,
title = "Watch out for this commit! a study of influential software changes",
abstract = "One single code change can significantly influence a wide range of software systems and their users. For example, (a) adding a new feature can spread defects in several modules, while (b) changing an API method can improve the performance of all client programs. Unfortunately, developers often may not clearly know whether code changes are influential at commit time. This paper investigates influential software changes and proposes an approach to identify them immediately when they are applied. Our goals are to (a) identify existing influential changes (ICs) in software projects, (b) understand their characteristics, and (c) build a classification model of ICs to help developers find and address them early. We first conduct a post-mortem analysis to discover existing influential changes by using intuitions (eg, changes referred by other changes). Then, we re-categorize all identified changes through an open-card sorting process. Subsequently, we conduct a survey with about 100 developers to finalize a taxonomy. Finally, from our ground truth, we extract features, including metrics such as the complexity of changes and file centrality in co-change graphs to build machine learning classifiers. The experiment results show that our classification model with random samples achieves 86.8{\%} precision, 74{\%} recall, and 80.4{\%} F-measure, respectively.",
keywords = "change prediction, change risk, influential change, software changes, software evolution",
author = "Daoyuan Li and Li Li and Dongsun Kim and Bissyand{\'e}, {Tegawend{\'e} F.} and David Lo and {Le Traon}, Yves",
year = "2019",
month = "8",
day = "19",
doi = "10.1002/smr.2181",
language = "English",
volume = "31",
journal = "Journal of Software: Evolution and Process",
issn = "2047-7481",
publisher = "Wiley-Blackwell",
number = "12",

}

Watch out for this commit! a study of influential software changes. / Li, Daoyuan; Li, Li; Kim, Dongsun; Bissyandé, Tegawendé F.; Lo, David; Le Traon, Yves.

In: Journal of Software: Evolution and Process, Vol. 31, No. 12, 19.08.2019.

Research output: Contribution to journalArticleResearchpeer-review

TY - JOUR

T1 - Watch out for this commit! a study of influential software changes

AU - Li, Daoyuan

AU - Li, Li

AU - Kim, Dongsun

AU - Bissyandé, Tegawendé F.

AU - Lo, David

AU - Le Traon, Yves

PY - 2019/8/19

Y1 - 2019/8/19

N2 - One single code change can significantly influence a wide range of software systems and their users. For example, (a) adding a new feature can spread defects in several modules, while (b) changing an API method can improve the performance of all client programs. Unfortunately, developers often may not clearly know whether code changes are influential at commit time. This paper investigates influential software changes and proposes an approach to identify them immediately when they are applied. Our goals are to (a) identify existing influential changes (ICs) in software projects, (b) understand their characteristics, and (c) build a classification model of ICs to help developers find and address them early. We first conduct a post-mortem analysis to discover existing influential changes by using intuitions (eg, changes referred by other changes). Then, we re-categorize all identified changes through an open-card sorting process. Subsequently, we conduct a survey with about 100 developers to finalize a taxonomy. Finally, from our ground truth, we extract features, including metrics such as the complexity of changes and file centrality in co-change graphs to build machine learning classifiers. The experiment results show that our classification model with random samples achieves 86.8% precision, 74% recall, and 80.4% F-measure, respectively.

AB - One single code change can significantly influence a wide range of software systems and their users. For example, (a) adding a new feature can spread defects in several modules, while (b) changing an API method can improve the performance of all client programs. Unfortunately, developers often may not clearly know whether code changes are influential at commit time. This paper investigates influential software changes and proposes an approach to identify them immediately when they are applied. Our goals are to (a) identify existing influential changes (ICs) in software projects, (b) understand their characteristics, and (c) build a classification model of ICs to help developers find and address them early. We first conduct a post-mortem analysis to discover existing influential changes by using intuitions (eg, changes referred by other changes). Then, we re-categorize all identified changes through an open-card sorting process. Subsequently, we conduct a survey with about 100 developers to finalize a taxonomy. Finally, from our ground truth, we extract features, including metrics such as the complexity of changes and file centrality in co-change graphs to build machine learning classifiers. The experiment results show that our classification model with random samples achieves 86.8% precision, 74% recall, and 80.4% F-measure, respectively.

KW - change prediction

KW - change risk

KW - influential change

KW - software changes

KW - software evolution

UR - http://www.scopus.com/inward/record.url?scp=85071235277&partnerID=8YFLogxK

U2 - 10.1002/smr.2181

DO - 10.1002/smr.2181

M3 - Article

AN - SCOPUS:85071235277

VL - 31

JO - Journal of Software: Evolution and Process

JF - Journal of Software: Evolution and Process

SN - 2047-7481

IS - 12

ER -