440 likes | 575 Views
Pratiques et expériences du Projet BI Agile ( Biml / NBi ) Florian Eiden Thomas Morisson Jordan Mootoosamy. Merci à nos sponsors. Les speakers. Florian Eiden Architecte décisionnel / MVP SQL Server Blog : La BI ça vous gagne ( fleid.net) Twitter : @ fleid_bi Jordan Mootoosamy
E N D
Pratiques et expériences du Projet BI Agile (Biml/NBi) Florian Eiden Thomas Morisson Jordan Mootoosamy
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
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
Retour d’expérience, SCRUM en équipe BI Michel Perfetti à 17h en salle Rubis • 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
Retour d’expérience, SCRUM en équipe BI • Plan • Contexte • Rôles • Outils • Evènements
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
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
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
Outils Le mur de post-it Mingle : la version virtuelle du mur
Le sprint 1 sprint = 3 semaines
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 • Bimlet Mist ont été créés pour pallier à ces inconvénients
Biml • Business Intelligence MarkupLanguage • 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 – principe de base <Biml> <Connections> <ConnectionName=« C1 » […] /> </Connections> <Packages> <PackageName=« P1 » […]> […] <Tasks> <DataflowName=« DFT1 » […]> […] </Dataflow> </Tasks> </Package> </Packages> </Biml>
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
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
Conclusion Points positifs 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$ • 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
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?
Pourquoi des tests automatiques? • … le tout en moins d’1 journée! • 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
Pourquoi des tests automatiques? 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 • 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
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
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
NBi : Structure du projet de test Répertoire du projet NUnit Projet de Tests : Déclaration des projets côté NUnit
NBi : Structure du projet de test Répertoire du projet NUnit Projet de Tests : Déclaration des projets côté NUnit
NBi : Structure du projet de test Framework NBi Répertoire d’installation de NBi Répertoire du projet NUnit • Projet de Tests : Déclaration des projets côté NUnit • Pointe vers le frameworkNBi
NBi : Structure du projet de test Framework NBi Répertoire d’installation de NBi Répertoire du projet NUnit Fichier config qui pointe vers les .nbits • Projet de Tests : Déclaration des projets côté NUnit • Pointe vers le frameworkNBi • Pointe vers un fichier de config qui définit la solution de test
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
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
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
Structure XML des .nbits <?xml version="1.0" encoding="utf-8" ?> <testSuitename="Ma série de tests" xmlns="http://NBi/TestSuite"> </testSuite> Nouveau fichier texte >NotePad++ > Enregistrer sous .nbits
Structure d’un test Une suite contient plusieurs tests
Contenu d’un test : System-Under-Test et Assert Ce qui va être testé Les critères du test
NBi : Eventail de tests (non exhaustif) System-Under-Test Assert equalTo • Valeurs en dur • CSV • Query (SQL,MDX,DAX) fasterThan syntacticallyCorrect • Check par le moteur associé Structure • (Multidim) Measure, MG, Hierarchy, Dimension • (Tabular) Column, Table • (Multidim) Hierarchies, Dimensions exists contain count / contain / ordered matchPattern (Regex) Members • (Multidim) Level, Hierarchy Execution • Query (SQL,MDX,DAX) • Paramétrables • Variabilisables (code dynamique) • Assembly (dll.class.method)
NBi : Industrialisation • Scriptabilité de l’exécution • Via ligne de commandeNUnit (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
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
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…
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!