Usine de développement : étude comparative

Pour compléter mon premier article sur l’usine de développement, 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. Ce second article est en effet 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.

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 :

FonctionDescription
Généralités & administration
Intégration des outils (portail)
Niveau d’intégration des différents outils constituant l’usine de développement
Facilité d’installationEfforts et compétences nécessaires pour l’installation
Arborescence de projetsLe produit sait-il gérer des projets organisés en sous-projets ?
Création transverse de nouveaux projetsLa création de projet se fait-elle en une seule opération concernant tous les outils ?
Templates de projetDispose-t-on de modèles de projets réutilisables ?
Gestion des utilisateurs et de leurs droitsLa gestion des utilisateurs et des habilitations est-elle suffisamment aboutie et intégrée ?
Notifications par mailExiste-t-il un système de notification par mail ? Est-il paramétrable ?
Fonction de recherche généraleExiste-t-il une fonction de recherche généralisée ? Est-elle efficace ?
DocumentationQuel est la qualité de la documentation ? Comment couvre-t-elle l’usine de développement dans son ensemble ?
MultilinguismeLe produit est-il multilingue ?
Travail collaboratif
Trackers personnalisablesQuel est le niveau de fonctionnalité des trackers ? Sont-ils suffisamment paramétrables ?
Tâches arborescentes (sous-tâches)Le produit propose-t-il le découpage de tâches en sous-tâches ?
Gestion des référencesLe produit gère-t-il des liens entre les éléments des trackers ? Les liens entre projets sont-ils supportés ?
ForumsEst-il possible de créer et utiliser des forums ?
WikiY a-t-il des fonctions de wiki ou de documentation collaborative au sens large ?
Messagerie instantanéeTrouve-t-on des fonctions de messagerie instantanée ?
Gestion de projet
Définition de roadmapPeut-on définir et consulter une roadmap ?
Fonctions de planificationQuel est le niveau des fonctions de planification ?
Gestion de la disponibilité des ressourcesLe produit gère-t-il les ressources (équipes) et leur disponibilité (calendrier) ?
Suivi d’avancementEst-il possible et facile de suivre l’avancement des travaux ?
Vues graphiquesLe produit génère-t-il des vues graphiques ?
CalendrierLe produit inclut-il une gestion de calendrier ?
Support de ScrumLe produit est-il adapté à une conduite agile des projets (avec Scrum notamment) ?
Production de rapports (personnalisables)Est-il possible de produire des rapports personnalisés (paramétrés par l’utilisateur) ?
Référentiels
Référentiel de bibliothèquesLe produit intègre-t-il un référentiel de bibliothèques (tel que Nexus ou Archiva) ?
Référentiel de code SVNLe produit intègre-t-il le référentiel de code source Subversion ?
Référentiel de code (autres solutions, i.e. GIT)Le produit intègre-t-il un autre système de référentiel de code source (tel que Git) ?
Navigation dans le référentiel en mode webY a-t-il une interface web pour accéder au contenu du référentiel de sources ?
Intégration continue
Intégration de MavenMaven est-il pris en compte voire intégré ?
Pilotage des buildsY a-t-il moyen de piloter les builds (via une console d’intégration continue) ?
Contrôle qualité
Tests unitairesLe produit prend-t-il en compte l’exécution de tests unitaires ?
Tests automatisés d’IHMUne solution pour les tests automatisés des IHM est-elle proposée ?
Tests d’intégration/montée en chargeDes solutions pour les tests d’intégration et/ou de montée en charge sont-elles proposées ?
Audit de codeLe produit comprend-il des fonctions d’audit de code (qualimétrie) ?
Publication
Repository MavenLe produit propose-t-il la publication dans un référentiel de composants ?
Dépôt de fichiersExiste-t-il une zone de dépôt de fichiers organisée ?
Espace documentaireTrouve-t-on un espace documentaire où classer des documents (par sujets et par versions) ?
Section blog / newsExiste-t-il une section de type blog pour notamment communiquer des actualités ?
Modes d’utilisation
En installation autonomeLe produit peut-il être installé librement en mode « standalone »?
En mode infogéréLe produit est-il proposé avec un service d’infogérance ?
En SAASLe produit est-il accessible en mode SAAS (rien à installer) ?
Types de projetsQuelles technologies sont supportées pour les développements ?
Ouverture / extensions / adaptationsLe 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 à 5 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 (5)

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 5.

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,5 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.

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.

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 plate-forme 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.

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.

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.

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.

A propos

Directeur Technique d'Open Wide Technologies
Analyse et veille technologique , , , , ,

Les commentaires sont fermés