dimanche 24 avril 2016

VSTS Build : Connecter une Build d'intégration continue à une instance SonarQube – Quick Start

SonarQube est un outil d'analyse de qualité de code Open Source permettant de controler la dette technique d'un projet en cours de développement. cet outil s'avère extrêmement utile à la fois pour les développeurs en permettant le controle de la dette technique de leur projet au sein du processus d'intégration continue et également de grandir dans le métier de développeur grace à l'approche didactique de Sonar, qui propose des solution actionables à tous les problèmes remontés, ce qui fait que les développeurs apprennent très vite en uilitsant l'outil à ne plus coder de dette technique. Niveau Management, cela permet de consolider à différents niveaux tels que Projet, Delivery Center, Entreprise des métiques pertinentes rendant transparent tout problème affectant potentiellement la profitabilité de l'entreprise du fait de production d'applications difficilement maintenables impactant à la fois  la capacité d'innovation, et le Time to Market de l'entreprise.
Il est donc stratégique dans une démarche qualité et plus spécifiquement de controle de la dette technique et de transparence de pouvoir intégrer SonarQube à tout processus d'intégration continue. Microsoft, au travers du module Build a su rendre l'intégration de SonarQube très simple comme nous allons le voir dans cet article.
Attention, cet article ne couvre pas la configuration de SonarQube qui est essentielle pour assurer une vision transparente et réaliste de la dette technique, ce qui passe par l'installation de plugins payant par exemple pour C# et également la mise en place de Quality Profiles et Quality Gates alignés avec les stratégies qualité de l'entreprise.
Nous allons voir pas à pas comment configurer cette intégration au travers de la création d'une nouvelle Build CI

  1. S'assurer d'avoir accès à une instance SonarQube existante
  2. Se connecter au portail VSTS du projet cible
  3. Activer l'onglet Build et cliquer le bouton + pour créer une nouvelle Build
  4. Selectionner un template de Build, dans notre cas nous choisissons Visual Studio puis cliquer Next
  5. Configurer le type de Repository, le repository, la branche et l'agent (rafraichir la liste si besoin, dans le cas ou la liste est vide, rapprocher vous de votre Admin TFS pour la configuration de l'agent), n'oubliez pas de cocher la case Continuous integration pour s'intégrer dans un processus d'intégration continue (optionnel) puis cliquer sur le bouton Create
  6. La Build definition est affichée en mode Edition, cliquer simplement sur Add Build Step pour ajouter les taches Sonar fournies par Microsoft en standard dans le workflow de la Build. On notera que le template vient avec la compilation de la solution, l'exécution des tests ainsi que la publication des artefacts de Build tel que les packages de déploiement par exemple
  7. La librairie des taches s'affiche en pop up, scroller jusqu'à atteindre les taches Sonar puis cliquer sur le bouton Add situé à droite des taches puis cliquer sur Close.
  8. Les taches Sonar sont ajoutées à la Définition de Build
  9. Simplement cliquer glisser les taches pour les positionner au bon endroit dans le workflow comme montré ci dessous
  10. Nous allons maintenant configurer les taches Sonar afin que la Build CI puisse publier les informations de qualimétrie vers Sonar. Pour cela, vous devez disposer de la clé projet Sonar, le nom et la version comme montré ci dessous. A noter qu'un EndPoint SonarQube aura été provisionné par votre administrateur au préalable. Pour la partie Database Settings, nous allons utiliser des variables que l'on créera au préalable dans l'onglet variables
  11. La création des variables se fait comme montré ci dessous à partir de l'onglet variable. Il faut avoir la chaine de connection à la base de données, ainsi que le Login et mot de passe (A noter que dans la prochaine version de Sonar, les login mot de passe ne seront plus à fournir ce qui du point de vue de la sécurité sera une grande amélioration)
  12. Sauvegarder la build puis tester, si tout est correctement configuré, vous obtenez un rapport de build comme ci dessous avec un lien vous permettant d'accèder au Dashboard du projet Sonar directement pour voir les élements d'information


    Pour information, la création du Endpoint SonarQube se fait à partir des settings de l'instance, pour y accèder cliquer sur le bouton settings comme montré ci dessous,

    Cliquer sur l'onglet Services et cliquer sur Add a new Service Connection

    Choisir Add a Generic

    Entrer le nom SonarQube par exemple puis l'adresse de votre instance Sonar par exemple : http://sonar.YourCompany.net:8080/ puis des credentials permettant de se connecter à l'instance Sonar avec les privilèges suffisants

