• Aucun résultat trouvé

Archivage et suivi de versions du logiciel de navigation de Mana

Mana . . . . 61 3.3 Conception de l’étude . . . . 62

3.3.1 Questions de recherche . . . 63

3.3.2 Détails de l’approche pour répondre aux questions de recherche 64

3.4 Résultats empiriques . . . . 68

3.4.1 Vue d’ensemble des fautes et de leur reproductibilité (RQ1) . 68

3.4.2 Entrées : mondes, missions et données de configuration (RQ2,

RQ3) . . . 70

3.4.3 Données d’observation et procédures d’oracle (RQ4) . . . 74

3.4.4 Obstacles à la validité de cette étude . . . 77

3.5 Conclusion . . . . 78

3.1

Introduction

Malgré l’évolution des simulateurs il existe un écart entre la simulation et le monde réel, notamment en ce qui concerne la prise en compte des lois physiques. La pertinence du test en simulation est par là-même discutable. En effet, il se pourrait que la plupart des fautes nécessitent des conditions réelles pour être révé- lées, c’est-à-dire pour activer ces fautes et observer leur(s) potentiel(s) effet(s). Des études concernant la reproduction de fautes en simulation sont donc nécessaires afin d’attester de la pertinence du test en simulation. Ce chapitre fait état d’une telle étude exploratoire appliquée à un logiciel académique pour la navigation de robots d’extérieur.

La plateforme de test présentée au chapitre précédent est représentative d’une approche de simulation basse fidélité. Elle est utilisée comme base de notre étude. Nous cherchons à déterminer si un test exécuté sur ce type de plateforme peut suffire à révéler des fautes de navigation qui sont actuellement trouvées par des expérimen- tations sur le terrain. Les fautes sont extraites, à l’aide d’une analyse manuelle, du suivi de versions du logiciel de navigation du robot Mana. L’échantillon de fautes

60 Chapitre 3. Étude de la reproductibilité de fautes en simulation

considéré est de taille raisonnable (33 fautes) permettant une analyse qualitative approfondie de chacune d’entre elles. Cette analyse manuelle représente un effort de 6 mois de travail. L’effort déployé, le nombre de versions du logiciel ainsi que de fautes analysées sont du même ordre de grandeur que dans des travaux similaires dans la littérature (voir [Jin 2012], [Abal 2014] et [Cavezza 2014] pour des exemples d’analyse approfondie de fautes dans d’autres domaines que le nôtre). Dans notre cas, il s’agit d’étudier la reproductibilité des fautes en simulation, par analyse dé- taillée de leurs conditions d’activation (appelées dans le suite déclencheurs) et de leurs effets observables. Pour certaines fautes, l’analyse va jusqu’à confirmer expé- rimentalement ces déclencheurs et effets dans des simulations MORSE.

L’analyse approfondie des fautes de Mana apporte de nouvelles connaissances sur les entrées de test, les données d’observation et la procédure d’oracle propres à révéler ces fautes. Au-delà de la question de la reproductibilité, elle permet aussi des retours sur la conception du test du logiciel de navigation, telle que nous l’avions mise en œuvre dans nos premières expériences.

Dans le chapitre précédent, un modèle de monde virtuel et de mission a été élaboré à partir d’un cas d’utilisation. En ce basant sur ce modèle, il est possible de générer un monde complet incluant un terrain présentant des irrégularités locales et parsemé d’obstacles, ainsi qu’une mission de navigation constituée de deux points : un point de départ et un point objectif. L’analyse des fautes permet d’effectuer un retour critique sur la pertinence de ce modèle et sa complétude. Nous pouvons ainsi déterminer si l’ensemble des déclencheurs identifiés est déjà présent dans notre modèle, ou si des éléments sont manquants.

Le problème de l’oracle est celui pour lequel nous avons le plus besoin de re- tour. C’est un problème complexe et ouvert, pour lequel la solution la plus rencon- trée dans la littérature se cantonne à la détection de défaillances catastrophiques. L’analyse détaillée des effets des fautes offre l’opportunité d’identifier un spectre de défaillances plus large. Nous espérons ainsi recueillir des indications utiles pour opérer une discrimination entre comportements acceptables et comportements anor- maux d’un logiciel de navigation. Dans une moindre mesure, nous cherchons aussi à évaluer la complétude de l’ensemble de données collectées. Rappelons que l’éla- boration d’un verdict s’effectue hors ligne, par post-traitement des données brutes d’exécution. Cette approche permet de considérer différents types de traitements sans avoir à changer les instrumentations ni à rejouer les tests, mais suppose un ensemble d’observations raisonnablement complet. La connaissance des effets des fautes peut nous renseigner sur d’éventuelles omissions dans les données à collecter. L’archivage du logiciel de navigation ciblé ainsi que son suivi de versions sont décrits section 3.2. La conception de l’étude est détaillée section 3.3. La section 3.4 analyse les résultats, émet des recommandations et discute les obstacles à la validité de cette étude.

