La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Entity/Facet/Pattern Une application qui en a…

Présentations similaires


Présentation au sujet: "Entity/Facet/Pattern Une application qui en a…"— Transcription de la présentation:

1 Entity/Facet/Pattern Une application qui en a…
Design Pattern Une application qui en a… © - Olivier Spinelli Olivier Spinelli

2 Objectifs & Moyens Objectifs Moyens Mise en œuvre concrète de Patrons
Vous faire pratiquer la conception & le développement Vous faire réfléchir Moyens Une application dont le modèle de données est complexe Un langage (C#), Visual Studio Votre travail © - Olivier Spinelli

3 L’application Prénom Nom But Limites D-Form Dynamic Forms
Créer des formulaires et pouvoir saisir des réponses Limites Les aspects de persistence seront traités dans un second temps © - Olivier Spinelli

4 Ce sur quoi il faut se concentrer…
1 – Sur le besoin Il faut le comprendre Il faut en faire le tour « fonctionnel » 2 – Sur la structure de données Indépendamment des « traitements » Sur les articulations des données entre elles  © - Olivier Spinelli

5 Le besoin - 1 Notre client a une collection de formulaires soumis à une centaine de personnes durant une dizaine d’années En 10 ans, le formulaire a évolué une demi douzaine de fois Un formulaire remplit contient une centaine de questions regroupées par thèmes, sous thèmes, etc. L’objectif est d’informatiser le traitement de ces formulaires © - Olivier Spinelli

6 Le besoin - 2 Les questions que l’on doit pouvoir créer sont de formes très variables Questions binaires Oui/Non Oui/Non/Ne se prononce pas Questions ouvertes Texte libre Autres… Choix n parmi m Tri parmi un ensemble d’éléments © - Olivier Spinelli

7 Première approche On a de la donnée (les Réponses) à ranger dans des cases (les Questions)  C’est l’approche « base de données » On se sert du « modèle de de données » pour modéliser le(s) formulaire(s) Les parties de formulaires sont des classes Une question est une propriété (ou un champ ou un ensemble de champ) appartenant à une classe Les réponses d’une personne sont des instances de ces classes : les propriétés ont pour valeur les réponses aux questions ( tables) ( colonnes) ( lignes) © - Olivier Spinelli

8 Pros and Cons Pros Cons Simplicité du modèle Extensibilité
Un programme ( une base de données) implémente un seul « type » de formulaire ? Rigidité du modèle © - Olivier Spinelli

9 L’approche dynamique On modélise nous même la notion de « type » de formulaire A un « type » de formulaire on gère un ensemble de réponses On doit pouvoir ajouter ou supprimer des Questions à un Formulaire même si des réponses existent déjà Les « types » de Question doivent être gérés par un mécanisme de plugin © - Olivier Spinelli

10 Couverture fonctionnelle minimale
Il est nécessaire De créer et supprimer un Formulaire D’architecturer un Formulaire en « groupes de questions » qui peuvent eux-mêmes contenir d’autres « groupes de questions » De partager un « groupe de questions » entre plusieurs Formulaires De créer des Réponses à un Formulaire De modifier la structure d’un Formulaire même si des Réponses existent © - Olivier Spinelli

11 Couverture fonctionnelle ++
Les Questions sont développables par d’autres (plugin) Un Formulaire et ses instances sont sérialisables dans un fichier Un Formulaire et ses instances « existent » dans une base de données relationnelle © - Olivier Spinelli

12 Mode Opératoire : TDD Pair Programming Langage C#
Test – Driven Development Développement guidé par les tests Principe, mise en œuvre & outils © - Olivier Spinelli

13 TDD  Test – Driven Development
Méthode de Conception qui s’appuie sur l’écriture de tests unitaires Principe itératif Isoler une fonctionnalité Écrire le test qui prouverait que cela fonctionne Vérifier qu’il échoue Écrire le code nécessaire Vérifier qu’il passe © - Olivier Spinelli

14 Avantages L’API est conçu via son utilisation et non a priori
Cela documente naturellement la façon d’utiliser une API Permet de se concentrer sur des fonctionnalités concrètes Aide à découper un système complexe On obtient le code nécessaire et seulement ce qui est nécessaire Ces tests sont capitalisés afin de détecter les régressions Cela augmente la confiance dans le code © - Olivier Spinelli

15 Mise en œuvre C’est avant tout une démarche, un état d’esprit
L’effort à fournir initialement n’est pas énorme Le gain de temps est réel à moyen terme Cette démarche doit être outillée a minima Notamment par des outils qui facilitent l’écriture et l’exécution des tests © - Olivier Spinelli

16 xUnit Frameworks Version originale en SmallTalk
NUnit est la version .Net CppUnit, JUnit, ChoucUnit… Principe général Une classe expose des méthodes de tests La classe est instanciée et ses méthodes sont appelées par une application de test © - Olivier Spinelli

17 Les 7 concepts en jeu Test Fixture
Une classe qui comporte une ou plusieurs méthode de test Test Method Une méthode qui exécute un test Test Runner L’application qui localise et exécute les méthodes de test Assertion Une clause qui doit être vraie Expected Exception Une exception qui doit être émise par un test Setup Code qui est exécuté avant chaque test Teardown Code qui est exécuté après chaque test © - Olivier Spinelli

18 Exemple simple Une fonction statique pas compliquée…
Mais qu’il est facile d’implémenter buggée… © - Olivier Spinelli

19 Son test… Fixture et sa méthode de test
Espace de nommage pour les objets fournis par le framework NUnit Cet attribut suffit à faire de cette classe une Fixture L’attribut Test définit une méthode de test Une assertion : la valeur attendue doit être égale au résultat de la fonction © - Olivier Spinelli

20 En vrai… Un seul objectif : Trouvez la faille ! © - Olivier Spinelli

21 Test  Dévelopement ? Test Driven Development
On écrit les méthodes de test… …avant l’implémentation Test Driven Development C’est pas plus compliqué que ça © - Olivier Spinelli

22 Actions Vous vous sentez à l’aise avec le sujet
Vous avez déjà programmé en C# Vous ne comprenez qu’à peine la question Pour vous, C# est un des secteurs 3D d’Alpha du Centaure En binôme (pair programming) Vous rédigez les tests On valide ensemble Vous implémentez On teste © - Olivier Spinelli


Télécharger ppt "Entity/Facet/Pattern Une application qui en a…"

Présentations similaires


Annonces Google