Qu'est-ce qu'une méthode Agile de développement logiciel ?
Depuis plusieurs années, les méthodes Agile de développement logiciel se généralisent dans tous les secteurs d'activité.
De plus, le terme "Agile" s'est connoté positivement à tel point qu'il se voit employé dans des publicités télévisées et des présentations d'entreprise sans rapport avec le génie logiciel.
Dans ce contexte, il peut être difficile de savoir précisément ce que sont les méthodes Agile de développement logiciel.
Traitons ce sujet à l'occasion de cet article.

Origine des méthodes Agile de développement logiciel
Les méthodes Agile de développement logiciel reposent sur des approches de génie logiciel préexistantes telles que Scrum, eXtreme Programming (XP) ou encore Feature-Driven Development (FDD) et se sont répandues suite au manifeste Agile de 2001.
Manifeste pour le développement Agile de logiciels
Nous découvrons comment mieux développer des logiciels par la pratique et en aidant les autres à le faire.
Ces expériences nous ont amenés à valoriser :
- les individus et leurs interactions plus que les processus et les outils
- des logiciels opérationnels plus qu'une documentation exhaustive
- la collaboration avec les clients plus que la négociation contractuelle
- l'adaptation au changement plus que le suivi d'un plan
Nous reconnaissons la valeur des seconds éléments, mais privilégions les premiers.
Source : https://agilemanifesto.org/iso/fr/manifesto.html
Pour compléter ce manifeste, les auteurs ont précisé douze principes sous-jacents au développement Agile de logiciel.
Principes sous-jacents au Manifeste pour le développement Agile de logiciels
Nous suivons ces principes :
Source : https://agilemanifesto.org/iso/fr/principles.html
- Notre plus haute priorité est de satisfaire le client en livrant rapidement et régulièrement des fonctionnalités à grande valeur ajoutée.
- Accueillez positivement les changements de besoins, même tard dans le projet. Les processus Agiles exploitent le changement pour donner un avantage compétitif au client.
- Livrez fréquemment un logiciel opérationnel avec des cycles de quelques semaines à quelques mois et une préférence pour les plus courts.
- Les utilisateurs ou leurs représentants et les développeurs doivent travailler ensemble quotidiennement tout au long du projet.
- Réalisez les projets avec des personnes motivées. Fournissez-leur l'environnement et le soutien dont ils ont besoin et faites-leur confiance pour atteindre les objectifs fixés.
- La méthode la plus simple et la plus efficace pour transmettre de l'information à l'équipe de développement et à l'intérieur de celle-ci est le dialogue en face à face.
- Un logiciel opérationnel est la principale mesure d'avancement.
- Les processus Agiles encouragent un rythme de développement soutenable. Ensemble, les commanditaires, les développeurs et les utilisateurs devraient être capables de maintenir indéfiniment un rythme constant.
- Une attention continue à l'excellence technique et à une bonne conception renforce l'Agilité.
- La simplicité – c'est-à-dire l'art de minimiser la quantité de travail inutile – est essentielle.
- Les meilleures architectures, spécifications et conceptions émergent d'équipes autoorganisées.
- À intervalles réguliers, l'équipe réfléchit aux moyens de devenir plus efficace, puis règle et modifie son comportement en conséquence.
Sur cette base, les méthodes de développement logiciel conformes à ce manifeste et à ses principes sous-jacents sont dénommées "méthodes Agile de développement logiciel".
Du point de vue du produit, les méthodes de développement Agile de logiciel sont itératives : elles préconisent des livraisons précoces du logiciel suivies d'améliorations et d'ajouts de fonctionnalités dans les livraisons suivantes.
Du point de vue de l'ingénierie du logiciel, les méthodes de développement Agile passent par une organisation en petites équipes autonomes qui se réunissent avec des représentants métier tout au long du cycle de vie du logiciel.
Enfin, il est important de noter que les méthodes de développement Agile n'autorisent pas la livraison de logiciel "buggy" dont les dysfonctionnements seraient corrigés dans des versions à venir.
Il s'agit de livrer des versions parfaitement fiables du logiciel mais qui n'assurent pas toutes les fonctionnalités prévues avant la dernière livraison.
Finalité des méthodes Agile de développement logiciel
La finalité première des méthodes Agile de développement logiciel est la satisfaction du client (cad l'utilisateur du logiciel) dans le cadre de projets logiciels de grande envergure.
Dans le but d'atteindre cet objectif, les méthodes Agile de développement logiciel sont conçues pour
- assurer une réactivité face aux demandes des utilisateurs et
- fournir "rapidement" un résultat visible d'ingénierie du logiciel.
De manière sous-jacente, il s'agit de pallier aux limites d'un cycle de développement logiciel en V pour les gros projets de génie logiciel.
1. Un résultat d'ingénierie du logiciel visible "rapidement"
L'approche adoptée par les méthodes Agile pour fournir "rapidement" un résultat visible d'ingénierie du logiciel est de livrer au client des versions incrémentales du logiciel. Autrement dit, des versions du logiciel qui assurent une partie des fonctionnalités prévues sur l'ensemble du projet.
Ainsi, le terme "rapidement" fait référence au fait que le client (l'utilisateur) aura un logiciel entre les mains dans un délai plus court qu'avec un cycle en V mais pas que les fonctionnalités du logiciel seront développées plus vite.
Pour illustrer ce propos, la figure ci-dessous représente le temps de mise à disposition des fonctionnalités d'un logiciel en fonction du fait que son développement soit fait suivant un cycle en V ou suivant une méthode Agile.

Cycle en V | |
Méthode Agile |
Source : Agilité et sécurité numériques, ANSSI
2. Une réactivité face aux demandes des utilisateurs
Les projets logiciels de grande envergure peuvent être destinés à des environnements d'utilisation dont les besoins sont divers et difficiles à déterminer avec certitude et / ou exhaustivité.
Afin de pallier à ces situations, les méthodes Agile de développement logiciel sont conçues pour accepter la modification des exigences alors que le projet logiciel est déjà en cours.
"Modifier les exigences alors que le projet est en cours" est à interpréter avec précaution.
Il ne s'agit pas de modifier les exigences applicables à une fonctionnalité qui est en cours de développement. En effet, une telle approche retarderait inexorablement la livraison des fonctionnalités du logiciel.
Il s'agit plutôt d'accepter des modifications d'exigences sur des fonctionnalités qui ne sont pas encore implémentées ou sur des fonctionnalités qui sont déjà livrées. Notamment pour pallier aux incertitudes et / ou aux manques qui précédaient leur livraison.
Intérêt des méthodes Agile de développement logiciel dans le domaine médical
Les méthodes de développement Agile de logiciel s'avèrent particulièrement intéressantes pour concevoir et développer des logiciels de grande envergure qui proposent de multiples fonctionnalités.
Ce type de produits logiciels tirent un avantage indiscutable de la mise en œuvre de méthodes Agile de développement logiciel
- pour assurer la satisfaction client en livrant "rapidement" un résultat d'ingénierie du logiciel et
- pour augmenter les parts potentielles de marché du logiciel en augmentant le nombre de fonctionnalités disponibles.
Dans le domaine médical, les systèmes d'information hospitaliers (SIH) sont typiquement dans ce cas de figure. En effet, ces logiciels proposent de multiples fonctionnalités dans des secteurs aussi divers que la facturation, la gestion de stocks, la prise de rendez-vous, le suivi de soins, la prescription de médicaments…
Un point est cependant à remarquer : l'emploi de méthodes Agile de développement logiciel n'exonère pas le fabricant du respect de la réglementation applicable à ses produits.
De ce fait, un effort doit être fourni pour adapter le système de management de la qualité (SMQ) à la mise en œuvre de ce type d'approches de génie logiciel.
Pour en savoir plus
Intégrer le génie logiciel dans votre système de management de la qualité (SMQ) est particulièrement important pour le développement d'un logiciel (de) dispositif médical.
Dans le cadre des logiciels (de) dispositifs médicaux, la gestion des risques du logiciel aide à prévenir d'éventuelles anomalies du logiciel.
Sites connexes
Autres articles
Intérêt des normes harmonisées dans le cadre des logiciels dispositifs médicaux
EBIOS Risk Manager pour la cybersécurité des dispositifs médicaux
Prestations de conception et développement de logiciel (de) dispositif médical
Impact des logiciels SOUP sur les dispositifs médicaux (DM ou DMDIV)
Certification Qualité Hôpital Numérique (QHN) pour logiciel de santé
Langue du dossier technique d'un logiciel dispositif médical
Surveillance après commercialisation d'un logiciel dispositif médical (DM ou DMDIV)
Dispositions transitoires du Règlement (UE) 2017/745 pour les logiciels dispositifs médicaux
Conformité réglementaire de logiciel (de) dispositif médical
Qu'est-ce qu'un système de management de la qualité (SMQ) EN ISO 13485 ?
L'intelligence artificielle dans les logiciels (de) dispositifs médicaux
Attestation de conformité de logiciel dispositif médical (DM ou DMDIV)
Langue d'interface graphique de logiciel (de) dispositif médical
Utilité de la spécification d'utilisation d'un logiciel dispositif médical
Validation des logiciels pour les systèmes qualité des dispositifs médicaux
Norme CEI EN 82304-1 pour logiciel dispositif médical (DM ou DMDIV)
Dispositifs médicaux avec fonction de mesurage : identification et réglementation
Un guide sur la cybersécurité des dispositifs médicaux dans l'Union Européenne
Classification des logiciels (de) dispositifs médicaux (A, B, C…)
Les systèmes d'exploitation au regard de la cybersécurité des dispositifs médicaux
Cybersécurité des logiciels (de) dispositifs médicaux en France
Particularités de la gestion de risques de logiciel (de) dispositif médical
Détermination de besoins logiciels pour dispositifs médicaux : cas d'étude
Comment réduire le coût d'un logiciel (de) dispositif médical ?
Norme CEI 62366-1 et conception d'interfaces graphiques de logiciels (de) dispositifs médicaux
Norme EN 62304 et interface utilisateur des logiciels (de) dispositifs médicaux
Réglementation applicable aux logiciels (de) dispositifs médicaux