jeudi, juillet 13

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 ?

6 commentaires:

Anonyme a dit…

Excellente synthese...

Est-ce que tu pourrais me donner une URL pour CruiseControl ?

Bonne continuation...

JB Boisseau a dit…

http://cruisecontrol.sourceforge.net/
... tout simplement ! N'étant pas moi-même un utilisateur de CruiseControl, je n'ai pas de ressource plus pertinente à te fournir.

Anonyme a dit…

Je te rejoindrai sur l'efficacité des outils de développement Microsoft, auxquels j'ajouterai le couple C# et .Net qui m'avait sacrément impressionné d'un point de vue du gain de productivité. En effet, 100 % des développeurs C++/Win32 et C++/MFC que j'ai encadrés ont gagné du temps de développement dès leur premier projet C#/.Net, apprentissage du langage et framework sur le tas y compris et ce, même sur les projets d'une semaine. Je n'ai cependant pas pu évaluer le gain de productivité sur des développements web.

En revanche, un gros bémol pour Visual SourceSafe : même complété par des outils tiers (tels SourceOffSite permettant une collaboration à distance), il s'avère désormais dépassé, notamment sur des projets de moyenne à grande envergure ou sur des bases de code sensées être réutilisées sur des mois ou des années. On lui préférera de loin un outil tel que Perforce (une licence gratuite peut être délivrée par l'éditeur pour les projets open source). Le gain en efficacité vient notamment d'une excellente gestion des branches d'un même code source, permettant à des développeurs de travailler efficacement sur des versions divergeantes ou convergeantes d'un même code source. A défaut, on pourrait s'orienter vers une solution à base de Subversion. Cela étant, quel que soit l'outil de versioning, l'excellentissime Araxis Merge paraît indispensable pour une productivité optimale en matière de fusions de code source.

Pour ce qui est de Basecamp ou des autres outils 37signals, j'avoue les voir comme des solutions plutôt légères (simplistes, voire ridicules ?) en matière de gestion de projets, enfin du moins pour la partie communication avec le client. Ici, l'e-mail semble roi. Eventuellement, une liste de diffusion (?), un forum (Invision Power Board), un wiki (Dokuwiki) ou un blog (WordPress) peuvent compléter cette communication. D'autres préféreront des solutions à base de Microsoft Exchange, en complément des Microsoft Office, Vision et autres Project. Cela étant, bien peu de monde pense à investir le temps d'installation et d'administration à ces solutions, d'où l'importance de l'e-mail, permettant de garder une trace des solutions proposées et adoptées sans nécessiter de formation additionnelle, que ce soit de la part de l'équipe de développement ou des clients.

Anonyme a dit…

Je mettrais un bémol sur l'efficacité des outils Microsoft, car il est vrai que la productivité est améliorée sur des projets d'application "classique" avec le Framework .Net.
Cependant il est en tout autre en ce qui concerne le Web.
Le Web et le virage actuel qualifié 2.0 (qui mérite pas toujours cette appellation, mais là je m'égare) est aussi le virage de la normalisation et de l'utilisation de standard sur le web (W3C). Hors Microsoft est loin, très loin, de pourvoir valider quelques pages que ce soit qui sortent "des usines" Visual .Net .

Donc je dirais (ce qui n'est que mon avis personnel), Microsoft en application résidente classique oui, en ce qui concerne le web non.

PS encore merci pour toute les infos et points de vus de ce blog très instructif et ce même lorsque l'on a une vision un peu différentes du Web2.0.
Encore bravo

JB Boisseau a dit…

Concernant BaseCamp : la solution en soit est assez légère en effet, mais c'est justement sa légereté et ses choix (se focaliser sur quelques éléments clés de la relation client durant un projet) qui sont intéressants.

Concernant l'efficacité des outils Microsoft sur un projet web : il faut avoir testé Visual Studio 2005 avec les composants ATLAS pour mesurer le chemin considérable parcouru par Microsoft sur ce point. Depuis cette version, la conformité XHTML n'est plus un problème non plus d'ailleurs.

Mac a dit…

Pour moi, le terme "Usine Logicielle" apporte de la confusion : en tant que traduction de "Software Factory", une série d'outils, aussi utiles soient-ils, ne peut pas être considéré comme une "Usine Logicielle". A moins de considérer que cette notion est évolutive, et qu'au début des années 80, un compilateur C et un make constituaient déjà une usine.

Les outils, librairies et méthodes associées constituent plutôt je pense une "plateforme de développement", et Microsoft fournit effectivement une excellente plateforme de développment pour le Web (entre autres), très productive dans de nombreux cas, et extensible (FxCop, NUnit, MSBuild, CruiseControl .NET...).

Une usine logicielle demande la définition d'une ligne de produit, d'un schéma, de DSLs... Plus d'informations sur http://www.softwarefactories.com/