Mastering variability in the wild : on object-oriented variability implementations and variability-aware build systems - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2022

Mastering variability in the wild : on object-oriented variability implementations and variability-aware build systems

Maîtriser la variabilité enfouie dans les systèmes orientés objet et les systèmes de construction logicielle

Résumé

The constantly increasing demand for new and up-to-date software solutions compels software practitioners to develop and maintain customizable software systems while assuring an high level of quality and reliability. While Software Product Lines (SPLs) are a solution towards this goal, many variability-rich software systems are not organized as such. They progressively grow their variable parts, relying on existing multiple mechanisms to implement their variability in code and their building toolchain. In their implementation, object-oriented (OO) systems mainly manage their variability in a single codebase using OO mechanisms such as inheritance and patterns. Due to their nature, these implementations are buried in the codebase, hampering the system's comprehension for developers and thus its maintenance and evolution, causing quality issues. Additionally, large variability-rich software systems often rely on complex build systems to select code assets. As they are widely ad hoc build systems reusing off-the-shelf tools, no global representation of the overall variability resolution mechanism is available, and conflicts may happen and cause anomalies. In this thesis, we first propose the foundations and techniques to identify and visualize variability implementations in large OO variability-rich software systems. These implementations are abstracted in terms of variation points and variants and identified relying on the notion of density of symmetries in OO structures. Following a city metaphor, they are then visualized in the form of a connected set of 3D buildings together with metrics on their quality. This helps distinguish zones concentrating variability implementations and potentially exhibiting technical debt. These proposals have been validated by a prototyped application on large open-source and highly-variable OO software systems, as well as a usability study with two separate groups of newcomer developers. The thesis also introduces a modeling and reasoning framework to characterize anomalies in variability-aware build systems, allowing to reason on code assets relationships, and identify all these anomalies at the finest grain. The framework was instantiated and partially tooled on both the Linux kernel build system, demonstrating its generality over the many separate detections on this heavily studied subject, and a newly studied build toolchain from the Mozilla foundation, showing applicability.
La demande sans cesse croissante de solutions logicielles nouvelles et récentes oblige les professionnels du logiciel à développer et à maintenir des systèmes logiciels personnalisables tout en garantissant un niveau élevé de qualité et de fiabilité.Si les lignes de produits logiciels (LPLs) constituent une solution pour atteindre cet objectif, de nombreux systèmes logiciels riches en variabilité ne sont pas organisés de cette manière. Ils augmentent progressivement leurs parties variables, en s'appuyant sur les multiples mécanismes existants pour mettre en œuvre leur variabilité dans le code et leur chaîne d'outils de construction. Dans leur mise en œuvre, les systèmes orientés objet (OO) gèrent principalement leur variabilité dans une base de code unique en utilisant des mécanismes OO tels que l'héritage et les patrons de conception. En raison de leur nature, ces implémentations sont enfouies dans la base de code, ce qui nuit à la compréhension du système par les développeurs et, par conséquent, à sa maintenance et à son évolution, entraînant des problèmes de qualité. En outre, les grands systèmes logiciels riches en variabilité s'appuient souvent sur des systèmes de construction complexes pour sélectionner les éléments du code. Comme il s'agit de systèmes de construction ad hoc réutilisant des outils standard, aucune représentation globale du mécanisme de résolution de la variabilité n'est disponible, et des conflits peuvent survenir et causer des anomalies. Dans cette thèse, nous proposons tout d'abord les bases et les techniques pour identifier et visualiser les implémentations de la variabilité dans les grands systèmes logiciels OO riches en variabilité. Ces implémentations sont abstraites en termes de points de variation et de variantes et identifiées en s'appuyant sur la notion de densité de symétries dans les structures OO. En reprenant la métaphore d'une ville, elles sont ensuite visualisées sous la forme d'un ensemble connecté de bâtiments 3D combinés à des métriques sur leur qualité.Cela permet de distinguer les zones concentrant les implémentations de variabilité et présentant potentiellement une dette technique. Ces propositions ont été validées par un prototype sur de grands systèmes logiciels OO open-source et hautement variables, ainsi que par une étude d'utilisabilité avec deux groupes distincts de développeurs débutants. La thèse introduit également un cadre de modélisation et de raisonnement pour caractériser les anomalies dans les systèmes de construction gérant de la variabilité, permettant de raisonner sur les relations entre les actifs du code, et d'identifier toutes ces anomalies au grain le plus fin. Le framework a été instancié et partiellement implémenté à la fois sur le système de construction du noyau Linux, démontrant sa généralité sur les nombreuses détections distinctes sur ce sujet très étudié, et sur une chaîne d'outils de construction récemment étudiée de la fondation Mozilla, démontrant son applicabilité.
Fichier principal
Vignette du fichier
2022COAZ4107.pdf (10.71 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)

Dates et versions

tel-03988118 , version 1 (14-02-2023)

Identifiants

  • HAL Id : tel-03988118 , version 1

Citer

Johann Mortara. Mastering variability in the wild : on object-oriented variability implementations and variability-aware build systems. Software Engineering [cs.SE]. Université Côte d'Azur, 2022. English. ⟨NNT : 2022COAZ4107⟩. ⟨tel-03988118⟩
98 Consultations
73 Téléchargements

Partager

Gmail Facebook X LinkedIn More