Méthodes agiles pour les projets informatiques : comment équilibrer risques et flexibilité ?

Bannière de présentation de l'article sur les méthodes agiles en informatique / pour le développement de son projet par un prestataire

L’agilité est synonyme de souplesse, de flexibilité, de réactivité et de collaboration. Cependant, cette flexibilité peut susciter des inquiétudes en matière de gestion de projets, notamment pour des projets conséquents réalisés, comme le développement d’applications mobiles et d’applications web sur-mesure en collaboration avec un prestataire. Dans cet article, nous explorerons les avantages, les risques et les limites de l’agilité tout en mettant en lumière l’importance du cadrage fonctionnel des projets, même dans le contexte des méthodes agiles. Nous aborderons également les stratégies à mettre en œuvre pour assurer une collaboration efficace avec votre prestataire, afin de limiter les risques d’échec d’un projet de conception et développement de logiciels.

Sommaire
 

Méthode de gestion de projet agile : comprendre les freins et les risques 

Les fondements de l’agilité

1. L’approche agile et les méthodologies

Les approches agiles sont axées sur la flexibilité, la communication et la collaboration. Elles encouragent les équipes stratégiques et opérationnelles à s’adapter rapidement aux changements. Le Manifeste de l’Agilité, rédigé dans les années 2000, propose quatre valeurs fortes. 

  1. Les échanges entre individus importent plus que les processus et les outils.
  2. L’utilisation de logiciels opérationnels est prioritaire à une documentation exhaustive.
  3. La collaboration avec les clients est privilégiée à la négociation contractuelle.
  4. L’adaptation au changement est prioritaire au suivi d’un plan.

L’agilité est en réalité plus complexe que ça. C’est une approche dont découlent plusieurs méthodologies répondant, plus ou moins, à ces principes. 

2. Choisir une approche selon son projet

De manière générale, les approches agiles sont à privilégier pour les projets dont le périmètre est évolutif et changeant ou trop conséquent pour être précisé dans le détail et de manière exhaustive. Les méthodes agiles (par exemple les méthodes SCRUM, KANBAN, Extreme Programming (XP)…)  permettent plus de flexibilité et d’expérimentation au cours du développement. Par exemple, avec la méthode SCRUM, le développement logiciel se fait sprint par sprint. Un sprint est une phase de production, délimitée dans le temps, et durant laquelle les différents collaborateurs d’un projet travaillent sur un objectif de développement prédéfini.

Cela permet d’accélérer le processus de création, en livrant de la valeur opérationnelle, de sprint en sprint, pour que le donneur d’ordre puisse décider de manière stratégique des évolutions et de la priorisation des développements tout au long de la réalisation du projet applicatif.  Certes, l’approche incrémentale permet d’apporter de la valeur plus rapidement, mais elle induit une plus grande complexité parce que le système évolue constamment. De nombreux projets agiles sont ainsi à la dérive, faute de maîtrise de la complexité logicielle, de gouvernance adaptée, de documentation et d’analyse d’impacts.  

Les approches agiles sont différentes des approches traditionnelles, qui conviennent aux projets dont le périmètre fonctionnel est connu et sûr, dont les spécifications fonctionnelles sont précisément définies et détaillées pour lever tous les doutes et les risques possibles. C’est-à-dire que dans les approches classiques (méthodes de gestion de projet en cascade ou développement en V), le cahier des charges du projet est exhaustif et détaillé, sans aucune ambiguïté quant à l’interprétation des besoins, et n’évolue pas en cours de développement. Toutefois, le développement d’applications ou de logiciels, via des méthodes dites traditionnelles, peut tout de même s’inspirer des valeurs agiles parce qu’il reste possible de réaliser les projets par lotissements (avec des itérations de lots ou de cycles).

Ces approches, et les méthodes de gestion de projet qui en découlent, sont donc à choisir au cas par cas, selon le type de projet et son contexte, plus que par affinité avec l’une des approches.  

Cadrage, contrat et agilité : différences et nécessités

La flexibilité qu’offre une approche agile peut parfois entrer en conflit avec l’idée de cadrage et de contractualisation, perçue comme rigide.

Nadège Martin, associée au cabinet d’avocats Norton Rose Fulbright, défend dans une interview réalisée par CIO, qu’une méthodologie agile n’est ni l’assurance d’éviter les risques de dérapages dans des projets menés avec des prestataires, ni un prétexte pour limiter l’encadrement contractuel d’une prestation. « Ce qui me dérange, c’est qu’on puisse croire que projet agile rimerait avec absence de cadre ».

