Automatisation et usine logicielle

Les bienfaits de l’automatisation

Un aspect critique de la réalisation d’une application est la maîtrise du cycle de développement. En particulier, des tâches telle que la compilation des fichiers sources, l’exécution de tests, la génération de code ou de livrables (javadoc, war, etc.) sont des actions fréquentes voire quotidiennes pour les développeurs. L’exécution manuelle de ces tâches présente des risques de diminution de la productivité : mauvaise manipulation, mauvaises conditions d’exécution, mauvaise configuration de l’environnement, temps de latence important entre deux actions. C’est bien connu : l’erreur est humaine.

Pour prévenir de tels risques, il existe une solution qui a depuis longtemps fait ses preuves : l’automatisation. L’automatisation peut être défini comme un ensemble de procédés qui rendent l’exécution d’une tâche automatique, sans intervention de l’homme.

L’automatisation permet de :

  • augmenter la vélocité de développement (productivité) en réduisant les risques cités ci-dessus
  • contrôler / améliorer la qualité grâce notamment à des outils de couverture de tests (Cobertura) ou de contrôle du code (PMD)
  • améliorer les conditions des développeurs qui n’ont plus à se préoccuper de certaines tâches rébarbatives (supprimer des répertoires avant chaque compilation)

Dans le cadre d’un projet informatique, l’automatisation prend la forme d’un programme appelé usine logicielle. Les tâches gérées par l’usine logicielle sont généralement :

  • compilation
  • exécution des tests
  • génération de livrables
  • gestion des versions des bibliothèques / composants utilisés
  • création de tags / versionning des sources
  • exécution d’outils de contrôle de la qualité du code
  • gestion du déploiement et de la mise en production

Voici une liste d’outils d’automatisation des tâches :

  • Makefile
  • Ant
  • Maven

Idées reçues et contre-arguments

1) Une usine logicielle est coûteuse à mettre en place et à entretenir

Sur un projet de plusieurs mois (disons 9) composé d’une équipe moyenne de 4 développeurs, mon expérience me pousse à dire que le temps total consacré à la réalisation et au maintient d’une usine logicielle avoisine les 20 jours/homme. Considérons seulement la tâche de compilation. Considérons que le ratio minimal compilation automatisée / compilation manuelle est de l’ordre de 1 / 3 (en mn). Considérons qu’en moyenne un développeur compile 30 fois par jour (environ 1 fois toutes les dix minutes par journée de 8 heures ouvrées).  Cela nous donne 30 mn de compilation automatisée contre 1h30 de compilation manuelle pour un développeur par jour, soit 2 heures par jour (comp. auto)/ 6 heures (comp. manuelle). On multiplie par le temps du projet, soit 20 jours ouvrés pendant 9 mois. On obtient finalement (en prenant en compte le temps de mise en place de l’usine logicielle) :

  • comp. auto = 540 heures
  • comp. manuelle = 1080 heures

Tout juste le double ! Et il ne s’agit là que de compilation, même pas de déploiement ou de création de livrables. CQFD.

Sans compter qu’une même usine logicielle peut être reprise tout ou partie pour d’autres projets.

2) Les outils comme Ant ou Maven basés sur Java sont plus lents que des outils fournis par Eclipse qui réalise les mêmes traitements à la volée

Pour rappel, Eclipse est lui-même basé sur Java. Une fois les temps d’initialisation passés, les temps d’exécution dans l’une ou l’autre méthode sont sensiblement les mêmes.

De plus rien n’empêche d’utiliser Eclipse en plus de l’usine logicielle. C’est même selon moi la meilleure façon de faire dans le cas de projets « indépendants » (qui ne nécessitent pas la compilation préalables de plusieurs librairies, elles-mêmes nécessitant d’autres compilation de librairies).

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :