Posts Tagged ‘Microsoft’

Techdays 2011 : Ce qu’il faut retenir

Friday, February 11th, 2011

La messe des développeurs .NET et des acteurs de l’écosystème Microsoft a clôturée ses portes aujourd’hui au Palais des Congrès de Paris. Une audience estimée à plus de 12000 participants fait de cet évènement, l’évènement IT majeur en Europe, comme aime à le présenter Microsoft.

Comme chaque année, les Techdays possèdent leur thématique phare. Cette année fut sans conteste celle du Cloud. Les deux premières plénières ont d’ailleurs fait la part belle au Cloud, sans compter la pléthore de sessions qui y était dédiées (pas moins de 12 sessions ayant pour sujet Azure). Mais ce n’était bien évidemment pas le seul produit mis en valeur, (more…)

Ken Schwaber à Paris, et la passion renaît

Wednesday, January 27th, 2010


Issy-les-Moulineaux, dans les nouveaux locaux de Microsoft.

Une réunion du French SCRUM User Group

Le French SCRUM User Group organisait hier soir une conférence avec Ken Schwaber.

C’est donc Luc Legardeur, fondateur du SUG français, qui a débuté la séance en remerciant Microsoft et le co-créateur de Scrum, Ken Schawber d’être passé. Il a annoncé que Ken va présenter son nouveau site Scrum.org et répondra aux questions de l’assistance, le tout suivi d’un cocktail. Le programme du prochain trimestre du Scrum User Group a été annoncé:

  • Rencontre avec Scott Ambler mi-mars. Il est lead architect chez IBM. IBM est devenu il y a peu sponsor du SUG.
  • Soirée anniversaire le 30 mars chez Microsoft à nouveau.

La vision Microsoft sur l’agilité

C’est ensuite Xavier Warzee de Microsoft France qui a pris la parole pour tout d’abord nous rassurer : Microsoft ne fait pas une OPA sur le SUG, c’est simplement l’opportunité du passage de Ken à l’occasion d’une formation en France. Xavier a poursuivi sur un ton franc : pourquoi aujourd’hui Microsoft s’intéresse à l’agilité ? La société essaye de structurer et faciliter les efforts dans le monde de l’agilité. Ils commencent a avoir une offre qui se formalise un peu plus au travers de leur outil Visual Studio Team Foundation Server qui supportera directement SCRUM. Mais il s’agit pour Microsoft d’être pertinent et d’apporter de vraies solutions et, d’après Xavier, pas simplement de “préserver leur chiffre d’affaires”. Il annonce travailler de façon très proche avec Agile France et Laurent Bossavit qui était présent ce soir. Cela explique que Microsoft soit sponsor de plusieurs conférences agiles. Xavier revendique aussi des partenaires et un labo qui essayent de fournir des solutions, des sessions, des ateliers qui permettent d’adopter les technologies soutenant l’agilité. Microsoft, Scrum.org et différentes sociétés de formation se sont donc associées. Selon Xavier, le piège de SCRUM est de penser que les pratiques se suffisent à elles-mêmes quelque soit le cas de figure, le projet. Or, il convient de ne pas ignorer tout l’acquis en ingénierie logiciel, en pratiques de test et d’intégration continue. L’idée est de rechercher avec les outils Microsoft les meilleures pratiques et technologies soutenant SCRUM. Par exemple, vu la taille des itérations dans un projet SCRUM, le temps ne peut pas être perdu en construction du logiciel ou en tests.

Présentation de scrum.org par Ken Schwaber

Xavier a ensuite passé la parole à l’invité du soir : Ken Schawber.
Après un “bonjour, comment allez-vous ?”, nous avons épuisé tous les mots de vocabulaire francophone de Ken. Il introduit son discours : s’il y a quelque chose que vous n’aimez pas dans SCRUM, c’est à lui que vous devez vous adresser car il en est à l’origine ! Il sort d’une formation de deux jours pour Microsoft dans laquelle il a formé des personnes en profondeur à SCRUM. En outre, il s’est excusé de sa tenue vestimentaire. En s’habillant avec un maillot des “All Backs” ce soir, il ignorait que la France avait une équipe nationale qui pouvait rivaliser avec les blacks ! De toute façon, les néo-zélandais lui ont déjà dit que, visiblement, il ne connaissait rien au rugby !

Ensuite, il a présenté Scrum.org. Moins ambitieux que la ScrumAlliance, c’est une organisation dont le but n’est pas de transformer entièrement la façon dont les entreprises travaillent mais “seulement” d’améliorer notre monde du développement logiciel professionnel.

