Expérience

Apprenti Développeur Systèmes Embarqués

Validation logicielle embarquée, tests de calculateurs automobiles, tests unitaires en C et automatisation de la traçabilité.

Terminé août 2023 - août 2025 Vélizy-Villacoublay, France août 2023 — août 2025 Apprenti Développeur / Ingénieur Systèmes Embarqués ENPS — Embedded Networks Products & Services
C Python Git
LGM Vélizy-Villacoublay, France

Le poste

Alternance en environnement automobile, sur le logiciel embarqué, les protocoles de communication et la validation de calculateurs. Le produit central : OCEAN, une pile de protocoles embarquée et configurable qui permet aux calculateurs (ECU) de communiquer sur différents réseaux.

LGM Ingénierie (groupe LGM) conçoit de l'électronique et du logiciel embarqués : bancs de test, intégration, validation, qualification — pour l'aéronautique, la défense, l'énergie, les transports et l'automobile. J'étais dans la Business Line ENPS (Embedded Networks Products & Services), sur les réseaux embarqués et la validation de calculateurs.

Le défi technique

OCEAN permet la communication entre calculateurs automobiles via plusieurs protocoles (CAN, CAN FD, LIN, LVDS, J1939). Il gère la transmission, la réception, le diagnostic et les échanges réseau, à travers des drivers, des couches de transport, des services de diagnostic et une couche d'abstraction de l'OS. Mon travail visait la conformité entre spécifications, diagrammes et comportement réel du code.

Ce que j'ai fait

  • Validation logicielle embarquée sur OCEAN.
  • Développement et exécution de tests unitaires en C avec IBM Rational Test RealTime.
  • Analyse de diagrammes fonctionnels, conditions logiques, boucles et scénarios de test.
  • Validation de calculateurs automobiles et tests physiques CAN/LIN.
  • Tests sur cible, analyse des résultats et qualification logicielle embarquée.
  • Analyse d’incidents, rédaction de rapports de validation et rapports qualité.
  • Automatisation de rapports et de la traçabilité avec Python/Django.

Réalisations concrètes

  • Mise en œuvre de tests avec stubs, test harness, test suites et génération de rapports.
  • Utilisation de CANoe et d’instruments de mesure pour analyser des communications et comportements calculateurs.
  • Contribution à l’automatisation de rapports et au suivi des campagnes de validation.
  • Amélioration de procédures de test, de documentation et de traçabilité.

Méthodes de travail

Travail dans le cycle en V avec vérification des fonctions par rapport aux spécifications et diagrammes.Analyse des chemins d’exécution, conditions simples ou combinées, boucles et scénarios de test.Recherche de couverture MC/DC pour les fonctions critiques.Tests reproductibles, documentés et exploitables par les équipes de développement, validation, qualité et méthodes.Remontée structurée des anomalies et écarts de documentation.Amélioration continue des procédures de test, de reporting et de traçabilité.
Progression Deux années d'alternance, dans le détail
1

Première année — Vérification logicielle et tests unitaires OCEAN

Montée en compétence sur OCEAN, le cycle en V et la validation logicielle. J'ai réalisé plus de 200 tests unitaires sur les fonctions d'OCEAN avec IBM Rational Test RealTime, en vérifiant la conformité aux diagrammes fonctionnels et aux spécifications — certains modules simples, d'autres demandant plusieurs jours d'analyse (complexité, dépendances, incohérences diagrammes/code).

Détail de l'année

Missions principales

  • Découvrir le laboratoire de validation, les calculateurs automobiles et les couches basses.
  • Comprendre le rôle des ECU et la communication entre calculateurs.
  • Analyser des diagrammes fonctionnels et identifier les chemins d’exécution.
  • Créer des cas de test unitaires avec IBM Rational Test RealTime.
  • Mettre en place les stubs, test harness, test suites et ressources de test.
  • Analyser les résultats et générer des rapports exploitables.
  • Remonter les incohérences entre diagrammes et code via l’outil interne basé sur Redmine.

Réalisations concrètes

  • Mise en place d’environnements de test structurés avec Test_Resources, External_Includes, Report, Stubs, Test_Cases, Test_Harness, Test_Suites, Unit_Under_Test et Unit_Dependencies.
  • Application d’une méthodologie de couverture MC/DC pour vérifier l’influence indépendante des conditions logiques.
  • Création de variables locales et initialisation correcte de pointeurs pour résoudre des erreurs de gestion mémoire dans les tests.
  • Identification et documentation d’écarts entre diagrammes fonctionnels et comportement réel du code.

