Développement distribué – Des avantages masqués
Par Chris Barbin, Vice-Président Senior, Borland Worldwide Services
Qu'il soit un «sous-produit» d’une fusion ou d’une acquisition, le résultat de mesures de réduction des coûts ou un moyen nécessaire pour attirer et retenir les meilleurs talents, le développement distribué — consistant à s'appuyer sur des équipes géographiquement dispersées — devient un mode d'organisation de plus en plus commun. La grande majorité des entreprises doit en effet prendre en compte cette nouvelle dimension, qu’elle qu’en soit la forme : fusion de sociétés, externalisation de projets de développement, engagement de collaborateurs distants, intégration multisite, etc.
Il n’y a pas de différence fondamentale relative à l’éloignement géographique : que les équipes soient à l’autre bout du monde ou… de la ville, il s’agit toujours d’intégrer une nouvelle « couche » potentiellement génératrice de complexité au processus de développement logiciel… Toute nouvelle difficulté est source de coûts, même si en matière de développement logiciel, ils sont souvent masqués, imprévisibles et difficilement quantifiables (baisse de productivité, surcoûts administratifs, charges de communication, etc.)
Malheureusement, les entreprises ont souvent des attentes irréalistes ainsi que des processus et infrastructures insuffisants pour prendre en charge ce nouveau mode d’organisation : certaines se contentent de mettre en œuvre de simples processus « manuels » (plus de réunions, de déplacements, de documents de référence, etc.) alors que d’autres adoptent la politique de l’autruche après avoir vainement recherché une solution viable.
Quelles que soient les raisons de son apparition, le développement distribué fera durablement parti du paysage des systèmes d’information. C’est une réalité incontournable à laquelle les directions informatiques doivent faire face en adoptant de nouvelles méthodes et technologies pour en surmonter les challenges — et singulièrement pour en faire une activité plus productive et mieux administrée.
Développement distribué — Un catalyseur de progrès des principes de création logicielsEtonnamment, alors que la plupart des autres domaines d’activité des entreprises (finances, centres d’appels, chaînes commerciales, etc.) ont établi des processus et principes opérationnels pour simplifier la fusion de systèmes hétérogènes et optimiser le fonctionnement multisite, le développement logiciel semble demeurer un domaine « à part », plutôt considéré comme un pôle de « créativité » que comme un processus métier normalement encadré et administré. Malheureusement, le développement logiciel pâtit d’autant plus de cette image qu’il est souvent synonyme de gestion de projet défaillante, de manque total de visibilité intra et interprojet et d’absence de compréhension du processus global par les directions opérationnelles.
Quand les équipes sont « circonscrites » au même étage ou dans le même bâtiment, la gestion des développements logiciels n’est déjà pas un enjeu trivial ! Imaginez à quel point cela le devient avec la multiplication des dysfonctionnements possibles dans un contexte de processus discontinus, de fort éloignement géographique, de décalage horaire, de multiplicité des plates-formes, de barrières culturelles et linguistiques, etc.
Une récente étude révèle les coûts induits par cette nouvelle organisation sur les efforts de développement. Si l’on constate qu’il ne se produit pas plus d’incidents entre deux ou plusieurs sites d’une organisation multisites que dans une organisation traditionnelle monosite ; le problème demeure que leur résolution nécessite de deux à quatre fois plus de temps… Les chercheurs ayant conduit cette étude notent également que cette organisation a tendance à générer des interblocages qu’ils évaluent en moyenne à cinq jours par mois pour chaque acteur – par exemple, lorsqu’il est tributaire d’une information d’un autre site pour mener à bien une opération stratégique.
Réussite du développement distribué — Transformer un artisanat en un processus administréMême dans les environnements les plus « classiques », les besoins de développement logiciel subissent de profondes transformations, mais l’urgence et l’importance de ces évolutions est tout particulièrement sensible dans les entreprises qui doivent gérer des sites distants, des fuseaux horaires différents et plusieurs langues de travail tout en produisant des réalisations de qualité, homogènes et dans les délais impartis. Pour développer leur productivité et améliorer le retour sur investissement dans un espace globalisé, les entreprises doivent adopter des changements fondamentaux dans leur organisation de développement logiciel.
Il est grand temps de faire de cette activité artisanale — voire artistique — un processus métier cohérent à travers une méthodologie sous-tendue par des technologies adaptées et mise en œuvre par des équipes expérimentées et efficaces capables de produire des résultats prévisibles – en dépit des frontières géographiques ou organisationnelles. Les entreprises les plus volontaires dans la transformation de leurs processus de développement logiciel en ont tiré de considérables bénéfices : augmentation de la capacité de développement de 30 à 40 %, jusqu’à 500 % de réduction du nombre de défauts, automatisation de 60 % des processus de développement, etc.
L’étape initiale consiste à développer des processus efficaces et reproductibles afin que les équipes puissent s’appuyer sur des pratiques homogènes (définitions, modèles de composants livrables, étapes de workflow, etc.) sans pour autant tomber dans la « suringénierie » consistant à développer des procédures qui ajoutent à la complexité et à la confusion au lieu de les simplifier. Pour éviter cet écueil, les entreprises doivent se focaliser sur des processus simples et susceptibles de produire des résultats rapides (diagrammes de flux de haut niveau, réunions plus brèves et plus fréquentes pour améliorer la réactivité et l’ouverture, etc.) et les faire évoluer progressivement — chaque fois que tous les intervenants sont synchronisés.
L’autre levier pour capitaliser sur le développement distribué réside dans les technologies telles que les outils de gestion du cycle de vie des applications de type ALM (Application lifecycle management) permettant de comprendre, définir et organiser l’ensemble du processus de développement. Les produits ALM permettent en effet de mettre en œuvre des pratiques d’excellence pour rationaliser et automatiser les procédures afin que chacun soit plus performant individuellement et que la Direction informatique dispose d’un meilleur contrôle et d'une plus grande visibilité sur les activités globales.
Les plates-formes ALM améliorent la collaboration en interconnectant toutes les phases du cycle de vie des projets à travers un référentiel central contenant tous les actifs et permettant à chaque acteur de bénéficier d’accès cohérents et à jour à toutes les ressources qui lui sont utiles. En outre, un environnement totalement intégré donne à chaque intervenant une vision personnalisée des projets selon sa propre perspective fonctionnelle afin de visualiser l’impact de sa mission sur les autres phases (et réciproquement) — quel que soit l'éloignement entre les différents membres de l'équipe.
Le dernier élément de cette transformation du développement logiciel ne doit pas être sous-estimé ; en effet, des technologies et processus à l'état de l’art restent impuissants si les collaborateurs qui les manipulent n’ont pas reçu la formation idoine... De la même façon que l’amélioration des processus doit être le fruit d’une approche personnalisée, la formation doit aussi coller à l’environnement et aux méthodes et préférences de chacun et s’inscrire dans une approche de mise à jour permanente afin de maximiser tous les retours d’expérience.
Les principaux inconvénients du développement logiciel tel qu’il est réalisé aujourd’hui – qu’il soit centralisé ou distribué — ne peuvent cependant pas être solutionnés par la mise en œuvre d’un seul outil — pas plus que par le déploiement de quelques modèles. Cependant, les entreprises les plus dynamiques pour adopter une approche globale et intégrée des processus, de la formation et des infrastructures techniques peuvent en tirer de substantiels bénéfices en seulement quelques mois — et dans tous les cas, réaliser des progrès considérables sous 12 à 18 mois. Le développement distribué devient alors un catalyseur de diffusion de ces évolutions dans l’ensemble du département informatique en raison des pressions spécifiques qu’il exerce sur ses différents acteurs.
Le développement distribué est encore perçu par beaucoup comme porteur de nouveaux risques et challenges. Pourtant gageons que dans quelques années l’adjectif aura disparu et que le développement distribué sera devenu le développement tout court ! La dispersion des équipes sera la règle ; si vous en doutez encore, ouvrez n’importe quelle revue professionnelle : globalisation, virtualisation, consolidation en sont les maîtres mots… Autant de tendances qui nous éloignent inéluctablement des environnements centralisés ; c’est indiscutablement un challenge mais il est porteur d’une considérable opportunité de faire entrer «l'art » du développement logiciel dans une nouvelle ère de progrès.
Biographie de l’auteurChris Barbin est Vice-Président Senior de la division Services de Borland Software Corporation. A ce titre, il dirige la fourniture de solutions intégrées et de services techniques, de consulting et de formation aux clients de l’entreprise dans le monde entier et les programmes de certification et partenariats avec les intégrateurs. Chris Barbin conseille également de grandes administrations et entreprises internationales pour améliorer leurs environnements de développement distribué et leurs initiatives d'externalisation et accélérer leurs processus de livraison de logiciels.
