La gestion du cycle de vie des applications (ALM) est la gestion du cycle de vie des applications logicielles, du développement initial à la version finale. ALM englobe toutes les pratiques, processus et outils qui aident à gérer le cycle de vie d’une application d’un point de vue commercial et de développement. Les principales fonctionnalités d’une plate-forme ALM incluent la capacité de gérer la gestion des changements, le flux de travail, la gestion du code source, la gestion des tâches, les tests et le suivi des bogues, la gestion des laboratoires, le reporting et l’analyse. Une plate-forme ALM doit également inclure un référentiel central pour gérer tous les différents types de contenu créés (c’est-à-dire le code, les tâches, les rôles, les exigences et autres artefacts) ainsi qu’un système pour établir la traçabilité et la responsabilité à travers les nombreux processus de la plate-forme ALM, les emplacements et les types d’outils.
Compte tenu de la complexité et de l’ampleur du temps et des ressources qu’une entreprise investit dans le développement de logiciels, la gestion des risques devient extrêmement importante. Tout développement de logiciel comporte un risque inhérent, puisque le développement de logiciel n’est pas fondé sur une certitude mathématique ou physique, mais plutôt sur l’innovation, la découverte et l’art. Contrairement à un système de fabrication où les processus peuvent être automatisés, le processus de développement de logiciels ne peut pas être traduit en une solution unique à l’emporte-pièce. Il est impossible de prédire toutes les variables susceptibles d’avoir un impact sur un projet logiciel dès le départ.
Par le passé, les équipes de développement s’appuyaient principalement sur l’approche « en cascade » pour gérer l’ALM. Cependant, tout comme la chaîne de montage de fabrication, la méthode en cascade est une approche « linéaire » où les exigences du produit sont rassemblées à l’avance et le processus de développement suit une séquence prédéfinie d’événements allant du codage aux tests en passant par l’assurance qualité, puis la publication. Le risque de suivre ce type d’approche est d’augmenter le risque d’échec du projet. Au moment de la sortie du produit final, il se peut qu’il ne soit plus pertinent pour le marché pour lequel il a été conçu.
Afin de réduire le risque d’échec des projets, les équipes de développement de logiciels recherchent constamment des moyens d’améliorer à la fois le processus et la technologie de développement de logiciels. Aucun système logiciel n’est si simple que l’ensemble du développement puisse être entièrement scénarisé du début à la fin de manière linéaire, c’est pourquoi nous assistons à une évolution du marché vers « Agile ALM ». En termes simples, les communautés ALM et Agile se concentrent sur l’amélioration de l’état actuel du développement logiciel. Alors qu’ALM aborde le défi d’un point de vue technologique, Agile se concentre sur l’amélioration du « processus ». En raison des objectifs communs et des synergies d’ALM et d’Agile, nous prévoyons d’apparaître plusieurs fournisseurs d’ALM Agile sur le marché au cours des 1 à 3 prochaines années.
Contrairement à la méthode en cascade « linéaire », les équipes Agile utilisent une approche « itérative » ou « inspecter et adapter » de l’ALM pour répondre aux exigences changeantes, aux complexités et aux facteurs de risque qui surgiront au cours du projet logiciel. Scrum, l’implémentation la plus populaire du mouvement Agile, a connu une croissance exponentielle au cours des dernières années pour les projets de développement à petite et grande échelle, et étend maintenant rapidement son empreinte dans l’entreprise. Le succès de Scrum, pour l’essentiel, est dû à son accent mis sur la création de « hautes fonctionnalités », ainsi qu’à une collaboration efficace entre les équipes auto-organisées. Les équipes utilisant Scrum voient Scrum comme un avantage car elles réalisent un retour sur investissement plus tôt, minimisent les retouches de projet et accélèrent l’innovation produit.