Les 12 critères faisant le succès d'un logiciel moderne

Coûts, qualité, délais ? Privilégier deux objectifs et faire l’impasse sur le troisième ne suffit plus. Le développement logiciel moderne exige d’atteindre les trois.

En matière de développement logiciel, tout comme en gestion de projet, il existe un principe dit du « triangle d’or », selon lequel une équipe se retrouve inévitablement à devoir faire des compromis pour trouver l’équilibre délicat entre trois contraintes fondamentales : les coûts, la qualité et les délais. Et ce, en ne réussissant que très rarement, voire jamais, à concilier les trois.

Pourtant, dans l’univers des logiciels modernes d’aujourd’hui, cette notion de compromis n’est plus acceptable. Pour preuve, même réussir à faire « mieux, moins cher et plus rapide » n’est plus suffisant. De nos jours, les clients veulent une qualité irréprochable, des mises à jour régulières et un prix compétitif, mais en réalité, leurs exigences vont bien plus loin. Réussir dans le développement logiciel implique désormais d’apporter une valeur ajoutée beaucoup plus grande.

Les produits et services fournis par les éditeurs de logiciels doivent remplir pas moins d’une douzaine de critères différents, sans la moindre place pour des compromis. La compétition se fait de plus en plus exclusivement entre acteurs parvenant à atteindre le score parfait de 12/12.

Du fait de la chute du coût des infrastructures technologiques, l’utilisation de systèmes de stockage, de mémoire et de calcul aux performances supérieures sont désormais accessibles à tous les développeurs, à un prix plus abordable. En parallèle, les outils et les méthodes de développement logiciel ont connu des évolutions particulièrement intéressantes. Les applications « cloud-native », qui tirent profit de microservices indépendants et autonomes, regroupés au sein de conteneurs, et développés à l’aide de langages et de frameworks toujours plus performants, permettent aux développeurs d’aborder différemment les questions de coût, de complexité et de risque liées aux architectures applicatives. 

De la même manière, les méthodologies, les modes de fonctionnement opérationnels et la culture d’entreprise liés au développement logiciel ont évolué de manière à tirer profit de ces innovations. Les démarches agile et DevOps, une gestion plus efficace du cycle de vie applicatif, et la généralisation de l’automatisation permettent aux développeurs de livrer les logiciels de façon plus rapide et plus stable, avec un niveau de qualité nettement supérieur à ce qui s’est fait jusqu’à maintenant.

Désormais, un seul ingénieur suffit à déployer une application web prenant en charge l’auto-scaling, composé d’une file de messages et d’une base de données, le tout en seulement quelques minutes, en dupliquant des tâches qui mobilisaient auparavant toute une équipe pendant des journées ou des semaines. Grâce au recours à une infrastructure cloud hautement évolutive et disponible, le coût de l’hébergement d’une application est dérisoire par rapport à ce qu’il était il y a à peine dix ans. Il n’est pas exagéré de dire que les développeurs de logiciel peuvent « avoir le beurre et l’argent du beurre ».

Mais les changements ne sont pas qu’une question de performance et de coûts. Les répercussions de cette révolution vont plus loin que le développement logiciel : les attentes et les expériences des utilisateurs ont été redéfinies. Ceux-ci exigent et comptent désormais sur des applications leur offrant, en permanence, une expérience utilisateur qui soit irréprochable. Ce qui ne cesse de placer la barre toujours plus haut en terme de nouvelles fonctionnalités rajoutées avec un coût minimal. 

Le résultat de ces deux phénomènes est que faire « mieux, moins cher et plus rapide » ne représente plus qu’une simple mise de départ. Réussir demande d’aller au-delà de ces critères en apportant des fonctionnalités plus innovantes, et en améliorant la pérennité, la maintenance et le monitoring des applications.

La check-list d’évaluation de réussite du logiciel moderne