VSTS - Gestion efficace de Product Backlog Scrum avec les Tags

Un problème fréquemment rencontré par les Product Owner est une difficulté à naviguer dans un Product Backlog pour discuter les sujets clés avec leurs Stakeholders ou encore la capacité à retrouver des PBIs en fonction de leur sujet pour des actions de priorisation.
Parmi toutes les fonctionnolatiés de gestion de Backlog proposées par VSTS, il en est une qu'il est interessant de connaitre pour optimiser la capacité de gestion du Product Backlog : Les Tags.
Les Tags sont un puissant outil de catégorisation et de filtrage et permettent également une meilleure visualisation des PBIs taggés grace à la possibilité de coloriser les Tags par configuration. le but de cet article est de montrer comment tirer parti au mieux de ces tags en partant d'un backlog
Tout d'abord, regardons à quoi ressemble un Backlog affiché dans VSTS sans Tags en mode liste : 
et en mode Carte : 

On s'aperçoit que si l'on recherge des PBIs concernant Docker , ou de la R&D, du training ou n'importe quelle catégorie, il faut lire les PBIs ou procéder à une recherche ce qui n'est pas vraiment au top de l'efficacité. Pour utiliser des Tags il faut tout d'abord les créer dans Chaque PBI

Création d'un Tag pour un PBI

