mercredi 24 avril 2013

SCRUM POMODORO


Si vous recherchez une technique simple et efficace de gestion de votre temps, vous devriez considérer l'expérimentation de la technique Pomodoro. Cette technique de gestion du temps est très utilisée en méthodologie SCRUM pour favoriser le focus et minimiser les interruptions en vue d'augmenter la productivité et la créativité, qui sont des principes plébiscités par la méthode SCRUM.
La technique Pomodoro est une technique de planification développée par Francesco Cirillo à la fin des années 1980. Cette méthode se base sur l'usage d'un minuteur permettant de respecter des périodes de 25 minutes appelées pomodori (qui signifie en italien « tomates »). Ces différentes périodes de travail sont séparées par de courtes pauses de 5 à 15 minutes.
Proches des concepts de cycles itératifs et des méthodes de développement agiles, utilisées dans le développement de logiciel, la méthode est utilisée pour la programmation en binôme, et également pour toutes les taches qui demandent un niveau élevé de concentration ou focus en évitant toute interruption susceptible de faire baisser la productivité visée ou retarder l'accomplissement de la tache.
La méthode a pour idée que des pauses régulières favorisent l'intensité et l'agilité intellectuelle.
La technique se présente sous la forme de 7 étapes :
  • Lister les tâches à effectuer dans la journée.
  • Estimer les taches en nombre de Pomodori.
  • Régler le Pomodoro (minuteur physique ou logiciel) sur 25 minutes
  • Travailler sur la tâche jusqu'à ce que le minuteur sonne
  • Prendre une courte pause (5 minutes)
  • Répéter l'opération jusqu'à la complétion de tous les pomodori de la tache
  • Tous les 4 Pomodori prendre une pause un peu plus longue (15-20 minutes)
Les bénéfices sont multiples :
  1. Réduction des interruptions
  2. Augmentation du niveau de concentration et donc de productivité
  3. Réduction du syndrome de procrastination
  4. Réduction du stress
  5. Favorise l'agilité intellectuelle
 Point Important : Le fait de suivre et analyser le nombre de pomodori effectués chaque jour va permettre d'analyser le niveau de productivité au cours du temps et constitue une activité cruciale de succès de la technique. Ce suivi va notamment permettre de gérer les interruptions que l'on pourra catégoriser en 2 sortes : Internes et Externes. En principe, la méthode recommande d'utiliser les pauses de 5 ou 15 minutes pour s'adonner aux taches non listées, typiquement appels téléphoniques, mail, googling, Twitter, Facebook etc.
La méthode préconise également de couper mail, téléphone, messagerie instantanée ou flux de réseaux sociaux pendant les pomodori les périodes de pauses étant dédiées à par exemple se connecter à ces différents médias.

Outils et Ressources
Pour plus de contenu sur cette technique, consulter le site officiel Pomodoro à l'adresse : http://www.pomodorotechnique.com/
L'application SCRUM Pomodoro, est une application Windows 8 disponible gratuitement sur l'App Store à l'adresse suivante : http://apps.microsoft.com/windows/app/scrum-pomodoro/651f41e5-466a-44a1-9b27-f836e35b2b10
Cette application permet de créer, modifier des listes de taches ainsi que de chiffrer chaque tache en pomodori simplement en utilisant des boutons + / -, un pomodoro numérique est affiché en plein écran ou en mode Snap et utilise un mécanisme de notification vocal pour annoncer le temps restant à intervalle régulier. Cette application a été développée par Cédric Gouge et moi même (Avanade) à l'occasion des Techdays 2013 ou nous avons présenté une session sur la méthodologie SCRUM, et les outils autour de la plate forme TFS 2012 pour délivrer des projets à un haut niveau de qualité tout en optimisant la productivité des équipes de développement.
Ci dessous l'écran principal de l'application :

SCRUM ON!!

lundi 22 avril 2013

Scrum of Scrums avec TFS 2012