Cette avocate spécialisée en droit IT précise que : « Le passage en agile constitue souvent un avantage pour les prestataires, qui démarrent avec un cadre moins strict que dans un projet classique. Par ailleurs, dans ce type de démarche, apporter la preuve de la responsabilité de l’une ou l’autre des parties est plus difficile, ce qui est indéniablement à l’avantage des prestataires ». 

« En pratique, les méthodologies agiles impliquent une disponibilité importante et régulière des équipes métiers, sinon le côté itératif de la méthodologie ne pourra pas être respecté et on assistera à des dérapages dans le planning », souligne Nadège Martin.

Il est donc essentiel de trouver un équilibre entre la flexibilité, le cadrage, la documentation et la contractualisation, afin de garantir la réussite des projets de conception et développement logiciel réalisés en prestation de service. Ainsi, l’ensemble des parties doit se protéger ; en tant qu’agence, le prestataire fournisseur et en tant que client, l’entreprise donneur d’ordre. Puisque le succès de la collaboration et du projet informatique en dépendent. Le but est de favoriser une relation gagnant-gagnant pour une collaboration à long terme.

Les risques de l’utilisation des méthodes agiles

Initialement, les valeurs agiles ont été rédigées pour réduire les risques d’échecs des projets informatiques parce que la gestion traditionnelle n’accueillait pas assez vite le changement. Pourtant, les démarches agiles doivent, elles aussi, être maîtrisées pour assurer le succès des projets. Le manque de cadrage, de documentation et de communication entre le prestataire et le donneur d’ordre peut comporter des risques à chaque étape du projet.

1. Ambiguïté des attentes

Dans un environnement agile, les besoins et les priorités relatives au projet évoluent fréquemment. Sans cadrage préalable et sans informations claires lors des demandes de changements ou ajout de nouveaux besoins, les attentes deviennent floues, ce qui entraîne des malentendus et des frustrations. Une relation chaotique, un manque de précisions, de validation ou d’implication des différentes parties prenantes à chaque étape peut vite mettre en péril le projet informatique agile. Des lignes directrices solides doivent être définies et appliquées pour maintenir un projet sur la bonne voie. Pour réduire les risques de non-dits, d’incompréhension relatifs aux besoins, il convient donc de réaliser en amont du développement un cadrage du projet et de l’étudier pour définir l’architecture agile et les jalons du projet. En cours de réalisation, et puisque l’équipe agile accueille le changement, il est nécessaire de maintenir une collaboration efficace et de réaliser une documentation claire du projet pour assurer sa bonne compréhension, également future. En effet, il faut que les développeurs comprennent ce qui a été réalisé au moment du développement pour pouvoir continuer à agrémenter l’application de solutions futures. 

2. Risque de dérive du budget et des délais

Les approches agiles permettent d’ajuster les fonctionnalités et le découpage des tâches du projet en cours de route. Cependant, il peut être difficile de gérer les coûts et les délais, ce qui, à terme, entraîne parfois des dépassements budgétaires et des retards. Pour que l’estimation de départ soit réaliste, il est nécessaire de prendre le temps, en amont du développement, pour cadrer le projet en réalisant un Product Backlog qui listera le plus exhaustivement possible les fonctionnalités ou users stories attendues. 

Peu importe la méthode de gestion de projet, le cadrage fonctionnel initial aura toujours un impact sur l’estimation de ressources, de temps et donc sur le budget prévisionnel initial. Puisque le projet agile est susceptible d’évoluer, il est donc nécessaire de prévoir des marges de manœuvre pour accueillir les changements en cours de route. Par exemple, un tout nouveau besoin fonctionnel arrivant en cours de développement devra être réfléchi et nécessitera une prise de décision : ajouter la fonctionnalité et augmenter le budget et les délais, ou retirer une fonctionnalité de complexité similaire du backlog pour pouvoir y ajouter la fonctionnalité prioritaire. Ces prises de décisions sont nécessaires à chaque sprint pour assurer une maîtrise du budget et des délais. 

3. Difficultés en matière de responsabilité