Outils utilisés

Compétences développées

2

Deuxième année — Validation calculateurs, tests sur cible et automatisation

Élargissement vers une approche système : validation de calculateurs et tests sur cible en C, analyse des communications CAN/LIN avec CANoe, oscilloscope, multimètre et bancs de test. J'ai aussi contribué à l'analyse d'incidents, aux rapports qualité, à l'amélioration des procédures et au développement d'outils Python/Django pour automatiser les rapports et la traçabilité.

Détail de l'année

Missions principales

  • Participer à la validation de calculateurs automobiles.
  • Réaliser des tests physiques sur bus CAN et LIN.
  • Observer et analyser les communications avec CANoe.
  • Utiliser oscilloscopes, multimètres et bancs de test.
  • Développer et exécuter des tests unitaires et des tests sur cible en C.
  • Analyser les écarts et incidents détectés pendant les campagnes de test.
  • Automatiser des rapports de validation et améliorer la traçabilité avec Python/Django.
  • Contribuer à la documentation, aux procédures de test et à l’amélioration continue.

Réalisations concrètes

  • Participation à la validation de calculateurs automobiles selon les spécifications.
  • Analyse de communications CAN/LIN et de trames avec CANoe.
  • Exécution de tests sur cible et génération de rapports de validation.
  • Contribution à des rapports qualité et à l’analyse d’incidents.
  • Développement d’outils internes Python/Django pour réduire les tâches répétitives et améliorer le reporting technique.
  • Amélioration de la lisibilité des résultats et de la traçabilité des essais.

Outils utilisés

Compétences développées

Difficultés & résolution 2 obstacles rencontrés et levés
Erreurs liées à la gestion mémoire

Problème : certaines erreurs apparaissaient lorsque des pointeurs ou structures n’étaient pas correctement initialisés dans les cas de test.

Cause : certains paramètres de fonctions étaient des pointeurs initialisés à NULL ou sans zone mémoire valide.

Solution : création de variables locales adaptées, puis initialisation des pointeurs avec l’adresse de ces variables dans les blocs de test.

Compétences : C, pointeurs, gestion mémoire, débogage, tests unitaires, analyse d’erreurs.

Incohérences entre diagrammes et code

Problème : certains diagrammes fonctionnels ne correspondaient plus au comportement réel du code.

Cause : le code avait parfois évolué sans mise à jour du diagramme associé.

Solution : création d’un ticket sur l’outil de suivi interne basé sur Redmine, explication de l’écart, modification du diagramme dans Neness, puis envoi des corrections sur GitLab avec Fork.

Compétences : analyse d’anomalies, Redmine, Neness, GitLab, Fork, documentation technique, communication technique, vérification fonctionnelle.

Résultats & apports

Une progression de la découverte d'OCEAN et des tests unitaires vers la validation de calculateurs, les tests sur cible, l'analyse d'incidents et l'automatisation — dans un cadre industriel automobile où qualité, traçabilité et rigueur documentaire sont essentielles.

  • Réalisation de plus de 200 tests unitaires sur différents modules d’OCEAN.
  • Montée en compétence sur IBM Rational Test RealTime.
  • Compréhension des protocoles CAN/LIN et du fonctionnement des calculateurs automobiles.
  • Participation à la validation de calculateurs.
  • Utilisation de CANoe et d’instruments de mesure.
  • Contribution à des rapports de validation et qualité.
  • Automatisation de rapports avec Python/Django.
  • Amélioration de la traçabilité et des procédures de test.

Cette expérience m’a fait passer d’une approche principalement logicielle et unitaire à une vision plus complète de la validation automobile, intégrant logiciel embarqué, cible matérielle, communication réseau, qualité, traçabilité et outillage interne.

  • Compréhension du cycle en V.
  • Rigueur dans la validation logicielle.
  • Montée en compétence en logiciel embarqué automobile.
  • Progression en analyse de code C.
  • Meilleure capacité à diagnostiquer des anomalies.
  • Amélioration de la communication technique.
  • Capacité à travailler avec des équipes R&D, qualité, méthodes et validation.