Note : Ce billet fait partie d’une
série plus complète
sur les nouveautés apportées par TFS 11.
Le projet de l’équipe les barbus démarre et les développeurs commencent à travailler. Dans Visual Studio, le nouveau Team Explorer, permet d’accéder à son travail via My Work :

Via cette interface, on accède au tableau de bord quotidien du développeur. Celui-ci est filtré pour chacun en n’affichant que ce qui le concerne directement.

Lorsque je désire commencer à travailler sur une tâche, je l’ajoute au travail en cours de réalisation. Ceci est à mon sens une différence majeure en terme de logique d’utilisation de TFS par rapport à la version précédente: j’indique ce que je veux faire au moment ou je commence, et non pas au moment ou je l’ai terminé (lors du checkin). Ceci est une approche beaucoup plus évidente.

Après avoir réalisé les modifications dans le code source que j’estime nécessaires à la réalisation de la tâche que j’ai choisie, je m’apprête à archiver mes modifications. La fenêtre My Work affiche un résumé des modifications réalisées :

En cliquant sur View changes je visualise le détail de mes modifications.

L’équipe des barbus à décidé de faire relire le code de chacun par un autre membre de l’équipe, pour éviter les fautes d’inattention. De ce fait, plutôt que de réaliser un checkin à l’instant, je décide de demander à Léonard d’effectuer une review :

Je peux alors lui préciser un commentaire et c’est parti !

A partir de ce moment, lorsque léonard visualise la page My Work il retrouve ma demande de review :

En double cliquant sur ma demande, Léonard obtient une page la détaillant. Il accepte alors ma demande :

Comment ça marche? Léonard va être capable de visualiser mes modifications sans pour autant que j’ai eu besoin de réaliser un archivage. En effet, il est important qu’il puisse valider mon code avant que je ne l’ai partagé avec le reste de l’équipe dans TFS. Lorsque j’ai cliqué sur la demande de review, le Team Explorer 11 à enregistré mes modifications dans un Shelve (mise sur étagère ou “réservation” en Français). L’avantage ici, est que ce type d’opération est transparente.
Au sein de la même fenêtre, léonard a accès à l’ensemble des fichiers que j’ai modifié / créé. Il peut visualiser les différences entre ceux-ci et me donner son avis via des commentaires fonctionnant sur le même concept que les commentaires de Word (ligne par ligne) :

Lorsqu’il a terminé la relecture, il indique que tout est ok (ou pas, suivant son analyse ! ;)) :

De mon côté, je peux visualiser en temps réel les commentaires que Léonard réalise sur mon code, lui répondre si besoin, et voir quand il a terminé de relire :

Je n’ai alors plus qu’a choisir si je veux abandonner ou réaliser la modification dans le contrôle de code source.
Une fois le checkin réalisé, la tâche est fermée, et elle n’apparait plus dans My Work :

Même si cela paraitra évident, il est important de comprendre que tout au long de mes modifications, l’état du work item sur lequel je travaille se met à jour, et que cela a un impact dans la visualisation des post-its au sein du site web. Maintenant que le travail est considéré comme terminé, le work item se retrouve dans la colonne de droite :

Remarquez d’ailleurs le rapport de burndown en haut à droite de la page. Lorsque l’on clique sur l’image, elle donne accès à un rapport plus détaillé :

Mon analyse de tout ça est que TFS 11 apporte une dimension très importante en terme d’ergonomie. La plupart des opérations que vous avez lues tout au long de cet article auraient pu être réalisées avec la version 2010. La différence réside dans la facilité avec laquelle ces opérations se font. Si je veux demander à quelqu’un de relire mon code dans la version 2010, je dois réserver mon code, prévenir la personne qui doit déreserver le code, etc. En TFS 11, je clique sur “Obtenir un relecteur” et tout se fait pour moi.
TFS 11 est la version de la simplicité, la version de l’abstraction. Un besoin simple est derrière tout ça : “Je ne veux pas que tu m’explique comment je dois faire pour réaliser quelque chose, je veux juste le faire”.
.Dispose();