A l’origine, ce qui a plu à Ken dans le développement logiciel partait d’une proposition simple : “voilà une machine vierge, faites comme vous voulez, mais faites que ça marche !”. Mais depuis, selon lui, nous nous sommes perdus en chemin : nous avons introduit le cycle de développement en cascade et nous nous sommes laissés séduire par le style de management “Command & Control”. SCRUM est donc là selon lui pour redonner l’envie aux développeurs de se lever chaque matin pour aller satisfaire des utilisateurs auxquels ils ont manqué tellement ils adorent les merveilleux logiciels qu’ils produisent ! SCRUM devrait contribuer à rendre la profession relativement plus envieuse.

Un guide, des certifications en-ligne et des formations

Scrum.org s’inscrit dans cette volonté. Ce site propose le guide définitif de ce qu’est SCRUM. Ce guide de 16 pages montre que SCRUM est un framework simple. Il garantit l’intégrité de la définition de SCRUM par ses pères après qu’on ait tant cherché à la mélanger à d’autres méthodes (Kanban, Lean, SixSigma, etc. – ce que Ken ne déplore pas).

Scrum.org s’associe donc à des organismes partenaires afin de mettre en œuvre des formations SCRUM et des certifications. Ken nous assure qu’on peut échouer le passage de cette certification, ce n’est pas qu’une simple formalité ! Il existe aussi un questionnaire en ligne (gratuit jusqu’à mi-2010) pour s’auto-évaluer mais qui permet aussi au staff de Scrum.org d’obtenir du feedback sur SCRUM lui-même. Il donne alors quelques exemples de questions qui lui donnent l’occasion de créer un vote dans l’assemblée et de vous transmettre la première citation mémorable de la soirée :

“Being in the majority does not always mean you are right, as the waterfall as proven.”
“Être dans la majorité n’implique pas forcément avoir raison, le cycle de développement en cascade peut en attester.”

Concernant l’adoption de SCRUM, il pense que de nombreuses sociétés tendent à trop préparer les contextes des projets SCRUM. Ken leur conseillerai plutôt de se lancer plus vite. Les rétrospectives sont là pour commencer à s’améliorer dès le début ! Ken explique que le succès de SCRUM vient surtout de l’envie de sortir de la médiocrité du cycle en cascade. Mais, contrairement à ce qu’on pourrait penser et conformément à sa longue expérience, la force du changement qui pourrait être générée par les échecs répétés du cycle en cascade n’est presque jamais une suffisante pour arriver à mieux faire en adoptant SCRUM, ceci étant vérifié dans l’attitude des managers comme des ingénieurs. Il a souvent constaté que cette habitude de médiocrité dans les organisations à tendance à augmenter l’effet “ScrumBut” (le mot est malicieux) : “Nous faisons du SCRUM, MAIS pas … <n’importe quelle pratique qui les dérange, rend leur médiocrité visible, atteste de leur non efficience, etc.>…”. Après ce passage plutôt sombre dans son discours, une proposition constructive nous attend.

Pour améliorer cette situation, il est donc en train de monter des formations complètes pour des équipes entières dans lesquelles on choisit une pile technologique (open source java, Microsoft VisualStudio par exemple) et on est formé à SCRUM, aux techniques d’ingénierie agiles et aux outils ! Ce sont des formations qui sont donc plus complètes mais aussi plus exigeantes.

Les questions de l’assistance

