ABSTRACT
Multi-language systems are common nowadays because most of the systems are developed using components written in different programming languages. These systems could arise from three different reasons: (1) to leverage the strengths and take benefits of each language, (2) to reduce the cost by reusing code written in other languages, (3) to include and accommodate legacy code. However, they also introduce additional challenges, including the increase in the complexity and the need for proper interfaces and interactions between the different languages. To address these challenges, the software-engineering research community, as well as the industry, should describe and provide common guidelines, idioms, and patterns to support the development, maintenance, and evolution of these systems. These patterns are an effective means of improving the quality of multi-language systems. They capture good practices to adopt and bad practices to avoid. In order to help to improve the quality of multi-language systems, we analysed open-source systems, developers' documentation, bug reports, and programming language specifications to extract bad practices of multi-language systems usage. We encoded and cataloged these practices in the form of design anti-patterns. We report here six anti-patterns. These results could help not only researchers but also professional developers considering the use of more than one programming language.
- P. L. Roden, S. Virani, L. H. Etzkorn, and S. Messimer, "An empirical study of the relationship of stability metrics and the qmood quality models over software developed using highly iterative or agile software processes," in Source Code Analysis and Manipulation, 2007. SCAM 2007. Seventh IEEE International Working Conference on. IEEE, 2007, pp. 171--179.Google Scholar
- D. Galin, Software quality assurance: from theory to implementation. Pearson Education India, 2004.Google Scholar
- E. Shihab, "Practical software quality prediction," in Software Maintenance and Evolution (ICSME), 2014 IEEE International Conference on. IEEE, 2014, pp. 639--644.Google Scholar
- C. Alexander, S. Ishikawa, M. Silverstein, J. R. i Ramió, M. Jacobson, and I. Fiksdahl-King, A pattern language. Gustavo Gili, 1977.Google Scholar
- W. H. Brown, R. C. Malveau, H. W. McCormick, and T. J. Mowbray, AntiPatterns: refactoring software, architectures, and projects in crisis. John Wiley & Sons, Inc., 1998.Google ScholarDigital Library
- M. Fowler and K. Beck, Refactoring: improving the design of existing code. Addison-Wesley Professional, 1999.Google ScholarDigital Library
- C. Zhang and D. Budgen, "What do we know about the effectiveness of software design patterns?" IEEE Transactions on Software Engineering, vol. 38, no. 5, pp. 1213--1231, 2012.Google ScholarDigital Library
- F. Khomh and Y.-G. Gueheneuce, "Do design patterns impact software quality positively?" in Software Maintenance and Reengineering, 2008. CSMR 2008. 12th European Conference on. IEEE, 2008, pp. 274--278.Google Scholar
- F. Khomh, S. Vaucher, Y.-G. Guéhéneuc, and H. Sahraoui, "A bayesian approach for the detection of code and design smells," in Quality Software, 2009. QSIC'09. 9th International Conference on. IEEE, 2009, pp. 305--314.Google Scholar
- G. Tan and J. Croft, "An empirical security study of the native code in the jdk," in Proceedings of the 17th Conference on Security Symposium, ser. SS'08. Berkeley, CA, USA: USENIX Association, 2008, pp. 365--377.Google Scholar
- F. Tomassetti and M. Torchiano, "An empirical assessment of polyglot-ism in github," in Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering, ser. EASE '14. New York, NY, USA: ACM, 2014, pp. 17:1--17:4.Google ScholarDigital Library
- R.-H. Pfeiffer and A. Wąsowski, "Texmo: A multi-language development environment," in Proceedings of the 8th European Conference on Modelling Foundations and Applications, ser. ECMFA'12. Berlin, Heidelberg: Springer-Verlag, 2012, pp. 178--193.Google Scholar
- Z. Mushtaq and G. Rasool, "Multilingual source code analysis: State of the art and challenges," in 2015 International Conference on Open Source Systems Technologies (ICOSST), Dec 2015, pp. 170--175.Google Scholar
- Z. Mushtaq and G. Rasool, "Multilingual source code analysis: State of the art and challenges," in Open Source Systems & Technologies (ICOSST), 2015 International Conference on. IEEE, 2015, pp. 170--175.Google Scholar
- P. S. Kochhar, D. Wijedasa, and D. Lo, "A large scale study of multiple programming languages and code quality," in Software Analysis, Evolution, and Reengineering (SANER), 2016 IEEE 23rd International Conference on, vol. 1. IEEE, 2016, pp. 563--573.Google Scholar
- A. Neitsch, K. Wong, and M. W. Godfrey, "Build system issues in multilanguage software," in Software Maintenance (ICSM), 2012 28th IEEE International Conference on. IEEE, 2012, pp. 140--149.Google Scholar
- M. Goedicke and U. Zdun, "Piecemeal legacy migrating with an architectural pattern language: A case study," Journal of Software Maintenance and Evolution: Research and Practice, vol. 14, no. 1, pp. 1--30, 2002.Google ScholarCross Ref
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-oriented Software. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 1995.Google ScholarDigital Library
- A. Malinova, "Design approaches to wrapping native legacy codes," Scientific works, Plovdiv University, vol. 36, pp. 89--100, 2008.Google Scholar
- G. Neumann and U. Zdun, "Pattern-based design and implementation of an xml and rdf parser and interpreter: A case study," in European Conference on Object-Oriented Programming. Springer, 2002, pp. 392--414.Google Scholar
- M. Furr and J. S. Foster, "Checking type safety of foreign function calls," in Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, ser. PLDI '05. ACM, 2005, pp. 62--72.Google ScholarDigital Library
- J. Vlissides, R. Helm, R. Johnson, and E. Gamma, "Design patterns: Elements of reusable object-oriented software," Reading: Addison-Wesley, vol. 49, no. 120, p. 11, 1995.Google Scholar
- R. C. Martin, Agile software development: principles, patterns, and practices. Prentice Hall, 2002.Google Scholar
- B. F. Webster, Pitfalls of object oriented development. Book, 1995.Google Scholar
- Z. Soh, A. Yamashita, F. Khomh, and Y.-G. Guéhéneuc, "Do code smells impact the effort of different maintenance programming activities?" in Software Analysis, Evolution, and Reengineering (SANER), 2016 IEEE 23rd International Conference on, vol. 1. IEEE, 2016, pp. 393--402.Google Scholar
- A. Yamashita and L. Moonen, "Do developers care about code smells? an exploratory survey," in Reverse Engineering (WCRE), 2013 20th Working Conference on. IEEE, 2013, pp. 242--251.Google Scholar
- F. Khomh, M. Di Penta, and Y.-G. Gueheneuc, "An exploratory study of the impact of code smells on software change-proneness," in Reverse Engineering, 2009. WCRE'09. 16th Working Conference on. IEEE, 2009, pp. 75--84.Google Scholar
- D. Romano, P. Raila, M. Pinzger, and F. Khomh, "Analyzing the impact of antipatterns on change-proneness using fine-grained source code changes," in Reverse Engineering (WCRE), 2012 19th Working Conference on. IEEE, 2012, pp. 437--446.Google Scholar
- S. Liang, Java Native Interface: Programmer's Guide and Reference. Addison-Wesley Longman Publishing Co., Inc., 1999.Google Scholar
- A. Mouna, G. Manel, and K. Foutse, "Behind the scenes: Developers' perception of multi-language practices," in 29th Annual International Conference on Computer Science and Software Engineering (CASCON'2019). ACM, 2019.Google Scholar
- A. Mouna, G. Manel, K. Foutse, and G. Yann-Gaël, "Code smells for multi-language systems," in 24th European Conference on Pattern Languages of Programs (EuroPLoP '19), July 3--7, 2019, Irsee, Germany. ACM, 2019.Google Scholar
- M. Goedicke, G. Neumann, and U. Zdun, "Message redirector," 6th European Conference on Pattern Languages of Programms (EuroPLoP '2001), 2001.Google Scholar
- D. C. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects. John Wiley & Sons, 2013, vol. 2.Google Scholar
- M. Goedicke, G. Neumann, and U. Zdun, "Object system layer," 5th European Conference on Pattern Languages of Programms (EuroPLoP '2000), 2000.Google Scholar
- H. M. Sneed, "Migrating from cobol to java," in 2010 IEEE International Conference on Software Maintenance. IEEE, 2010, pp. 1--7.Google Scholar
- M. Fowler, "Strangler application," 2004. [Online]. Available: https://martinfowler.com/bliki/StranglerFigApplication.htmlGoogle Scholar
- G. Kondoh and T. Onodera, "Finding bugs in java native interface programs," in Proceedings of the 2008 International Symposium on Software Testing and Analysis, ser. ISSTA '08. New York, NY, USA: ACM, 2008, pp. 109--118.Google ScholarDigital Library
- A. Osmani, Learning JavaScript Design Patterns: A JavaScript and jQuery Developer's Guide. "O'Reilly Media, Inc.", 2012.Google Scholar
- S. Li and G. Tan, "Finding bugs in exceptional situations of jni programs," in Proceedings of the 16th ACM Conference on Computer and Communications Security, ser. CCS'09. New York, NY, USA: ACM, 2009, pp. 442--452.Google ScholarDigital Library
- A. Ayers, R. Schooler, C. Metcalf, A. Agarwal, J. Rhee, and E. Witchel, "Trace-back: first fault diagnosis by reconstruction of distributed control flow," in ACM SIGPLAN Notices, vol. 40, no. 6. ACM, 2005, pp. 201--212.Google Scholar
- P. Mayer and A. Schroeder, "Cross-language code analysis and refactoring," in 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation. IEEE, 2012, pp. 94--103.Google Scholar
Recommendations
Code smells for multi-language systems
EuroPLop '19: Proceedings of the 24th European Conference on Pattern Languages of ProgramsSoftware quality becomes a necessity and no longer an advantage. In fact, with the advancement of technologies, companies must provide software with good quality. Many studies introduce the use of design patterns as improving software quality and ...
Towards the Definition of Patterns and Code Smells for Multi-language Systems
EuroPLoP '20: Proceedings of the European Conference on Pattern Languages of Programs 2020Developers often combine multiple programming languages to build large-scale applications. They choose programming languages properly for their tasks at hand instead of solving all of their problems with a single language. Foreign Functions Interface ...
Are Multi-Language Design Smells Fault-Prone? An Empirical Study
Continuous Special Section: AI and SENowadays, 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 ...
Comments