Un challenge rencontré couramment en Scrum est la capacité à faire croitre les effectifs d'une équipe. Selon le Framework Scrum, une équipe peut être composé de 3 à 9 personnes. Cet effectif ne comprend pas le role de Product Owner ni de Scrum Master.
Prenons l'exemple d'un projet pour lequel, une grande équipe devrait développer un produit tel que Microsoft Office. De manière évidente, il est facile de faire une décomposition par "Feature Team" et l'on pourrait considérer avoir une équipe Office subdivisée en sous équipes Word, Excel, Powerpoint et Outlook par exemple, Chaque équipe ayant son backlog et devant se synchroniser en fin de Sprint pour intégrer son travail avec celui des autres équipes.
Ce concept a pour nom Scrum of Scrums et est parfaitement supporté par la plate forme TFS 2012 comme nous allons le montrer dans l'exemple simple ci dessous. Le Product Backlog contient des items concernant les différents produits d'Office : Excel, Outlook, PowerPoint et Outlook à titre d'exemple. 
Ci dessous une exemple de Product Backlog comprenant l'ensemble des fonctionnalités que l'on souhaite répartir entre les différentes équipes SCRUM.



 La première étape va consister à créer les trois équipes, pour cela  cliquer sur le bouton administration pour accèder au panneau de controle du site web Access tel que montré ci dessous, sur la page overview, on trouve la liste des équipes, avec par défaut l'équipe du projet : Office Project Team.








Cliquer sur le bouton New Team, et rajouter une équipe par projet soit Excel Team, Outlook Team, PowerPoint Team et Word Team, 












Entrer pour chaque équipe son nom et sa description. Attention à laisser la case Team Area cochée qui permettra de simplement ventiler le Product Backlog sur les différentes équipes en s'appuyant sur le champ Area Path.


 
Une fois les équipes créees, pour chacune d'elle, il restera à rajouter les membres qui les composent, en éditant les propriétés de chaque équipe.
Ci dessous le résultat final :










La dernière étape va consister à ventiler les différents Product Backlog items dans les différentes équipes, pour cela réafficher le Product Backlog et réaffecter chaque PBI à l'Area Path correspondant à son équipe. Cette action peut être réalisée en mode productivité via le module Work Items du Web access ou encore en utilisant Excel connecté à TFS. Ci dessous dans le cas de cet exemple, nous modifions l'Area Path en utilisant le formulaires d'édition Web :




















On peut afficher le champ Area Path dans la vue Product Backlog en utilisant le menu Column Options comme montré ci dessous :

 














 Ci dessous la vue Product Backlog affichant le champ Area Path et donc l'équipe Scrum
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pour filtrer par équipe, choisir une équipe dans la liste Teams située dans le bandeau en haut à droite du site Web Access, le contenu du Product Backlog est filtré automatiquement sur les PBIs de l'équipe.
 
 








Ci dessous le Product Backlog filtré sur l'équipe Word

 




  
A noter que l'ensemble des artefacts produits par TFS, et notamment les rapports vont permettre de filtrer par équipe permettant un suivi temps réel pour cette instance Scrum of Scrums 
 
 


lundi 15 avril 2013

Comment Modifier la taille maximum des pièces jointes dans TFS

En utilisation courante, on arrive très rapidement aux limites de taille de fichiers téléchargeable en tant que pièces joints dans les Work Items.
Cette Taille est configurable dans TFS. Pour ce faire, il faut tout d'abord fixer la taille que l'on veut autoriser, par exemple 15 Mo puis la convertir en bytes. On pourra par exemple utiliser le convertisseur en ligne suivant :
http://www.whatsabyte.com/P1/byteconverter.htm


Procéder à la conversion par exemple de 15 Mo en bytes, ce qui donne : 15728640
Lancer la page de configuration à l'adresse suivante (remplacer TFSServer par le nom ou l'adresse IP du serveur TFS cible)

Cliquer sur la commande setMaxAttachmentSize, entrer la valeur en bytes dans la zone de saisie
 puis cliquer sur Invoke.
