Entity/Facet/Pattern Une application qui en a…

Slides:



Advertisements
Présentations similaires
MySQL Base de données.
Advertisements

Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012
Les Systèmes d’Information Financière Atelier conjoint ACBF / Banque Mondiale / AFRITAC de l’Ouest Gérer l’application dans le temps, sur les plans fonctionnel,
Projets Dossier de conception Logiciel
Le struts validator – framework de validation
Linq, fonctionnement et architecture
Treuil IRD Abdelwahed FSSM-Marrakech
XML - Henry Boccon-Gibod 1 XML, Langage de description La question du choix de formalismes Les entités et leur représentations modalités de modèles et.
J. Paul Gibson Bureau A 207, Le département LOgiciels-Réseaux
Conception de Programmes Evolutifs Pré Soutenance de TER Année Encadrants : Cathy Escazut et Michel Gautero Auteurs: Paul-Kenji Cahier Sylvain.
UML - Présentation.
(Classes prédéfinies – API Java)
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
UML (Unified Modeling Langage)
COMMENT CRÉER UNE ENQUÊTE AVEC SPHINX ?
Principes de programmation (suite)
Principes de la technologie orientée objets
Tableau croisé dynamique sous Excel (TCD).
Développement Rapide dApplications Web avec.NET « Mon premier site »
METHODE AGIL Présenté par : GRIOUI Haykel MILADI Hedi CHARFI Habib
Chap 4 Les bases de données et le modèle relationnel
Administration de bases de données spatiales avec SavGIS
Principes de programmation (suite)
28 novembre 2012 Grégory Petit
Type de contenu. © Partouche David / 2007 version 0.1 Colonne de site Une colonne de site permet de définir un champs qui sera exploitable au sein de.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
L’utilisation des bases de données
A4.1.1 Proposition dune solution applicative A4.1.2 Conception ou adaptation de linterface utilisateur dune solution applicative A4.1.2 Conception ou.
TDD : avec ou sans Mocks ? Par Anthony Dahanne, Yannick Ameur,
Semaine #1 INF135 par Frédérick Henri.
Les concepts et les méthodes des bases de données
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Programmation non procédurale Le projet ECOLE 2000
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
ANALYSE METHODE & OUTILS
Transformation de modèles Kick Off Motor Jean Marc Jézéquel & Didier Vojtisek La vision Triskell : Umlaut NG.
Annexe 1 Tests unitaires d'applications Java avec JUNIT
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
2003 (revisé 2008)SEG Chapitre 11 Chapitre 1 “The Systems Engineering Context” Le contexte du génie de systèmes.
Introduction à Visual Studio C++ (VC++)
Introduction au Génie Logiciel
Tutorat en bio-informatique
Réaliser par: Sadok Amel Cheboui hassiba
Génération de code JAVA
Bureautique M1 Mise en forme évoluée 2.
Les types composés Les enregistrements.
Programmation Réactive
MOCK.
Jean Paul CHANLON IUT1 Grenoble Génie Mécanique et Productique
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
Comprendre le SGBDR Microsoft Access – partie 2
Nouvelles Technologies Internet & Mobile
Présentation de Qt Iris 1
développeur informatique
Test et assurance qualité : Focus Projet Outiz
1 Initiation aux bases de données et à la programmation événementielle Cours N°8 : Gestion de la cohérence avec des zones de liste déroulantes. Souheib.
Introduction Module 1.
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
Les bases de données Séance 3 Construction du Modèle Conceptuel de Données.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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