Transcript Slides

Les journées
SQL Server 2013
Un événement organisé par GUSS
#JSS2013
Les journées
SQL Server 2013
Pratiques et expériences du
Projet BI Agile (Biml/NBi)
Florian Eiden
Thomas Morisson
Jordan Mootoosamy
Un événement organisé par GUSS
#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
Michel Perfetti à
17h en salle Rubis
– 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
#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
Outils
Le mur de post-it
Mingle : la version virtuelle du mur
#JSS2013
Le sprint
1/ Revue
2/
Planification
1 sprint
=
3 semaines
4/
Rétrospective
3/ Stand-Up
Meeting
#JSS2013
Evènements
Evènement
Qui
Revue de sprint Scrum Master
Objectifs
Outils
PO
Dev
Mingle
0,5 jour
Présenter les US
Chiffrage
Définir objectif principal
Planification
Dev
Création des post-it
Attribution des tâches
Post-it
Stand-up
meeting
Scrum Master
PO
Dev
Avancement
Attribution des tâches
Mur de post-it
Rétrospective
Scrum Master
PO
Dev
Bilan
Présentations
Axe positifs / à améliorer
Mingle
0,5 jour
Quotidien
0,5 jour
#JSS2013
Retours d’expérience
Positifs
Management
Développeurs
Utilisateurs
A surveiller
+ Chiffrage collégial
+ Vision globale du sprint grâce au
mur
= Bon pilotage à l’itération
- Planning global
+ 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
+ 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
Biml
• 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
#JSS2013
Biml – principe de base
<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
#JSS2013
Mist
•
•
•
•
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
#JSS2013
Présentation de BIML
#JSS2013
TODO
• 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
#JSS2013
Conclusion
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$
#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éploie
Je 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
Framework NBi
Répertoire du projet NUnit
Répertoire
d’installation de 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
Framework NBi
Répertoire du projet NUnit
Répertoire
d’installation de NBi
Fichier config
qui pointe vers
les .nbits
#JSS2013
NBi : Structure du projet de test
• Projet de Tests : Déclaration des projets côté NUnit
• Création des tests: NotePad++ ou autre éditeur XML
– Fichiers XML : .nbits
Répertoire
d’installation de NBi
#JSS2013
NBi : Structure du projet de test
• 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
Répertoire
d’installation de NBi
#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
• Nouveau fichier texte > NotePad++ > Enregistrer sous .nbits
<?
en
<t
te
xm
</
#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)
System-Under-Test
Execution
• Query (SQL,MDX,DAX)
• Paramétrables
• Variabilisables (code dynamique)
• Assembly (dll.class.method)
Assert
equalTo
• Valeurs en dur
• CSV
• Query (SQL,MDX,DAX)
fasterThan
syntacticallyCorrect
• Check par le moteur associé
Structure
exists
contain
Members
count / contain / ordered
matchPattern (Regex)
• (Multidim) Measure, MG, Hierarchy, Dimension
• (Tabular) Column, Table
• (Multidim) Hierarchies, Dimensions
• (Multidim) Level, Hierarchy
#JSS2013
NBi : Exemple
#JSS2013
NBi : Démonstration
#JSS2013
NBi : Industrialisation
•
Scriptabilité de l’exécution
–
–
•
Métadonnées des tests
–
•
Paramètres et Variabilisation du code, dans le test ou via le fichier de config
Partage des sources
–
•
Ignore, Description, Auteurs, Changelists, Catégorisation…
Paramétrage des Query :
–
•
Via ligne de commande NUnit (nunit-console monprojet.nunit)
Via MSBuild
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
#JSS2013