Pour obtenir un effet immédiat, un redémarrage de l'App Pool Team Foundation Server est conseillé.

Bases de Données et Intégration Continue


TFS grace à son large panel d'outil permet d'adresser la problématique d'intégration continue pour l'activité de développement de base de données. L'idée est d'intégrer les développements de bases de données dans l'activité plus globale de développement d'application avec l'intégration dans le controle de code source des objets de base de données, mais également la capacité à intégrer ce code dans le processus d'intégration continue, permettant chaque nuit par exemple de compiler ce projet, procéder à l'analyse de code statique et lancer les tests unitaires sur les procédures stockées et enfin déployer la dernière version de la base de données sur un serveur cible.
Dans cet article, nous allons démontrer le processus de création d'un projet de base de données, son intégration dans le controle de code source, puis la modification du Template de Build afin de déployer automatiquement le projet de base de données sur un serveur cible défini dans le manifest du projet de base de données

ETAPE 1 : Création du projet de base de données, configuration du déploiement et intégration dans le controle de code Source

Lancer Visual Studio 2010 puis créer un projet de base de données en utilisant le template SQL Server 2008 Wizard. Dans cet exemple nous nous baserons sur la base exemple adventureworks.







Le wizard suivant se lance, cliquer sur Suivant
Choisir l'option base utilisateur et l'affichage par type d'objet comme monté ci dessous


En fonction du contexte projet, cocher les différentes options, A noter que ces options pourront être modifiées par la suite


Dans cette étape, cocher l'option importer le schéma existant, cliquer le bouton nouvelle connexion pour choisir la base de données dont on veut acquérir le schéma, puis cliquer sur suivant


Dans l'action de déploiement, choisir l'option "Créer un script de déploiement et déployer la base de données"

Cliquer sur Terminer, le processus de scriptage des objets est lancé, puis cliquer sur Terminer

Au bout de quelques secondes, le projet de base de données apparait dans l'explorateur de solutions comme montré ci dessous


A l'aide du bouton droit de la souris sélectionner la commande Propriétés du projet et configurer la section Connexion cible pour le déploiement de la base de données puis enregistrer la configuration

Pour vérifier le fonctionnement, en sélectionnant le Noeud du projet dans l'explorateur de solution, lancer la commande Déployer


La fenêtre d'Output affiche les informations de résultat du déploiement.

A partir du moment ou le projet de base de données compile et se déploie, nous allons pouvoir l'intégrer au controle de code source en utilisant la commande "Ajouter la solution au controle de code source" :



Configurer  la localisatioin de la solution dans le dossier Database de la structure de code source pour lancer la commande Archiver (Check in) pour intégrer le projet de base de données dans le Controle de code source



Etape 2 : Implementation de l'intégration continue

La première étape consiste à modifier le processus de Buid pour intégrer la capacité de déploiement, cet étape est très simple et se déroule comme suit :
A partir de Team Explorer Créer une nouvelle définition de Build

Cliquer ensuite sur l'onglet Process puis cliquer sur le bouton Nouveau à droite de la liste des modèles


La fenêtre de dialogue "Nouveau modèle de processus de génération" s'ouvre, entrer DBDeploy dans la zone nom du nouveau fichier Template. Cette astuce nous permet de créer un clone du modèle de processus que nous allons adapter pour le déploiement de notre projet de base de données.


Valider, lorsque la fenêtre se referme, le nouveau modèle de processus apparait dans la liste et un hyperlien permet de le localiser dans le controle de code source, cliquer sur cet hyperlien

Cette action ouvre la fenêtre du Source Control Explorer et affiche notre fichier Template. Sélectionner le fichier, cliquer sur Obtenir la dernière version


Puis extraire le fichier pour le modifier


Double cliquer sur le fichier DBDeploy.xaml pour l'ouvrir. Le fichier s'ouvre dans le designer Workflow Foundation. Cliquer sur Réduire Tout afin de compacter l'affichage



