vendredi 13 décembre 2013

Visual Studio 2013, Visual Studio Online : Quoi de Neuf ?


Le lancement de Visual Studio 2013 coïncide avec celui de Visual Studio Online qui est en fait le nouveau nom donné à la plate forme cloud : TFS Service, avec néanmoins l'ajout d'un certain nombre de fonctionnalités que nous allons découvrir dans cet article. Cette nouvelle plate forme offre une large gamme de services aux développeurs, basés sur Windows Azure  étendant ainsi l'expérience du développement au Cloud.
Ce lancement préfigure une nouvelle ère pour Visual Studio combinant un IDE puissant augmenté d'un riche panel de services basés dans le Cloud dont le plus important est incontestablement App Insights pour la télémétrie et le plus surprenant, Monaco, le nouvel IDE en mode Web.
Visual studio 2013 avec le Framework 4.5.1 fournissent les meilleurs outils pour le développement d'applications modernes ciblant toutes les plates formes Microsoft et non Microsoft.
Visual Studio Online est une offre nouvelle apportant une gestion complète du cycle de vie d'un projet de développement avec un contrôle de code source, un système de gestion de Work items, un système de planification agile avec les prémisses d'un "Agile Portfolio Management", des services de Load testing et de Build dans le Cloud avec également des capacités de déploiement continu pour ce qui concerne les applications Azure ou Windows Store.
 
Les nouveautés de Visual Studio 2013 
Des fonctions de productivité pour les développeurs telles que Peek définition et Code Lens qui viennent compléter Code Map. Ces outils apportent aux développeurs les informations clés du code sur le quel il travaille afin de le comprendre et le modifier plus rapidement sans perdre le focus du sujet sur lequel ils travaillent par exemple en basculant entre de multiples fenêtres ouvertes.
Peek Definition permet de consulter ou modifier en mode "Inline" du code d'une classe appelée (Reference), cette visualisation va permettre de modifier l'élément sans avoir à ouvrir son fichier dans un nouvel onglet, tel que montré dans la capture d'écran ci dessous. Peek Definition peut être vu comme une amélioration de la fonction F12. Pour ouvrir une fenêtre Peek Definition cliquer bouton droit sur une méthode appelée et choisir la commande Peek definition dans le menu contextuel ou plus simplement utiliser la séquence de touches Alt F12.
Fenêtre de code après appel de la définition de vue
 

Code Lens, confère une affichage de type tableau de bord au niveau fonction mais aussi au niveau du type permettant au développeur de disposer d'information contextuelles, de manière configurable via le menu options, dont :
  • Statut des Tests unitaires
  • Testé par
  • Références
  • Auteur
  • Changements
  • work items / bugs
  • Code reviews
Le développeur peut non seulement consulter les informations mais aussi accéder à ces informations en cliquant sur les hyperliens tel que montré ci dessous :
CodeLens indicators in the code editor
Ci dessous un exemple avec le suivi des références et l'affichage d'une popup Peek Definition:
CodeLens - Peek reference
Au niveau Equipe, Visual Studio 2013 et Team Foundation Server 2013 apportent de nouvelles fonctionnalités avec le nouvel "Agile Portfolio Management", on notera en nouveauté la notion de Feature et bientôt Portfolio permettant une gestion plus efficace et mieux adaptée aux grands projets (Gestion de Portfolio), et également le support de GIT en tant que contrôle de code source ainsi que la nouvelle fonctionnalité Team Room permettant aux équipes d'échanger des informations en mode Twitter.
Sur le plan Release Management, on notera l'intégration de fonctionnalités clés pour l'automatisation du déploiement et le déploiement continu dans le Cloud ou dans des environnements On Premice, grâce à l'intégration de "In Release". Cette nouvelle fonction va permettre de gérer un pipeline au travers des différents environnements d'un projet s'intégrant de ce fait l'activité de release management et de déploiement dans le cycle de vie du projet. Avec ce nouveau module, vous pourrez configurer, approuver et déployer vos applications vers n'importe quel environnement, ou encore créer des orchestrations de déploiement automatisées pour chaque environnement, quel que soit le degré de complexité de la configuration. Une livraison plus fréquente et plus facile de vos développements incrémentaux dans un environnement signifie que vos testeurs pourront démarrer plus tôt la validation au travers des tests d'acceptance et que vos parties prenantes pourront fournir un feedback plus rapidement.
Cette fonctionnalité a été longtemps le chainon manquant de la plate forme ALM de Microsoft, et était très attendu.
Cette nouvelle offre complète l'offre autour de TFS au travers de 3 produits :
  1. Release Management Client pour Visual Studio 2013
  2. Release Management Server pour Team Foundation Server 2013
  3. Microsoft Deployment Agent (avec License séparée pour chaque serveur cible)
Ci dessous un aperçu de Release Management pour Visual studio 2013


Les nouveautés de Visual  Studio Online
 
Visual Studio Online annonce la disponibilité d'un large panel de services basés dans le Cloud au service  développeurs avec :
Le contrôle de code source : Le contrôle de code source peut utiliser soit TFS soit GIT
La gestion des Work items et la planification Agile:  La gestion de Product Backlog, Taskboard, le support de Kanban, la gestion de capacité d'équipe, le Burndown, autant d'outils permettant une véritable planification Agile ou Scrum. On notera en nouveauté la notion de Feature et bientôt Portfolio permettant une gestion plus efficace et mieux adaptée aux grands projets (Gestion de Portfolio)
Un environnement collaboratif: Team Room,
Un Service de Build :  chaque compte vient avec 60 minutes de build gratuit par mois, ce point reste totalement aberrent
Elastic Load testing Service : La performance et donc les tests de charge constituent des points importants dans le cycle de développement d'une application, permettant l'évaluation et la validation du comportement d'une application soumise à charge. Les détenteurs d'une License Ultimate auront droit à 15000 utilisateurs virtuels par mois inclus dans leur abonnement.
Application Insights : ce module permet en quelques clics de souris, la mise en place d'un Profiling d'application, permettant de mettre en place un processus d'amélioration continue au travers d'un monitoring puissant et peu intrusif. Ce nouveau service confère aux équipes un support dans le cadre de livraisons d'applications agiles tout en apportant une visibilité sur le niveau d'utilisation d'une application par les utilisateurs finaux, la collecte télémétrique de données à travers les environnements de DEV, TEST et PROD, en capturant les données liées à la disponibilité, la performance, le niveau d'exceptions et de crashes donnant ainsi à l'équipe de développement une vision 360° du niveau santé de l'application. Plus qu'un simple outil de monitoring et d'analyse, App Insights connecte ces données télémétriques au cycle de développement applicatif.
Example completed dashboard
Drag across the small summary chart to zoom
Enfin, Visual Studio Online avec Monaco : Après avoir étendu l'expérience du développeurs à un panel de service Cloud, Microsoft propose au travers du projet Monaco la capacité pour un développeur de développer au travers d'un IDE Web. Visual Studio Online "Monaco" est un environnement de développement pour le Cloud, dans le Cloud, et vient en complément de l'IDE standard Visual Studio 2013.


L'offre Visual Studio On line est gratuite pour des équipes de moins de 5 développeurs.
 
En conclusion : Avec Visual Studio 2013 une nouvelle ère commence, étendant les fonctionnalités de l'IDE à des services dans le Cloud. La combinaison de Visual Studio 2013 et Visual Studio Online constitue sans contexte l'expérience la plus complète pour le développement d'application modernes dans des environnements cloud ou hétérogènes dans l'ère des devices et des services.

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