samedi 9 avril 2011

TechDays 2011 : Session ALM avec Visual Studio 2010

L'édition des Techdays 2011 à démontré cette année un intérêt grandissant autour de la thématique de l'ALM. la session a fait salle comble, des entrées ont été refusées, le nombre de place étant insuffisant dans la salle. Ceci montre que de plus en plus d'utilisateurs et équipe projets ont compris que l'ALM joue aujourd'hui un role fondamental en tant que facteur clé de réussite des projets informatiques.
Alors que beaucoup d'équipes de développements ou d'intégrateurs se posent la question de CMMI versus Agile ou SCRUM, dans cette session nous tentons de démontrer que la méthodologie est un élément nécessaire pour réussir un projet, mais pas un élément suffisant, il faut pour se faire "monter d'un cran" et s'appuyer sur un Framwork de gestion de projet tel que celui proposé par le PMI (Project Management Institute) avec PMP pour apporter de la gouvernance projet sur l'ensemble du périmètre à savoir :


  • Integration Management

  • Scope Management

  • Time Management

  • Cost Management

  • Quality Management

  • Communication Management

  • Risk Management

  • Human Resource Management

La session animée cette année a mis en exergue la partie Time Management et Quality Management avec notamment la Gestion des Tests dans TFS pour la qualité et l'implémentation d'un module de Earned Value Management pour gérer les délais et couts d'un projet.

Ci dessous le lien pour visualiser l'enregistrement de la session Webcast Session ALM

TFS dans le Cloud, oui c'est possible avec Windows Azure VM Role

En attendant l'offre Hosted TFS de Microsoft en PAAS (Platform As A Service), Windows Azure avec l'offre VM Role qui fait partie de l'offre IAAS (Infrastructure As A Service) permet de déployer facilement un Serveur TFS dans le Cloud Simplement en procédant à l'upload d'un serveur Windows 2008 R2 préparé sur une plate forme Hyper V, dans lequel on embarque les binaires applicatifs de TFS et SQL, j'ai testé cette solution dès la version Beta du VM Role et les résultats ont été au delà de mes attentes surtout pour ce qui concerne les performances par exemple lors d'opérations de check in qui s'éxécutent de manière aussi fluide que dans une configuration en Datacenter d'entreprise

Le but de cet article est de montrer comment s'utilise une Configuration TFS déployée sur Windows Azure. L'article n'aborde la phase de déploiement du serveur TFS mais uniquement son utilisation.
Pour se connecter à une VM déployée dans le cloud, on utilise le portail d'administration Windows Azure :

Nous allons ici pouvoir nous connecter en remote desktop au serveur TFS pour procéder à l'administration du Serveur TFS Si l'on sélectionne le menu Hosted Services, puis la VM, une commande Connect est activée dans la barre d'outils en haut à droite.

Si l'on clique sur Connect, une fenêtre Remote desktop apparait, on se connecte donc de la même manière à un serveur VM Role qu'à un serveur "On Premice"

On voit ci dessous que l'on va administrer un serveur Cloud Based comme un Serveur en DataCenter Entreprise

On démarre la console d'administration de TFS pour par exemple gérer la sécurité ou les Project Collections

Ci dessous la project Collection créée pour la démonstration :

Pour utiliser cette instance TFS, on utilise Visual Studio 2010 et on va entrer l'adresse du serveur dans Team Explorer

Ci dessous la connection au Serveur TFS hébergé dans le cloud :

La collection apparait dans Team Explorer et l'on va pouvoir créer un nouveau Team Project, on lance le Wizard de création




Finalement, les artefacts projets sont affichés sans surprise dans Visual Studio

On a également accès à Team System Web Access



En conclusion, Windows Azure VM Role est une alternative très interessante pour héberger TFS dans le cloud avec des configurations sur lesquelles on aura une plus grande maitrise que dans une offre PAAS, en revanche, l'administration et l'opération du serveur reste à notre charge. Azure Connect permet également d'intégrer ces serveurs dans une Active Directory d'entreprise.

Integration de Champs calculés dans les Work Items