La création d'un Tag dans un PBI est extrêmement simple, simplement ouvrir le PBI et cliquer sur le bouton Add Tag
Renseigner le nom du Tag ( attention à bien éviter les fautes de frappe, la suppression de Tags existants n'est pas disponible pour le moment à partir de VSTS, il faut utiliser un extension à partir de Visual Studio)
Il est bien evidemment possible de renseigner plusieurs tags
Simplement sauvegarder pour persiter les tags

Visualisation et style des Tags 

Nous allons voir comment activer la visualisation des tags en mode liste et en mode Carte.
En mode carte, simplement cliquer sur le bouton setting à droite de la vue Board
Activer l'option Show Tags dans l'onglet Field / Product Backlog Item puis valider
La page Board est raffraichie et les tags sont maintenant visible sur la carte du PBI
Nous allons maintenant affecter un style de couleur pour mieux repèrer les Tags, pour cela cliquer à nouveau sur le bouton Settings sur la droite de l'écran et activer l'onglet Tags Color, cliquer sur Add Tag Color, et configurer selon vos préférences puis cliquer le bouton Save
La page est raffraichie automatiquement et le résultat obtenu est le suivant : 
L'activation de l'affichage des tags en mode liste se fait simplement en ajoutant la colonne Tags à la vue Backlog comme montré ci dessous :

l'affichage résultant : 

Utilisation des tags pour filtrer le backlog

A partir de la vue Backlog, simplement cliquer l'icone Filtre, ce qui entraine l'affichage de l'ensemble des tags disponibles 
Cliquer simplement sur un ou plusieurs Tags pour filtrer instantanément le backlog, les Tags cliqués apparaisent à gauche, pour lever le filtre, simplement recliquer sur les tags qui apparaissent à gauche, il est bien évidemment possible de sélectionner plusieurs tags comme montré ci dessous avec les filtres Docker et Devops
Dans la mesure ou le tagging fait partie de votre stratégie de gestion de Backlog et que votre projet est exécuté en mode Scrum, il peut faire sens de procéder au tagging de vos PBIs durant vos sessions de Refinement, de plus, vous pourrez utilisez le tagging de vos PBIs dans votre Dashoboard  comme filtre de regroupement de vos PBIs dans un Pie Chart par exemple. Dans un prochain article, j'étayerai les possibiltés de reporting scrum à partir des capacités de Dashboard de VSTS

samedi 2 avril 2016

Build 2016 : La synthèse

La conférence s'est terminé Vendredi 1er Avril par un Hackathon et il est temps de synthétiser tout ce que l'on a pu voir durant cette conférence.
Globalement l'expérience fut assez différente de ce que l'on peut voir dans toutes les autres conférences, ici pas de session 300 ou 400, ou encore de session approfondies sur des sujets techniques très pointus, mais plutot un voyage dans le futur proche et un avant gout de ce que sera notre métier de demain, fini les Windows Forms, WebForms, nous allons entrer dans l'ère du tout connecté, et de l'intelligence artificielle. Avant d'entrer dans les faits marquants de cette conférence, il faut souligner qu'aujourd'hui, la grande majorité des développeurs Microsoft font du code qui n'a pour objectif que de fournir des IHM ou des services dédié à l'usage d'êtres humains et c'est spécifiquement ce qui va changer demain, car les développeurs ne vont développer pour des robots, des voitures, de l'énergie, des objets connectés et créér des sytèmes qui vont apprendre et nous permettre de réaliser toujours plus de choses en délégant toutes les taches routinières et ou adminstratives à des robots.
Quels sont donc les points qui m'ont marqué à cette conférence? Ils sont au nombre de Trois
Premièrement, Hololens
Microsoft HoloLens est un casque de réalité augmentée permettant de simuler des hologrammes qui s’intègrent dans le champ de vision de l’utilisateur.Il fait partie du projet Windows Holographic4, une plateforme dédiée à la réalité augmentée et intégrée à Windows 10.
Wikipédia nous propose une définition de la réalité augmentée : « La réalité augmentée désigne les systèmes informatiques qui rendent possible la superposition d’un modèle virtuel 3D ou 2D à la perception que nous avons naturellement de la réalité et ceci en temps réel. Elle désigne les différentes méthodes qui permettent d’incruster de façon réaliste des objets virtuels dans une séquence d’images. »
J'ai pu expérimenter Hololens durant la Build 2016 pour explorer Mars en immersion, l'expérience est absolument bluffante, des personnages holographiques apparaissent pour vous donner des explications et orienter votre exploration, des scénarios interactifs permettent de nous téléporter à différents endroits, l'experience est immersive à 360°, absolument incroyable.


Ci dessous une démonstration d'Hololens appliqué à l'éducation
Le deuxième point que j'ai retenu est la vision Digital Assistant, Bots et Conversation as a platform ou Microsoft met en scène un panel de technologies impressionant pour révolutionner notre manière de communiquer et d'interagir avec le monde environnement.

Les technologies mises en oeuvre sont : 
  • Cortana dans le role d'assistant Digital
  • Les Robots avec le Bot Framework pour la délégation de taches en collaboration avec Cortana. Les Bots sont un nouveau type d'applications avec lesquels nous allons pouvoir converser, ou qui vont pouvoir échanger entre eux.
  • Windows Azure Machine Learning un brique d'intelligence artificielle
  • Skype, avec la traduction instatanée, le support d'Hololens etc.
  • Hololens pour la réalité virtuelle ou augmentée et les hologrammes
  • IOT (Internet of Thing) avec les objets connectés et le Big data et Machine Learning dans le cloud
  • Office 365

Si l'intérêt de chacune des ces technologies peut être relativisée, leur combinaison en revanche laisse présager des scénario absolument incroyables et futuriste.

Le Troisième point qui m'a semblé une vague en pleine prise de puissance tellement les cas d'usages sont infinis est l'IOT
La définition Wikipedia de l'IOT est : "L'Internet des objets (IdO ou IoT pour Internet of Things en anglais) représente l'extension d'Internet à des choses et à des lieux du monde physique. Alors qu'Internet ne se prolonge habituellement pas au-delà du monde électronique, l'internet des objets connectés représente les échanges d'informations et de données provenant de dispositifs présents dans le monde réel vers le réseau Internet. L'internet des objets est considéré comme la troisième évolution de l'Internet, baptisée Web 3.0 (parfois perçu comme la généralisation du Web des objets mais aussi comme celle du Web sémantique) qui fait suite à l'ère du Web social. L'internet des objets revêt un caractère universel pour désigner des objets connectés aux usages variés, dans le domaine de la e-santé, de la domotique ou du Quantified Self. L'internet des objets est en partie responsable d'un accroissement exponentiel du volume de données générées sur le réseau, à l'origine du Big Data."
Microsoft propose bien évidemment un panel complet pour faire de l'IOT en commencant par Windows 10 IOT, un système d'exploitation nano, embarquable sur des devices très léger comme par exemple des Raspberry Pi 3.

Mon coup de coeur va à Docker le nouveau système de déploiement qui nous vient du monde Linux permettant la mise en oeuvre d'architecture MicroServices hyper distribuée et résilientes.
Docker est un logiciel libre qui automatise le déploiement d'applications dans des conteneurs logiciels. Selon la firme de recherche sur l'industrie 451 Research, « Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur virtuel, qui pourra être exécuté sur n'importe quel serveur Linux ». Ceci permet d'étendre la flexibilité et la portabilité d’exécution d'une application, que ce soit sur une machine locale, un cloud privé ou public, un serverur, etc.
Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution de virtualisation qui exécute les processus de façon isolée. Docker utilise LXC, et le noyau Linux lui-même. Contrairement aux machines virtuelles traditionnelles, un conteneur Docker n'inclut pas de système d'exploitation, s'appuyant sur les fonctionnalités du système d’exploitation fournies par l'infrastructure sous-jacente. Dans les semaines à venir, Docker va pouvoir d'appuyer également sur des noyaux OS Windows ce qui permettra à l'ecosystème Windows de bénéficier de ce système de déploiement absolument hors norme qui de plus a été créé par un ingénieur français!

Sur un plan plus physique, j'ai été très impressioné par les réalisations des imprimantes 3D qui étaient présentées à la Build 2016 avec des réalisations absolument époustouflantes comme des cranes humains réalisés à partir de modélisation obtenus dans des musées d'histoire naturelles, des fruits...
Les photos ci dessous démontrent l'incroyable rendu de ce type d'imprimantes :




Le point le plus impressionant est que ces objets sont imprimés avec du papier!!!
Le processus est Papier, Encre, Glue et ainsi de suite, donnant au final un rendu très solide.
Dans la réalité, les objets sont bluffant de réalisme, par exemple pour la pomme une des deux est une vraie pomme, trouver laquelle n'est pas une mince affaire, si l'on prend le cas du cheval cabré, à l'oeil nu on est persuadé qu'il s'agit d'un bronze.
Bref la technologie n'a pas fini de nous étonner 
Pour ma part, en attendant que l'on puisse acquérir des Hololens et programmer des applications de réalité virtuelle augmentée, je vais acquérir un RaspBerry Pi 3 et attaquer des projets IOT avec Windows 10 for IOT et Azure IOT Suite

Visual Studio 2015 : Trucs et astuces pour plus de productivité



Dans cet article nous allons repasser en revue toutes les fonctionnalités de Visual Studio 2015 qu'il est utile de connaitre pour gagner en productivité

Point 1 : La gestion du Layout
Souvent notre environnent de travail se désorganise et les fenetres ne sont plus affichées de manière optimal comme par exemple
Il suffit de taper la séquence de touche Ctrl Alt 1 pour rétablir instanément le layout comme montré ci desssous : 
Pour gérer ces affichages, on passe en fait par le gestionnaire de layout qui va d'ailleurs nous permettre de gérer plusieurs layout en fonction de nos besoins, y compris dans des configurations multi écran, au travers du menu View :

Point 2 : Quelques raccourcis clavier
Ctrl Q : Quick Search, permet d'avoir le focus dans la zone quick Launch pour rechercher une commande rapidement dans les menus.
Ctrl $ : Permet d'avoir le focus pour filtrer le contenu du Solution Explorer à partir d'une saisie dans la zone de recherche
Ctrl K C : Commenter le code
Ctrl K U : Dé-commenter le code
Ctrl K F : Rétablir l'identation

Point 3 : Solution Explorer
Dans le cas de solution contenant beaucoup de projet, il peut devenir difficile de naviguer, la fonction Scope This permet de filtrer contextuellement sur le projet  sélectionné comme montré ci dessous :


Nous appliquons la commande Scope to this au projet data
Seul le projet Data est maintenant affiché et la recherche sera également scopée sur ce projet uniquement


 La recherche dans le Solution explorer constitue également un outil extrêmement puissant lorsque l'on recherche un fichier, une méthode ou une variable. pour illustrer, imaginons que nous recherchons une variable nommée customer dans la solution, simplement en commencant à taper customer, le filtre se fait dynamiqument et le membre customer est localisé : 


Point 4 : Les outils de diagnostics avec l'affichage de l'intellitrace, de la mémoire et de la CPU en mode debug
Comme montré ci dessous, la fenêtre diagnostic Tools affiche lors d'une session de debug une timeline interactive avec les erreurs affichés sour forme de jalons rouge cliquable qui permette de retrouver l'évent intellitrace et par rebond la ligne de code ayant déclenché l'erreur, on note également les onglets Memory Usage et CPU Usage

En regard de chaque ligne est affiché le temps écoulé permettant de voir les lignes les plus longues à l'exécution

Dans la fenêtre Memory Usage, nous allons pouvoir suivre l'état de la mémoire pour potentiellement detecter des problèmes de Memory Leak, on notera la possibilité d'explorer de manière interactive les Heaps du Garbage Collector simplement en cliquant sur les icones oranges du GC comme affiché dans la capture d'écran ci dessous. On a également la possibilité de prendre des snapshots de la mémoire durant le debug pour pouvoir réaliser des Diff et analyser le comportement de la mémoire avec précision.


Ci dessous un exemple d'affichage d'un Diff entre deux snapshots de mémoire

Ayant vu dans l'écran précédent un Diff important en Bytes sur l'objet MuShuttle.client.core.DocumentResponse.Driver, il suffit de cliquer dessus pour en afficher le contenu


Autre point nouveau, les Break Points Settings qui s'affichent sous la forme d'une fenêtre Peek Definition, permettant de fixer des conditions et/ou des actions durant les phases de debug. Les actions vont être utilisées pour logger des messages dans la fenêtre d'Ouput, à noter que l'entrée des Action supporte les expressions lambdas et permet l'utilisation de l'intellisense.

Une grande amélioration du Debugger Visual Studio est le support des expressions lambdas, une fonctionnalité très attendue et demandée par les développeurs, notamment via User Voice.

Code Lens, qui s'affiche au dessus de chaque méthode permet d'accèder au statut et à l'historique de l'activité pour les références, les tests, les changements effectués sur le code, les bugs et les work items reliés. Par exemple pour les changements de code, on a une timeline avec les changements par developpeurs
Pour le références, on va les visualiser puis on va pouvoir générer un affichage Code Map comme montré ci dessous : 

Enfin pour les tests unitaires, on va pouvoir inspecter le détail avec le résultat du dernier Run et pouvoir relancer un Run de manière interactive

Autre nouveauté avec le statut de Git dans la barre d'état, la possibilité de controler l'état vis à vis du controle de code source avec le nombre de commits en attente, le nombre de changements en cours et la possibilité de gérer les branches.

coté intellisense, une petite subtilité qui consiste à rendre transparente la fenêtre d'intellisense simplement en appuyant sur la touche Ctrl, ce qui permet de voir le code en arrière plan sans sortir de l'intellisense
Et pour terminer, dans un futur proche, Visual studio 2015 une version qui s'installera en moins d'une minute et démarre quasi instantanément (téléchargeable en ce moment en Preview)

Bien d'autres fonctions astucieuses existent, nous avons évoqué les plus récentes dans cet article.