L’usine logicielle web 2.0

Le web 2.0 a apporté son lot d’opportunités et d’innovations dans la productivité des développements web et il est probablement temps de capitaliser sur ces nouveautés pour les industrialiser au sein d’une usine logicielle (software factory).

L’usine logicielle est sensée couvrir toutes les étapes du développement d’un logiciel de l’analyse du besoin à la mise en production. Toutes ces étapes doivent bien entendu être accomplies de manière cyclique : l’ensemble des développements est découpé en plusieurs « cycles », chacun de ceux-ci accomplissant le parcours « analyse / conception / développement / test / intégration » en deux semaines (c’est la norme).

Du côté des outils, il nous faut en général (dans le désordre, je l’écris comme ça me vient) :
– un système de supervision du projet et de son avancement (ex : Cruisecontrol)
– une plate-forme de communication avec le client (même si le client fait partie de la même entreprise que l’équipe de développement) (ex : Basecamp)
– un système de bug-reporting (ex : Bugzilla)
– un système de versionning (ex : SourceSafe, Subversion, CVS)
– un framework de tests (ex : JUnit, SimpleTest, Selenium)
– un système de contrôle qualité du code (ex : FxCop)
– un outil de modélisation (qui, si possible, génère des classes à partir d’un diagramme) (ex : Visio, Poseidon, Rational Rose)
– un outil/framework facilitant le mapping objet-relationnel (c’est à dire faire le lien entre la base de données et les objets métier) (ex : Hibernate, RubyOnRails)
– des outils pour automatiser différents processus (copie de fichier, build, exécutions de tests…) (ex : Ant, Phing)
– un environnement de développement (ex : Eclipse, Visual Studio)

Les apports de l’ère web 2.0 dans ces domaines sont donc d’après moi :
1- les méthodes de RubyOnRails : c’est à dire patterns Active Record + MVC + pleins de petits trucs qui font le mapping objet relationnel n’est plus un problème (et l’architecture d’une application non plus).
2- la simplicité des tests Selenium qui permet de tester correctement une application web 2.0 pleine de javascript et d’AJAX
3- les bonnes idées de BaseCamp (à noter, son équivalent libre : ActiveCollab) : se focaliser sur la communication car c’est l’essentiel dans un projet.
4- la terrible efficacité du dernier Visual Studio.

Pour ce qui est du reste, pas vraiment de boulversement d’après moi :
– les outils calibrés pour l’industrie viennent du monde Java
– les outils permettant la plus grande productivité viennent de Microsoft
– les idées nouvelles viennent d’ailleurs (et souvent du libre)
– la vraie bonne usine logicielle se fait encore à partir de services/logiciels très divers et ne s’achète pas en pack « tout en un » (façon Visual Studio Team System).

Et pour vous, la killer app de l’usine logicielle web 2.0, c’est quoi ?