Activez les alertes d’offres d’emploi par e-mail !
Une entreprise innovante en technologie cherche un(e) stagiaire pour travailler sur l'application Stimulus. Le candidat idéal prépare un diplôme BAC+5 en Informatique et maîtrise le langage OCaml. Vous serez impliqué dans le développement de nouvelles solutions logicielles et travaillerez dans un environnement collaboratif et international. Ce stage offre l'opportunité d'apprendre auprès d'une équipe d'experts, dans un cadre dynamique et inclusif.
Au sein de l'organisation R&D du logiciel CATIA, vous travaillez dans l'équipe en charge du développement de l'application Stimulus.
Stimulus [1, 2] est une application de mise au point des exigences temps-réel des systèmes embarqués (automobile, aéronautique, ferroviaire, énergie, etc) qui permet de formaliser les exigences textuelles d'un système, puis de détecter, par la simulation, les exigences incorrectes, manquantes ou contradictoires.
Que veut dire simuler des exigences ? Les exigences formalisées dans Stimulus sont vues comme des contraintes sur des signaux (booléens, numériques, etc..), qui sont résolues à chaque pas d'exécution pour extraire aléatoirement une solution possible parmi l'ensemble des solutions. Une fois une valeur obtenue pour l'ensemble des signaux, l'exécution se poursuit en faisant avancer le temps. Simuler un modèle d'exigences revient ainsi à exhiber une trace d'exécution choisie aléatoirement mais compatible avec les exigences.
Le solveur de contraintes actuellement mis en œuvre dans Stimulus utilise une combinaison de BDDs (Binary Decision Diagrams) et de polyèdres convexes, manipulés à l'aide de l'algorithme de Chernikova. La complexité théorique de la résolution des contraintes considérées dans Stimulus est NP-complet ou exponentielle en le nombre de variable, dans le pire des cas. La complexité en pratique sur les exemples concrets est heureusement beaucoup plus favorable. Néanmoins, notamment dans le cas des polyèdres, le pire des cas est facile à produire...
Objectif du stage : expérimenter d'autres solveurs de contraintes
L'objectif principal du stage est donc de remplacer la manipulation de polyèdres convexes fondée sur l'algorithme de Chernikova par un algorithme de programmation linéaire de type simplexe, implanté dans de nombreuses librairies OpenSource, pour pouvoir comparer les performances respectives des deux approches dans le cadre de Stimulus.
Si le temps le permet, vous aborderez l'étape suivante consistant à expérimenter l'usage d'un solveur « SMT » (Sat Modulo Theory) comme AltErgo, qui remplacerait à la fois les BDDs et les polyèdres convexes. Le défi est ici d'introduire de l'aléa dans le tirage des solutions fait par un tel solveur.
Etudiant(e) préparant un diplôme de niveau BAC+5, Ecole d'Ingénieur ou Master Universitaire, vous vous spécialisez en Informatique et recherchez un stage de fin d'études à compter de janvier 2026.
Vous êtes familier avec le langage OCaml.
Des connaissances en analyse de programme et en méthodes formelles seront appréciées.
On attend de vous de la curiosité, de la rigueur et une certaine autonomie.
Vous serez amené(e), au cours de votre mission, à collaborer avec l'ensemble des membres de l'équipe.
Dassault Systèmes, avant-gardiste en matière de technologie et d'innovation durable, s'efforce de créer des équipes toujours plus inclusives et diverses à travers le monde. Nous avons la forte conviction que nos employés sont notre atout numéro 1 et nous voulons que tous, se sentent libres d'être pleinement qui ils sont vraiment. Notre objectif est qu'ils ressentent fierté et sentiment d'appartenance. En tant qu'entreprise à la pointe du changement, il nous incombe de favoriser l'inclusion de tous et participer à création du monde de demain.