# Reprise de code : la plateforme AWESOMME

L Billaud, F Cervenansky, T Diot

► To cite this version:

L Billaud, F Cervenansky, T Diot. Reprise de code : la plateforme AWESOMME. JCAD 2024, Journées Calcul Données : Rencontres scientifiques et techniques autour du calcul et des données., Nov 2024, Bordeaux, France. hal-05023304

HAL Id: hal-05023304

https://hal.science/hal-05023304v1

Submitted on 7 Apr 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# Reprise de code : la plateforme AWESOMME

L. Billaud, F. Cervenansky & T. Diot*

**1. Introduction.** La plateforme AWESOMME est une Application WEb pour la génération de maSse de dOnnées expertisées en iMageriE MEdicale[1]. Il s'agit d'une infrastructure basée sur trois composants open-sources, mise en place pour offrir une interface web sécurisée regroupant différentes étapes d'analyse d'images et de visualisation avancée dans un environnement clinique. Pour étendre les actions proposées et bénéficier des nouvelles fonctionnalités des différents composants, une étape importante de refactorisation de Girder (serveur calcul et authentification) et de migration de OHIF (interface principale) a été réalisée.

**2. Refactorisation de Girder.**

2.1. **REFACTORISATION.** Une part importante du *backend* a été refactoré afin d'optimiser la maintenabilité de la plateforme. Cette refactorisation a impacté les plugins en introduisant une séparation claire des routes, de leurs dépendences et du code commun entre les différents plugins en suivant le principe de responsabilité unique [2]. En conséquence, la lisibilité du code a été améliorée.

2.2. **INJECTION DE DÉPENDENCES.** Un second principe de développement qui a été appliqué est le principe d'inversion des dépendences [2]. L'utilisation d'une librairie d'injection de dépendence (en l'occurence *injector*) a simplifié l'écriture des classes en se chargeant de leurs dépendences et de leurs cycles de vie.

2.3. **TESTS UNITAIRES.** Après la refactorisation, le code des plugins se composait de beaucoup plus de classes, néanmoins l'application de l'inversion des dépendences a grandement facilité les tests du code. Pour le projet AWESOMME, la librairie de test **pytest** a été utilisée avec **unittest.mock** pour tester ces classes et un *pipeline* de tests automatiques sur **Gitlab** a été mis en place. Plus de 80% du code du *backend* a ainsi pu être testé. Les tests unitaires ont été suppléés par des tests d'intégration afin de bien prendre en compte l'interaction de plusieurs classes.

**3. Migration de OHIF.** La version de OHIF utilisée sur les instances déployées en production, était la version v3.3.0. Cette version n'est plus maintenue et de nombreuses fonctionnalités et correctifs ont été ajoutés depuis. Pour en bénéficier, il a été décidé de migrer OHIF vers la dernière version stable à ce moment: la version v3.7.0. Une réorganisation du code a été effectuée pour séparer clairement le code source et le code développé en interne. Ce processus a permis d'identifier des points d'action afin de limiter le code customisé et de faciliter les migrations futures. La migration vers la nouvelle version bénéficie de ce travail avec un processus accéléré par cette réorganisation.

**4. Conteneurisation.** Des images **Docker** ont été créées pour chaque composant de la plateforme AWESOMME afin de gérer indépendemment leurs dépendences et les versions de ces dépendences. **Docker Compose** a été utilisé pour simplifier la configuration des conteneurs et des volumes. Des images supplémentaires ont été créées pour travailler dans un environnement de développement qui ne nécessite pas d'être re-compilé ou redémarré à chaque modification du code.

<footnote>* Centre de Recherche en Acquisition et Traitement de l'Image pour la Santé, Univ Lyon, INSA -Lyon, Université Claude Bernard Lyon 1, UJM-Saint Etienne, CNRS, Inserm, CREATIS UMR 5220, U1294, F-69000, LYON, France</footnote>
La prise en main, le déploiement et le développement de la plateforme AWESOMME sont ainsi facilités.

<figure><img src="image_2.png" /><figcaption>Figure 1. Figure illustrant l'architecture définie dans un environment Docker Compose et les interactions entre les services. Les processus dits lourds, tels que la segmentation automatique, sont externalisés dans des images Docker séparées qui sont appelées depuis -et qui partagent un volume avec- le service Girder.</figcaption></figure>

**5. Conclusion.** La refactorisation, l'ajout de l'injection de dépendences et des tests unitaires ont permis d'assurer la maintenabilité des plugins Girder. Elles étaient particulièrement adaptées au projet AWESOMME renforçant sa compréhension, sa robustesse et simplifiant son évolution. La migration du composant OHIF vers une version plus récente a été motivée par les nouvelles fonctionnalités proposées. Cependant, ce processus peut être complexe car parfois sans retro-compatibilité. Enfin, la conteneurisation s'appliquait parfaitement au projet AWESOMME, notamment de part sa nature composite, et a simplifié l'utilisation de la plateforme.

**References**

[1] T. Diot, F. Cervenansky, B. Leporq, H. Ratiney, and O. Beuf. AWESOMME : Application WEb pour la génération de maSse de dOnnées expertisées en iMageriE MEdicale. In *JCAD 2022, Journées Calcul Données : Rencontres scientifiques et techniques autour du calcul et des données*., Dijon, France, October 2022.

[2] R.C. Martin. *Agile Software Development: Principles, Patterns, and Practices*. Alan Apt series. Pearson Education, 2003.