Critères de l'offre
Métiers :
- Développeur Software (H/F)
Expérience min :
- débutant à 1 an
Secteur :
- Informatique, Internet, Télécoms, Conseil en informatique
Diplômes :
- Diplôme de grande école d'ingénieur
- + 2 diplômes
Compétences :
- Java
- VBS
- TypeScript
- Python
- C#
Lieux :
- Limonest (69)
Conditions :
- Stage
L'entreprise : BERGER LEVRAULT
Berger-Levrault, éditeur de logiciels international, accompagne les professionnels privés et publics à répondre aux exigences croissantes de performance et de transformation de leurs métiers. Ancrés dans 5 siècles d'expertise du service public, inspirés par notre ADN d'inventeur, nous avançons dans l'intérêt général, partout où nous sommes présents.
Le Groupe étend son expertise métier dans les domaines des ressources humaines, de la gestion financière, de la gestion de la maintenance des infrastructures, ainsi que des solutions spécifiques destinées aux citoyens, aux établissements scolaires et de santé. Berger-Levrault c'est 2000 collaborateurs réunis autour de plusieurs marques (CARL Software, Aytos, Absis, Segilog, Sigems, Infosilem, Neolink, Expertiz Santé, Medialis, Escort Informatique) à l'international (France, Canada, Espagne, Maroc, Italie, Belgique, Suisse) avec plus de 51 000 clients et 25% de son CA investi dans la R&D.
Description du poste
Sujet : Polyglot software analysis
Contexte :
Berger-Levrault développe de nombreuses applications, certaines utilisant plusieurs langages de programmation et d'autres reposant sur des microservices, ce qui entraîne la présence de plusieurs artefacts qui communiquent entre eux.
Au sein de la DRIT (Direction de la Recherche et de l'Innovation Technologique), l'équipe LabGL utilise principalement Moose pour analyser les logiciels de BL.
Cependant, Moose est conçu pour analyser des logiciels monolithiques : lorsqu'un logiciel contient plusieurs langages, il génère un modèle distinct pour chacun d'eux, sans les relier, il ne détecte pas les microservices appartenant à un même logiciel, même si ceux-ci en font effectivement partie.
L'analyse polyglotte est encore faiblement appliquée en général, et pour Moose elle est peu introduite. Pour avancer, il est nécessaire de commencer par la génération de métamodèles permettant de représenter divers langages (Python, TypeScript, C#, VB, Go, R…).
Une solution existe pour générer une première version des métamodèles FAST, capables de représenter des AST (Abstract Syntax Tree) du code source, grâce à Tree-Sitter, qui sait parser plusieurs langages et produire des modèles.
Cependant, la génération des métamodèles FAST avec Tree-Sitter reste incomplète, notamment parce qu'il manque deux compléments très importants :les tests et les propriétés
Objectif :
Le stage aura pour objectif d'automatiser la génération des tests et des propriétés pour chaque métamodèle FAST généré.
Pour cela, le/la stagiaire devra s'appuyer sur les dépôts Tree-Sitter de chaque langage, qui fournissent de nombreux exemples couvrant la majorité des nœuds des métamodèles.
L'utilisation de l'intelligence artificielle pourra être envisagée pour analyser ces exemples et les associer automatiquement aux nœuds correspondants.
️ Missions :
Explorer Pharo et Moose (Famix, FAST, MoTion actuellement) étant débutant. (1 semaine)
Ajouter 5 propriétés pour FASTTypeScript avec 5 tests manuellement pour pouvoir comprendre comment ça fonctionne (1semaine)
Faire des recherches pour comprendre:
- Comment on peut automatiser la génération des tests en utilisant l'IA ou autre outil
- Est-ce que l'IA peut comprendre un exemple, ça donne quoi …
Générer des métamodèles FAST: on souhaite commencer par Python, et on peut continuer par C#, VB …
Travailler sur la génération des propriétés des nodes (comme par exemple pour FASTTypeScriptClass on a des proriétés comme 'body' et 'name').
Date de début : 01/02/2026
Description du profil
- Vous êtes étudiant(e) en dernière année d'école d'ingénieur ou équivalent universitaire (BAC+5), ayant une orientation en Génie Logiciel et vous recherchez un stage de 6 mois débutant au printemps 2026.
- Vous possédez un langage orienté objet (Java, C#, Pharo, …).
- Vous utilisez un environnement Git.
- Vous avez une capacité rédactionnelle et de synthèse.
- Vous faites preuve d'autonomie.

