<  Back to the Polytechnique Montréal portal

Multi-Language Design Smells: Characteristics, Prevalence, and Impact

Mouna Abidi

Ph.D. thesis (2021)

Open Access document in PolyPublie
[img]
Preview
Open Access to the full text of this document
Terms of Use: All rights reserved
Download (5MB)
Show abstract
Hide abstract

Abstract

Nowadays, it is common to see software development teams combine multiple programming languages when developing a new software system. Popular websites such as Netflix, Facebook, Instagram, and other modern software systems are built using several programming languages and technologies. The cost benefits of reuse and advantages of each programming language are two main incentives for using multiple languages in the same system. Developers often leverage the strengths of multiple languages to cope with challenges of building complex software. By using programming languages that complement one another, performance, productivity, and agility may be improved. However, despite the numerous advantages of multi-language systems, they are not without some challenges. Indeed, combining programming languages with different semantics and lexical rules adds an extra complexity to the maintenance activities and comprehension of multi-language systems compared to mono-language systems, i.e., systems developed with one programming language. Software quality is one of the most important concerns for software systems to reduce maintenance, and evolution costs. Software quality partly depends on adopting guidelines, idioms, patterns, and avoiding design smells i.e., code smells and anti-patterns. These guidelines are an effective means of improving the quality of multi-language systems. They capture good practices to adopt and bad practices to avoid. Design patterns describe good solutions to recurring design problems. On the contrary, design smells are symptoms of poor design and implementation choices. They represent violations of best practices that often indicate the presence of bigger problems. However, for multi-language systems, the literature is still lacking an established set of guidelines, design patterns, and design smells on how to combine different programming languages in order to maximise their benefits.

Résumé

De nos jours, il est courant de voir des équipes de développement combiner plusieurs langages de programmation lors du développement d'un nouveau logiciel. Les sites Web populaires tels que Netflix, Facebook, Instagram et d'autres logiciels modernes sont construits à l'aide de plusieurs langages de programmation. Les avantages en termes de coût de la réutilisation et les avantages qu'offre chaque langage de programmation sont les deux principales raisons qui incitent à utiliser plusieurs langages dans le même système. Les développeurs tirent souvent parti des atouts de plusieurs langages pour faire face aux défis de la création de logiciels complexes. Cependant, malgré les nombreux avantages qu'offrent les systèmes multilangages, ils ne sont pas sans défis. En effet, la combinaison de langages de programmation avec différentes sémantiques et règles lexicales ajoute une complexité supplémentaire aux activités de maintenance et à la compréhension des systèmes multi-langages par rapport auxsystèmes mono-langage, i.e., des systèmes développés avec un seul langage de programmation. La qualité est l'une des préoccupations les plus importantes des logiciels afin de réduire les coûts de maintenance et d'évolution. La qualité du logiciel dépend en partie de l'adoption de directives de bonne pratiques, de patrons de conception et de l'identification et correction de mauvaises pratiques, i.e., des défauts de code et de conception. Ces directives représentent un moyen efficace d'améliorer la qualité des systèmes multi-langages. Elles capturent les bonnes pratiques à adopter et les mauvaises pratiques à éviter. Les patrons de conception décrivent de bonnes solutions aux problèmes de conception récurrents. Au contraire, les défauts de conception sont des symptômes de mauvais choix de conception. Ils représentent des violations des meilleures pratiques qui indiquent souvent la présence de problèmes plus importants. Cependant, pour les systèmes multi-langages, la littérature manque encore d'un ensemble établi de directives, patrons de conception et défauts de conception portant sur la manière de combiner différents langages de programmation afin de maximiser leurs avantages.

Department: Department of Computer Engineering and Software Engineering
Program: Génie informatique
Academic/Research Directors: Foutse Khomh
PolyPublie URL: https://publications.polymtl.ca/6304/
Institution: Polytechnique Montréal
Date Deposited: 14 Jul 2021 13:27
Last Modified: 28 Sep 2024 03:40
Cite in APA 7: Abidi, M. (2021). Multi-Language Design Smells: Characteristics, Prevalence, and Impact [Ph.D. thesis, Polytechnique Montréal]. PolyPublie. https://publications.polymtl.ca/6304/

Statistics

Total downloads

Downloads per month in the last year

Origin of downloads

Repository Staff Only

View Item View Item