L'intégration de champs calculés dans un Work Item Template va permettre de stocker les valeurs calculées dans le Warehouse TFS et de plus pouvoir utiliser ces valeurs de manières historisées puisqu'elles seront processées dans le cube OLAP, cette implémentation permet d'éviter le recours systématique à Excel pour créer ces valeurs calculées. Le but de cet article est de montrer comment implémenter étape par étape ce concept sur un cas simple, le calcul de l'EAC (Estimate At Completion).


Le Work Item Task permet de gérer les temps au travers de 3 champs :


1 / Original Estimate : La baseline, 2 / Completed : Le consommé, 3 / Remaining : Le reste à faire


L'EAC a donc pour formule : EAC = Completed + Remaining Cette implémentation se base sur la possibilité de personnaliser les Templates de Work Items à l''aide du Process Editor et d'une fonctionnalité très utile dans SQL Server, les Computed Columns, donc l'implémentation se fait en 2 étapes :


1 / Dans TFS : Modification du Work Item Template Task pour Ajouter le Champ


2 / Dans SQL : Modification du Nouveau Champ en Champ Calculé



Se Connecter au Serveur TFS a l'aide d'un client Visual Studio 2010 (en prérequis, Le Process template Editor est installé sur la machine Cliente)



Lancer le Process Template Editor à partir de Visual Studio




Se connecter au Team Project dans lequel on veut implémenter le champ calculé :


L'éditeur s'affiche sur l'onglet Field, Cliquer le bouton New pour créer le nouveau champ EAC

Compléter la définition tel que montré ci dessous :

Activer l'onglet Layout, créer un nouveau Controle au dessous de Completed Work

Renseigner les propriétés Field Name et Label

Lancer un Refresh dans Team Explorer et créer une nouvelle Tache pour vérifier la création de ce nouveau champ, modifier si nécessaire.

Pour terminer cette implémentation, il reste à se connecter à SQL, choisir l'instance qui héberge le Data tier de votre instance TFS, sélectionner la base de données portant le nom de la collection dans lequel se trouve le projet d'équipe sur lequel est implémenté cette modification

Sélectionner la table WorkItemsAre qui contient les champs de l'ensemble des work items définis

Le rajout du champ dans le Process template a déclenché la création d'un champ dans la base de données, ce champ est rajouté en fin de table, dans notre cas, il s'agit du champ fld10101


Lancer l'éditeur de Query dans Management Studio et entrer les commandes alter suivantes sur la table :


alter table dbo.WorkItemsAre drop column Fld10101


alter table dbo.WorkItemsAre add Fld10101 as (FLD10022 + FLD10020) persisted


Vous aurez vérifié au préalable que les champs FLD10022 et FLD10020 correspondent à Completed et Remaining en lançant un select sur la table par exemple sur un Work Item dont vous connaissez les valeurs Exécuter la requete, puis lancer un Refresh sur le dossier Column pour vérifier que le résultat :



On voit bien ce dessous que la colonne est de type Computed et la fenêtre de propriétés nous montre la formule. A noter qu'il est possible d'entrer des formules complexes avec des If pour gérer des divisions par 0 par exemple.

Tester l'implémentation en créeant un nouveau Work Item, initialiser les valeurs Estimate, Completed et Remaining

Faire un Refresh, on constate que le Champ EAC est recalculé suivant la formule

On a bien EAC = 12 soit 8 + 4

jeudi 7 avril 2011

Livre Blanc ALM par Microsoft et Avanade : A télécharger absolument

Définition des Exigences, Planification et Suivi, Conception, Développement, Build, Test et Déploiement sont les piliers métiers et techniques adressées par l'ALM. Face aux résultats accablant du Standish Group, classifiant le taux des projets respectivement réussis, Challengés et en échec, de plus en plus d'entreprise décident de mettre en place une solution ALM comme facteur clé de succès de leurs projets informatiques. La plupart des intégrateurs aujourd'hui parviennent à intégrer la couche technique et méthodologique dans leur approche projet, mais peu nombreux sont ceux qui parviennent à intégrer la couche la plus haute : la Gestion de projet qui va permettre de mettre en place une gouvernance et un controle temps réel basés sur des métriques et KPIs extraits de la plate forme ALM. Pour promouvoir les bénéfices de l'ALM, Microsoft et Avanade ont produit un livre blanc sur la Gestion du Cycle de vie des applications avec Team Foundation Server 2010.


