Contexte scientifique
VIP (Virtual Imaging Platform) est une plateforme de calcul dédiée à l'imagerie médicale. Elle permet à des chercheurs et d’autres utilisateurs de simuler et des traiter des données d’imagerie médicale sur des infrastructures de calcul distantes.
VIP est utilisable de différentes façons :
- par un portail web (https://vip.creatis.insa-lyon.fr)
- par une API REST
- par un client python se basant sur cette API REST (package : https://pypi.org/project/vip-client et code source : https://github.com/virtual-imaging-platform/VIP-python-client )
Ce client python est fonctionnel et est déjà utilisé pour interagir avec la plateforme, mais son architecture et sa couverture de tests peuvent être améliorées. Le stage a pour objectif de renforcer la qualité et la fiabilité du logiciel.
Problématique
La priorité dans le cadre de l’évolution d’un logiciel existant est de maintenir le même comportement sans ajouter de régression. Cela nécessite une base de tests automatisés aussi grande et couvrante que possible. Une base de tests existe déjà mais elle est imparfaite. Le premier travail consistera donc à comprendre les fonctionnalités du client python et à finaliser cette base de tests. L’intégration de ces tests dans une CI (github actions) sera également effectuée.
Ensuite, une fois que ce sera fait, il sera possible de concevoir et d’implémenter des refactorings dans le code du client python avec la sécurité des tests qui détecteront toute régression ou changement de comportement. Pour cela, une analyse approfondie de l'architecture et du code permettra d'identifier les points pouvant être améliorés : complexité, responsabilités des différentes classes, gestion des erreurs, interfaces avec l'API, dépendances, typage, maintenabilité, etc.
Intérêt du stage
Ce stage permettra au stagiaire de travailler sur un véritable logiciel open source utilisé dans le contexte de la recherche en imagerie médicale, tout en abordant des problématiques concrètes de génie logiciel. Il permettra notamment d'acquérir une expérience sur une problématique fréquente en entreprise comme dans les projets scientifiques : faire évoluer et moderniser un logiciel existant sans casser son comportement.
Le stagiaire interviendra sur l'ensemble de la démarche, depuis l'analyse d'un logiciel existant jusqu'à la conception et l'implémentation de ses évolutions. Les contributions réalisées seront publiées directement dans le projet open source VIP-python-client.
Objectifs
Le stage sera organisé autour de deux axes principaux.
1. Fiabiliser et consolider les tests
Le stagiaire devra notamment :
- prendre en main le fonctionnement du client Python et de l'API VIP ;
- étudier les tests déjà présents ;
- identifier les fonctionnalités insuffisamment couvertes ;
- définir une stratégie de tests ;
- développer de nouveaux tests unitaires ;
- développer des tests d'intégration lorsque cela est pertinent ;
- simuler les interactions avec les services distants ;
- tester les cas nominaux mais également les erreurs et cas limites ;
- intégrer et/ou améliorer l'exécution automatique des tests dans la CI ;
- mettre en place des indicateurs permettant de suivre la couverture et la qualité des tests.
Cette première phase devra aboutir à une suite de tests fiable permettant de détecter
efficacement les régressions.
2. Analyser et moderniser le code
Une fois la couverture de tests suffisamment solide, le stagiaire réalisera une analyse de la qualité et de l'architecture du code. Il pourra notamment étudier :
- la séparation des responsabilités ;
- la complexité du code ;
- la gestion des erreurs et des exceptions ;
- les interfaces entre les différentes couches du client ;
- la gestion des communications HTTP/REST ;
- les dépendances externes ;
- la documentation ;
- les possibilités de simplification ou de factorisation ;
- les pratiques modernes de développement Python.
À partir de cette analyse, le stagiaire proposera des améliorations et les mettra en
œuvre.
Compétences requises
Bonnes compétences en ingénierie logicielle (Git, Github/Gitlab)
- Bonnes compétences en programmation Python
- Compétences en API REST
- intérêt pour la qualité logicielle et les tests automatisés
- intérêt pour les problématiques d'architecture logicielle et de refactorisation ;
Environnement de travail
Le/La stagiaire sera accueilli au laboratoire CREATIS ( https://www.creatis.insa-lyon.fr ) sous la supervision d’Axel Bonnet. Il/Elle interagira avec les autres ingénieurs VIP et les membres du laboratoire CREATIS. Il travaillera dans un cadre bienveillant ayant pour objectif de supporter au mieux la recherche scientifique.
Durée
3 à 6 mois