skip to main content
10.1145/3361149.3364227acmotherconferencesArticle/Chapter ViewAbstractPublication PageseuroplopConference Proceedingsconference-collections
research-article

Anti-patterns for multi-language systems

Published:03 July 2019Publication History

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.

References

  1. 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 ScholarGoogle Scholar
  2. D. Galin, Software quality assurance: from theory to implementation. Pearson Education India, 2004.Google ScholarGoogle Scholar
  3. E. Shihab, "Practical software quality prediction," in Software Maintenance and Evolution (ICSME), 2014 IEEE International Conference on. IEEE, 2014, pp. 639--644.Google ScholarGoogle Scholar
  4. C. Alexander, S. Ishikawa, M. Silverstein, J. R. i Ramió, M. Jacobson, and I. Fiksdahl-King, A pattern language. Gustavo Gili, 1977.Google ScholarGoogle Scholar
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Fowler and K. Beck, Refactoring: improving the design of existing code. Addison-Wesley Professional, 1999.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle Scholar
  9. 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 ScholarGoogle Scholar
  10. 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 ScholarGoogle Scholar
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle Scholar
  13. 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 ScholarGoogle Scholar
  14. 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 ScholarGoogle Scholar
  15. 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 ScholarGoogle Scholar
  16. 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 ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarCross RefCross Ref
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. A. Malinova, "Design approaches to wrapping native legacy codes," Scientific works, Plovdiv University, vol. 36, pp. 89--100, 2008.Google ScholarGoogle Scholar
  20. 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 ScholarGoogle Scholar
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle Scholar
  23. R. C. Martin, Agile software development: principles, patterns, and practices. Prentice Hall, 2002.Google ScholarGoogle Scholar
  24. B. F. Webster, Pitfalls of object oriented development. Book, 1995.Google ScholarGoogle Scholar
  25. 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 ScholarGoogle Scholar
  26. 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 ScholarGoogle Scholar
  27. 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 ScholarGoogle Scholar
  28. 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 ScholarGoogle Scholar
  29. S. Liang, Java Native Interface: Programmer's Guide and Reference. Addison-Wesley Longman Publishing Co., Inc., 1999.Google ScholarGoogle Scholar
  30. 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 ScholarGoogle Scholar
  31. 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 ScholarGoogle Scholar
  32. M. Goedicke, G. Neumann, and U. Zdun, "Message redirector," 6th European Conference on Pattern Languages of Programms (EuroPLoP '2001), 2001.Google ScholarGoogle Scholar
  33. 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 ScholarGoogle Scholar
  34. M. Goedicke, G. Neumann, and U. Zdun, "Object system layer," 5th European Conference on Pattern Languages of Programms (EuroPLoP '2000), 2000.Google ScholarGoogle Scholar
  35. H. M. Sneed, "Migrating from cobol to java," in 2010 IEEE International Conference on Software Maintenance. IEEE, 2010, pp. 1--7.Google ScholarGoogle Scholar
  36. M. Fowler, "Strangler application," 2004. [Online]. Available: https://martinfowler.com/bliki/StranglerFigApplication.htmlGoogle ScholarGoogle Scholar
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Osmani, Learning JavaScript Design Patterns: A JavaScript and jQuery Developer's Guide. "O'Reilly Media, Inc.", 2012.Google ScholarGoogle Scholar
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. 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 ScholarGoogle Scholar
  41. 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 ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Other conferences
    EuroPLop '19: Proceedings of the 24th European Conference on Pattern Languages of Programs
    July 2019
    431 pages
    ISBN:9781450362061
    DOI:10.1145/3361149

    Copyright © 2019 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 3 July 2019

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article

    Acceptance Rates

    Overall Acceptance Rate216of354submissions,61%

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader