Aller au contenu principal
ActivePapers Stockez vos données sous forme de documents recalculables : tout résultat publié peut ainsi être relancé, vérifié et préservé.

Certains liens de ce site sont des liens d'affiliation : si vous effectuez un achat via ceux-ci, nous pouvons percevoir une commission sans frais supplémentaires pour vous. Cela n'influence jamais nos recommandations. Consultez notre divulgation d'affiliation pour plus de détails. Divulgation d'affiliation.

Qu’est-ce que le génie logiciel de recherche ?

Le génie logiciel de recherche (RSE) est la discipline qui consiste à appliquer des pratiques professionnelles de génie logiciel (contrôle de version, tests, révision du code, intégration continue, documentation et maintenance à long terme) au code qui sous-tend la recherche scientifique. Si vous avez déjà passé trois semaines à déboguer un script d’analyse de dynamique moléculaire qui ne s’exécute que sur l’ordinateur portable d’un postdoctorant, ou si vous avez essayé de reproduire un résultat publié à partir d’une archive tar de Python non documenté, vous avez déjà rencontré le problème que le génie logiciel de recherche doit résoudre. Cet article explique ce qu’est le RSE, en quoi il diffère des rôles adjacents, ce que fait réellement un ingénieur logiciel de recherche au quotidien et comment décider si votre groupe en a besoin.

La définition courte, et pourquoi elle est contestée

Le terme « ingénieur logiciel de recherche » a été inventé au Royaume-Uni vers 2012, en grande partie grâce aux travaux du Software Sustainability Institute, pour donner un nom à une population croissante de personnes qui n’étaient ni des chercheurs traditionnels ni du personnel de support informatique. Ils ont écrit du code essentiel à la recherche, mais leur progression de carrière, leurs titres de poste et leur reconnaissance ne correspondaient à aucune des deux catégories.

La définition de travail communément citée est qu’un ingénieur logiciel de recherche est quelqu’un qui combine :

  1. Une compréhension professionnelle du génie logiciel — conception, tests, contrôle de version, déploiement, maintenance.
  2. Un rôle actif dans la recherche — contribuer aux questions de recherche, aux publications et aux demandes de subvention, et pas simplement mettre en œuvre une spécification transmise par quelqu’un d’autre.
  3. Engagement profond dans au moins un domaine de recherche — suffisant pour comprendre la science, les données et les contraintes.

La partie contestée est la frontière. Un bioinformaticien qui gère un package R largement utilisé est-il un RSE ? Un physicien qui écrit du code de simulation pour ses propres articles est-il un RSE ?

Le « gestionnaire de données » d’un groupe de recherche qui écrit beaucoup de Python est-il un RSE ? Il n’existe pas d’organisme de délivrance de licences ni de certification universellement reconnue, l’appellation est donc appliquée de manière pragmatique. Dans la pratique, la caractéristique distinctive est l’orientation : les RSE traitent les logiciels comme un résultat de recherche de premier ordre et un artefact de longue durée, plutôt que comme un moyen jetable pour un seul article.

RSE vs rôles adjacents : une comparaison

Le moyen le plus rapide de comprendre la RSE est de voir où elle se situe par rapport aux rôles avec lesquels elle est souvent confondue. Le tableau ci-dessous est une heuristique, pas une taxonomie : de vraies personnes brouillent constamment ces lignes.

Connexes : — Cours interactifs Python et science des données que vous codez directement dans le navigateur.

DimensionsIngénieur logiciel de rechercheChercheur traditionnel (qui code)Support informatique / informatique de rechercheScientifique / Analyste de données
Production principaleLogiciel maintenable et réutilisablePublications et conclusionsInfrastructures et services de travailModèles, analyses, décisions
Durée de vie du codeDes années à des décennies ; versions versionnéesSouvent lié à un seul projet/articleDurée de vie du service ; souvent géré par le fournisseurSouvent lié à un projet
Compétences typiquesConception de logiciels, tests, CI/CD, HPC, science du domaineScience du domaine, méthodes, statistiquesAdministrateur systèmes, mise en réseau, planificateurs, sécuritéStatistiques, ML, données de domaine
Relation avec la question de rechercheLa co-définit et la façonneLe possèdeLe sert indirectementRépond souvent à une question posée
Mesure de réussiteAdoption, reproductibilité, citations de logiciels, durabilitéPublications, subventions, impactDisponibilité, satisfaction des utilisateurs, coûtPerspectives métier/recherche
Parcours de carrièreSouvent hybride ; parfois scientifique permanentCursus universitaire / postdoctoralÉchelle informatiqueIndustrie ou universitaire

L’idée clé : un RSE n’est pas « un chercheur qui est bon en code », ni « un informaticien qui aide avec Python ». Le rôle est défini par la possession du logiciel en tant que produit de recherche tout en restant ancré dans la science.

Ce que fait réellement un ingénieur logiciel de recherche

Les descriptions de poste varient énormément, mais le travail se regroupe en catégories reconnaissables. Une semaine réaliste pourrait en toucher quatre ou cinq.

1. Création et maintenance de logiciels de recherche

C’est le noyau. Cela comprend la conception d’API pour les codes de simulation, la refactorisation d’un script d’analyse monolithique dans une bibliothèque testée, l’empaquetage d’outils pour la distribution sur PyPI ou conda-forge et d’empêcher les dépendances de casser. Pour un groupe de dynamique moléculaire, cela peut impliquer de maintenir une boîte à outils d’analyse GROMACS ou LAMMPS, ou d’écrire un pipeline NumPy/HDF5 qui diffuse les données de trajectoire sans charger de téraoctets dans la RAM.

Coup de cœur des lecteurs : — Parcours de science des données basés sur des projets avec un terminal guidé et des ensembles de données réels.

2. Rendre la recherche reproductible

Les RSE sont souvent ceux qui introduisent « environment.yml », « pyproject.toml », des images de conteneurs (Docker, Singularity/Apptainer) et des gestionnaires de flux de travail (Snakemake, Nextflow, Common Workflow Language) dans un laboratoire. Le but est qu’un résultat puisse être régénéré sur une autre machine, par une autre personne, deux ans plus tard. C’est là que RSE recoupe fortement le mouvement pour la reproductibilité et les principes de données FAIR.

3. Performances et mise à l’échelle

Le code scientifique doit souvent s’exécuter plus rapidement ou à plus grande échelle. Les RSE profilent le code, vectorisent les opérations NumPy, parallélisent avec MPI ou OpenMP, portent les boucles critiques vers C/C++/Fortran ou utilisent Numba/Cython et ajustent les E/S — les choix de segmentation et de compression HDF5, par exemple, peuvent dominer le temps d’exécution dans l’analyse de trajectoire. Ils aident également les groupes à utiliser efficacement les clusters HPC et les GPU.

4. Conseil et formation

De nombreux RSE organisent des heures de bureau, des révisions de code et des ateliers (Software Carpentry, HPC Carpentry, formation spécifique à un domaine). Une grande partie de leur impact vient du fait d’apprendre aux chercheurs à écrire eux-mêmes un meilleur code, plutôt que de tout faire à leur place.

5. Subventions et contributions à la publication

Les RSE apparaissent de plus en plus comme co-auteurs et comme personnel nommé dans les demandes de subvention, car les bailleurs de fonds attendent désormais un plan de durabilité et de gestion des logiciels. La rédaction de ce plan, l’estimation des efforts et l’engagement dans la maintenance sont des activités RSE.

Où se situent les RSE sur le plan organisationnel

