Content area

Abstract

Today, most popular applications and websites such as Google and Facebook are multilanguage systems. Google is developed with C, C++, Go, Java, Python, and JS, while Facebook is using Hack, PHP, Python, C++, Java, Erlang, D, Haskell, and JS. Furthermore, previous research studies reported that PHP developers regularly use two languages besides PHP. Java developers also use C/C++ with Java code through the Java native interface (JNI) that allows to call native functions from Java methods and Java methods from native functions. Moreover, Android application developers prefer to use the Android NDK (allows to use C/C++ code with Android) along with Java compared to using only Java. In all these examples, we observe the phenomenon of multi-language development. While in many cases, there is one clear main language (e.g., Java or C/C++) with various smaller contributions from other languages (e.g., bash or make), increasingly more modern software are heterogeneous in the sense that they are composed of multiple programming languages that interact with the host language to a large extent. Multi-language development presents a good practice for software development because it takes advantage of existing libraries written in other programming languages (code reuse), which leads the industry to save development time and project budgets. As multi-language development consists of combining languages with different semantics and lexical programming rules, this leads to complicate the code comprehension and, especially, the code maintenance, i.e., dependency tracking, data synchronisation between the different components, communication between the combined languages, exception management, and change impact analysis. Not all of these challenges are discussed in the literature. Based on the literature, the major concerns of developers consist of: Change impact analysis and its relation with component dependencies and the adequate choice of multi-language design patterns. Hence, in this thesis, we first take a step back to better understand how and why developers opt for multi-language development, before evaluating the challenges related to this kind of development and their impact on software quality and security. For these purposes, we conducted several qualitative and quantitative empirical studies on large open-source multilanguage software systems.

Alternate abstract:

Aujourd’hui, la plupart des applications et sites Web tels que Google et Facebook sont des systèmes multi-langages. Google est codé en C, C++, Go, Java, Python et JS. Facebook, quant à lui, utilise Hack, PHP, Python, C++, Java, Erlang, D, Haskell et JS. De plus, de précédentes études ont permis de constater que les développeurs PHP utilisaient régulièrement deux langages en plus du PHP. Les développeurs Java utilisent également le C/C++ avec du code Java à travers la Java Native Interface (JNI) qui permet d’appeler des fonctions natives à partir de méthodes Java et des méthodes Java à partir des fonctions natives. De plus, les développeurs d’applications Android préfèrent utiliser Android NDK (qui permet d’utiliser du code C/C++ avec Android) en plus de Java, plutôt que d’utiliser uniquement Java. Dans tous ces exemples, on observe le phénomène du développement multi-langage. Bien qu’il y ait, le plus souvent, un seul langage principal (Java ou C/C++) avec divers contributions dans d’autres langages (par exemple, bash ou make), les logiciels modernes sont de plus en plus hétérogènes dans le sens où ils combinent de multiples langages de programmation qui interagissent d’une façon significative avec le langage principal. Le développement multi-langage représente une bonne pratique dans le développement de logiciels car il tire profit des bibliothèques écrites dans d’autres langages de programmation et de la réutilisation de code, ce qui permet un gain en terme de temps de développement et de budget des projets. Par contre, puisque le développement multi-langage consiste à combiner des langages ayant des règles de programmation différentes, cela contribue à rendre le code plus difficile à comprendre et, surtout, à rendre plus difficile la maintenance du code, la synchronisation des dépendances entre les différents composants, la communication entre langages, la gestion des exceptions, et l’analyse d’impact des changements. Ces difficultés ne sont pas entierement abordées dans la littérature. Les principales préoccupations des développeurs identifiées dans la littérature sont : l’analyse d’impact des changements ainsi que son lien avec les dépendances de composants, et le choix des pratiques de programmation appropriées au multi-langage. Ainsi, dans cette dissertation, nous prenons d’abord du recul pour mieux comprendre comment et pourquoi les développeurs optent pour le développement multi-langage avant d’évaluer les défis associés à ce type de développement et son impact sur la qualité et la sécurité des logiciels. Pour cela, nous avons élaboré plusieurs études empiriques qualitatives et quantitatives sur des projets multi-langages.

Details

1010268
Title
Towards Understanding Modern Multi-Language Software Systems
Number of pages
174
Publication year
2020
Degree date
2020
School code
1105
Source
DAI-A 83/6(E), Dissertation Abstracts International
ISBN
9798759977742
Advisor
University/institution
Ecole Polytechnique, Montreal (Canada)
University location
Canada -- Quebec, CA
Degree
Ph.D.
Source type
Dissertation or Thesis
Language
English
Document type
Dissertation/Thesis
Dissertation/thesis number
28990299
ProQuest document ID
2626888945
Document URL
https://www.proquest.com/dissertations-theses/towards-understanding-modern-multi-language/docview/2626888945/se-2?accountid=208611
Copyright
Database copyright ProQuest LLC; ProQuest does not claim copyright in the individual underlying works.
Database
ProQuest One Academic