Ca y est c'est fini, la seconde édition du symposium DotNetGuru a eu lieu hier (vendredi) à quelques pas de la tour Eiffel. Cette longue journée (9h-19h) a réuni plus de 400 architectes, développeurs techniques, consultants, etc...
Eric Groise (Directeur Technique Adjoint d'Octo Technology et MS Regional Director) débuta la journée en nous présentant une session intitulée "Test Driven Development". Cette session fut l'occasion d'aborder les tests unitaires, le contrôle de qualité et l'usine de développement. Nous avons donc eu droit à des démonstrations de Nunit (outil de test unitaire) combiné avec Clover (outil de test de couverture permettant de vérifier que l'on teste bien tout le code desiré) ainsi que NMock un framework permettant de simuler dynamiquement des objets (pratique pour faire du bouchonnage c'est à dire simuler des objets qui ne sont pas encore disponible parce qu'encore en développement). En ce qui concerne le contrôle de qualité nous avons vu le bien connu FXCop développé par Microsoft et qui permet de vérifier entre autre que le code source vérifie bien les conventions de nommage souhaitées et permet également de définir et tester ses propres règles. Il est à noter que cet outil téléchargeable gratuitement sur GDN sera intégré à Visual Studio 2005 Team System. Nous avons ensuite vu une démonstration d'une usine de développement mise en place dans le cadre d'un projet open source hebergé sur SourceForge et géré par le Speaker. Ce fut très interessant de voir par la pratique comment fonctionne une usine de dév permettant (entre autres) d'extraire des sources de les compiler et de les déployer automatiquement.
Julien Brunet (Noga Systèmes) et Pascal Recchia (VcsTimeless) nous ont ensuite présenté une session traitant de SOA (la programmation orientée services) pour terminer la matinée. Nous avons ainsi vu de façon claire et de manière pratique en quoi consistait la SOA grâce à la migration du PetShop développé par Microsoft.
Formule interessante, la pause de midi fut suivie d'une session intitulée "Débats et démos" composées de deux courtes sessions de 20mn idéales pour reprendre attentivement la journée sans s'endormir sur la digestion 
La première de ces deux "mini-sessions" concernait la Programmation Orientée Aspect (AOP). Ce fut l'occasion de voir concrétement ce qu'est l'AOP via quelques démos utilisant le tisseur d'aspect maison : AspectDNG développé par Thomas Gil (rédacteur DNG) et Jean-Baptiste Evain (formateur .net à SUPINFO et très récemment nommé MVS par Microsoft). Nous avons donc vu quelques applications possibles de l'AOP lors des démos où Thomas Gil mit en place l'internationalisation d'une application alors que cette fonctionnalité n'avait pas été implémentée et ceci sans modifier le code source de l'application. Comment est-ce possible ? C'est simple, AspectDNG permet de modifier des assemblys .net (*.dll, *.exe) en y greffant, par exemple, de nouvelles méthodes. On peut à première vue se demander l'utilité de modifier du code compilé, et penser que modifier du code source est beaucoup plus simple. Mais c'est oublier qu'une partie du code que nous écrivons est transversal à toutes les classes que l'on écrit et que ce code se répète ainsi à foison (c'est notamment le cas des fonctions de log ou de trace). L'idée de l'AOP est donc d'écrire ce code transversal dans une assembly à part et de greffer ensuite cette assembly à une autre assembly contenant la logique métier. L'idée est donc de séparer la logique technique de la logique métier et de greffer les assemblys contenant la logique technique aux assemblys contenant la logique métier. De plus, AspectDNG étant un tisseur statique (le code greffé est insérée directement dans l'assembly) les performances les mêmes que si vous aviez vous même écrit votre code "à la main". Pour plus d'infos sur l'AOP et AspectDNG vous pouvez vous rendre sur les pages suivantes :
http://www.dotnetguru.org/articles/articlets/aspectdng/0.5/Articlet-AspectDNG.html
http://www.dotnetguru.org/articles/dossiers/aop/quid/AOP15.htm
http://www.dotnetguru.org/articles/dossiers/aop/aop.php
http://aspectdng.sourceforge.net/
Thomas Gil a également écrit un e-book consacré l'AOP. Pour plus d'infos : Table des matières, achat
Après cette session sur l'AOP, Jean-Baptiste Evain nous présenta .net sur Linux grâce à UNE (
private joke) implémentation libre du framework .net : Mono. Nous avons ainsi pu voir qu'il était possible de faire tourner le PetShop DNG (application web développée en ASP.net) sur Linux grâce à Mono et à Apache et ceci en 3-tiers et même en n-tiers grâce à un serveur remoting tournant lui aussi sous Mono. Ceci est déjà séduisant mais quand on sait que pour faire fonctionner cette démo un simple déploiement par xcopy vers linux fut nécessaire on ne peut qu'être interessé par cette implémentation de .net offerte par Novell.
Nous avons ensuite continué cette après-midi très riche, avec une session consacrée à l'Unified Process, l' eXtreme Programming et SOA présentée par Jean-Louis Bénard fondateur de BrainSonic. Après avoir vu un sympathique "micro-trottoir" où l'on demandait quels sont les clés de la réussite d'un projet, nous avons vu qu'afin de réduire la passabilité de l'industrie logicielle (mauvaise gestion des projets, projets non aboutis ou insatisfaisants, etc... etc...) des méthodes de développement (souvent qualifiées d'agiles) tel que l'UP ou l'XP apparaissent et font souvent débat. Ces méthodes proposent un ensemble de règles qui dans un monde idéal permettrait d'améliorer l'industrialisation du génie logiciel mais qui dans le monde réél ne peuvent s'appliquer à la lettre et doivent être adaptées et s'appliquer en fonction du contexte et des besoins.
Fabrice Marguerie et Didier Girard nous ont ensuite présenté l'IoC (Inversion of Control) et les conteneurs légers. Nous avons vu comment Improve utilisait cette technique avec succès depuis quelques années dans ses projets. Pour plus d'informations sur l'IoC vous pouvez lire cet article de Sami Jaber (Webmaster de DotNetGuru).
Marc Gardette et Guillaume Renaud ont conclut la journée en nous présentant la vision et la stratégie de Microsoft autour de la modélisation et plus généralement de l'industrialisation du logiciel. Ils nous ont montré tout cela très concrètement en présentant certaines fonctionnalités de Visual Studio 2005 Team System. Au menu, gestion de projet, modélisation, unit testing, test coverage, load testing, etc.. etc... etc... tout cela intégré dans Visual Studio. Bref une nouvelle dimension est apportée à Visual Studio qui ne sera plus "un simple" environnement de développement mais une véritable suite intégrée permettant de gérer l'ensemble du cycle de vie du logiciel.
En conclusion, ce fut une journée très riche techniquement (un peu éprouvante
) et qui donna matière à réfléchir...
PS :Il est à noter que les sessions de symposium devraient être prochainement disponibles sous forme de webcast sur Brainsonic