Il existe trois modèles courants, chacun comportant des compromis :

  • Groupe RSE centralisé (une équipe à l’échelle de l’université ou de l’institut). Avantages : expertise partagée, cheminement de carrière pour les RSE, capacité à gérer plusieurs projets. Inconvénients : peut être éloigné de toute question de recherche unique ; politique de rétrofacturation ou de priorisation.
  • Intégré dans un groupe de recherche ou un laboratoire. Avantages : contexte de domaine approfondi, itération rapide, relations solides. Inconvénients : isolement, pas de communauté RSE homologue, risque que le RSE devienne une ressource générale « réparer mon ordinateur ».
  • Hybride / matriciel. Un groupe central avec du personnel détaché sur les projets. De plus en plus courant ; nécessite une gestion hiérarchique claire et des accords de répartition du temps.

Le Royaume-Uni possède une communauté RSE particulièrement visible, avec une conférence RSE annuelle et des réseaux régionaux. Des communautés similaires existent en Allemagne (de-RSE), aux Pays-Bas, aux États-Unis et en Australie. La Society of Research Software Engineering (Society of RSE) a été créée au Royaume-Uni en tant qu’organisme professionnel.

Connexes : — Achetez des cours individuels de Python scientifique, souvent avec des remises importantes.

Comment le RSE est lié à la reproductibilité et à la science ouverte

La crise de reproductibilité en science informatique est en grande partie un problème logiciel. Les analyses dépendent de versions de bibliothèque spécifiques, d’étapes de prétraitement non documentées et de code qui n’a jamais été publié. Les pratiques RSE répondent directement à ce problème :

  • Le Contrôle de version et les versions taguées permettent de citer la version exacte du logiciel utilisé.
  • Tests détecte les bogues numériques silencieux qui produisent des résultats plausibles mais erronés.
  • L’intégration continue garantit que le code fonctionne toujours après les mises à jour des dépendances.
  • L’archivage du code dans Zenodo ou Software Heritage lui donne un DOI et un domicile permanent.
  • La Documentation permet aux autres (y compris vous-même) de la comprendre et de la réutiliser.

Les principes FAIR pour les logiciels de recherche, développés par la Research Data Alliance, étendent explicitement les lignes directrices sur les données FAIR aux logiciels. Les revues exigent de plus en plus de déclarations de disponibilité du code, et certaines nécessitent une révision du code dans le cadre de la publication.

Comment décider si vous avez besoin d’un RSE

Tous les groupes n’ont pas besoin d’un RSE dédié. Utilisez ces critères comme filtre approximatif :

Notre sélection : — Une bibliothèque technique approfondie de livres, de vidéos et de formations en informatique scientifique.

Vous en aurez probablement besoin si :

  • Le logiciel est au cœur de vos résultats de recherche et est utilisé par des personnes extérieures à votre groupe.
  • Vous conservez le code sur plusieurs subventions et années, et il ne cesse de se briser.
  • Vous reconstruisez à plusieurs reprises la même infrastructure (E/S, parallélisme, packaging) que d’autres ont déjà résolue.
  • Les évaluateurs, les collaborateurs ou les bailleurs de fonds posent des questions sur la durabilité des logiciels et vous n’avez pas de bonne réponse.
  • Votre groupe consacre beaucoup de temps à la maintenance logicielle qui est invisible dans les publications.

Vous n’en aurez peut-être pas (encore) besoin si :

  • Votre code est véritablement jetable : une analyse unique pour un seul chiffre.
  • Vos besoins sont satisfaits par des outils communautaires bien entretenus et vous écrivez uniquement des scripts de liaison (glue scripts).
  • Vous avez un membre du groupe qui aime vraiment cela, qui est bon dans ce domaine et qui a le temps.

Un juste milieu : embauchez un RSE à temps partiel, participez à un groupe central ou investissez dans la formation pour aider les chercheurs existants à adopter les meilleures pratiques. Le pire résultat serait d’embaucher un RSE et de l’utiliser ensuite comme support informatique ad hoc.

Parcours de carrière et comment devenir RSE

Les carrières en RSE sont vraiment diverses. Les points d’entrée comprennent :

  • Docteur dans un domaine informatique (physique, chimie, bioinformatique) qui s’est orienté vers le côté logiciel.
  • Ingénieur logiciel issu de l’industrie qui souhaite travailler sur des problèmes scientifiques.
  • Personnels de recherche qui formalisent leur rôle logiciel.

Compétences les plus importantes, en gros par ordre de fréquence :

  1. Connaissance de Python (et souvent de C++, Fortran ou Julia pour le code critique en termes de performances).
  2. Contrôle de version avec Git, y compris les workflows de branchement et de révision de code.
  3. Frameworks de test (Pytest, GoogleTest) et CI (GitHub Actions, GitLab CI).
  4. Emballage et gestion environnementale (Conda, Pip, Container).
  5. HPC et programmation parallèle (MPI, OpenMP, CUDA, planificateurs de travaux comme Slurm).
  6. Compétence scientifique dans le domaine : suffisante pour parler avec les chercheurs en tant que collègues.
  7. Compétences en communication et en enseignement.

L’évolution de carrière est moins standardisée que dans le monde universitaire ou industriel. Certains RSE deviennent des scientifiques permanents ; certains accèdent à la direction de l’informatique de recherche ; certains retournent à la faculté ; certains vont à l’industrie. L’absence d’échelle claire est un problème réel et fréquemment discuté dans la communauté, et l’une des raisons pour lesquelles les organismes professionnels et les groupes centraux sont importants.

Idées fausses courantes

  • “RSE n’est qu’un support informatique pour les scientifiques.” Non : les RSE façonnent les questions de recherche et possèdent leurs propres produits logiciels. Le support informatique maintient l’infrastructure.
  • “Tout bon programmeur peut faire du RSE.” Le contexte du domaine est extrêmement important. Un développeur Web brillant ne sait peut-être pas pourquoi un ordre de sommation à virgule flottante modifie un résultat.
  • “Les RSE écrivent uniquement du code.” Une grande partie du travail consiste en du conseil, de la formation et des discussions sur la conception.
  • “Le RSE est un tremplin vers un “vrai” travail universitaire.” Pour certains, c’est le cas ; pour beaucoup, il s’agit d’une carrière légitime et permanente.
  • “Vous avez besoin d’un diplôme en informatique.” La plupart des RSE proviennent de domaines scientifiques et non informatiques.

Points clés à retenir

  • Le génie logiciel de recherche applique des pratiques logicielles professionnelles au code de recherche, traitant le logiciel comme un résultat de recherche de premier ordre et de longue durée.
  • Un RSE est défini par la combinaison de compétences en génie logiciel, d’une participation active à la recherche et d’une expertise dans un domaine, et non par un titre de poste ou une certification spécifique.
  • Le RSE se distingue du support informatique, de la science des données et des « chercheurs qui codent » principalement par la propriété du logiciel en tant que produit et par sa durée de vie de plusieurs années.
  • Les activités principales comprennent la création et la maintenance du code, la reproductibilité, l’optimisation des performances, le conseil, la formation et la contribution aux subventions et aux publications.
  • Les RSE peuvent être centralisés, intégrés ou hybrides ; chaque modèle comporte de réels compromis en termes de contexte, de cheminement de carrière et de priorisation.
  • La décision de savoir si vous avez besoin d’un RSE dépend de la question de savoir si le logiciel est central, réutilisé et durable, et non pas uniquement de la taille du groupe.

Sources et lectures complémentaires

  • Génie logiciel de recherche — Wikipédia : Le génie logiciel de recherche est l’application de pratiques, méthodes et techniques de génie logiciel aux logiciels de recherche, c’est-à-dire aux logiciels conçus pour…
  • Génie logiciel — Wikipédia : Le génie logiciel est une branche de l’informatique et de l’ingénierie axée sur la conception, le développement, le test et la maintenance d’applications logicielles. Cela implique…

Questions fréquemment posées

Qu’est-ce que le génie logiciel de recherche en termes simples ?

L’ingénierie logicielle de recherche consiste à créer et à maintenir les logiciels sur lesquels s’appuient les scientifiques, en utilisant les mêmes normes professionnelles (tests, contrôle de version, documentation, maintenance) que celles utilisées par les équipes de logiciels commerciaux. Un ingénieur logiciel de recherche travaille à l’intersection du développement logiciel et d’un domaine scientifique, il comprend donc à la fois le code et la science qu’il sert. L’objectif est d’avoir un logiciel correct, réutilisable et qui fonctionne toujours des années plus tard.

En quoi un ingénieur logiciel de recherche est-il différent d’un ingénieur logiciel ?

Un développeur de logiciels traditionnel crée généralement des produits pour les utilisateurs ou les clients, et les exigences sont souvent déterminées par une équipe produit. Un développeur de logiciels de recherche travaille sur des logiciels dont le but est de générer ou de soutenir des connaissances scientifiques, dont les exigences sont souvent de nature exploratoire et dont le résultat « correct » peut être inconnu à l’avance. Les RSE nécessitent également généralement une connaissance réelle du domaine, suffisamment pour juger si un résultat numérique est physiquement plausible, et pas seulement si le code s’exécutera.

Ai-je besoin d’un doctorat pour devenir ingénieur logiciel de recherche ?

Non, mais la connaissance du domaine est essentielle et le doctorat est un moyen courant de l’acquérir. De nombreux RSE sont titulaires d’un doctorat en physique, chimie, bioinformatique ou dans des domaines connexes et se sont orientés vers le côté logiciel de leur travail. D’autres viennent de l’industrie du génie logiciel et apprennent le domaine sur le tas. Ce qui compte, c’est de pouvoir dialoguer avec les chercheurs en tant que pairs sur la science, et non sur les diplômes eux-mêmes.

Quels langages de programmation les ingénieurs logiciels de recherche utilisent-ils ?

Python domine, en particulier pour l’analyse, les scripts et le code de liaison, souvent aux côtés de NumPy, pandas et des E/S basées sur HDF5. Les composants critiques pour les performances sont fréquemment écrits en C++, Fortran ou C, Julia et Rust gagnant du terrain. R reste important dans les statistiques et la bioinformatique, et les langages de script shell, Make et de workflow comme Snakemake et Nextflow sont omniprésents. Le langage compte moins que les pratiques qui l’entourent.

Le génie logiciel de recherche est-il une bonne carrière ?

Pour les personnes qui aiment à la fois les sciences et les logiciels, cela peut être une excellente carrière avec une forte demande, des problèmes variés et un impact visible. La principale réserve est que les structures de carrière sont moins standardisées que dans le milieu universitaire ou dans l’industrie, de sorte que la progression dépend fortement de l’établissement et de l’existence ou non d’un groupe RSE central. De nombreux RSE trouvent le travail plus stable et mieux rémunéré que les postes postdoctoraux, bien que l’absence d’échelle universelle soit un problème reconnu.

Comment le génie logiciel de recherche soutient-il la reproductibilité ?

Les pratiques RSE rendent les résultats reproductibles en épinglant les versions logicielles exactes, en automatisant les builds et les tests, en documentant les dépendances et en archivant le code avec un DOI afin qu’il puisse être cité et récupéré. Sans ces pratiques, les analyses dépendent souvent d’étapes non documentées et de versions de bibliothèques spécifiques impossibles à reconstruire ultérieurement. Les RSE introduisent également des conteneurs et des gestionnaires de flux de travail qui capturent l’intégralité d’un environnement informatique, et pas seulement le code.

Lectures complémentaires et sources faisant autorité

  • L’article Wikipédia sur le génie logiciel de recherche fournit un aperçu général et l’historique du terme.
  • Le Software Sustainability Institute (software.ac.uk) publie largement sur les définitions, les carrières et les enquêtes communautaires des RSE.
  • La Society of Research Software Engineering (society-rse.org) est l’organisme professionnel britannique dans ce domaine.
  • Les principes FAIR pour les logiciels de recherche, de la Research Data Alliance, étendent les lignes directrices sur les données FAIR aux logiciels spécifiquement.
  • Le Journal of Open Source Software (joss.theoj.org) et le Journal of Open Research Software publient des logiciels de recherche évalués par des pairs.

