{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,13]],"date-time":"2026-04-13T18:37:19Z","timestamp":1776105439725,"version":"3.50.1"},"reference-count":57,"publisher":"Springer Science and Business Media LLC","issue":"2","license":[{"start":{"date-parts":[[2019,11,29]],"date-time":"2019-11-29T00:00:00Z","timestamp":1574985600000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2019,11,29]],"date-time":"2019-11-29T00:00:00Z","timestamp":1574985600000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"funder":[{"DOI":"10.13039\/501100002322","name":"Coordena\u00e7\u00e3o de Aperfei\u00e7oamento de Pessoal de N\u00edvel Superior","doi-asserted-by":"publisher","id":[{"id":"10.13039\/501100002322","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100004901","name":"Funda\u00e7\u00e3o de Amparo \u00e0 Pesquisa do Estado de Minas Gerais","doi-asserted-by":"publisher","id":[{"id":"10.13039\/501100004901","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100003593","name":"Conselho Nacional de Desenvolvimento Cient\u00edfico e Tecnol\u00f3gico","doi-asserted-by":"publisher","id":[{"id":"10.13039\/501100003593","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2020,3]]},"DOI":"10.1007\/s10664-019-09756-z","type":"journal-article","created":{"date-parts":[[2019,11,29]],"date-time":"2019-11-29T08:03:00Z","timestamp":1575014580000},"page":"1458-1492","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":44,"title":["You broke my code: understanding the motivations for breaking changes in APIs"],"prefix":"10.1007","volume":"25","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-7088-4935","authenticated-orcid":false,"given":"Aline","family":"Brito","sequence":"first","affiliation":[]},{"given":"Marco Tulio","family":"Valente","sequence":"additional","affiliation":[]},{"given":"Laerte","family":"Xavier","sequence":"additional","affiliation":[]},{"given":"Andre","family":"Hora","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,11,29]]},"reference":[{"key":"9756_CR1","doi-asserted-by":"crossref","unstructured":"Abdeen H, Ducasse S, Sahraoui H, Alloui I (2009) Automatic package coupling and cycle minimization. In: 16th working conference on reverse engineering (WCRE), pp 103\u2013112","DOI":"10.1109\/WCRE.2009.13"},{"key":"9756_CR2","doi-asserted-by":"crossref","unstructured":"Ahasanuzzaman M, Asaduzzaman M, Roy CK, Schneider KA (2018) Classifying Stack Overflow posts on API issues. In: 25th international conference on software analysis, evolution and reengineering (SANER), pp 244\u2013254","DOI":"10.1109\/SANER.2018.8330213"},{"key":"9756_CR3","doi-asserted-by":"crossref","unstructured":"Anquetil N, Lethbridge TC (1999) Experiments with clustering as a software remodularization method. In: 6th working conference on reverse engineering (WCRE), pp 235\u2013255","DOI":"10.1109\/WCRE.1999.806964"},{"key":"9756_CR4","doi-asserted-by":"crossref","unstructured":"Bajaj K, Pattabiraman K, Mesbah A (2014) Mining questions asked by web developers. In: 11th working conference on mining software repositories (MSR), pp 112\u2013121","DOI":"10.1145\/2597073.2597083"},{"issue":"3","key":"9756_CR5","doi-asserted-by":"publisher","first-page":"619","DOI":"10.1007\/s10664-012-9231-y","volume":"19","author":"Anton Barua","year":"2012","unstructured":"Barua A, Thomas SW, Hassan AE (2014) What are developers talking about? an analysis of topics and trends in Stack Overflow. Empirical Software Engineering 619\u2013654","journal-title":"Empirical Software Engineering"},{"key":"9756_CR6","doi-asserted-by":"crossref","unstructured":"Beyer S, Macho C, Pinzger M, Penta MD (2018) Automatically classifying posts into question categories on Stack Overflow. In: 26th conference on program comprehension (ICPC), pp 211\u2013221","DOI":"10.1145\/3196321.3196333"},{"key":"9756_CR7","doi-asserted-by":"crossref","unstructured":"Bogart C, K\u00e4stner C, Herbsleb J, Thung F (2016) How to break an API: cost negotiation and community values in three software ecosystems. In: 24th international symposium on the foundations of software engineering (FSE), pp 109\u2013120","DOI":"10.1145\/2950290.2950325"},{"key":"9756_CR8","doi-asserted-by":"crossref","unstructured":"Borges H, Hora A, Valente MT (2016) Understanding the factors that impact the popularity of GitHub repositories. In: 32nd IEEE international conference on software maintenance and evolution (ICSME), pp 334\u2013344","DOI":"10.1109\/ICSME.2016.31"},{"key":"9756_CR9","unstructured":"Boulanger JS, Robillard MP (2006) Managing concern interfaces. In: 22nd IEEE international conference on software maintenance (ICSME), pp 14\u201323"},{"key":"9756_CR10","doi-asserted-by":"crossref","unstructured":"Brito A, Xavier L, Hora A, Valente MT (2018a) APIDiff: Detecting API breaking changes. In: 25th international conference on software analysis, evolution and reengineering (SANER), tool track, pp 507\u2013511","DOI":"10.1109\/SANER.2018.8330249"},{"key":"9756_CR11","doi-asserted-by":"crossref","unstructured":"Brito A, Xavier L, Hora A, Valente MT (2018b) Why and how Java developers break APIs. In: 25th international conference on software analysis, evolution and reengineering (SANER), pp 255\u2013265","DOI":"10.1109\/SANER.2018.8330214"},{"key":"9756_CR12","doi-asserted-by":"crossref","unstructured":"Businge J, Serebrenik A, van den Brand M (2012) Survival of Eclipse third-party plug-ins. In: 28th IEEE international conference on software maintenance (ICSM), pp 368\u2013377","DOI":"10.1109\/ICSM.2012.6405295"},{"key":"9756_CR13","doi-asserted-by":"crossref","unstructured":"Businge J, Serebrenik A, van den Brand M (2013) Analyzing the eclipse API usage: Putting the developer in the loop. In: 17th european conference on software maintenance and reengineering (CSMR), pp 37\u201346","DOI":"10.1109\/CSMR.2013.14"},{"issue":"1","key":"9756_CR14","doi-asserted-by":"publisher","first-page":"107","DOI":"10.1007\/s11219-013-9221-3","volume":"23","author":"J Businge","year":"2015","unstructured":"Businge J, Serebrenik A, van den Brand MGJ (2015) Eclipse API usage: the good and the bad. Softw Qual J 23(1):107\u2013141","journal-title":"Softw Qual J"},{"key":"9756_CR15","doi-asserted-by":"crossref","unstructured":"Chow K, Notkin D (1996) Semi-automatic update of applications in response to library changes. In: 12th international conference on software maintenance (ICSM), pp 359\u2013368","DOI":"10.1109\/ICSM.1996.565039"},{"key":"9756_CR16","doi-asserted-by":"crossref","unstructured":"Cliff N (2014) Ordinal methods for behavioral data analysis. Psychology Press","DOI":"10.4324\/9781315806730"},{"key":"9756_CR17","unstructured":"Cruzes DS, Dyba T (2011) Recommended steps for thematic synthesis in software engineering. In: 5th international symposium on empirical software engineering and measurement (ESEM), pp 275\u2013284"},{"key":"9756_CR18","doi-asserted-by":"crossref","unstructured":"Dagenais B, Robillard MP (2008) Recommending adaptive changes for framework evolution. In: 30th international conference on software engineering (ICSE), pp 481\u2013490","DOI":"10.1145\/1368088.1368154"},{"issue":"2","key":"9756_CR19","doi-asserted-by":"publisher","first-page":"83","DOI":"10.1002\/smr.328","volume":"18","author":"Danny Dig","year":"2006","unstructured":"Dig D, Johnson R (2005) How do APIs evolve? a story of refactoring. In: 22nd international conference on software maintenance (ICSM), pp 83\u2013107","journal-title":"Journal of Software Maintenance and Evolution: Research and Practice"},{"key":"9756_CR20","doi-asserted-by":"crossref","unstructured":"Dyer R, Nguyen HA, Rajan H, Nguyen TN (2013) Boa: a language and infrastructure for analyzing ultra-large-scale software repositories. In: 35th international conference on software engineering (ICSE), pp 422\u2013431","DOI":"10.1109\/ICSE.2013.6606588"},{"key":"9756_CR21","doi-asserted-by":"crossref","unstructured":"Henkel J, Diwan A (2005) Catchup!: Capturing and replaying refactorings to support API evolution. In: 27th international conference on software engineering (ICSE), pp 274\u2013283","DOI":"10.1145\/1062455.1062512"},{"issue":"1","key":"9756_CR22","doi-asserted-by":"publisher","first-page":"161","DOI":"10.1007\/s11219-016-9344-4","volume":"26","author":"A Hora","year":"2018","unstructured":"Hora A, Robbes R, Valente MT, Anquetil N, Etien A, Ducasse S (2018) How do developers react to API evolution? a large-scale empirical study. Softw Qual J 26(1):161\u2013191","journal-title":"Softw Qual J"},{"key":"9756_CR23","doi-asserted-by":"crossref","unstructured":"Hora A, Valente MT, Robbes R, Anquetil N (2016) When should internal interfaces be promoted to public?. In: 24th international symposium on the foundations of software engineering (FSE), pp 280\u2013291","DOI":"10.1145\/2950290.2950306"},{"issue":"C","key":"9756_CR24","doi-asserted-by":"publisher","first-page":"129","DOI":"10.1016\/j.infsof.2015.02.014","volume":"65","author":"K Jezek","year":"2015","unstructured":"Jezek K, Dietrich J, Brada P (2015) How Java APIs break - an empirical study. Inf Softw Technol 65(C):129\u2013146","journal-title":"Inf Softw Technol"},{"key":"9756_CR25","doi-asserted-by":"crossref","unstructured":"Kim M, Notkin D (2009) Discovering and representing systematic code changes. In: 31st international conference on software engineering (ICSE), pp 309\u2013319","DOI":"10.1109\/ICSE.2009.5070531"},{"key":"9756_CR26","doi-asserted-by":"crossref","unstructured":"Konstantopoulos D, Marien J, Pinkerton M, Braude E (2009) Best principles in the design of shared software. In: 33rd international computer software and applications conference (COMPSAC), pp 287\u2013292","DOI":"10.1109\/COMPSAC.2009.151"},{"issue":"C","key":"9756_CR27","doi-asserted-by":"publisher","first-page":"186","DOI":"10.1016\/j.infsof.2017.09.007","volume":"93","author":"RG Kula","year":"2018","unstructured":"Kula RG, Ouni A, German DM, Inoue K (2018) An empirical study on the impact of refactoring activities on evolving client-used APIs. Inf Softw Technol 93 (C):186\u2013199","journal-title":"Inf Softw Technol"},{"issue":"10","key":"9756_CR28","doi-asserted-by":"publisher","first-page":"695","DOI":"10.1145\/2858965.2814313","volume":"50","author":"Luis Mastrangelo","year":"2015","unstructured":"Mastrangelo L, Ponzanelli L, Mocci A, Lanza M, Hauswirth M, Nystrom N (2015) Use at your own risk: the Java unsafe API in the wild. In: 30th international conference on object-oriented programming, systems, languages, and applications (OOPSLA), pp 695\u2013710","journal-title":"ACM SIGPLAN Notices"},{"issue":"OOPSLA","key":"9756_CR29","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/3133909","volume":"1","author":"Davood Mazinanian","year":"2017","unstructured":"Mazinanian D, Ketkar A, Tsantalis N, Dig D (2017) Understanding the use of lambda expressions in Java. In: 32nd international conference on object-oriented programming, systems, languages, and applications (OOPSLA), pp 85:1\u201385:31","journal-title":"Proceedings of the ACM on Programming Languages"},{"key":"9756_CR30","doi-asserted-by":"crossref","unstructured":"McDonnell T, Ray B, Kim M (2013) An empirical study of API stability and adoption in the Android ecosystem. In: 29Th international conference on software maintenance (ICSM), pp 70\u201379","DOI":"10.1109\/ICSM.2013.18"},{"key":"9756_CR31","doi-asserted-by":"crossref","unstructured":"Meng S, Wang X, Zhang L, Mei H (2012) A history-based matching approach to identification of framework evolution. In: 34th international conference on software engineering (ICSE), pp 353\u2013363","DOI":"10.1109\/ICSE.2012.6227179"},{"key":"9756_CR32","unstructured":"Mezzetti G, M\u00f8ller A, Torp MT (2018) Type regression testing to detect breaking changes in Node.js libraries. In: 32nd european conference on object-oriented programming (ECOOP), pp 7:1\u20137:24"},{"issue":"3","key":"9756_CR33","doi-asserted-by":"publisher","first-page":"193","DOI":"10.1109\/TSE.2006.31","volume":"32","author":"BS Mitchell","year":"2006","unstructured":"Mitchell BS, Mancoridis S (2006) On the automatic modularization of software systems using the Bunch tool. IEEE Trans Softw Eng 32(3):193\u2013208","journal-title":"IEEE Trans Softw Eng"},{"key":"9756_CR34","doi-asserted-by":"crossref","unstructured":"Morrison P, Murphy-Hill E (2013) Is programming knowledge related to age? an exploration of Stack Overflow. In: 10th working conference on mining software repositories (MSR), pp 69\u201372","DOI":"10.1109\/MSR.2013.6624008"},{"issue":"9","key":"9756_CR35","doi-asserted-by":"publisher","first-page":"45","DOI":"10.1109\/2.536783","volume":"29","author":"S Moser","year":"1996","unstructured":"Moser S, Nierstrasz O (1996) The effect of object-oriented frameworks on developer productivity. Computer 29(9):45\u201351","journal-title":"Computer"},{"key":"9756_CR36","doi-asserted-by":"crossref","unstructured":"Mostafa S, Rodriguez R, Wang X (2017) Experience paper: a study on behavioral backward incompatibilities of Java software libraries. In: 26th international symposium on software testing and analysis (ISSTA), pp 215\u2013225","DOI":"10.1145\/3092703.3092721"},{"key":"9756_CR37","doi-asserted-by":"crossref","unstructured":"Murphy-Hill E, Zimmermann T, Bird C, Nagappan N (2013) The design of bug fixes. In: 35th international conference on software engineerin (ICSE), pp 332\u2013341","DOI":"10.1109\/ICSE.2013.6606579"},{"issue":"1","key":"9756_CR38","doi-asserted-by":"publisher","first-page":"65","DOI":"10.1109\/TSE.2014.2357438","volume":"41","author":"E Murphy-Hill","year":"2015","unstructured":"Murphy-Hill E, Zimmermann T, Bird C, Nagappan N (2015) The design space of bug fixes and how developers navigate it. IEEE Trans Softw Eng 41(1):65\u201381","journal-title":"IEEE Trans Softw Eng"},{"key":"9756_CR39","doi-asserted-by":"crossref","unstructured":"Nguyen HA, Nguyen TT Jr, GW, Nguyen AT, Kim M, Nguyen TN (2010) A graph-based approach to API usage adaptation. In: 25th international conference on object oriented programming systems languages and applications (OOPSLA), pp 302\u2013321","DOI":"10.1145\/1869459.1869486"},{"key":"9756_CR40","doi-asserted-by":"crossref","unstructured":"Pinto G, Castor F, Liu YD (2014) Mining questions about software energy consumption. In: Working conference on mining software repositories (MSR), pp 22\u201331","DOI":"10.1145\/2597073.2597110"},{"key":"9756_CR41","doi-asserted-by":"crossref","unstructured":"Pinto G, Castor F, Liu YD (2014) Mining questions about software energy consumption. In: 11th working conference on mining software repositories (MSR), pp 22\u201331","DOI":"10.1145\/2597073.2597110"},{"issue":"2","key":"9756_CR42","doi-asserted-by":"publisher","first-page":"264","DOI":"10.1109\/TSE.2010.26","volume":"37","author":"K Praditwong","year":"2011","unstructured":"Praditwong K, Harman M, Yao X (2011) Software module clustering as a multi-objective search problem. IEEE Trans Softw Eng 37(2):264\u2013282","journal-title":"IEEE Trans Softw Eng"},{"key":"9756_CR43","doi-asserted-by":"crossref","unstructured":"Prete K, Rachatasumrit N, Sudan N, Kim M (2010) Template-based reconstruction of complex refactorings. In: 26th international conference on software maintenance (ICSM), pp 1\u201310","DOI":"10.1109\/ICSM.2010.5609577"},{"key":"9756_CR44","doi-asserted-by":"crossref","unstructured":"Raemaekers S, van Deursen A, Visser J (2012) Measuring software library stability through historical version analysis. In: 28th international conference on software maintenance (ICSM), pp 378\u2013387","DOI":"10.1109\/ICSM.2012.6405296"},{"key":"9756_CR45","volume-title":"API Design for c++","author":"M Reddy","year":"2011","unstructured":"Reddy M (2011) API Design for c++. Morgan Kaufmann Publishers, San Mateo"},{"key":"9756_CR46","unstructured":"Robbes R, Lungu M, R\u00f6thlisberger D (2012) How do developers react to API deprecation? the case of a Smalltalk ecosystem. In: 20Th international symposium on the foundations of software engineering (FSE), pp 56:1\u201356:11"},{"key":"9756_CR47","volume-title":"Diffusion of innovations","author":"EM Rogers","year":"2003","unstructured":"Rogers EM (2003) Diffusion of innovations, 5th edn. Free Press, New York","edition":"5th edn."},{"key":"9756_CR48","doi-asserted-by":"crossref","unstructured":"Sawant AA, Robbes R, Bacchelli A (2016) On the reaction to deprecation of 25,357 clients of 4 + 1 popular Java APIs. In: 32nd international conference on software maintenance and evolution (ICSME), pp 400\u2013410","DOI":"10.1109\/ICSME.2016.64"},{"key":"9756_CR49","unstructured":"Sawant AA, Robbes R, Bacchelli A (2017) On the reaction to deprecation of clients of 4 + 1 popular Java APIs and the JDK. Empir Softw Eng 1\u201340"},{"key":"9756_CR50","doi-asserted-by":"crossref","unstructured":"Sch\u00e4fer T, Jonas J, Mezini M (2008) Mining framework usage changes from instantiation code. In: 30Th international conference on software engineering (ICSE), pp 471\u2013480","DOI":"10.1145\/1368088.1368153"},{"key":"9756_CR51","doi-asserted-by":"crossref","unstructured":"Silva D, Tsantalis N, Valente MT (2016) Why we refactor? confessions of GitHub contributors. In: 24th international symposium on the foundations of software engineering (FSE), pp 858\u2013870","DOI":"10.1145\/2950290.2950305"},{"issue":"3","key":"9756_CR52","first-page":"315","volume":"45","author":"R Terra","year":"2015","unstructured":"Terra R, Valente MT, Czarnecki K, Bigonha RS (2015) A recommendation system for repairing violations detected by static architecture conformance checking. Software: Practice and Experience 45(3):315\u2013342","journal-title":"Software: Practice and Experience"},{"key":"9756_CR53","doi-asserted-by":"crossref","unstructured":"Wang W, Malik H, Godfrey M (2015) Recommending posts concerning API issues in developer Q&A sites. In: 12Th working conference on mining software repositories (MSR), pp 224\u2013234","DOI":"10.1109\/MSR.2015.28"},{"key":"9756_CR54","doi-asserted-by":"crossref","unstructured":"Wu W, Gueheneuc YG, Antoniol G, Kim M (2010) AURA: A hybrid approach to identify framework evolution. In: 32nd international conference on software engineering (ICSE), pp 325\u2013334","DOI":"10.1145\/1806799.1806848"},{"key":"9756_CR55","doi-asserted-by":"crossref","unstructured":"Xavier L, Brito A, Hora A, Valente MT (2017a) Historical and impact analysis of API breaking changes: a large scale study. In: 24th international conference on software analysis, evolution and reengineering (SANER), pp 138\u2013147","DOI":"10.1109\/SANER.2017.7884616"},{"key":"9756_CR56","doi-asserted-by":"crossref","unstructured":"Xavier L, Hora A, Valente MT (2017b) Why do we break APIs? first answers from developers. In: 24th international conference on software analysis, evolution and reengineering (SANER), pp 392\u2013396","DOI":"10.1109\/SANER.2017.7884640"},{"key":"9756_CR57","doi-asserted-by":"crossref","unstructured":"Zhang T, Upadhyaya G, Reinhardt A, Rajan H, Kim M (2018) Are code examples on an online Q&A forum reliable? a study of API misuse on stack overflow. In: 40Th international conference on software engineering (ICSE), pp 886\u2013896","DOI":"10.1145\/3180155.3180260"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-019-09756-z.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10664-019-09756-z\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-019-09756-z.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,11,28]],"date-time":"2020-11-28T00:30:27Z","timestamp":1606523427000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10664-019-09756-z"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,11,29]]},"references-count":57,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2020,3]]}},"alternative-id":["9756"],"URL":"https:\/\/doi.org\/10.1007\/s10664-019-09756-z","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,11,29]]},"assertion":[{"value":"29 November 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}