{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,26]],"date-time":"2026-04-26T03:51:39Z","timestamp":1777175499430,"version":"3.51.4"},"reference-count":84,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2021,2,11]],"date-time":"2021-02-11T00:00:00Z","timestamp":1613001600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100000038","name":"Natural Sciences and Engineering Research Council of Canada","doi-asserted-by":"publisher","award":["RGPIN-2019-06956"],"award-info":[{"award-number":["RGPIN-2019-06956"]}],"id":[{"id":"10.13039\/501100000038","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2021,7,31]]},"abstract":"<jats:p>Nowadays, modern applications are developed using components written in different programming languages and technologies. The cost benefits of reuse and the advantages of each programming language are two main incentives behind the proliferation of such systems. However, as the number of languages increases, so do the challenges related to the development and maintenance of these systems. In such situations, developers may introduce design smells (i.e., anti-patterns and code smells) which are symptoms of poor design and implementation choices. Design smells are defined as poor design and coding choices that can negatively impact the quality of a software program despite satisfying functional requirements. Studies on mono-language systems suggest that the presence of design smells may indicate a higher risk of future bugs and affects code comprehension, thus making systems harder to maintain. However, the impact of multi-language design smells on software quality such as fault-proneness is yet to be investigated.<\/jats:p>\n          <jats:p>\n            In this article, we present an approach to detect multi-language design smells in the context of JNI systems. We then investigate the prevalence of those design smells and their impacts on fault-proneness. Specifically, we detect 15 design smells in 98 releases of 9 open-source JNI projects. Our results show that the design smells are prevalent in the selected projects and persist throughout the releases of the systems. We observe that, in the analyzed systems, 33.95% of the files involving communications between Java and C\/C++ contain occurrences of multi-language design smells. Some kinds of smells are more prevalent than others, e.g.,\n            <jats:italic>Unused Parameters<\/jats:italic>\n            ,\n            <jats:italic>Too Much Scattering<\/jats:italic>\n            , and\n            <jats:italic>Unused Method Declaration<\/jats:italic>\n            . Our results suggest that files with multi-language design smells can often be more associated with bugs than files without these smells, and that specific smells are more correlated to fault-proneness than others. From analyzing fault-inducing commit messages, we also extracted activities that are more likely to introduce bugs in smelly files. We believe that our findings are important for practitioners as it can help them prioritize design smells during the maintenance of multi-language systems.\n          <\/jats:p>","DOI":"10.1145\/3432690","type":"journal-article","created":{"date-parts":[[2021,2,11]],"date-time":"2021-02-11T11:08:29Z","timestamp":1613041709000},"page":"1-56","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":37,"title":["Are Multi-Language Design Smells Fault-Prone? An Empirical Study"],"prefix":"10.1145","volume":"30","author":[{"given":"Mouna","family":"Abidi","sequence":"first","affiliation":[{"name":"DGIGL, Polytechnique Montreal, Montreal, Canada"}]},{"given":"Md Saidur","family":"Rahman","sequence":"additional","affiliation":[{"name":"DGIGL, Polytechnique Montreal, Montreal, Canada"}]},{"given":"Moses","family":"Openja","sequence":"additional","affiliation":[{"name":"DGIGL, Polytechnique Montreal, Montreal, Canada"}]},{"given":"Foutse","family":"Khomh","sequence":"additional","affiliation":[{"name":"DGIGL, Polytechnique Montreal, Montreal, Canada"}]}],"member":"320","published-online":{"date-parts":[[2021,2,11]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.5555\/851042.857050"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.2006.20"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/SANER.2016.112"},{"key":"e_1_2_1_4_1","volume-title":"Estimating Software Costs","author":"Jones T. Capers","unstructured":"T. Capers Jones. 1998. Estimating Software Costs. McGraw-Hill, Inc."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1498926.1498930"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1639949.1640105"},{"key":"e_1_2_1_7_1","volume-title":"Proceedings of the5th European Conference on Pattern Languages of Programms (EuroPLoP\u20192000)","author":"Goedicke Michael","year":"2000","unstructured":"Michael Goedicke, Gustaf Neumann, and Uwe Zdun. 2000. Object system layer. In Proceedings of the5th European Conference on Pattern Languages of Programms (EuroPLoP\u20192000) (2000)."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.5555\/612184.612185"},{"key":"e_1_2_1_9_1","volume-title":"Proceedings of the 2012 28th IEEE International Conference on Software Maintenance (ICSM). IEEE, 140--149","author":"Neitsch Andrew","unstructured":"Andrew Neitsch, Kenny Wong, and Michael W. Godfrey. 2012. Build system issues in multilanguage software. In Proceedings of the 2012 28th IEEE International Conference on Software Maintenance (ICSM). IEEE, 140--149."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.5555\/1496711.1496736"},{"key":"e_1_2_1_11_1","volume-title":"Proceedings of the 29th Annual International Conference on Computer Science and Software Engineering. IBM Corp., 72--81","author":"Abidi Mouna","year":"2019","unstructured":"Mouna Abidi, Manel Grichi, and Foutse Khomh. 2019. Behind the scenes: Developers\u2019 perception of multi-language practices. In Proceedings of the 29th Annual International Conference on Computer Science and Software Engineering. IBM Corp., 72--81."},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3361149.3364227"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3361149.3361161"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2601248.2601269"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31491-9_15"},{"key":"e_1_2_1_16_1","volume-title":"Proceedings of the 2015 International Conference on Open Source Systems Technologies (ICOSST). 170--175","author":"Mushtaq Z.","unstructured":"Z. Mushtaq and G. Rasool. 2015. Multilingual source code analysis: State of the art and challenges. In Proceedings of the 2015 International Conference on Open Source Systems Technologies (ICOSST). 170--175."},{"key":"e_1_2_1_17_1","volume-title":"Java Native Interface: Programmer\u2019s Guide and Reference","author":"Liang Sheng","unstructured":"Sheng Liang. 1999. Java Native Interface: Programmer\u2019s Guide and Reference (1st ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA.","edition":"1"},{"key":"e_1_2_1_18_1","volume-title":"Java for Practitioners: An Introduction and Reference to Java and Object Orientation","author":"Hunt John","unstructured":"John Hunt. 1999. Java for Practitioners: An Introduction and Reference to Java and Object Orientation (1st ed.). Springer-Verlag New York, Inc., Secaucus, NJ.","edition":"1"},{"key":"e_1_2_1_19_1","volume-title":"Max Jacobson, and Ingrid Fiksdahl-King.","author":"Alexander Christopher","year":"1977","unstructured":"Christopher Alexander, Sara Ishikawa, Murray Silverstein, Joaquim Romaguera i Rami\u00f3, Max Jacobson, and Ingrid Fiksdahl-King. 1977. A Pattern Language. Gustavo Gili."},{"key":"e_1_2_1_20_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma Erich","year":"1995","unstructured":"Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA."},{"key":"e_1_2_1_21_1","volume-title":"Mowbray","author":"Brown William H.","year":"1998","unstructured":"William H. Brown, Raphael C. Malveau, Hays W. McCormick, and Thomas J. Mowbray. 1998. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. John Wiley 8 Sons, Inc."},{"key":"e_1_2_1_22_1","volume-title":"Refactoring: Improving the Design of Existing Code","author":"Fowler Martin","year":"1999","unstructured":"Martin Fowler and Kent Beck. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2017.12.034"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1002\/smr.521"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.2009.28"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.2012.53"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/SANER.2016.103"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.2013.6671299"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1653662.1653716"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/1390630.1390645"},{"key":"e_1_2_1_31_1","volume-title":"Java Coding Guidelines: 75 Recommendations for Reliable and Secure Programs","author":"Long Fred","unstructured":"Fred Long, Dhruv Mohindra, Robert C. Seacord, Dean F. Sutherland, and David Svoboda. 2013. Java Coding Guidelines: 75 Recommendations for Reliable and Secure Programs. Addison-Wesley."},{"key":"e_1_2_1_32_1","volume-title":"Refactoring in Large Software Projects: Performing Complex Restructurings Successfully","author":"Lippert Martin","unstructured":"Martin Lippert and Stephen Roock. 2006. Refactoring in Large Software Projects: Performing Complex Restructurings Successfully. John Wiley 8 Sons."},{"key":"e_1_2_1_33_1","volume-title":"Automatic detection of bad smells in code: An experimental assessment.Journal of Object Technology 11, 2","author":"Fontana Francesca Arcelli","year":"2012","unstructured":"Francesca Arcelli Fontana, Pietro Braione, and Marco Zanoni. 2012. Automatic detection of bad smells in code: An experimental assessment.Journal of Object Technology 11, 2 (2012), 5--1."},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-011-9171-y"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2009.50"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1109\/SANER.2017.7884630"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1071610.1071614"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3236024.3264598"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/1082983.1083147"},{"key":"e_1_2_1_40_1","volume-title":"Votta","author":"Mockus Audris","year":"2000","unstructured":"Audris Mockus and Lawrence G. Votta. 2000. Identifying reasons for software changes using historic databases. In Proceedings of ICSM. 120--130."},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSME.2014.32"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180192"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2017.2752171"},{"key":"e_1_2_1_44_1","volume-title":"Handbook of Parametric and Nonparametric Statistical Procedures","author":"Sheskin David J.","unstructured":"David J. Sheskin. 2003. Handbook of Parametric and Nonparametric Statistical Procedures. Chapman and Hall\/CRC."},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2005.112"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-008-9080-x"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.2010.11"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635922"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/3084226.3084287"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1109\/MSP.2009.934715"},{"key":"e_1_2_1_51_1","volume-title":"Proceedings of the 2012 9th IEEE Working Conference on Mining Software Repositories (MSR). IEEE, 189--198","author":"Chen Tse-Hsun","unstructured":"Tse-Hsun Chen, Stephen W. Thomas, Meiyappan Nagappan, and Ahmed E. Hassan. 2012. Explaining software defects using topic models. In Proceedings of the 2012 9th IEEE Working Conference on Mining Software Repositories (MSR). IEEE, 189--198."},{"key":"e_1_2_1_52_1","volume-title":"Snowball: A language for stemming algorithms. Online. Accessed","author":"Porter Martin F.","year":"2001","unstructured":"Martin F. Porter. 2001. Snowball: A language for stemming algorithms. Online. Accessed 15 November, 2019."},{"key":"e_1_2_1_53_1","volume-title":"Proceedings of the 2013 IEEE International Conference on Software Maintenance. IEEE, 516--519","author":"Collard Michael L.","unstructured":"Michael L. Collard, Michael John Decker, and Jonathan I. Maletic. 2013. SRCML: An infrastructure for the exploration, analysis, and manipulation of source code: A tool demonstration. In Proceedings of the 2013 IEEE International Conference on Software Maintenance. IEEE, 516--519."},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2008.48"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.2013.6671310"},{"key":"e_1_2_1_56_1","volume-title":"Proceedings of the 2006 IEEE International Symposium on Secure Software Engineering. IEEE, 97--106","author":"Tan Gang","year":"2006","unstructured":"Gang Tan, Srimat Chakradhar, Raghunathan Srivaths, and Ravi Daniel Wang. 2006. Safe java native interface. In Proceedings of the 2006 IEEE International Symposium on Secure Software Engineering. IEEE, 97--106."},{"key":"e_1_2_1_57_1","volume-title":"Applications of Case Study Research","author":"Yin Robert K.","unstructured":"Robert K. Yin. 2002. Applications of Case Study Research Second Edition (Applied Social Research Methods Series Volume 34). Sage Publications, Inc."},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1109\/ESEM.2019.8870174"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-018-9665-y"},{"key":"e_1_2_1_60_1","volume-title":"Proceedings of the 12th ACM\/IEEE International Symposium on Empirical Software Engineering and Measurement. 1--4.","author":"Rodr\u00edguez-P\u00e9rez Gema","unstructured":"Gema Rodr\u00edguez-P\u00e9rez, Andy Zaidman, Alexander Serebrenik, Gregorio Robles, and Jes\u00fas M. Gonz\u00e1lez-Barahona. 2018. What if a bug has a different origin? Making sense of bugs without an explicit bug introducing change. In Proceedings of the 12th ACM\/IEEE International Symposium on Empirical Software Engineering and Measurement. 1--4."},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2018.03.009"},{"key":"e_1_2_1_62_1","volume-title":"Proceedings of the 2019 ACM\/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). 1--12","author":"Neto E. C.","unstructured":"E. C. Neto, D. A. d. Costa, and U. Kulesza. 2019. Revisiting and improving SZZ implementations. In Proceedings of the 2019 ACM\/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). 1--12."},{"key":"e_1_2_1_63_1","volume-title":"Proceedings of the 2019 IEEE\/ACM 16th International Conference on Mining Software Repositories (MSR). 84--95","author":"Treude C.","unstructured":"C. Treude and M. Wagner. 2019. Predicting good configurations for Github and stack overflow topic models. In Proceedings of the 2019 IEEE\/ACM 16th International Conference on Mining Software Repositories (MSR). 84--95."},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11042-018-6894-4"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICECCS.1995.479355"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.1998.723183"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1109\/ESEM.2009.5314231"},{"key":"e_1_2_1_68_1","doi-asserted-by":"publisher","DOI":"10.1109\/CSMR.2011.24"},{"key":"e_1_2_1_69_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2020.106278"},{"key":"e_1_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.1145\/2597008.2597144"},{"key":"e_1_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.2002.1173068"},{"key":"e_1_2_1_72_1","doi-asserted-by":"publisher","DOI":"10.5555\/1018431.1021443"},{"key":"e_1_2_1_73_1","volume-title":"Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems","author":"Lanza Michele","unstructured":"Michele Lanza and Radu Marinescu. 2007. Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems. Springer Science 8 Business Media."},{"key":"e_1_2_1_74_1","volume-title":"Companion to the 22nd ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications. ACM, 868--869.","author":"Moha Naouel","unstructured":"Naouel Moha and Yann-Ga\u00ebl Gu\u00e9h\u00e9neuc. 2007. P TIDEJ and D ECOR: Identification of design patterns and design defects. In Companion to the 22nd ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications. ACM, 868--869."},{"key":"e_1_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1109\/QSIC.2009.47"},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2010.11.921"},{"key":"e_1_2_1_77_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPC.2011.22"},{"key":"e_1_2_1_78_1","doi-asserted-by":"publisher","DOI":"10.1007\/s13369-016-2238-8"},{"key":"e_1_2_1_79_1","doi-asserted-by":"publisher","DOI":"10.5555\/2938006.2938019"},{"key":"e_1_2_1_80_1","doi-asserted-by":"publisher","DOI":"10.1145\/3238147.3238166"},{"key":"e_1_2_1_81_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2019.110486"},{"key":"e_1_2_1_82_1","volume-title":"Proceedings of the 2016 IEEE 24th International Conference on Program Comprehension (ICPC). 1--10","author":"Palomba F.","unstructured":"F. Palomba, A. Panichella, A. De Lucia, R. Oliveto, and A. Zaidman. 2016. A textual-based technique for smell detection. In Proceedings of the 2016 IEEE 24th International Conference on Program Comprehension (ICPC). 1--10."},{"key":"e_1_2_1_83_1","volume-title":"Proceedings of the 6th European Conference on Pattern Languages of Programms (EuroPLoP\u20192001)","author":"Goedicke Michael","year":"2001","unstructured":"Michael Goedicke, Gustaf Neumann, and Uwe Zdun. 2001. Message redirector. In Proceedings of the 6th European Conference on Pattern Languages of Programms (EuroPLoP\u20192001) (2001)."},{"key":"e_1_2_1_84_1","volume-title":"The Java Native Interface: Programmer\u2019s Guide and Specification","author":"Liang Sheng","unstructured":"Sheng Liang. 1999. The Java Native Interface: Programmer\u2019s Guide and Specification. Addison-Wesley Professional."}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3432690","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3432690","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:47:10Z","timestamp":1750193230000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3432690"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,2,11]]},"references-count":84,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2021,7,31]]}},"alternative-id":["10.1145\/3432690"],"URL":"https:\/\/doi.org\/10.1145\/3432690","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,2,11]]},"assertion":[{"value":"2020-02-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-10-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-02-11","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}