Avanade applique aujourd'hui l'ALM sur l'ensemble de ses projets de Delivery et forme l'ensemble des ses collaborateurs aux différents modules de la plate forme et ce de manière systématique. En tant que partenaire Inner Circle (Centre de compétence ALM Microsoft) Avanade s'est associé à Microsoft pour la production de cet asset sur l'industrialisation des développements et la gouvernance des projets informatiques.

Vous pouvez télécharger ce livre blanc en cliquant le lien ci dessous
Livre Blanc ALM

mercredi 6 avril 2011

TFS : Rapports Custom et Data Driven Subscription Part 2

Dans la partie 2 de l'article, nous allons mettre en place une Data Driven Subscription pour le rapport custom créé dans la partie 1 de cet article. Rappel des principes généraux d'une Data Driven Subscription L'objectif est ici de planifier l'envoi par mail du rapport dans un format donné, ici Excel pour fournir à l'utilisateur final un rapport en mode déconnecté. L'envoi des rapports est piloté par une base de données "Subscribers" dans laquelle nous allons configurer souscription par souscription la fréquence d'envoi ainsi que le filtre à appliquer dynamiquement au rapport avant l'envoi, dans le cas traité, nous imaginons un groupe qui veut diffuser un document de Bug Status par BU Implémentation Step by Step d'une Data Driven Subscription Une base de donnée Subscriber est un prérequis afin d'être capable de gérer par profil, type d'export, injection de filtrage et mode de delivery. Quand la base est crée, une subscription peut être ajoutée simplement en ajoutant une entrée dans la table ou encore en procédant à des mises à jours pour modifier la liste de distribution mail d'une subscription. La première étape consiste donc à créer la base de données, pour cela, en utilisant SQL Management Studio, nous allons créer la base, table et colonnes requises. Pour cela il suffit de suivre les étapes suivantes :

1. créer la base de données avec le nom Subscribers.


2. Créer une nouvelle table.


3. Ajouter les 5 colonnes suivantes: Name, Alias, EmployeeID, Format, Linked. Pour toutes les colonnes, fixer le data Type à VarChar avec un longueur de 100. Il faut également ajouter les colonnes pour les paramètres de filtrage du rappoprt, dans notre exemple: Team Project, WorkItemType, AreaPath etc.


4. Nommer la table UserInfo.


5. Insérer quelques lignes. Vous pouvez utiliser le Query Analyzer pour ajouter les données. L'exemple suivant montre comment insérer 1 ligne en utilisant la clause INSERT


INSERT INTO UserInfo (Name, Alias, EmployeeID, Format, Linked, Project, WITType, Area) VALUES ('John Doe', 'John.Doe@avanade.com', '24', 'IMAGE', 'True', “MyProject”, “Requirement”, “All”)


Répeter l'opération d'insert autant de fois que nécessaire, chaque insertion correspondant à 1 nouvelle souscription


Nous allons maintenant définir une Data Driven Subscription en utilisant la base de données préalablement créée ainsi que le rapport Custom réalisé dans la partie 1 de l'article.


Se connecter au Serveur de rapport : http://YourTFSServer/Reports


Naviguer jusqu'à la page de visualisation du rapport à diffuser et cliquer l'onglet "Subscription"


Cliquer le bouton : Create a Data Driven Subscription, l'écran suivant apparait, entrer un nom pour la souscription et choisir Email pour la Delivery Method puis sélectionner Specify a Data Source pour cette Subscription puis cliquer Next


pour l'étape 2, on utilise une connection spécifique à la base de données Subscribers, simplement entrer la chaine de connexion et les login / password comme montré ci dessous. Pour le login, un compte de service TFS tel que TFSReports est une bonne option (pas de password à renouveler) puis cliquer Next

A l'étape 3, nous allons entrer la clause Select pour les paramètres de la distribution, la clause select doit sélectionner les lignes de la table Subscribers qui seront destinataires de la transmission par email, généralement, la clause ne renvoie qu'une seule ligne de la table. Cliquer sur Validate pour confirmer le bon fonctionnement du Select puis cliquer sur Next.

