Vers un développement logiciel Agile - Com-Hom
Transcription
Vers un développement logiciel Agile - Com-Hom
Vers un développement logiciel Agile emmanuel etas s e jean- rené rous se a u Avril 2009 V ers un dévelo ppem ent lo g ic iel a g ile emmanuel etas se, jean-rené rous seau 1 Introduction Durant les 30 dernières années, les spécialistes en technologie de l’information (TI) ont tenté d’appliquer le paradigme de la fabrication prévisible au développement logiciel. Cependant, la plupart des logiciels ne sont pas des projets présentant une problématique prévisible et ils ne peuvent être réalisés en utilisant des procédés inspirés de la fabrication de masse. La réalisation de logiciels est en fait un domaine de création, comportant des inconnus et un haut taux de changements. C’est pourquoi les méthodologies traditionnelles, préconisant un cycle de développement linéaire caractérisé par la production d’une lourde documentation initiale, par une gestion hiérarchisée et par une organisation du travail individualisé (Taylorisme informatique), s’avèrent être peu efficaces. De récentes études 1 ont d'ailleurs démontrés que plus de 50 % des projets de développement logiciels échouent et que plus de 65 % des fonctionnalités des systèmes en production sont rarement utilisées. Il semble donc évident que les investissements des organisations en matière de développement logiciel peuvent être et doivent être grandement optimisés. 2 L'approche Agile Dans les années 90, plusieurs nouvelles approches de développement sont nées de cette volonté de réaliser des projets informatiques plus efficacement. En février 2001, 17 des leaders de ces nouvelles approches au développement logiciel se sont regroupés et ont adoptés le terme Agile pour définir ces nouvelles méthodes. Ils ont ainsi former l'Alliance Agile2 et établit une liste de valeurs et principes régissant ce qu'on appel maintenant le manifeste3 de développement logiciel Agile. En résumé, le développement logiciel Agile permet de: • Répondre aux changements en utilisant un modèle de développement empirique où l’on produit fréquemment une partie fonctionnelle du système, et où, par inspection fréquente, on adapte la planification et le processus. • Optimiser le retour sur l'investissement en mettant la valeur d'affaire du logiciel au premier plan du processus décisionnelle. • Augmenter la productivité en valorisant des processus simples et minimaux et en favorisant la communication au sein d'équipes multi-disiplinaires, auto-orgasnisées et responsables. • Augmenter la prévisibilité en établissant un rythme de travail constant améliorant ainsi la planification des projets en terme de temps et de budget. 1 Chaos Report 2003 pour les projets qui échouent, Standish Report 2002 pour les fonctionnalités non utilisés 2 http://www.agilealliance.org/ 3 http://agilemanifesto.org/ www.pyxis-tech.com 1 Avril 2009 V ers un dévelo ppem ent lo g ic iel a g ile emmanuel etas se, jean-rené rous seau L'approche Agile semble donc mieux répondre aux problèmes complexes que sont les projets de développement logiciels. En effet, de nombreuses entreprises ayant réalisé des logiciels à l’aide d'un processus Agile, rapportent de larges gains en productivité, une satisfaction accrue des utilisateurs et un meilleur retour sur les investissements. Les magazines spécialisés en TI et également les magazines d’affaires et d’économie sont tapissés d’articles encensant cette nouvelle approche au développement logiciel. On parle même désormais d’Agilité organisationnelle et de plus en plus d’organisations se dotent de moyens pour passer à un mode de gestion Agile. 3 Scrum Parmi les différentes méthodologies Agiles, Scrum 4 se présente comme un exemple parfait de processus empirique et se démarque par sa simplicité. Scrum est un processus itératif qui permet de gérer et contrôler le développement de logiciels. Scrum ce définit par des règles et pratiques à la fois simples et efficaces dont voici les grandes lignes: • Une liste de fonctionnalités à développer est maintenue et priorisée par le Gestionnaire de Produit. • Des itérations de plus ou moins 30 jours appelés sprint, permettent à l'Équipe de Développement de produire des incréments du produit final à partir des fonctionnalités les plus prioritaires. • Une rencontre quotidienne de 15 minutes, le daily scrum , permet de communiquer l'avancement des travaux et de discuter des obstacles rencontrés, permettant au gestionnaire de projet, le Maître Scrum d'apporter rapidement les ajustements nécessaires au bon déroulement du projet. • Une rétrospective à la fin de chaque sprint permet de démontrer les nouvelles fonctionnalités développées et de réviser le processus de développement permettant ainsi d'apporter les correctifs qui permettront d'augmenter la productivité. Scrum permet de générer les bénéfices liés au développement Agile tout en demeurant simple à implanter. Le cycle quotidien et mensuel d’inspection et d’adaptation de Scrum permet d'identifier tous les obstacles nuisant à la productivité concentrant ainsi les efforts de développement sur la production d'une solution logicielle optimale maximisant ainsi la valeur d'affaires et le retour sur l'investissement. Scrum est souvent présenté comme un accélérateur de dysfonctionnement dans le sens où des désordres contre-productifs pourront être révélés plus tôt dans le projet que dans une approche classique. Cette transparence peut avoir un impact sur le mode de fonctionnement et la culture de l'entreprise. La transition vers une approche agile n'est jamais chose facile. 4 Tra n sition A gile/ S cru m De part sa nature non prescriptive et empirique, Scrum se présente comme un compagnon idéal pour effectuer une transition agile. Scrum: 4 http://www.controlchaos.com/ www.pyxis-tech.com 1 Avril 2009 V ers un dévelo ppem ent lo g ic iel a g ile emmanuel etas se, jean-rené rous seau • intègre des pratiques d’ingénieries existantes comme celles de eXtreme Programming (XP) et de RUP ou d'autres pratiques provenant de votre processus actuel. • laisse émerger un processus simple et minimal adapté aux réalités de l'organisation. • identifie les obstacles organisationnels qui nuisent à la productivité et à la réalisation d'une solution logicielle optimale. • peut être utilisé dès le début d'un projet ou au milieu d'un projet existant. Une transition Agile par la mise en œuvre du processus Scrum impliquera donc une transformation à deux niveaux: au niveau du processus de développement, en y éliminant les activités superflus, en améliorant les pratiques d'ingénieries courantes et en y intégrant de nouvelles pratiques; mais aussi au niveau de l'organisation elle-même qui devra résoudre les problèmes identifiés par le processus de développement. La résolution des problèmes identifiés devra impliquer le plus possible l'ensemble des acteurs de terrain afin de renforcer motivation et responsabilisation, qui sont deux piliers pour libérer la performance des équipes projet. jean- rené rousse au Titulaire d'une licence en informatique de gestion de l'Université Laval à Québec, Jean-René compte plus de dix années d'expérience en développement de systèmes informatiques et en services-conseils, dont sept avec la plateforme Java/J2EE. Formateur agréé par Emploi Québec et certifié ScrumMaster, il effectue régulièrement des mandats de formation et d'accompagnement où il transfère son expertise de la méthodologie Scrum et du développement orienté objet. Ces mandats lui permettent de mettre à l'avant plan ses qualités de communicateur et son leadership. emmanuel etas s e Scientifique de formation (mécanique des fluides), Emmanuel compte 11 années d'expérience dans le secteur du développement logiciel. Passionné par la programmation et en quête perpétuelle d'amélioration de la qualité de ses prestations (et de celles de ses collaborateurs), il s'intéresse de près aux méthodes Agiles depuis 2002. Il commence alors à s'impliquer dans la mise en œuvre de Scrum et des pratiques d'eXtreme Programming au sein de son entreprise. Il a des compétences dans les domaines d'expertise opérationnelle suivants : programmation orientée objet, ergonomie des interfaces utilisateurs graphiques, intégration continue et développement piloté par les tests. Sa motivation profonde est d'aider les entreprises à être plus performantes d'une part grâce aux approches Agiles et, d'autre part, grâce à une gestion plus respectueuse des individus. www.pyxis-tech.com 1 Avril 2009