Appuyer la séquence de touches CTRL Alt X pour afficher la boite à outils, Déplier la catégorie "Flux de Controle" puis glisser l'activité Séquence au dessous la dernière séquence du workflow existant. L'objectif étant en fin de build, si la solution a compilé et que les tests ont réussi, permettre le déploiement de la base de données


La séquence apparait comme suit


Renommer le titre de la séquence en "Deploy Database" par exemple.
Pour afficher la fenêtre de propriété, simplement cliquer sur F4 après avoir sélectionner ladite séquence

Sélectionner l'activité If et la glisser à l'intérieur de la séquence Deploy Database. On remarquera l'apparition de warning rouges indiquant que la configuration n'est pas correctement finalisée.



Double cliquer sur l'activité If afin de pouvoir finaliser sa configuration

Dans la section Activités Team Foundation Build, sélectionner l'élément InvokeProcess puis la glisser dans la zone Then du If. Cette activité est très puissante car permet de lancer tout type de fichier exécutable tout en lui passant des paramètres



Sélectionner l'activité InvokeProcess puis cliquer sur F4 pour afficher la fenêtre de propriété, cliquer sur le bouton en regard de la propriété arguments et entrer l'expression d'arguments comme montré ci dessous. Attention à remplacer dans la section manifest DBDeploy par le nom de manifest de votre projet de base de données (par défaut le nom du projet de base de données)

Pour la commande Invokeprocess, l'objectif est de lancer l'utilitaire VSDBCMD qui permet de déployer en ligne de commande un projet de base de données. Pour plus d'information sur les arguments consulter la page msdn : http://msdn.microsoft.com/en-us/library/dd193283(v=vs.100).aspx
InvokeProcess étant lancé à partir du serveur de build, il faut non seulement qu'il soit installé sur ce serveur (normalement par défaut si Visual Studio est installé) et de plus, il faut connaitre son chemin sur le disque afin de le renseigner dans la propriété Filename de l'activité. Ci dessous le chemin attendu de VSDBCMD

Copier coller le chemin dans la propriété FileName de l'activité InvokeProcess comme montré ci dessous


Puis entrer BuildDetail.DropLocation pour la propriété Working Directory. On remarquera la fonctionnalité d'intellisense qui permet de fiabiliser les saisies.


La configuration de l'activité de déploiement est maintenant terminée, il reste simplement à rajouter des activités de type message pour apporter de l'information sur le déroulement du déploiement dans la Log du Build. Double cliquer sur l'activité Invoke Process














Glisser une activité WriteBuild Message au dessous du champ stdOutput dans la section "Gérer la sortie standard", choisir High pour l'importance (voir capture d'écran ci dessous) et taper stdOuput dans la propriété Message, changer le nom en VSDBCMD Output


 

Procéder de meme pour la sortie d'erreur, entrer errOutput dans la propriété Message et configurer à High l'importance.













Sauvegarder le workflow et fermer le Designer. Puis procéder au check in du fichier afin de pouvoir le consommer à partir d'une nouvelle définition de Build.
















Créer une nouvelle définition de build, choisir la solutin contenant le projet de base de données et dans la liste des modèles de processus choisir le template précédemment créé DBDeploy





Sauvegarder la définition de Build et Tester, la base de données est déployée automatiquement sur le serveur cible défini dans le Manifest.



 
IMPORTANT: Le déploiement de la base de données est lancé avec l'identité du service de Build, il faut donc s'assurer de bien avoir donné les droits adéquats au serveur de Build sur le serveur de bases de données cible.
Pour aller plus loin : cet article décrit un processus de déploiement simple, il est possible d'enrichir ce modèle en s'appuyant sur des arguments qui permettront au moment du lancement du build de passer en paramètre le nom de la base de données à déployer ainsi que le nom du serveur de base de données cible ceci afin d'avoir plus de souplesse dans l'activité de déploiement multi environnements