3.2. Archivage et suivi de versions du logiciel de navigation de Mana61 Nom du mo- dule .c .h .gen Total dtm-genom 2256 232 434 2922 pom-genom 1929 340 435 2704 p3d-genom 1984 677 592 3253 LibP3D 7526 1115 0 8641 Total 13695 2364 1461 17520

Table 3.1 – Nombre de lignes de code pour tous les modules du logiciel de naviga- tion ciblé en fonction du type de fichiers considérés

3.2

Archivage et suivi de versions du logiciel de navi-

gation de Mana

Le logiciel de navigation de Mana fait partie du dépôt OpenRobots1. Ce der-

nier contient principalement des logiciels développés au LAAS pour l’étude et la conception de plateformes robotiques comprenant des robots d’extérieur, d’inté- rieur ainsi que des drones. L’infrastructure Robotpkg est utilisée pour l’installation et la compilation des composants OpenRobots et de leurs dépendances. Mana est une plateforme robotique spécialisée dans la navigation en environnement extérieur. Le paquet Mana meta-package2dans OpenRobots contient tous les logiciels nécessaires

pour prendre en charge la localisation, la cartographie, l’acquisition d’image et son traitement, le matériel (liens avec les drivers du robot), la planification de trajectoire et son exécution, les opérations mathématiques ainsi que la communication.

Cette étude se focalise sur le service de navigation comprenant, comme pré- senté dans le chapitre précédent, la cartographie gérée par DTM (voir module dtm-genom3), la localisation gérée par POM (voir module pom-genom4), et la pla- nification locale (voir module p3d-genom5). Tous ces modules sont des modules GenoM.

Cette étude couvre les versions successives (appelées commits dans l’outil de suivi de versions) du logiciel entre 2005 et 2015. Les développements initiaux datent d’une période antérieure à 2005, mais les commits avant cette date n’ont pas été conservés. En 2005, ce logiciel avait déjà atteint un niveau relativement mature. Durant la période s’étalant entre 2005 et 2015, le service de navigation a été utilisé pour toutes les expériences menées par les chercheurs du LAAS en environnement d’extérieur, dans le cadre de divers projets collaboratifs. Les évolutions du logiciel sont dictées par les besoins des projets, et les actions correctives font suite aux problèmes rencontrés lors des expériences sur le terrain.

1. https ://www.openrobots.org/wiki

2. http ://robotpkg.openrobots.org/robotpkg/meta-pkgs/mana/index.html 3. http ://trac.laas.fr/git/robots/dtm-genom.git

4. http ://trac.laas.fr/git/robots/pom-genom.git 5. git ://trac.laas.fr/git/robots/p3d-genom

62 Chapitre 3. Étude de la reproductibilité de fautes en simulation

Le système sous test comprend 35K lignes de code, incluant les fichiers sources des modules DTM, POM et P3D, une bibliothèque pour le support d’exécution des modules, ainsi que des bibliothèques fonctionnelles dédiées à un module spécifique (par exemple, LibP3D) ou à un ensemble de modules (par exemple, la bibliothèque générique LibT3D pour la géométrie 3D). Les modules et bibliothèques sont déve- loppés et archivés dans des dépôts Git6 séparés.

Pour que l’étude manuelle des commits soit faisable, la collecte et la documenta- tion des fautes se concentrent sur un sous-ensemble de ces dépôts. Ce sous-ensemble est détaillé dans la table 3.1. Il est construit de manière à être représentatif des mo- dules les plus pertinents liés aux problèmes de navigation. Il contient les trois mo- dules de base et la bibliothèque fonctionnelle de P3D, comme le montre la table 3.1, pour un total de 17K lignes de code. Un module GenoM est construit à l’aide d’un fichier .gen qui décrit la structure du module, et de fichiers en langage C (.c, .h) qui décrivent les algorithmes encapsulés dans le module. Il est important de noter que ces modules sont génériques et peuvent être déployés pour d’autres robots que Mana.

Les modules sélectionnés ont été développés par des doctorants et post- doctorants qui n’exercent plus au laboratoire. De plus, aucun outil de suivi de faute n’a été utilisé durant le développement et la maintenance des modules. Les seules informations disponibles concernant l’évolution de ces modules sont les lignes de code ajoutées et supprimées entre deux commits, ainsi que le commentaire écrit par le développeur associé à chaque commit. La figure 3.1 montre deux exemples de commentaires, l’un corrigeant une faute et l’autre introduisant une simple mise à jour du code. Ces commentaires sont représentatifs des commentaires analysés dans cette étude : aucun formatage n’est utilisé et relativement peu de détails sont donnés. Entre deux commits, le code des modules peut être corrigé, du nouveau code ajouté ou du code existant supprimé. Toute modification ne correspond pas forcément à la corretion d’une faute mais peut avoir différentes motivations, telles que le nettoyage ou la re-factorisation du code, la mise-à-jour de bibliothèques afin d’ajouter des fonctionnalités, etc. L’analyse manuelle de ces modifications doit dé- terminer quels commits correspondent à la correction de fautes et en quoi ces fautes consistent.

Documents relatifs