La contractualisation traditionnelle fixe clairement les responsabilités et les obligations des parties impliquées en termes de périmètre fonctionnel, de durée et de coûts. Dans un contexte agile, puisque le périmètre fonctionnel du projet peut évoluer, les délais peuvent s’allonger, car ils sont étroitement liés au développement des fonctionnalités. Pour réduire les risques connexes, les acteurs du projet doivent assurer une bonne communication et une maîtrise constante du périmètre fonctionnel. L’implication du donneur d’ordre à chaque sprint est donc cruciale parce qu’il est décisionnaire et assure la vision projet. L’intérêt est de statuer et prioriser les changements et besoins. Cette flexibilité de gestion de projet doit donc être clairement annoncée dans le contrat de développement agile avec votre prestataire. 

Article similaire :  Les 6 erreurs en gestion de projet d'application mobile qui minimisent mes chances de réussite

4. Problèmes d’internalisation et de maintenance 

Dans notre dernière enquête, nous avons relevé qu’une documentation fonctionnelle qui n’est pas à jour est problématique pour plus de 77% des professionnels interrogés. Une documentation incomplète ou manquante rend plus complexe la maintenance du logiciel et le développement de nouvelles fonctionnalités. En effet, sans documentation fonctionnelle et technique, sans traçabilité quant aux dépendances existantes au sein du logiciel, les impacts de modifications futures non maîtrisés pourraient compromettre le code et créer des bugs mettant à mal la pérennité du système. Mais ce n’est pas tout. Dans le cas d’une démarche d’internalisation, c’est-à-dire la reprise en interne du développement par le donneur d’ordre, cette problématique peut être décuplée, puisque l’équipe de développement interne perdra fortement en productivité et peut se retrouver bloquée, voire réticente à faire évoluer la solution, de peur de créer des régressions. Réaliser et maintenir une documentation complète du logiciel est donc gage de pérennité. 

C’est pourquoi, même avec une méthodologie agile, il est recommandé et, nécessaire, de cadrer, contractualiser et documenter votre projet afin de garantir son bon déroulement.

Comment assurer la réussite du projet en méthodes agiles ?

L’importance de la contractualisation

Alors, pourquoi est-il important de contractualiser en utilisant des méthodes agiles ? 

Voici quatre raisons cruciales.

1. Instaurer un climat de confiance et assurer la clarté des attentes

Une contractualisation appropriée permet de définir les attentes et les objectifs du projet. Cela garantit que toutes les parties impliquées comprennent leurs rôles et responsabilités.

Au-delà de la clarification des attentes, des rôles et responsabilités, les parties prenantes doivent faire le choix de collaborer pour atteindre un objectif commun, être transparent sur les capacités, les performances, les difficultés rencontrées, et s’adapter aux changements, induits par un marché en perpétuel mouvement. Le prestataire, tout comme le client, se doit de créer un climat de confiance et de communiquer avec bienveillance

Un contrat agile définit les objectifs et les modalités de collaboration et devient un moyen pour atteindre l’objectif principal de la prestation (qui est de délivrer aux utilisateurs finaux les services qu’ils attendent).

2. Disposer d’une bonne gestion de budgets et de délais

Un contrat bien structuré inclut des mécanismes pour gérer le budget et les échéances. Cela permet de s’assurer que le projet reste dans les limites budgétaires et temporelles définies. Le fournisseur s’engage sur un niveau de productivité corrélé au besoin de son client. L’application développée doit être pérenne et robuste afin d’éviter les surcoûts futurs de maintenance. Un équilibre entre qualité et productivité doit se trouver tout en respectant les ressources (budgétaires et temporelles) proposées par le client. De ce fait, la contractualisation permet d’ouvrir la discussion sur ces ressources dans le but de les anticiper en toute transparence.

3. Assurer la documentation des décisions avec flexibilité

Une contractualisation en agilité peut inclure des processus pour documenter les décisions prises au cours du projet. Cela est essentiel pour assurer la traçabilité et la compréhension de l’évolution du projet. Par exemple, la gouvernance projet peut inclure régulièrement la réunion d’un comité de pilotage ou de revue de projet. À chaque revue périodique, les parties prenantes analysent ensemble la qualité et l’exécution du projet. Cela permet de définir conjointement les actions futures et d’acter les validations et les demandes de changement au cours du projet. Ainsi, ni le client ni le prestataire ne restent prisonniers d’un cadre rigide qui sera obsolète face aux changements. Toutefois, la documentation des décisions reste un garde-fou qui permet de ne pas s’éloigner de l’objectif final. Aussi, les tâches opérationnelles restantes au backlog, les modifications, les ajouts et leurs impacts doivent être partagés avec transparence entre les deux parties. Pour le client, il y a plusieurs intérêts, comme  pouvoir statuer et faire des choix en termes de fonctionnalités et/ou de budget tout en gardant une maîtrise du projet et des temps alloués.