A l'étape 4, nous allons compléter les paramètres génériques de la Subscription, avec la possibilité de les retrouver à partir de la Base de données, simplement en cochant l'option Get the value from the database. Cette étape est à paramètrer en fonction de vos besoins.

A l'étape 5, la liste des paramètres du rapport sont affichés, et de la même manière, ces valeurs peuvent être retrouvées à partir de la base de données Subscribers.

Enfin la dernière étape est la planification de la Subscription :

Ajuster la planification en fonction des besoins de votre projet :

Cliquer sur Finish pour finaliser le processus de création. Le serveur de rapport affiche le dernier run et le statut de la souscription. Il faut évidemment tester la Subscription avant la mise en production en modifiant les mail des destinataires dans la base de données par ceux du créateur de la Subscription pour s'assurer du bon fonctionnement notamment du filtrage dynamique.

NOTE : Un point délicat est d'entrer dans la base de données Subscribers les valeurs correctes pour les requêtes MDX, les syntaxe étant réellement particulière. Comme le filtrage est très spécifique avec Analysis Services, la meilleurs méthode pour les retrouver est de se connecter à Analysis Services et copier les valeurs comme montré ci dessous. Simplement lancer SSMS, se connecter à Analysis Services (Cube TFS), et lancer une nouvelle requête sur le cube Team System. Parcourir le cube et sélectionner la valeur que l'on veut passer comme paramètre et à l'aide du menu contextuel, choisir la commande Copy, puis coller cette valeur dans la table UserInfo de la base Subscribers. Par exemple, pour filtre sur le Work Item Type Bug, la valeur du paramètre sera :

Puis

Ci dessous la valeur pour le Work Item Type

Pour le projet d'équipe, on aura l'utilisation d'un ID

ces valeurs sont finalement collées dans la table comme montré ci dessous

TFS : Rapports Custom et Data Driven Subscription Part 1

Reporting Services est un des piliers des plus importants pour ce qui concerne la gestion de la communication avec TFS. Premièrement, avec l'utilisation du DataWarehouse relationnel du Cube Olap, il est très simple d'implémenter des rapports personnalisés qui correspondent aux besoins en terme de communication du projet. De plus, Reporting Services fournit un mécanisme de Souscription de deux manières :

· Subscription


· Data Driven Subscription


Le but de cette article est de démontrer étape par étape l'implémentation d'un Rapport personnalisé exposé au travers d'une Data Driven Subscription


Création et Personnalisation d'un Rapport TFS


Le système de bases de données TFS est composé de 3 différent Repository : TFS OLTP Database qui contient toutes les données "live", TFS Relational Warehouse TFSWarehouse qui exposent les données via un schéma très facile à comprendre parce qu'optimisé pour les requêtes et le reporting, et enfin un cube OLAP, permettant un accès à via Microsoft SQL Server Analysis Services au travers du langage de requêtage multidimensionnel MDX. Ce troisième reporsitory est particulièrement interessant pour l'analyse de données historisées et de valeurs précalculées et ou agrégées.



Pour ce qui concerne le cube OLAP, les faits et dimensions sont organisés dans un modèle en étoile tel que schématisé ci dessous :



Les tables de faits disponibles dans le warehouse relationnel TFS sont :

Ci dessous la table des dimensions disponibles dans le Warehouse relationnel TFS :

Prérequis pour la création d'un rapport personnalisé basé sur TFS

  • Un Serveur TFS accessible

  • BIDS (Business Intelligence Development Studio) ou Report Builder

  • SQL 2008 (R2 optionel) avec les outils clients
Création du rapport personnalisé

Démarrer Business Intelligence Development Studio et créer un nouveau Projet en utilisant le Project template Report Server dans la rubrique Business Intelligence


