Logiciel libre et développement logiciel
Vue d'ensemble
Le logiciel occupe une place importante dans ma pratique d'ingénieur.
J'utilise Python à la fois comme environnement de calcul scientifique et comme langage d'automatisation d'ingénierie pour la modélisation, la validation, l'analyse des exigences, le traitement de données, les tests et la documentation technique.
Je privilégie le logiciel libre, les formats standards, les chaînes de travail reproductibles et les outils pouvant être inspectés et maintenus indépendamment de plateformes propriétaires.
Python scientifique
Ma pile habituelle de calcul scientifique comprend :
- Python ;
- NumPy ;
- SciPy ;
- pandas ;
- scikit-learn ;
- statsmodels ;
- xarray ;
- Matplotlib ;
- SymPy ;
- PyTorch.
Les usages typiques comprennent la modélisation numérique, l'analyse de données, le traitement du signal, l'estimation d'état, l'automatisation d'ingénierie et la validation de modèles.
Génie logiciel
J'utilise des pratiques de génie logiciel courantes dans les projets Python de production :
- gestion de versions avec Git ;
- tests automatisés avec pytest ;
- analyse statique et linting ;
- vérification des types ;
- intégration continue ;
- packaging et gestion des dépendances ;
- environnements reproductibles ;
- revue de code ;
- contrôles qualité automatisés.
Mon outillage actuel comprend Git, pytest, Ruff, mypy, uv, Bash, GNU/Linux, Emacs, Org mode et LaTeX.
Logiciels d'ingénierie
Mon travail d'ingénierie a également impliqué :
- IBM DOORS ;
- MATLAB et Simulink ;
- LabVIEW ;
- TestStand ;
- ControlBuild ;
- LTspice.
Les interfaces et protocoles de communication rencontrés lors des activités de validation et d'essais comprennent Ethernet, CAN, CANopen et ARINC 429.
Automatisation d'ingénierie
Une part récurrente de mon travail consiste à remplacer des traitements manuels répétitifs ou fragiles par des logiciels pouvant être revus.
Exemples :
- comparaison d'exigences réglementaires avec des exigences projet stockées dans IBM DOORS ;
- outils Python pour la validation ferroviaire ;
- développement de la bibliothèque d'essais PyMamut ;
- traitement et analyse automatisés de données d'essais ;
- tests de modèles numériques et contrôles de non-régression ;
- génération de sorties techniques structurées à partir de données lisibles par machine.
L'objectif n'est pas l'automatisation pour elle-même, mais la réduction du travail manuel évitable tout en conservant la traçabilité et le jugement d'ingénierie.
Travaux open source
Je maintiens et contribue à des projets logiciels liés au calcul scientifique, à l'ingénierie, à l'accès aux données, aux outils Linux et aux applications terminal.
Domaines sélectionnés :
- Python scientifique ;
- modélisation de piles à combustible PEM ;
- outils pour les données publiques ;
- configuration Linux et Emacs ;
- interfaces utilisateur en terminal ;
- améliorations de tests et de CI dans des projets existants.
Mes dépôts publics sont disponibles sur GitHub.
Environnement de développement
Mon environnement privilégié repose sur des outils ouverts :
- Debian GNU/Linux ;
- Emacs ;
- Org mode ;
- Git ;
- Python ;
- Bash ;
- utilitaires Unix standards.
Cet environnement sert aussi bien au développement logiciel qu'à la rédaction technique, à la documentation, à la publication et aux chaînes de recherche reproductibles.
Principes
Je préfère les logiciels :
- compréhensibles ;
- testables ;
- documentés ;
- versionnés ;
- reproductibles ;
- fondés sur des standards ouverts lorsque c'est possible ;
- maintenables après la disparition du contexte initial de développement.
Ces principes s'appliquent autant aux scripts d'ingénierie et aux modèles scientifiques qu'aux logiciels généralistes.