BlackPaper Open Wide Technologies Usine de développement : étude comparative Pour compléter notre premier article sur l usine de développement 1, il apparaît utile de faire un tour d horizon des solutions existantes dans ce domaine et de voir de quelles manières elles répondent aux besoins évoqués. Cet article dresse le bilan d une étude menée sur 6 produits candidats au titre d usine de développement. Question de définition Avant tout, j ai choisi d employer l appellation «usine de développement» (ou «usine logicielle») car elle correspond bien à l idée d industrialisation. Malheureusement, chacun met un peu ce qu il veut derrière ce nom générique. Pour rajouter à la confusion, les termes de «forge» et d «ALM» désignent des notions qui s apparentent fort à ce qu on peut attendre d une usine logicielle. Avant donc de se lancer dans une étude, il est important de préciser sur quoi elle porte : sans prétendre être une définition de référence, c est la définition suivante qui a servi de repère pour la présente étude. L idée de départ étant d appliquer l image de l industrie «matérielle» au monde du développement logiciel, récapitulons les éléments de l analogie que j avais exposée dans mon article précédent pour citer les domaines couverts par notre usine :! pilotage : recueil des demandes (exigences sur le produit), planification des travaux et suivi des activités,! approvisionnement : fourniture de la matière première (ou des pièces détachées), à savoir le code source et les composants techniques,! fabrication : chaîne de production proprement dite qui transforme la matière première en produits (construction des exécutables à partir de la compilation du code source),! contrôle qualité : tests du bon fonctionnement des produits et de leur respect des critères de qualité,! distribution : diffusion des produits auprès des clients (logistique de livraison / réseaux de distribution),! support : réponse aux questions des utilisateurs (internes ou externes), gestion des anomalies et actions correctives. 1 Cf. article L usine de développement : du cauchemar à la réalité sur le site Improve Foundations http://www.improve-foundations.com/wp-content/uploads/2012/06/blackpaper_owt_usine_developpement.pdf 1
On le constate d emblée, une telle analogie considère l usine au sens large et va bien au delà de la chaîne de montage. Cette vision correspond plutôt à celle du «supply chain management» qui s intéresse autant aux flux et à leur synchronisation qu au seul process de fabrication. En résumé, il s agit de définir un cadre au sein duquel clients, fabriquant et fournisseurs se retrouvent autour d un ou plusieurs produits. On est donc loin de la simple procédure de build! A partir de là, rien n empêche d utiliser les appellations «forge» ou «ALM», pour peu que l on garde en tête les six domaines que nous venons de citer. Nous verrons toutefois qu on est souvent loin du compte, les «forges» ayant tendance à se limiter au gestionnaire de source habillé d un bug tracker et les solutions d «ALM» étant très focalisées sur les fonctions de pilotage au point de négliger celles de construction. Critères de l étude Même si les six domaines définis ne sont pas forcément d égale importance, ils constituent donc un point de départ pour évaluer des solutions candidates au titre d «usine de développement». Néanmoins, comme peu de produits sont organisés selon cette vision et qu il convient de rentrer dans le concret, nous nous sommes intéressés à des fonctions d une granularité plus fine pour favoriser une analyse systématique. Voici donc une description des fonctions et caractéristiques que nous avons étudiées : Fonction Généralités & administration Intégration des outils (portail) Description Niveau d intégration des différents outils constituant l usine de développement Niveau d intégration des différents outils constituant l usine de développement Arborescence de projets Création transverse de nouveaux projets Templates de projet Gestion des utilisateurs et de leurs droits Notifications par mail Facilité d installation Efforts et compétences nécessaires pour l installation Le produit sait-il gérer des projets organisés en sous-projets? La création de projet se fait-elle en une seule opération concernant tous les outils? Dispose-t-on de modèles de projets réutilisables? La gestion des utilisateurs et des habilitations est-elle suffisamment aboutie et intégrée? Existe-t-il un système de notification par mail? Est-il paramétrable? 2
Fonction de recherche générale Documentation Multilinguisme Travail collaboratif Trackers personnalisables Tâches arborescentes (sous-tâches) Gestion des références Forums Wiki Messagerie instantanée Gestion de projet Définition de roadmap Fonctions de planification Gestion de la disponibilité des ressources Suivi d avancement Vues graphiques Existe-t-il une fonction de recherche généralisée? Est-elle efficace? Quelle est la qualité de la documentation? Comment couvre-t-elle l usine de développement dans son ensemble? Le produit est-il multilingue? Quel est le niveau de fonctionnalité des trackers? Sont-ils suffisamment paramétrables? Le produit propose-t-il le découpage de tâches en sous-tâches? Le produit gère-t-il des liens entre les éléments des trackers? Les liens entre projets sont-ils supportés? Est-il possible de créer et utiliser des forums? Y a-t-il des fonctions de wiki ou de documentation collaborative au sens large? Trouve-t-on des fonctions de messagerie instantanée? Peut-on définir et consulter une roadmap? Quel est le niveau des fonctions de planification? Le produit gère-t-il les ressources (équipes) et leur disponibilité (calendrier)? Est-il possible et facile de suivre l avancement des travaux? Le produit génère-t-il des vues graphiques? 3
Calendrier Support de Scrum Production de rapports (personnalisables) Référentiel Référentiel de bibliothèques Référentiel de code SVN Référentiel de code (autres solutions, i.e. GIT) Navigation dans le référentiel en mode web Intégration continue Intégration de Maven Pilotage des builds Contrôle Qualité Tests unitaires Tests automatisés d IHM Tests d intégration/montée en charge Audit de code Publication Repository Maven Le produit inclut-il une gestion de calendrier? Le produit est-il adapté à une conduite agile des projets (avec Scrum notamment)? Est-il possible de produire des rapports personnalisés (paramétrés par l utilisateur)? Le produit intègre-t-il un référentiel de bibliothèques (tel que Nexus ou Archiva)? Le produit intègre-t-il le référentiel de code source Subversion? Le produit intègre-t-il un autre système de référentiel de code source (tel que Git)? Y a-t-il une interface web pour accéder au contenu du référentiel de sources? Maven est-il pris en compte voire intégré? Y a-t-il moyen de piloter les builds (via une console d intégration continue)? Le produit prend-t-il en compte l exécution de tests unitaires? Une solution pour les tests automatisés des IHM est-elle proposée? Des solutions pour les tests d intégration et/ou de montée en charge sont-elles proposées? Le produit comprend-il des fonctions d audit de code (qualimétrie)? Le produit propose-t-il la publication dans un référentiel de composants? 4
Dépôt de fichiers Espace documentaire Section blog / news Modes d utilisation En installation autonome En mode infogéré En SAAS Types de projets Ouverture / extensions / adaptations Existe-t-il une zone de dépôt de fichiers organisée? Trouve-t-on un espace documentaire où classer des documents (par sujets et par versions)? Existe-t-il une section de type blog pour notamment communiquer des actualités? Le produit peut-il être installé librement en mode «standalone»? Le produit est-il proposé avec un service d infogérance? Le produit est-il accessible en mode SAAS (rien à installer)? Quelles technologies sont supportées pour les développements? Le produit peut-il cohabiter avec d autres outils? Est-il possible de l adapter, le compléter? Une pondération a été précisée pour relativiser l importance de certains critères par rapport à d autres. Évidemment, la définition de ces critères est toujours discutable, surtout qu elle dépend des contextes d usages, mais c est le lot de toute étude de reposer sur ce genre de choix. Ces critères ont donc été évalués sur chacune des solutions, à partir de la documentation officielle et de tests des fonctionnalités sur le produit en action. Une note de 0 à a été attribuée selon que l on a constaté que la fonction était :! inexistante (0)! embryonnaire ou peu utilisable (1)! partiellement implémentée (2)! opérationnelle pour les cas courants mais avec certaines lacunes (3)! aboutie et efficace (4)! particulièrement bien faite, avec des options complémentaires intéressantes ()
2,2 FusionForge Le premier produit a avoir été étudié est FusionForge, qui est un successeur de GForge, lui-même héritier du fameux SourceForge. C est un produit open source écrit en PHP. Le diagramme suivant résume les notations issues de l étude pour les pans fonctionnels définis : Sans grande surprise, si FusionForge propose une couverture correcte des fonctions d une forge traditionnelle, il ignore les aspects construction, intégration continue, contrôle qualité. Un travail spécifique est donc nécessaire pour le compléter. En contrepartie, il a l avantage de rester générique, ouvert à toute nature de projets. C est un produit qui convient bien pour des usages assez peu ambitieux ou des contextes où les compétences et les budgets permettent la construction d une usine de développement «maison». L étude lui attribue la note moyenne de 2,2 sur. 6
2, Redmine Redmine est un concurrent direct de FusionForge. C est une forge open source basée sur les technologies Ruby. Redmine obtient une note moyenne de 2, et souffre globalement des mêmes lacunes que FusionForge puisqu en l occurrence, ce n est pas une usine de développement telle que nous l avons définie. En tant que forge, c est une solution de qualité, portée par un projet open source actif et réputé mais il y a des efforts à faire pour la transformer en usine logicielle. 7
3 Tuleap Tuleap est un produit qui se définit comme une suite d ALM open source, elle-même issue de la forge Codendi et portée par une société française dédiée. En conséquence, la couverture fonctionnelle est plus complète, plus aboutie et la note moyenne atteint la valeur de 3 : L étude révèle que le produit comporte des fonctions évoluées autour des trackers, avec de bonnes possibilités de personnalisation, du reporting de qualité ainsi qu un bon support des méthodes agiles. Malgré cela, les fonctions d intégration continue y font figure de parent pauvre : Jenkins est inclus mais on doit se débrouiller pour l utiliser et le compléter notamment avec des outils de contrôle qualité et un référentiel de composants. Au bilan, Tuleap est un bon candidat pour l usine de développement mais demande quelques efforts complémentaires pour couvrir le périmètre. 8
3 IBM Rational Collaborative Lifecycle Management L étude s est ensuite attachée à évaluer une suite d ALM de référence, à savoir celle d IBM. La suite en question s organise autour de la solution nommée «Team Concert», elle-même reposant sur «Jazz», une plateforme implémentant le standard OSLC pour l ALM. On pourrait s attendre à ce que ce produit d un autre niveau remplisse haut la main les critères de notre étude mais il n obtient que la note globale de 3 et montre de grandes disparités dans la couverture fonctionnelle : On constate que si le produit comporte des fonctions superbement implémentées, avec une excellente prise en charge du processus projet, il est nécessaire de le compléter pour couvrir tout le périmètre de l usine de développement. IBM propose tout ce qu il faut (Rational Quality Manager, Rational Build Forge, etc) mais il faudra finalement acquérir, installer et paramétrer tous ces produits pour qu ils puissent cohabiter. Leur documentation révèle effectivement qu il s agit d outils distincts, qui réclament un effort d intégration malgré leur capacité à communiquer à travers Jazz et OSLC. Si l ensemble a un fort potentiel, il s agit finalement d une plate-forme complexe qui n est adaptée qu aux grosses structures menant des projets de grande envergure. 9
3,6 Suite Atlassian Atlassian est un acteur majeur du domaine qui nous concerne. Connu pour son tracker JIRA, l éditeur propose les éléments susceptibles de constituer une usine logicielle et notamment une suite en mode SaaS, JIRA Studio. L ensemble obtient la note de 3,6, avec des fonctions de très bonne facture et une bonne couverture du périmètre. On note quelques lacunes, telles que l absence de référentiel de composants et des manques sur les outils de qualimétrie. Malheureusement, à l instar d IBM, la constitution de l usine dans son ensemble passe par la mise en œuvre de nombreux outils distincts et même si Atlassian a son offre SaaS à proposer, elle ne répond que partiellement au besoin d un outil intégré, simple à installer et prendre en main. 10
4 Improve Factory Improve Factory est proposé par la société Open Wide et repose notamment sur Redmine pour les fonctions de forge. Le produit obtient la note de 4 et propose une couverture équilibrée de l ensemble du périmètre. Ce bon résultat tient au fait qu il a été conçu à partir de notre définition de l usine de développement. Ses différents modules couvrent en effet les six grandes activités en se basant sur des outils open source reconnus dans leurs domaines respectifs (Redmine, Maven, Hudson, Sonar, Nexus ). Sa valeur ajoutée réside dans l intégration, avec une procédure d installation simple et unique ainsi que des ponts entre les outils (tels que l assistant unifié de création de projet et le partage des habilitations). Ce bon résultat doit être nuancé par le fait que l usine cible spécifiquement les développements Java mais le produit a le potentiel pour élargir son spectre dans ses futures versions. 11
Bilan Bien que cette étude puisse aider à choisir une solution d usine de développement, elle cherche surtout à mettre en évidence la disparité des produits vis-à-vis du besoin tel que nous l avons défini. On constate en effet que ce qu on appelle les forges et les suites d ALM couvrent rarement la totalité du périmètre et l usine logicielle clé en main reste un produit rare. Les solutions complètes paraissent pourtant bien utiles tant il est difficile et coûteux pour une entreprise d investir dans la construction et l administration d un environnement complet alors même que les bonnes pratiques et les outils existent sur chacune des activités. Le regain d intérêt actuel pour ce sujet permet cependant d espérer des progrès et l arrivée sur le marché de solutions complètes, matures et simples à mettre en œuvre. Frédéric Esnault Directeur Technique Open Wide Technologies Improve Factory est la solution d'usine de développement d'open Wide Technologies. Basée sur des outils reconnus tels que Redmine, Subversion, Maven, Hudson, Sonar, et Nexus, elle fait la part belle à l'open source tout en proposant un niveau d'intégration qui permet d'être opérationnel très rapidement ainsi qu'un accompagnement professionnel. Improve Factory est disponible en 3 offres : bundle installable, serveur infogéré et cloud. A propos d Open Wide Technologies Filiale du groupe Open Wide, un des leaders français du logiciel libre, la société Open Wide Technologies développe et distribue : l usine de développement Improve Factory, une intégration de solutions Open Source pour le pilotage et l intégration continue des projets de développement d applications en Java, la plateforme Improve Foundations, une distribution opérationnelle de composants Open Source dédiée au développement et à l'industrialisation de projets en langage Java. 12
Pour plus d informations http://www.improve-foundations.com Informations presse Open Wide Technologies : technologies@openwide.fr Tél. : 01 42 68 28 14 technologies.openwide.fr www.improve-foundations.com MyNtic-PR : Franck TUPINIER ftupinier@myntic-pr.com Tél. : 09 60 1 68 02 www.myntic-pr.com 13