1. Rapidité : Il faut parvenir à apporter de la valeur aux clients plus rapidement que ses concurrents, tout en anticipant les attentes croissantes desdits clients.

2. Coûts : Même avec des coûts de développements logiciels au plus bas, il faut s’assurer d’être capable de continuer à livrer un produit à un coût prévisible et acceptable

3. Qualité : Dans un monde où les clients considèrent la qualité comme une évidence, et où une simple erreur peut avoir des répercussions catastrophiques sur l’image d’une marque qui s’est construite sur des années, il est impératif d’élever en continu le niveau de ses produits afin de répondre aux exigences toujours plus fortes.

4. Résilience : en cas de problème, un logiciel doit être capable de rétablir son fonctionnement, de restaurer rapidement les fonctionnalités perdues, ou encore d’empêcher les pertes de données pour s’assurer que cela n’a pas d’impact négatif sur l’activité et l’expérience des clients.  

5. Fiabilité : les éditeurs de logiciels modernes doivent tout mettre en œuvre pour limiter les temps d’arrêts, planifiés ou non, des environnements de production en assurant la disponibilité des logiciels à tout moment, 365 jours par an.

6 Evolutivité : l’évolutivité doit être au cœur de l’architecture logicielle, et engendrer le minimum de coûts et de risques. Cette évolutivité doit être véritablement ouverte pour permettre le passage de 20 à 20 000 et de 20 000 à 20 millions d’utilisateurs sans qu’il soit nécessaire de toucher à l’architecture du logiciel ou d’imposer au client une situation où il faut remplacer entièrement le produit. Mais l’évolutivité ne concerne pas que le nombre d’utilisateurs : il s’agit également du volume des données, de la complexité de l’application et du nombre de développeurs qui travaillent à son développement.

7. Mobilité : les éditeurs doivent produire des logiciels capables de s’adapter à un type d’appareils de plus en plus disparates et en évolution constante. Leur déploiement doit pouvoir se faire localement sur des ordinateurs portables, dans des environnements de tests, ainsi que dans des environnements de production variés, et ce en fonction des préférences des clients et de leurs besoins géographiques et métiers.

8. Observabilité : un logiciel doit fournir des indicateurs clés, des traces connectées, et des résultats métiers que les équipes DevOps et opérationnelles, les ingénieurs en fiabilité de site (SRE) et les équipes métiers peuvent exploiter pour améliorer la performance et la réussite commerciale de l’entreprise.

9. Maintenabilité : l’innovation technologique n’est toujours pas venue à bout d’une vérité dérangeante : 75% du coût d’un logiciel est lié à des questions de maintenance et d’administration. La conception logicielle doit contribuer à la simplification et l’optimisation des processus de maintenance.

10. Automatisation : en matière de développement, il est essentiel de tirer parti des outils et méthodes d’automatisation pour les phases de conception et de déploiement, et de limiter les ralentissements causés lorsque les processus s’appuient sur des tâches manuelles.

11. Cadence : il est important que le processus de livraison du logiciel réduise le temps de démarrage, s’arrête correctement et que les cycles de vie se mesurent en millisecondes plutôt qu’en minutes.

12. Continuité : il est important de ne pas laisser s’écouler des semaines ou des mois entiers entre les sorties des versions de production. Celles-ci doivent s’échelonner toutes les heures, voire minute par minute.

En conclusion, il ne s’agit pas de choisir six, huit, dix ou même onze des douze critères cités ici. Il est impératif de les remplir tous, sans quoi la concurrence s’en chargera. Le principe du triangle d’or est incontestablement moins contraignant. Aussi difficile qu’elle puisse sembler, cette recette du succès illustre néanmoins une période particulièrement excitante du développement logiciel. Les avancées considérables en matière d’outils logiciels et d’infrastructure amènent même certains à parler d’un « âge d’or » du développement logiciel. Enfin, de plus en plus d’entreprises se transformant en éditeur de logiciels, les opportunités, mais aussi les récompenses, sont sans précédent