C’est sur cette annonce que sa présentation s’arrête pour faire place aux questions de l’assistance.

  1. Traduction des cours SCRUM ?
    “Work-in-progress” !
  2. SCRUM dans de grand projets ?
    SCRUM est très adapté aux petites équipes. Il y a des livres qui traitent de ce sujet, en particulier le sien: “The Enterprise and Scrum”, Microsoft Press – 2007. Et hop, nouvelle citation à retenir :

    “And, just in case you are tempted, waterfall is NOT an alternative [to scale agile for large teams].”
    “Et, juste au cas où vous seriez tenté, le cycle en cascade n’est PAS une alternative [au déploiement de l'agilité à des équipes plus grandes].”

  3. Critique : Les certifications sont individuelles alors que SCRUM fait l’apologie du travail en équipe.
    Dans le cours qu’il est en train de monter, la note finale se décompose en un score donné par les coéquipiers de formation et un score individuel.
    C’est bien évidemment une formation plus dure à monter que la certification SCRUM classique car elle nécessite des formateurs compétents sur la méthode et la technique.
  4. Votre expérience relevant le plus grand défi en SCRUM ?
    DoubleClick. Le logiciel n’était pas bon du tout, peu de connaissance partagée. Une implication trop forte des managers dans l’allocation des tâches. Le défi était donc d’intégrer des nouveautés en parallèle sur le logiciel. La meilleure nouvelle pour eux fut de se faire racheter par Google et ne plus jamais entendre parler de développement logiciel, ils avaient sortit “notre” Champagne pour fêter ça…
  5. Remarque : SCRUM apporte essentiellement un isolement pour l’équipe de développement pour commencer à faire les choses bien.
  6. Remarque : Le rythme de livraison dans SCRUM peut être comparé à la régulation de la température dans une pièce. Il ne sert à rien de ré-évaluer la température trop souvent pour ajuster les radiateurs. Mais il n’est pas non plus efficace de ne le faire qu’une fois dans la journée car la température a peu de chances d’être constante au cours de la journée.
  7. SCRUM ne s’applique-t-il que pour les technologies objet moderne ?
    SCRUM peut même nous aider dans notre vie quotidienne : pour nourrir un enfant par exemple. Votre enfant est votre client. Vous tentez de lui faire avaler son repas, il refuse toujours d’avaler une seule cuillère sous la contrainte. Le lendemain, retentez l’expérience en lui demandant combien de cuillères il veut manger ce soir ? Troublé par la question, il répondra “une”, vous lui donnez alors une cuillère et il vous répondra de lui-même, “j’en voudrais deux maintenant” parce que c’est lui qui l’aura choisi.
  8. Vivre dans une organisation avec un cycle en cascade ?
    Ken raconte comment on peut commencer à faire du SCRUM sans jamais prononcer le mot. La méthode ne propose rien d’autre que de se mettre tous ensemble, construire quelque-chose, tout en y trouvant du plaisir.
  9. Gérer une équipe infrastructure avec SCRUM ?
    Rendre visibles les problèmes de ce type (délais trop long pour commander un serveur, ouvrir un port, avoir accès à des métriques) constitue déjà une partie de la solution.
  10. SCRUM + CMMI, vous adhérez ?
    SCRUM vous mène directement à un niveau CMMI niveau 3, il adhère !
  11. A propos de l’applicabilité de SCRUM à d’autres domaines que le développement logiciel ?
    Ken voit bien SCRUM s’inscrire dans un mouvement sociétal plus global. Il défend une vision d’une société post industrielle mature dans laquelle le management doit s’adapter en passant du paradigme “Command & Control” vers une façon différente diriger des équipes : le “servant leadership” c’est-à-dire une position beaucoup plus humble du manager qui se met au service de ses collègues en tant que facilitateur. Parce que c’est simplement le moyen le plus sain et le moins stressant pour tous de mener des équipes à accomplir les objectifs dans des projets de plus en plus complexes. Mais cela représente évidemment une révolution culturelle à accomplir. En outre, cela court circuite le pouvoir, l’autorité ou le prestige et réclame de la transparence pour que les collègues se fassent confiance.
  12. Quel est le secret de Ken pour restaurer la passion ?
    Vendre un produit peut aider. Le succès est toujours très vendeur. Par exemple, on peut rétrospectivement analyser pourquoi Toyota rencontre un succès plus important relativement à la faillite des sociétés américaines de production automobile.

Conclusion


La session a été conclue par un cocktail très sympathique au cours duquel les conversations ont pu se prolonger.

D’après moi, Ken a réussi à délivrer ce que je qualifierais de “message d’amour”. On sent réellement qu’il aime son métier et qu’il n’a pas inventé SCRUM par hasard. Sa volonté de nous faire aimer (ou aimer à nouveau) notre métier est palpable. Sentir son envie d’apporter une contribution positive à notre industrie du développement logiciel m’a fait plaisir ce soir-là.

Et vous, qu’allez-vous faire pour SCRUM demain ?

Programmation par contrat avec .Net

Monday, May 4th, 2009

Ce billet souhaite inaugurer le début d’une série de billets pour mettre en lumière l’ensemble des technologies gravitant autour de la plateforme .Net de Microsoft, l’intérêt que porte Valtech à cette plateforme ainsi que le savoir faire de la communauté .Net au sein de Valtech.

Pour ce premier billet, nous allons nous attarder sur un projet lancé par Microsoft et voué à rejoindre la version 4 du Framework .Net. Cet outil est actuellement déjà disponible, téléchargeable et utilisable pour peu que l’on dispose de la version 2008 de Visual Studio. Ce projet nommé « Code Contracts » consiste, comme son nom l’indique plutôt bien, à la mise en œuvre pour la plateforme .net (et donc pour l’ensemble des langages de la plateforme) du concept de programmation par contrat.

Le concept est relativement simple et « Code Contract » permet de définir au niveau d’une méthode des pré-conditions (instruction Contract.Requires), des post-conditions (instruction Contract.Ensures) et des objets invariants (instruction Contract.Invariant) c’est-à-dire qu’un objet doit remplir une condition pendant tout le temps d’un traitement (de façon à ce que des variables ne prennent pas des valeurs inattendues). Lorsqu’un des contrats n’est pas respecté, une exception est levée du type ContractException indiquant la condition non respectée.

Une telle approche doit permettre d’établir un contrat fort avec une méthode. Il n’est alors possible de l’appeler qu’avec des données valides c’est-à-dire vérifiant les pré-conditions sous peine de lever une exception. Les erreurs de traitements ou les bugs sont plus rapidement détectés grâce aux différents types de contrat disponibles.

Un autre avantage de ce framework est de pouvoir vérifier certains contrats de façon statique à la compilation et de pouvoir ainsi signaler très tôt des conditions non vérifiées au développeur et ceci à travers des warnings.

Parmi les autres objectifs fixés du projet, on notera également la possibilité d’utiliser ces contrats pour générer automatiquement des tests unitaires plus pertinents en évitant les valeurs ne vérifiant pas les pré-conditions ou en utilisant les pré-conditions pour générer des tests avec des valeurs limites.

On peut noter également que cette démarche simplifie l’écriture de tests unitaires car certains contrôles sont maintenant faits par contrat à l’intérieur de la méthode. Les tests unitaires se bornant alors à appeler la méthode avec plusieurs jeux de données et à vérifier que la méthode ne lève pas d’exception de type ContractException. La programmation par contrat n’ôte pas l’absolue nécessité d’écrire des tests unitaires mais permet d’exprimer dans le code des conditions qui auparavant ne pouvaient être que « vérifiées » par l’utilisation de tests unitaires.

« Code Contracts » devrait également pouvoir à terme servir à générer de la documentation plus pertinente en affichant les pré-conditions et les post-conditions dans la documentation des méthodes.

Quelques informations sur l’installation et la configuration.

L’installation du package téléchargé (cf en bas de cet article) intègre directement les fonctionnalités dans Visual Studio.

L’activation des fonctionnalités se fait dans les propriétés du projet, où un onglet a été ajouté (cf image ci-dessous). On peut alors activer les contrôles à la compilation et/ou ceux à l’exécution.

Pour pouvoir utiliser l’API fournie, il convient d’ajouter une référence dans le projet à l’assembly « Microsoft.Contract ».

Voici donc des exemples concrets de code source.

Toutes les méthodes pour définir des contrats sont des méthodes statiques définies dans la classe Contract présente dans le namespace System.Diagnostics .Contracts.

  • Définition de pré-conditions :
Contract.Requires( x ! = null );
 
Contract.Requires( x > y );
  • Définition de post-conditions :

normale :

Contract.Ensures( this .F > 0 );

sur une levée d’exception (avec T le type de l’exception) :

Contract.EnsuresOnThrow<T>( this.F > 0 );

sur la valeur de retour (avec T qui est le type de retour de la fonction) :

Contract.Ensures(0 < Contract.Result<T>());
  • Définition d’un objet invariant (contrat vérifié tout au long du traitement) :
Contract. Invariant ( this .y >= 0 );
Contract. Invariant ( this .x > this.y );
  • Définition d’une assertion (le contrat doit être vérifié à un endroit précis du traitement) :
Contract.Assert( this .x == 3, "la valeur devrait être 3" );

Voici donc un exemple un peu plus complet :

public class CodeContract
{
  public static void Main(string[] arg)
  {
    CodeContract cc = new CodeContract();
    cc.Test1();
    cc.Test2();
  }
  public void Test1()
  {
    DivideUnderZero(5, 3);
  }
  public void Test2()
  {
    DivideUnderZero(5, 0);
    //Warning à la compilation (problème détecté de façon statique)
    //contracts: requires is false: denominateur doit être different de 0
  }
  public float DivideUnderZero(int num, int den)
  {
    Contract.Requires(den != 0, "denominateur doit être different de 0");
    Contract.Requires(num > den);
    Contract.Ensures(0 < Contract.Result<System.Single>());
 
    //Warning à la compilation (problème potentiel détecté mais résolu lors de l'execution)
    //contracts: ensures unproven
    return num / den;
  }
}

Pour conclure, je pense que l’introduction de la programmation par contrat introduit dans le framework .Net par une approche très facile à mettre en œuvre aide le développeur à détecter rapidement ces erreurs lors de l’écriture du « bon code ». Ceci convient tout à fait à l’écriture de code métier dans lequel les erreurs peuvent coûter cher et être difficilement détectables. La programmation par contrat est donc un nouvel outil dans l’escarcelle du développeur.

D’aucun pourrait reprocher à cette approche le fait d’avoir un code moins ouvert à l’évolution. Auquel cas je répondrais que toute évolution du code nécessite de toute façon la modification des tests unitaires et donc que la modification des contrats fait aussi dans cette logique d’évolution de façon à écrire et garantir le bon fonctionnement du code écrit.

Sources :
Manuel Utilisateur
Site Web
Téléchargement de Code Contract:

Cours du soir: le Cloud Computing, mardi 16 décembre

Monday, December 15th, 2008

Après la soirée sur Groovy (soirée passionnante, merci Guillaume!), notre prochain évènement interne a lieu… demain mardi!
Il s’agit d’une présentation sur le Cloud Computing, proposée par Pierre Couzy, Architecte Evangeliste chez Microsoft.

Comme toujours, vous pouvez vous joindre à nous, même si vous n’êtes pas consultant Valtech. Pour ce faire, utilisez le formulaire ci-dessous. Un email de confirmation avec les instructions pour vous rendre dans nos bureaux vous sera envoyé.

Sadek discute avec Simon Peyton Jones

Friday, September 19th, 2008

Sadek Drobi, un de nos experts .NET (mais il s’intéresse à de nombreux autres sujets!), est depuis longtemps un des responsables de la section Architecture du site InfoQ. Dans ce cadre, il a interviewé à QCon London 2008, Simon Peyton Jones, un expert des langages fonctionnels.

Si vous voulez en apprendre plus, venez à Valtech Days 2008 en octobre. Sadek sera présent; il présente deux sujets: Linq et l’utilisabilité des interfaces graphiques.

Découvrir Windows PowerShell

Tuesday, April 29th, 2008


Petit sondage :
Qui travaille sous Microsoft Windows ?
– tout le monde ?
Qui a besoin de cmd.exe ?
– tout le monde (maven, scripting, etc.) ?
Qui trouve l’invite de commande facile à utiliser ?
personne ?
C’est par ce rapide sondage qu’a commencé la démonstration de Cédric Rup sur la nouvelle console de Microsoft : le PowerShell.

En effet, en novembre 2006, Microsoft ré … (suite)

2018, l’odyssée de l’IT

Wednesday, April 16th, 2008

Article plus qu’intéressant (même s’il est long), sur le futur de l’informatique et de notre métier.
Bien que le titre n’est rien à voir avec le sujet, cet article est “fabuleux”.

De l’entreprise virtuelle agile

Microsoft collabore avec la Fondation Eclipse

Tuesday, April 8th, 2008

Microsoft a annoncé le 19 mars dernier le démarrage d’une collaboration entre Microsoft et la fondation Eclipse.
Annonce faite par le biais d’un post de Sami Ramji, leader de la communauté Open Source Microsoft, en direct du EclipseCon 08.
Cette collaboration porte d’abord sur une meilleur intégration de SWT (Toolkit graphique d’Eclipse) avec WPF (Windows Presentation Foundation)

Post Sami Ramji

Réflexions sur les DSL Tools, démonstration d’un designer MVP

Monday, March 5th, 2007

Depuis quelques temps, je tombe fréquemment sur des articles au sujet des DSL de Microsoft. Je me demande: « pourquoi un autre langage de modélisation ? UML ne remplit-il pas déjà cette fonction ? Et quand bien même, non seulement je ne crois pas en une modélisation front-end (une modélisation exhaustive en début de projet), lire la suite sur le blog de Julien Delhomme…

Etes-vous un architecte logiciel ?

Wednesday, April 5th, 2006
Premier test : Comprendre cette phrase issue du dernier numéro (6) de The Architect Journal :
"Discover the challenges faced by asymmetric forms of governance and an approach to working that focuses particularly on the way a business understands the risks that arise from how it relates to exogenous geometries, in addition to the more familiar risks associated with managing its endogenous geometry." (page 2)