{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,19]],"date-time":"2026-06-19T12:58:02Z","timestamp":1781873882064,"version":"3.54.5"},"reference-count":42,"publisher":"Springer Science and Business Media LLC","issue":"3","license":[{"start":{"date-parts":[[2023,4,14]],"date-time":"2023-04-14T00:00:00Z","timestamp":1681430400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2023,4,14]],"date-time":"2023-04-14T00:00:00Z","timestamp":1681430400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100007065","name":"Universit\u00e0 degli Studi di Salerno","doi-asserted-by":"crossref","id":[{"id":"10.13039\/501100007065","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2023,5]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p><jats:italic>Background.<\/jats:italic>Dead code is a code smell. It can refer to code blocks, fields, methods, etc. that are unused and\/or unreachable\u2014e.g., if a method is unused and\/or unreachable, it is a dead method. Past research has shown that the presence of dead code in source code harms its comprehensibility and maintainability. Nevertheless, there is still little empirical evidence on the spread of this code smell in the source code of commercial and open-source software applications.<\/jats:p><jats:p><jats:italic>Aims.<\/jats:italic>Our goal is to gather, through an exploratory study, empirical evidence on the spread and evolution of dead methods in open-source Java desktop applications.<\/jats:p><jats:p><jats:italic>Method.<\/jats:italic>We quantitatively analyzed the commit histories of 23 open-source Java desktop applications, whose software projects were hosted on<jats:italic>GitHub<\/jats:italic>. To investigate the spread and evolution of dead methods, we focused on dead methods detected at a commit level. The total number of analyzed commits in our study is 1,587. The perspective of our exploratory study is that of both practitioners and researchers.<\/jats:p><jats:p><jats:italic>Results.<\/jats:italic>We can summarize the most important take-away results as follows:<jats:italic>(i)<\/jats:italic>dead methods affect open-source Java desktop applications;<jats:italic>(ii)<\/jats:italic>dead methods generally survive for a long time before being \u201cburied\u201d or \u201crevived;\u201d<jats:italic>(iii)<\/jats:italic>dead methods that are then revived tend to survive less, as compared to dead methods that are then buried;<jats:italic>(iv)<\/jats:italic>dead methods are rarely revived; and<jats:italic>(v)<\/jats:italic>most dead methods are stillborn, rather than becoming dead later. Given the exploratory nature of our study, we believe that its results will help researchers to conduct more resource- and time-demanding research on dead methods and, in general, on dead code.<\/jats:p><jats:p><jats:italic>Conclusions.<\/jats:italic>We can conclude that developers should carefully handle dead code (and thus dead methods) since it is harmful, widespread, rarely revived, and survives for a long time in software applications.<\/jats:p>","DOI":"10.1007\/s10664-023-10303-0","type":"journal-article","created":{"date-parts":[[2023,4,14]],"date-time":"2023-04-14T11:02:34Z","timestamp":1681470154000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":4,"title":["On the spread and evolution of dead methods in Java desktop applications: an exploratory study"],"prefix":"10.1007","volume":"28","author":[{"given":"Danilo","family":"Caivano","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Pietro","family":"Cassieri","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4880-3622","authenticated-orcid":false,"given":"Simone","family":"Romano","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Giuseppe","family":"Scanniello","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2023,4,14]]},"reference":[{"key":"10303_CR1","doi-asserted-by":"crossref","unstructured":"Boomsma H, Hostnet BV, Gross HG (2012) Dead code elimination for web systems written in php: lessons learned from an industry case. In: Proceedings of international conference on software maintenance, pp 511\u2013515. IEEE","DOI":"10.1109\/ICSM.2012.6405314"},{"key":"10303_CR2","unstructured":"Brown WH, Malveau RC, McCormick HWS, Mowbray TJ (1998) AntiPatterns: Refactoring software, architectures, and projects in crisis, 1st edn. Wiley"},{"key":"10303_CR3","doi-asserted-by":"crossref","unstructured":"Caivano D, Cassieri P, Romano S, Scanniello G (2021) An exploratory study on dead methods in open-source java desktop applications. In: ACM\/IEEE international symposium on empirical software engineering and measurement, pp 10:1\u201310:11","DOI":"10.1145\/3475716.3475773"},{"issue":"1","key":"10303_CR4","doi-asserted-by":"publisher","first-page":"3","DOI":"10.1007\/s11334-013-0205-z","volume":"10","author":"A Chatzigeorgiou","year":"2014","unstructured":"Chatzigeorgiou A, Manakos A (2014) Investigating the evolution of code smells in object-oriented systems. Innov Syst Softw Eng 10(1):3\u201318","journal-title":"Innov Syst Softw Eng"},{"key":"10303_CR5","doi-asserted-by":"crossref","unstructured":"Eder S, Junker M, J\u00fcrgens E, Hauptmann B, Vaas R, Prommer KH (2012) How much does unused code matter for maintenance?. In: Proceedings of international conference on software engineering, pp 1102\u20131111. IEEE","DOI":"10.1109\/ICSE.2012.6227109"},{"key":"10303_CR6","doi-asserted-by":"crossref","unstructured":"Fard AM, Mesbah A (2013) Jsnose: detecting javascript code smells. In: Proceedings of international working conference on source code analysis and manipulation, pp 116\u2013125. IEEE","DOI":"10.1109\/SCAM.2013.6648192"},{"key":"10303_CR7","unstructured":"Fowler M (1999) Refactoring: improving the design of existing code, 1st edn. Addison-Wesley"},{"key":"10303_CR8","doi-asserted-by":"publisher","first-page":"274","DOI":"10.4103\/0974-7788.76794","volume":"1","author":"MK Goel","year":"2010","unstructured":"Goel MK, Khanna P, Kishore J (2010) Understanding survival analysis: Kaplan-meier estimate. International Journal of Ayurveda Research 1:274\u2013278","journal-title":"International Journal of Ayurveda Research"},{"issue":"1","key":"10303_CR9","doi-asserted-by":"publisher","first-page":"6:1","DOI":"10.1145\/3368267","volume":"29","author":"R Haas","year":"2020","unstructured":"Haas R, Niedermayr R, Roehm T, Apel S (2020) Is static analysis able to identify unnecessary source code? ACM Trans Softw Eng Methodol 29 (1):6:1\u20136:23","journal-title":"ACM Trans Softw Eng Methodol"},{"key":"10303_CR10","doi-asserted-by":"crossref","unstructured":"Hermans F, Aivaloglou E (2016) Do code smells hamper novice programming? a controlled experiment on scratch programs. In: Proceedings of international conference on program comprehension, pp 1\u201310","DOI":"10.1109\/ICPC.2016.7503706"},{"key":"10303_CR11","unstructured":"Jr. RGM (2011) Survival Analysis, 2nd edn. Wiley"},{"issue":"282","key":"10303_CR12","doi-asserted-by":"publisher","first-page":"457","DOI":"10.1080\/01621459.1958.10501452","volume":"53","author":"EL Kaplan","year":"1958","unstructured":"Kaplan EL, Meier P (1958) Nonparametric estimation from incomplete observations. J Am Stat Assoc 53(282):457\u2013481","journal-title":"J Am Stat Assoc"},{"key":"10303_CR13","doi-asserted-by":"crossref","unstructured":"Khomh F, Di Penta M, Gueheneuc YG (2009) An exploratory study of the impact of code smells on software change-proneness. In: Proceedings of working conference on reverse engineering, pp 75\u201384. IEEE","DOI":"10.1109\/WCRE.2009.28"},{"issue":"1","key":"10303_CR14","doi-asserted-by":"publisher","first-page":"50","DOI":"10.1214\/aoms\/1177730491","volume":"18","author":"HB Mann","year":"1947","unstructured":"Mann HB, Whitney DR (1947) On a test of whether one of two random variables is stochastically larger than the other. Ann Math Stat 18(1):50\u201360","journal-title":"Ann Math Stat"},{"key":"10303_CR15","doi-asserted-by":"crossref","unstructured":"M\u00e4ntyl\u00e4 M, Vanhanen J, Lassenius C (2003) A taxonomy and an initial empirical study of bad smells in code. In: Proceedings of international conference on software maintenance, pp 381\u2013384. IEEE","DOI":"10.1109\/ICSM.2003.1235447"},{"key":"10303_CR16","unstructured":"Martin RC (2008) Clean code: a handbook of agile software craftsmanship, 1st edn. Prentice Hall"},{"issue":"1","key":"10303_CR17","doi-asserted-by":"publisher","first-page":"20","DOI":"10.1109\/TSE.2009.50","volume":"36","author":"N Moha","year":"2010","unstructured":"Moha N, Gueheneuc YG, Duchien L, Le Meur AF (2010) Decor: a method for the specification and detection of code and design smells. IEEE Trans Softw Eng 36(1):20\u201336","journal-title":"IEEE Trans Softw Eng"},{"key":"10303_CR18","doi-asserted-by":"crossref","unstructured":"Obbink NG, Malavolta I, Scoccia GL, Lago P (2018) An extensible approach for taming the challenges of javascript dead code elimination. In: Proceedings of international conference on software analysis, evolution and Reengineering, pp 291\u2013401","DOI":"10.1109\/SANER.2018.8330226"},{"issue":"3","key":"10303_CR19","doi-asserted-by":"publisher","first-page":"1188","DOI":"10.1007\/s10664-017-9535-z","volume":"23","author":"F Palomba","year":"2018","unstructured":"Palomba F, Bavota G, Di Penta M, Fasano F, Oliveto R, De Lucia A (2018) On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation. Empir Softw Eng 23(3):1188\u20131221","journal-title":"Empir Softw Eng"},{"key":"10303_CR20","doi-asserted-by":"crossref","unstructured":"Palomba F, Bavota G, Penta MD, Oliveto R, Lucia AD (2014) Do they really smell bad? a study on developers\u2019 perception of bad code smells. In: Proceedings of international conference on software maintenance and evolution, pp 101\u2013110. IEEE","DOI":"10.1109\/ICSME.2014.32"},{"key":"10303_CR21","unstructured":"Parnas DL (1994) Software aging. In: Proceedings of international conference on software engineering, pp 279\u2013287. IEEE"},{"key":"10303_CR22","doi-asserted-by":"publisher","first-page":"331","DOI":"10.1016\/j.otohns.2010.05.007","volume":"143","author":"JT Rich","year":"2010","unstructured":"Rich JT, Neely JG, Paniello RC, Voelker CCJ, Nussenbaum B, Wang EW (2010) A practical guide to understanding kaplan-meier curves. Otolaryngology\u2013Head and Neck Surgery : Official Journal of American Academy of Otolaryngology-Head and Neck Surgery 143:331\u2013336","journal-title":"Otolaryngology\u2013Head and Neck Surgery : Official Journal of American Academy of Otolaryngology-Head and Neck Surgery"},{"key":"10303_CR23","unstructured":"Romano J, Kromrey JD, Coraggio J, Skowronek J (2006) Appropriate statistics for ordinal level data: should we really be using t-test and Cohen\u2019sd for evaluating group differences on the NSSE and other surveys?. In: Annual meeting of the florida association of institutional research, pp 1\u20133"},{"key":"10303_CR24","doi-asserted-by":"crossref","unstructured":"Romano S (2018) Dead code. In: Proceedings of international conference on software maintenance and evolution, pp 737\u2013742","DOI":"10.1109\/ICSME.2018.00092"},{"key":"10303_CR25","unstructured":"Romano S (2022) On the spread and evolution of dead methods in java desktop applications: a replication package. https:\/\/figshare.com\/s\/bc90817003996de8855c"},{"key":"10303_CR26","doi-asserted-by":"crossref","unstructured":"Romano S, Scanniello G (2015) Dum-tool. In: Proceedings of international conference on software maintenance and evolution, pp 339\u2013341. IEEE","DOI":"10.1109\/ICSM.2015.7332484"},{"key":"10303_CR27","doi-asserted-by":"crossref","unstructured":"Romano S, Scanniello G (2018) Exploring the use of rapid type analysis for detecting the dead method smell in java code. In: Proceedings of EUROMICRO conference on software engineering and advanced applications, pp 167\u2013174. IEEE","DOI":"10.1109\/SEAA.2018.00035"},{"key":"10303_CR28","doi-asserted-by":"crossref","unstructured":"Romano S, Scanniello G, Sartiani C, Risi M (2016) A graph-based approach to detect unreachable methods in java software. In: Proceedings of symposium on applied computing, pp 1538\u20131541. ACM","DOI":"10.1145\/2851613.2851968"},{"key":"10303_CR29","doi-asserted-by":"crossref","unstructured":"Romano S, Vendome C, Scanniello G, Poshyvanyk D (2016) Are unreachable methods harmful? results from a controlled experiment. In: Proceedings of international conference on program comprehension, pp 1\u201310. IEEE","DOI":"10.1109\/ICPC.2016.7503723"},{"issue":"1","key":"10303_CR30","doi-asserted-by":"publisher","first-page":"71","DOI":"10.1109\/TSE.2018.2842781","volume":"46","author":"S Romano","year":"2020","unstructured":"Romano S, Vendome C, Scanniello G, Poshyvanyk D (2020) A multi-study investigation into dead code. IEEE Trans Softw Eng 46(1):71\u201399","journal-title":"IEEE Trans Softw Eng"},{"key":"10303_CR31","doi-asserted-by":"crossref","unstructured":"Scanniello G (2011) Source code survival with the kaplan meier. In: Proceedings of international conference on software maintenance, pp 524\u2013527","DOI":"10.1109\/ICSM.2011.6080823"},{"key":"10303_CR32","doi-asserted-by":"crossref","unstructured":"Scanniello G (2014) An investigation of object-oriented and code-size metrics as dead code predictors. In: Proceedings of EUROMICRO conference on software engineering and advanced applications, pp 392\u2013397","DOI":"10.1109\/SEAA.2014.67"},{"issue":"3\/4","key":"10303_CR33","doi-asserted-by":"publisher","first-page":"591","DOI":"10.2307\/2333709","volume":"52","author":"SS Shapiro","year":"1965","unstructured":"Shapiro SS, Wilk MB (1965) An analysis of variance test for normality (complete samples). Biometrika 52(3\/4):591\u2013611","journal-title":"Biometrika"},{"key":"10303_CR34","doi-asserted-by":"crossref","unstructured":"Tip F, Palsberg J (2000) Scalable propagation-based call graph construction algorithms. In: Proceedings of conference on object-oriented programming, systems, languages, and applications, pp 281\u2013293. ACM","DOI":"10.1145\/354222.353190"},{"key":"10303_CR35","doi-asserted-by":"crossref","unstructured":"Tufano M, Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D (2016) An empirical investigation into the nature of test smells. In: Proceedings of international conference on automated software engineering, pp 4\u201315. ACM","DOI":"10.1145\/2970276.2970340"},{"issue":"4","key":"10303_CR36","first-page":"e1838","volume":"29","author":"M Tufano","year":"2017","unstructured":"Tufano M, Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D (2017) There and back again: can you compile that snapshot? Journal of Software: Evolution and Process 29(4):e1838","journal-title":"Journal of Software: Evolution and Process"},{"issue":"11","key":"10303_CR37","doi-asserted-by":"publisher","first-page":"1063","DOI":"10.1109\/TSE.2017.2653105","volume":"43","author":"M Tufano","year":"2017","unstructured":"Tufano M, Palomba F, Bavota G, Oliveto R, Di Penta M, De Lucia A, Poshyvanyk D (2017) When and why your code starts to smell bad (and whether the smells go away). IEEE Trans Softw Eng 43(11):1063\u20131088","journal-title":"IEEE Trans Softw Eng"},{"key":"10303_CR38","unstructured":"Wake WC (2003) Refactoring workbook, 1st edn. Addison-Wesley"},{"issue":"1-2","key":"10303_CR39","doi-asserted-by":"publisher","first-page":"28","DOI":"10.1093\/biomet\/34.1-2.28","volume":"34","author":"BL Welch","year":"1947","unstructured":"Welch BL (1947) The generalisation of student\u2019s problems when several different population variances are involved. Biometrika 34(1-2):28\u201335","journal-title":"Biometrika"},{"issue":"158","key":"10303_CR40","doi-asserted-by":"publisher","first-page":"209","DOI":"10.1080\/01621459.1927.10502953","volume":"22","author":"EB Wilson","year":"1927","unstructured":"Wilson EB (1927) Probable inference, the law of succession, and statistical inference. J Am Stat Assoc 22(158):209\u2013212","journal-title":"J Am Stat Assoc"},{"key":"10303_CR41","doi-asserted-by":"crossref","unstructured":"Wohlin C, Runeson P, Hst M, Ohlsson MC, Regnell B, Wessln A (2012) Experimentation in software engineering springer","DOI":"10.1007\/978-3-642-29044-2"},{"key":"10303_CR42","doi-asserted-by":"crossref","unstructured":"Yamashita A, Moonen L (2013) Do developers care about code smells? an exploratory survey. In: Proceedings of working conference on reverse engineering, pp 242\u2013251. IEEE","DOI":"10.1109\/WCRE.2013.6671299"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-023-10303-0.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-023-10303-0\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-023-10303-0.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,10,18]],"date-time":"2024-10-18T08:51:17Z","timestamp":1729241477000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-023-10303-0"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,4,14]]},"references-count":42,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2023,5]]}},"alternative-id":["10303"],"URL":"https:\/\/doi.org\/10.1007\/s10664-023-10303-0","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,4,14]]},"assertion":[{"value":"6 February 2023","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"14 April 2023","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors declare that they have no conflict of interest.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"<!--Emphasis Type='Bold' removed-->Conflict of Interests"}}],"article-number":"64"}}