En détail
Software life cycle

Continuous Integration - Continuous Delivery
Je n’ai jamais travaillé en développement que sous ce mode : intégration continue et livraison continue. Il est en effet bien moins risqué de publier une nouvelle version tous les jours, que de laisser s'accumuler des changements importants, constituant parfois des seuils difficiles à franchir. Chaque modification du code, chaque ajout d’une nouvelle fonctionnalité, est finalement toujours marginal par rapport à l’ensemble du produit. Cette approche apporte également une réelle satisfaction aux utilisateurs : les nouvelles fonctionnalités sont rapidement disponibles. Et pour l’équipe de développement, cela procure un réel sentiment de travailler au plus près des besoins des clients.
Ne jamais devoir payer pour une correction de bug
N’est-il pas insupportable de constater un bug dans la version 1 et de devoir acquérir la version 2 pour bénéficier d’un correctif ? Poser la question, c'est y répondre. Un bug est une cible manquée. Sa correction doit se faire au plus vite et l’utilisateur doit pouvoir bénéficier de ce correctif sans coût supplémentaire, ni difficulté.
Comment alors organiser le versioning des fonctionnalités ?
De ce qui précède, on comprend que le code source est unique. Quelle que soit la version acquise, chaque client a droit au même exécutable : le dernier. Le développeur « protège » toutefois les nouvelles fonctionnalités au moyen d'une clé de licence différente, qui déverrouille les nouveautés.
Changer de version ne doit jamais être un projet en soi
Mettre à jour le logiciel doit être aisé et à la portée de tous les utilisateurs. Si la nouvelle version requiert une adaptation de la structure de la base de données, ce mécanisme doit être automatisé dans le processus de mise à jour. Ce dernier se résume à l’exécution d’un petit assistant, où il suffit de cliquer autant de fois que nécessaire sur « Suivant ». Ce même processus est aussi automatisable via une tâche planifiée, ce qui permet finalement d’atteindre une forme de « Continuous Deployment ». Chaque matin, les utilisateurs qui en ont fait le choix disposent de la dernière version du logiciel.
Cette façon de concevoir le cycle de vie d'un logiciel bénéficie à tous : les utilisateurs profitent rapidement des corrections et des nouvelles fonctionnalités, tandis que l'équipe de développement travaille en permanence sur une base de code unique, cohérente et toujours à jour.