Questions fréquentes

Qu’est-ce que le génie logiciel de recherche en termes simples ?

L'ingénierie logicielle de recherche consiste à créer et à maintenir les logiciels sur lesquels s'appuient les scientifiques, en utilisant les mêmes normes professionnelles (tests, contrôle de version, documentation, maintenance) que celles utilisées par les équipes de logiciels commerciaux. Un ingénieur logiciel de recherche travaille à l’intersection du développement logiciel et d’un domaine scientifique, il comprend donc à la fois le code et la science qu’il sert. L’objectif est d’avoir un logiciel correct, réutilisable et qui fonctionne toujours des années plus tard.

En quoi un ingénieur logiciel de recherche est-il différent d'un ingénieur logiciel ?

Un développeur de logiciels traditionnel crée généralement des produits pour les utilisateurs ou les clients, et les exigences sont souvent déterminées par une équipe produit. Un développeur de logiciels de recherche travaille sur des logiciels dont le but est de générer ou de soutenir des connaissances scientifiques, dont les exigences sont souvent de nature exploratoire et dont le résultat « correct » peut être inconnu à l'avance. Les RSE nécessitent également généralement une connaissance réelle du domaine, suffisamment pour juger si un résultat numérique est physiquement plausible, et pas seulement si le code s'exécutera.

Ai-je besoin d’un doctorat pour devenir ingénieur logiciel de recherche ?

Non, mais la connaissance du domaine est essentielle et le doctorat est un moyen courant de l'acquérir. De nombreux RSE sont titulaires d’un doctorat en physique, chimie, bioinformatique ou dans des domaines connexes et se sont orientés vers le côté logiciel de leur travail. D’autres viennent de l’industrie du génie logiciel et apprennent le domaine sur le tas. Ce qui compte, c'est de pouvoir dialoguer avec les chercheurs en tant que pairs sur la science, et non sur les diplômes eux-mêmes.

Quels langages de programmation les ingénieurs logiciels de recherche utilisent-ils ?

Python domine, en particulier pour l'analyse, les scripts et le code de collage, souvent aux côtés de NumPy, des pandas et des E/S basées sur HDF5. Les composants critiques pour les performances sont fréquemment écrits en C++, Fortran ou C, Julia et Rust gagnant du terrain. R reste important dans les statistiques et la bioinformatique, et les langages de script shell, Make et de workflow comme Snakemake et Nextflow sont omniprésents. La langue compte moins que les pratiques qui l’entourent.

Le génie logiciel de recherche est-il une bonne carrière ?

Pour les personnes qui aiment à la fois les sciences et les logiciels, cela peut être une excellente carrière avec une forte demande, des problèmes variés et un impact visible. La principale réserve est que les structures de carrière sont moins standardisées que dans le milieu universitaire ou dans l’industrie, de sorte que la progression dépend fortement de l’établissement et de l’existence ou non d’un groupe RSE central. De nombreux RSE trouvent le travail plus stable et mieux rémunéré que les postes postdoctoraux, bien que l'absence d'échelle universelle soit un problème reconnu.

Comment le génie logiciel de recherche soutient-il la reproductibilité ?

Les pratiques RSE rendent les résultats reproductibles en épinglant les versions logicielles exactes, en automatisant les builds et les tests, en documentant les dépendances et en archivant le code avec un DOI afin qu'il puisse être cité et récupéré. Sans ces pratiques, les analyses dépendent souvent d’étapes non documentées et de versions de bibliothèques spécifiques impossibles à reconstruire ultérieurement. Les RSE introduisent également des conteneurs et des gestionnaires de flux de travail qui capturent l'intégralité d'un environnement informatique, et pas seulement le code. Lectures complémentaires et sources faisant autorité - L'article Wikipédia sur le génie logiciel de recherche fournit un large aperçu et un historique du


L'étagère de référence pour les scientifiques en activité

Une bibliothèque technique approfondie de livres, de vidéos et de formations en informatique scientifique