#JSS2013
Les journéesSQL Server 2013
Un événement organisé par GUSS
#JSS2013
Les journéesSQL Server 2013
Un événement organisé par GUSS
Pratiques et expériences du Projet BI Agile (Biml/NBi)
Florian EidenThomas MorissonJordan Mootoosamy
#JSS2013
Merci à nos sponsors
#JSS2013
Les speakers• Florian Eiden
• Architecte décisionnel / MVP SQL Server• Blog : La BI ça vous gagne (fleid.net)• Twitter : @fleid_bi
• Jordan Mootoosamy• Consultant décisionnel
• Thomas Morisson• Senior Consultant BI
#JSS2013
Introduction• Agilité ?
– Valeurs, priorités– Des méthodes de gestion de projet ET des techniques de
développement• Un des objectifs premiers
– Atteindre une fréquence de livraison la plus fluide possible sans risque sur les fonctionnalités livrées
• Notre session– Retour d’expérience, SCRUM en équipe BI– Développements automatiques : BIML– Tests automatiques : NBi
#JSS2013
Retour d’expérience, SCRUM en équipe BI• Remarques
– Ceci n’est pas un cours sur l’agilité– Ceci est une interprétation de l’agilité, dans un
cas particulier
=> Identifier les points positifs, les points à améliorer=> Proposer des solutions
•
Michel Perfetti à 17h en salle
Rubis
#JSS2013
Retour d’expérience, SCRUM en équipe BI• Plan
– Contexte– Rôles– Outils– Evènements
#JSS2013
Retour d’expérience, SCRUM en équipe BI• Contexte
– Suivi d’activité : Réalisé, Objectifs– Technologies MS : SSIS, SSAS, SSRS– Portail SharePoint / BI Personnelle– Besoins évolutifs– Maturité décisionnelle du client– Maturité technique de l’équipe
#JSS2013
En quoi un processus agile est-il différent ?• Méthode itérative,
incrémentale et adaptative– Réactivité aux demandes du client
– Priorité à la satisfaction réelle du client
• Méthode Agile vs Cycle en V
#JSS2013
Les rôles dans l’équipe• Scrum Master : 1 personne
– garant du respect des principes de l'agilité– anime les différents évènements
• Product Owner (PO) : 4 personnes– définit les User-Story (US) en collaboration avec les utilisateurs
• Développeurs : 11 personnes– réalisent les US– équipe indépendante techniquement
#JSS2013
OutilsLe mur de post-it
Mingle : la version virtuelle du mur
#JSS2013
Le sprint2/
Planification
3/ Stand-Up Meeting
4/ Rétrospecti
ve
1/ Revue
1 sprint=
3 semaines
#JSS2013
EvènementsEvènement Qui Objectifs OutilsRevue de sprint0,5 jour
Scrum MasterPODev
Présenter les USChiffrageDéfinir objectif principal
Mingle
Planification0,5 jour
Dev Création des post-itAttribution des tâches
Post-it
Stand-up meetingQuotidien
Scrum MasterPODev
AvancementAttribution des tâches
Mur de post-it
Rétrospective 0,5 jour
Scrum MasterPODev
BilanPrésentationsAxe positifs / à améliorer
Mingle
#JSS2013
Retours d’expériencePositifs A surveiller
Management+ Chiffrage collégial+ Vision globale du sprint grâce au mur= Bon pilotage à l’itération
- Planning global
Développeurs+ Interventions de tous les acteurs aux stand-up meeting= Partage de la connaissance facilité
- Temps de parole- Seuls les PO sont en contact avec les utilisateurs- Documentation, Versionning
Utilisateurs
+ Adaptation aux évolutions du besoin+ Priorisation dans la livraison des fonctionnalités= Satisfaction
- Etendue des modifications sur le périmètre déjà développé
#JSS2013
Biml et Mist pour une BI plus agile• Malgré toutes les qualités de la suite MSBI,
on trouve toujours certains aspects qui freinent le respect des bonnes pratiques de développement:– SSIS ne facilite pas la réutilisation du code– SSIS ne permet pas réellement une abstraction du
développement• Biml et Mist ont été créés pour pallier à ces
inconvénients
#JSS2013
• Business Intelligence Markup Language• Langage basé sur XML, créé et maintenu par Varigence• Permet de décrire des solutions MSBI de manière
déclarative et facilement lisible• Possibilité d’injecter du code BimlScript pour générer
dynamiquement des objets• Intégré à BIDS Helper depuis 2011
Biml
#JSS2013
<Biml> <Connections> <Connection Name=« C1 » […] /> </Connections> <Packages> <Package Name=« P1 » […]> […] <Tasks> <Dataflow Name=« DFT1 » […]> […] </Dataflow> </Tasks> </Package> </Packages></Biml>
Connection C1
Package P1
[…]
Dataflow Task DFT1
Biml – principe de base
#JSS2013
• IDE créé par Varigence pour développer des solutions MSBI
• Permet de développer de manière visuelle à partir de Biml• Versioning et source control• Permet de rajouter un niveau d’abstraction entre le design
des packages et leur implémentation
Mist
#JSS2013
demoPrésentation de BIML
#JSS2013
• Une base Source, une base de Staging• Pour chaque table de la base Source:
– Récupérer les données de toutes les colonnes de la table– Charger les données dans une table identique en Staging
• On veut récupérer les données de toutes les tables sources et charger les données dans la base de Staging
• Phase 1 : Premier script Biml de package statique• Phase 2 : Automatisation des packages avec du
BimlScript
TODO
#JSS2013
Points positifs• Une abstraction du code
pour une réutilisabilité facilitée
• Un coût réduit du changement sur les packages déjà développés
• Permet une qualité de développement constante
Points négatifs• Des compétences
préalables sont nécessaires sur les différents outils
• Un certain temps d’apprentissage du langage
• Coût de licence de Mist– Abo mensuel : 250$ /
mois– Abo perpétuel : 4 000$
Conclusion
#JSS2013
Pourquoi des tests automatiques?• Monde idéal:
– On me demande une nouvelle fonctionnalité– Je développe– Je déploie
… le tout en moins d’1 journée?
#JSS2013
Pourquoi des tests automatiques?• Pour le rendre possible:
– On me demande une nouvelle fonctionnalité– Je développe
> Je teste en un clic: ma fonctionnalité et toutes mes régressions> Si c’est valide: je livre en un clic– Je déploie
… le tout en moins d’1 journée!
#JSS2013
Pourquoi des tests automatiques?• Effet bonus:
– On me demande une nouvelle fonctionnalité– Je développe
> Je teste en un clic: ma fonctionnalité et toutes mes régressions> Si c’est valide: je livre en un clic– Je déploieJe reviens 6 mois plus tard, je n’ai pas peur de toucher au code !
• Je sais qu’il est propre• Je sais que si je casse quelque chose, je le détecterai tout de suite
#JSS2013
Les outils à disposition• Un minimum de code : Frameworks Open Source sur
Codeplex– BI.Quality : très facile, très limité, abandonné :’(– NBi : on va en parler, vivant, contributeur francophone: Cédric!
• Avec du code: Visual Studio, et donc en bonus toute l’intégration ALM– Session à suivre: Tests automatiques pour SSAS avec Visual Studio– Article de Charles-Henri Sauget et Fabrice Michellonet
#JSS2013
NBi : Composants• Framework Microsoft .NET• NUnit
– Framework de tests unitaires Open Source pour Microsoft .NET– Source : http://www.nunit.org
• ADOMD.NET – Fournisseur ADO.NET complémentaire à .NET pour interroger les métadonnées et
données de SSAS– Source: Microsoft SQL Server 2008R2 SP2 Feature Pack
• NBi– Framework complémentaire à NUnit, utilisant ADOMD.NET pour implémenter des
tests spécifiques à SQL Server et SSAS– Source : http://nbi.codeplex.com– Attention : il existe un tutorial pour l’installation mais un peu pénible quand même
#JSS2013
NBi : Structure du projet de test• Projet de Tests : Déclaration des projets côté
NUnit
Répertoire du projet NUnit
#JSS2013
NBi : Structure du projet de test• Projet de Tests : Déclaration des projets côté
NUnit
Répertoire du projet NUnit
#JSS2013
NBi : Structure du projet de test• Projet de Tests : Déclaration des projets côté
NUnit– Pointe vers le framework NBi
Répertoire du projet NUnitRépertoire
d’installation de NBi
Framework NBi
#JSS2013
NBi : Structure du projet de test• Projet de Tests : Déclaration des projets côté
NUnit– Pointe vers le framework NBi– Pointe vers un fichier de config qui définit la solution de test
Répertoire du projet NUnitRépertoire
d’installation de NBi
Framework NBi
Fichier config
qui pointe vers
les .nbits
#JSS2013
NBi : Structure du projet de test
Répertoire d’installation de
NBi
• Projet de Tests : Déclaration des projets côté NUnit
• Création des tests: NotePad++ ou autre éditeur XML– Fichiers XML : .nbits
#JSS2013
NBi : Structure du projet de test
Répertoire d’installation de
NBi
• Projet de Tests : Déclaration des projets côté NUnit
• Création des tests: NotePad++ ou autre éditeur XML– Fichiers XML : .nbits– Format documenté sur http://nbi.codeplex.com
#JSS2013
NBi : Structure du projet de test• Projet de Tests : Déclaration des projets côté
NUnit• Création des tests: NotePad++• Exécution des tests : NUnit
#JSS2013
Structure XML des .nbits
<?xml version="1.0" encoding="utf-8" ?><testSuite name="Ma série de tests" xmlns="http://NBi/TestSuite">
</testSuite>
• Nouveau fichier texte > NotePad++ > Enregistrer sous .nbits
#JSS2013
Structure d’un test• Une suite contient plusieurs tests
#JSS2013
Contenu d’un test : System-Under-Test et Assert
Ce qui va être testé
Les critères du test
#JSS2013
NBi : Eventail de tests (non exhaustif)Execution
• Query (SQL,MDX,DAX)• Paramétrables• Variabilisables (code dynamique)
• Assembly (dll.class.method)
equalTo• Valeurs en dur• CSV• Query (SQL,MDX,DAX)
fasterThansyntacticallyCorrect
• Check par le moteur associéStructure
• (Multidim) Measure, MG, Hierarchy, Dimension• (Tabular) Column, Table• (Multidim) Hierarchies, Dimensions
existscontain
count / contain / orderedmatchPattern (Regex)
Members• (Multidim) Level, Hierarchy
System-Under-Test Assert
#JSS2013
NBi : Exemple
#JSS2013
NBi : Démonstration
#JSS2013
NBi : Industrialisation• Scriptabilité de l’exécution
– Via ligne de commande NUnit (nunit-console monprojet.nunit)– Via MSBuild
• Métadonnées des tests– Ignore, Description, Auteurs, Changelists, Catégorisation…
• Paramétrage des Query : – Paramètres et Variabilisation du code, dans le test ou via le fichier de config
• Partage des sources– Fichiers XML hébergeables sur TFS/SVN
• Génération automatique de tests : Genbi– Génère des séries de test à partir d’un CSV
#JSS2013
Stratégies de test• Cahiers de tests, de recette• Approche exhaustive :
– Flux (Sources vs ODS, ODS vs DWH)• Données agrégées dans le flux : Comptages distincts, sommes, moyennes…• Données non agrégées : Comptages, répartitions sur les clefs, match 1:1…
– DWH vs Cube• Agrégations de haut niveau (CA 2012…)• Structure des dimensions, hiérarchies, indépendamment des faits• Valeurs des mesures à chaque clef de chaque dimension indépendamment des
autres• Des scénarios de référence, bien connus de tous. Si possible
prendre les pires cas métiers possibles• Toutes les requêtes d’identification de bug générés
naturellement dans le projet
#JSS2013
NBi : mon avis• Outil simple qui fait le job : j’aime
• Mais encore du chemin avant le scénario idéal : intégré à l’IDE, visuel, automatique…
#JSS2013
Conclusion• Etat de l’art : BI Agile
– Méthodologies projet : enfin la légitimité– Outillage pour le développement :
• Ça s’améliore, mais par des initiatives externes à MS• La BI, toujours la 5ème roue du carrosse ALM .NET• Quid des nouveaux produits Power BI? Quid de SSRS?
• Les autres sujets à ne pas rater: – Le TDD, Test Driven Development : à suivre tout de
suite!– Tests automatiques avec Visual Studio : session
suivante!
#JSS2013#JSS2013