4. Définir des responsabilités et règles de collaboration claires

Un contrat agile précise les responsabilités de chaque partie, ce qui permet d’éviter les conflits et les malentendus, car il définit les enjeux, objectifs, modalités de gouvernance commune, les ressources et processus des parties prenantes. Travailler en toute transparence vise à créer et maintenir la confiance et à éviter tout rapport de force déséquilibré. 

Pour aller plus loin, la charte d’engagement du prestataire peut être consultée pour vérifier les valeurs et la méthodologie de travail du prestataire avant contractualisation. 

Comment contractualiser en méthodes agiles

La contractualisation en agilité avec un prestataire doit être suffisamment souple pour s’adapter aux besoins changeants du projet tout en garantissant la clarté et la responsabilité. Voici quelques stratégies pour contractualiser efficacement en utilisant des méthodes agiles :

1. Établir un contrat clair, détaillant les enjeux, la méthode et les rôles de chacun

Dans le cadre d’une prestation de services, veillez à consulter les contrats proposés : proposition commerciale, conditions générales de vente… Avant de signer un quelconque engagement, assurez-vous que le prestataire évoque l’objectif général du projet, la proposition budgétaire (avec le détail de la méthode de tarification, budget prévisionnel), les contacts et le détail des interlocuteurs (coordonnées, rôles, fonctions…). Dans les conditions générales de vente, soyez attentif aux engagements des parties prenantes, aux conditions de modification d’une prestation, la confidentialité de vos données, et à l’appartenance du code (qui doit vous être attribué). Ces modalités doivent être claires, et correspondre à vos attentes.

2. Collaboration étroite

Une bonne communication se fonde sur des relations saines. Un rapport gagnant-gagnant doit exister entre les parties prenantes, qui doivent toutes garantir leur implication dans le projet

Cela permet d’honorer une collaboration bienveillante, qui est nécessaire, car le  client donne sa vision du projet, et le prestataire lui donne vie.  Le prestataire challenge le projet, en étant force de proposition, et assume son rôle de partenaire technique.

3. Documentation claire

Penser que le développement agile peut se passer de documentation est un mythe. Dans l’ouvrage Lean architecture – for Agile Software Development, James O. Coplien et Gertrud Bjørnvig mettent en avant le besoin de documenter les projets. Documentez la vision globale du projet ainsi que son architecture. Assurez-vous de documenter les spécifications fonctionnelles et techniques du projet.

La documentation garantit une traçabilité et une transparence. Elle permet, par la suite, d’être plus efficace dans les développements futurs et au cours de la maintenance, de réaliser de meilleures études d’impacts, de faciliter la maintenance, de favoriser la réussite d’une internationalisation future, etc. Renseignez-vous sur les outils utilisés par le prestataire. Par exemple, nous avons développé notre propre solution, Managician, pour documenter les projets de développement sur-mesure, et cette documentation est mise à disposition de nos clients. 

4. Mécanismes de résolution des conflits

Définissez les interlocuteurs qui travailleront sur le projet, mais aussi avec votre prestataire. Incluez des mécanismes pour résoudre les conflits et les désaccords. Cela peut inclure des processus de médiation ou d’arbitrage pour éviter les litiges. Dans les Conditions Générales de Vente affiliées au devis, les informations concernant la gestion de différends avec le prestataire apparaissent clairement. 

5. Prévoyez une clause de réversibilité

En cas d’arrêt de la prestation de service, vous devez vérifier que cette clause de réversibilité existe au contrat. Votre prestataire a-t-il prévu la passation de tous les éléments et savoirs sur le projet : code source, documentation du projet, accompagnement en réversibilité ? Cette clause est cruciale quant à la pérennité de votre projet en cas de reprise applicative ou d’internalisation. En cas de changement de stratégie, il vaut mieux qu’elle apparaisse clairement au contrat.

Conclusion

Les méthodes agiles offrent de nombreux avantages, et peuvent se déployer avec rigueur et transparence pour garantir le succès de votre projet. En agilité comme en méthode traditionnelle, nous tenons à rester un partenaire technique de qualité. Pour savoir comment nous pouvons contribuer à votre projet, contactez-nous.