Le projet est généré avec des dossiers vides, l'étape suivante consiste à créer les Data Sources, une pour se connecter au Warehouse relationnel et l'autre pour une connection au cube. Pour ajouter la data source relationnelle procéder comme suit :



  1. Cliquer bouton droit sur le dossier Shared data Sources et choisir la commande Add New Data Source

  2. Dans l'onglet General, Taper TfsReportDS pour le nom (nom par défaut pour les rapports)

  3. Dans la zone de liste choisir Microsoft SQL Server

  4. Créer la chaine de connection permettatnt de se connecter à l'instance SQL qui héberge les données relationnelles

  5. Selectionner la base TfsWarehouse (Il faudra vérifier de bien disposer des droits d'accès sur cette base auprès du DBA)

  6. Valider
L'étape suivant consiste à créer la Data source pour se connecter au cube en procédant comme suit

  1. Cliquer bouton droit sur le dossier Shared data Sources et choisir la commande Add New Data Source

  2. Dans l'onglet General, Taper TfsOlapReportDS pour le nom (nom par défaut pour les rapports)

  3. Dans la zone de liste choisir Microsoft SQL Server Analysis Services

  4. Créer la chaine de connection permettatnt de se connecter à l'instance SQL qui héberge les données multidimensionnelles

  5. Selectionner la base TfsAnalysis (Il faudra vérifier de bien disposer des droits d'accès sur cette base auprès du DBA)

  6. Valider

On obtient le résultat suivant :



Dans l'étape suivante, on crée le rapport : Cliquer Droit sur le noeud Reports et choisir Add New Report


Le report wizard apparait Cliquer Next. Il faut noter que le wizard permet de créer rapidement des rapports complexes avec du drill down, des regroupements et a donc une vraie plus value

Choisir Shared Data Source comme montré ci dessous puis cliquer Next

Cliquer Query Builder pour construire la requête du rapport

Le Designer du Query Builder appairait, Selectionner la perspective Current Work Item (en fonction de la version du cube, le nommage de ces objets peut changer) mais l'interface est très simple à prendre en main et permet d'exécuter les requêtes pour évaluer le résultat

Tous dabord, nous allons glisser les mesures Current Work Item Count dans le Data Pane

Puis nous glissons la dimension Team Project Name pour le filtrage

On Glisse également la dimension Work Item Type puis nous cochons la case Parameter pour les deux champs (à droite de la zone de filtre) ce qui va générer dans le rapport automatiquement les drops down list de filtrage permettant à l'utilisateur final de modifier ces paramètres de filtrage. Si la case n'est pas coché, le filtrage sera non modifiable à l'éxécution

Finalement, glisser les chapmps suivants dans la zone Data Pane : Work Item Type, ID et Title tel que montré ci dessous :

Valider. A noter que bien évidemment, cette requête sera modifiable à posteriori

Cliquer Next et choisir l'option Tabular

Organiser les options de Regroupement et d'affichage des données comme montré ci dessous

Cliquer Next et choisir les options suivantes : Drill Down et SubTotlas. Drill Down permettra d'explorer de manière hiérarchique le rapport

Cliquer next et choisir un style de rapport

Cliquer Next et entrer le nom du rapport

Le rapport est alors affiché en mode Prévisualisation dans Visual Studio

Maintenant, nous allons améliorer le look & feel de ce rapport en utilisant les options de format, positionnement. En mode Design, nous pouvons modifier les couleurs de premier plan et d'arrière plan ainsi que les polices et taille de police

Ci dessous, un exemple de rendu avec différentes couleurs par groupe ( le cumul en bleu, le détail en jaune)

Maintenant, nous allons ajouter une Jauge au rapport (nouveau controles de la boite à outils avec SQL 2008 Reporting Services). Cliquer Ctrl Alt X pour afficher la boite à outils, selectionner le composant jauge et glisser le sur la surface de design du rapport

choisir le style le plus adéquat

Valider, la jauge apparait sur la surface de design, glisser la mesure WorkItemCount à partir du Dataset dans la zone Data Field de la jauge

Procéder au paramétrage du Range de la jauge pour gérer un seuil de qualité par exemple, on est en zone rouge dès que le niveau de bug dépasse 60

Paramétrer en fonction du contexte

Finaliser les options de couleurs

Valider et activer l'onglet Preview du rapport afin d'avoir un apercu du rendu final avec les données réelles du Datawarehouse ou Cube Olap

Ci dessous, un autre version de ce rapport avec un graphique en plus et une initialisation du tabix en mode collapse