-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreferences.bib
205 lines (186 loc) · 9.35 KB
/
references.bib
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
@INPROCEEDINGS{travistorrent,
author={Beller, Moritz and Gousios, Georgios and Zaidman, Andy},
booktitle={2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR)},
title={TravisTorrent: Synthesizing Travis CI and GitHub for Full-Stack Research on Continuous Integration},
year={2017},
volume={},
number={},
pages={447-450},
doi={10.1109/MSR.2017.24}
}
@INPROCEEDINGS{aexpy,
author={Du, Xingliang and Ma, Jun},
booktitle={2022 IEEE 33rd International Symposium on Software Reliability Engineering (ISSRE)},
title={AexPy: Detecting API Breaking Changes in Python Packages},
year={2022},
volume={},
number={},
pages={470-481},
doi={10.1109/ISSRE55969.2022.00052}}
@inproceedings{brito2016developers,
title={Do developers deprecate apis with replacement messages? a large-scale analysis on java systems},
author={Brito, Gleison and Hora, Andre and Valente, Marco Tulio and Robbes, Romain},
booktitle={2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER)},
volume={1},
pages={360--369},
year={2016},
organization={IEEE}
}
@inproceedings{chow1996semi,
title={Semi-automatic update of applications in response to library changes.},
author={Chow, Kingsum and Notkin, David},
booktitle={icsm},
volume={96},
pages={359},
year={1996}
}
@INPROCEEDINGS{semdiff,
author={Dagenais, Barthelemy and Robillard, Martin P.},
booktitle={2009 IEEE 31st International Conference on Software Engineering},
title={SemDiff: Analysis and recommendation support for API evolution},
year={2009},
volume={},
number={},
pages={599-602},
doi={10.1109/ICSE.2009.5070565}}
@INPROCEEDINGS{hist-brito,
author={Xavier, Laerte and Brito, Aline and Hora, Andre and Valente, Marco Tulio},
booktitle={2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER)},
title={Historical and impact analysis of API breaking changes: A large-scale study},
year={2017},
volume={},
number={},
pages={138-147},
doi={10.1109/SANER.2017.7884616}}
@INPROCEEDINGS{apidiff,
author={Brito, Aline and Xavier, Laerte and Hora, Andre and Valente, Marco Tulio},
booktitle={2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)},
title={APIDiff: Detecting API breaking changes},
year={2018},
volume={},
number={},
pages={507-511},
doi={10.1109/SANER.2018.8330249}}
@INPROCEEDINGS{intent-api,
author={Hou, Daqing and Yao, Xiaojia},
booktitle={2011 18th Working Conference on Reverse Engineering},
title={Exploring the Intent behind API Evolution: A Case Study},
year={2011},
volume={},
number={},
pages={131-140},
doi={10.1109/WCRE.2011.24}}
@INPROCEEDINGS{javabreak,
author={Brito, Aline and Xavier, Laerte and Hora, Andre and Valente, Marco Tulio},
booktitle={2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)},
title={Why and how Java developers break APIs},
year={2018},
volume={},
number={},
pages={255-265},
doi={10.1109/SANER.2018.8330214}}
@article{brito2020you,
title={You broke my code: understanding the motivations for breaking changes in APIs},
author={Brito, Aline and Valente, Marco Tulio and Xavier, Laerte and Hora, Andre},
journal={Empirical Software Engineering},
volume={25},
pages={1458--1492},
year={2020},
publisher={Springer}
}
@article{jensjavabreak,
title = {How Java APIs break – An empirical study},
journal = {Information and Software Technology},
volume = {65},
pages = {129-146},
year = {2015},
issn = {0950-5849},
doi = {https://doi.org/10.1016/j.infsof.2015.02.014},
author = {Kamil Jezek and Jens Dietrich and Premek Brada},
keywords = {Binary compatibility, API evolution, Backward compatibility, Byte-code, Java},
abstract = {Context
It has become common practice to build programs by using libraries. While the benefits of reuse are well known, an often overlooked risk are system runtime failures due to API changes in libraries that evolve independently. Traditionally, the consistency between a program and the libraries it uses is checked at build time when the entire system is compiled and tested. However, the trend towards partially upgrading systems by redeploying only evolved library versions results in situations where these crucial verification steps are skipped. For Java programs, partial upgrades create additional interesting problems as the compiler and the virtual machine use different rule sets to enforce contracts between the providers and the consumers of APIs.
Objective
We have studied the extent of the problem in real world programs. We were interested in two aspects: the compatibility of API changes as libraries evolve, and the impact this has on programs using these libraries.
Method
This study is based on the qualitas corpus version 20120401. A data set consisting of 109 Java open-source programs and 564 program versions was used from this corpus. We have investigated two types of library dependencies: explicit dependencies to embedded libraries, and dependencies defined by symbolic references in Maven build files that are resolved at build time. We have used JaCC for API analysis, this tool is based on the popular ASM byte code analysis library.
Results
We found that for most of the programs we investigated, APIs are unstable as incompatible changes are common. Surprisingly, there are more compatibility problems in projects that use automated dependency resolution. However, we found only a few cases where this has an actual impact on other programs using such an API.
Conclusion
It is concluded that API instability is common and causes problems for programs using these APIs. Therefore, better tools and methods are needed to safeguard library evolution.}
}
@ARTICLE{softdepwork,
author={Cataldo, Marcelo and Mockus, Audris and Roberts, Jeffrey A. and Herbsleb, James D.},
journal={IEEE Transactions on Software Engineering},
title={Software Dependencies, Work Dependencies, and Their Impact on Failures},
year={2009},
volume={35},
number={6},
pages={864-878},
doi={10.1109/TSE.2009.42}}
@article{cox2019surviving,
title={Surviving software dependencies},
author={Cox, Russ},
journal={Communications of the ACM},
volume={62},
number={9},
pages={36--43},
year={2019},
publisher={ACM New York, NY, USA}
}
@INPROCEEDINGS{tradstatic,
author={Jasz, Judit and Beszedes, Arpad and Gyimothy, Tibor and Rajlich, Vaclav},
booktitle={2008 IEEE International Conference on Software Maintenance},
title={Static Execute After/Before as a replacement of traditional software dependencies},
year={2008},
volume={},
number={},
pages={137-146},
doi={10.1109/ICSM.2008.4658062}}
@misc{labelle2004interpackage,
title={Inter-Package Dependency Networks in Open-Source Software},
author={Nathan LaBelle and Eugene Wallingford},
year={2004},
eprint={cs/0411096},
archivePrefix={arXiv},
primaryClass={cs.SE}
}
@inproceedings{managedep,
author = {de Souza, Cleidson R. B. and Redmiles, David F.},
title = {An Empirical Study of Software Developers' Management of Dependencies and Changes},
year = {2008},
isbn = {9781605580791},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1368088.1368122},
doi = {10.1145/1368088.1368122},
abstract = {Different approaches and tools have been proposed to support change impact analysis, i.e., the identification of the potential consequences of a change, or the estimation of what needs to be modified to accomplish a change. However, just a few empirical studies of software developers' actual change impact analysis approaches have been reported in the literature. To minimize this gap, this paper describes an empirical study of two software development teams. It describes, through the presentation of ethnographic data, the strategies used by software developers to handle the effect of software dependencies and changes in their work. The concept of impact management is proposed as an analytical framework to present these practices and is used to suggest avenues for future research in change impact analysis techniques.},
booktitle = {Proceedings of the 30th International Conference on Software Engineering},
pages = {241–250},
numpages = {10},
keywords = {change impact analysis, collaborative software development, empirical studies, socio-technical aspects},
location = {Leipzig, Germany},
series = {ICSE '08}
}
@INPROCEEDINGS{changecouple,
author={D'Ambros, Marco and Lanza, Michele and Robbes, Romain},
booktitle={2009 16th Working Conference on Reverse Engineering},
title={On the Relationship Between Change Coupling and Software Defects},
year={2009},
volume={},
number={},
pages={135-144},
doi={10.1109/WCRE.2009.19}}
@article{gholizadeh2022top,
title={Top Popular Python Libraries in Research},
author={Gholizadeh, Samira},
journal={Authorea Preprints},
year={2022},
publisher={Authorea}
}
@misc{github, url={https://github.com/}}
@misc{libio, url={https://libraries.io/}}
@misc{libgit2sharp, title={Lib{G}it2{S}harp}, url={https://github.com/libgit2/libgit2sharp}}
@misc{packaging, title={packaging}, url={https://github.com/pypa/packaging}}
@misc{pep440, title={P{E}{P} 440}, url={https://peps.python.org/pep-0440/}}
@misc{certifi, title={Certifi: {P}ython {S}{S}{L} {C}ertificates}, url={https://github.com/certifi/python-certifi}}