Création d application d entreprise

Documents pareils
SQL Server Installation Center et SQL Server Management Studio

DotNet. Plan. Les outils de développement

< Atelier 1 /> Démarrer une application web

GPI Gestion pédagogique intégrée

Qu est ce que Visual Guard. Authentification Vérifier l identité d un utilisateur

Armand PY-PATINEC 2010

Formateur.NET expérimenté Forte expertise dans la conception et le développement d applications.net, associée à une grande pédagogie

Fiche Technique Windows Azure

Windows Server 2008 R2

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

CONTACT EXPRESS 2011 ASPIRATEUR D S

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Vulnérabilités et sécurisation des applications Web

La double authentification dans SharePoint 2007

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

CAHIER DES CHARGES D IMPLANTATION

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Objet du document. Version document : 1.00

Protéger une machine réelle derrière une machine virtuelle avec pfsense

Guide de l utilisateur Mikogo Version Windows

Créer et partager des fichiers

Utilisation avancée de SugarCRM Version Professional 6.5

Procédure d'installation complète de Click&Decide sur un serveur

Optimiser pour les appareils mobiles

Olivier Deheurles Ingénieur conception et développement.net

Notre Catalogue des Formations IT / 2015

Déploiement d application Silverlight

Consultant.NET / SharePoint

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Ingénieur d Etudes.NET. Involys :.NET,3.5, C#, Vb.net, Asp.net, vb6,sql server2005, Oracle8i, TFS, MSProject, UML, Rational Rose

COURS WINDEV NUMERO 3

Assistance à distance sous Windows

K?ellaWeb Saisie des absences, retards et sanctions APLON en mode Web

WINDOWS SHAREPOINT SERVICES 2007

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Microsoft Application Center Test

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

Manuel d'installation de GESLAB Client Lourd

Devenez un véritable développeur web en 3 mois!

Interagir avec le SharePoint. Version 1.0

Catalogue des formations 2014

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Vérifier la qualité de vos applications logicielle de manière continue

INTRODUCTION AUX TESTS CODES DE L INTERFACE UTILISATEUR

Formation. Module WEB 4.1. Support de cours

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Déployer une application cliente avec le Framework.NET 3.5 Client Profile

Campagnes d ings v.1.6

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Guide d installation BiBOARD

Installation de SQL Server Reporting Services avec l intégration dans un site Windows SharePoint Services V3

Dans cette Unité, nous allons examiner

Introduction au développement SharePoint. Version 1.0

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

SOMMAIRE. Comment se connecter?

ESPACE COLLABORATIF SHAREPOINT

Module.NET 3 Les Assemblys.NET

MEGA Web Front-End Installation Guide MEGA HOPEX V1R1 FR. Révisé le : 5 novembre 2013 Créé le : 31 octobre Auteur : Noé LAVALLEE

De quoi avez-vous besoin pour ce manuel?

MANUEL DE L UTILISATEUR

Copyright Arsys Internet E.U.R.L. Arsys Backup Online. Guide de l utilisateur

Installation et prise en main d UBUNTU

Introduction MOSS 2007

Annexe 1. DIDACTICIEL Installation OCS 2.0RC2 /GLPI pour WINDOWS

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Mise en place Active Directory, DNS Mise en place Active directory, DNS sous Windows Serveur 2008 R2

Comment se connecter au dossier partagé?

LES NOUVEAUTES DE COST AND PROFITABILITY MANAGEMENT 8.1

Déploiement d'une base SQL Express

BIRT (Business Intelligence and Reporting Tools)

Introduction à. Oracle Application Express

Administration Centrale : Opérations

Dragon Naturally Speaking 13

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Guide d utilisation 2012


Créer le schéma relationnel d une base de données ACCESS

Sauvegarde d'une base de données SQL Server Express 2005

Guide de démarrage rapide. (pour la version 5.0.)

Livret 1 Poste de travail de l utilisateur :

Gestion des documents avec ALFRESCO

FileMaker Server 14. Aide FileMaker Server

UltraBackup NetStation 4. Guide de démarrage rapide

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7

Cours en ligne Développement Java pour le web

Manuel d utilisation du web mail Zimbra 7.1

Les Tutoriaux Utilisez Foxmail comme client de messagerie

Connexion à SQL server

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

Atelier Le gestionnaire de fichier

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

SQL Data Export for PS/PSS

Créer un rapport pour Reporting Services

Transcription:

1 Création d application d entreprise Création d application d entreprise Sommaire Création d application d entreprise... 1 1 Introduction... 3 1.1 Préface & Public de ce tutorial... 3 2 Une spécification pour développeur... 4 2.1 Définition du mot spécification dans cet ouvrage... 4 2.2 L intérêt d une spécification... 4 2.3 Les outils... 4 3 Le cycle de vie du projet... 5 3.1 Cycle de vie en V... 5 3.2 Cycle de vie incrémental... 6 4 Etudes des besoins d un projet... 7 4.1 Savoir écouter le client... 7 4.2 Interpréter les besoins du client... 7 5 L architecture du système... 8 5.1 Choix du type de client... 8 5.2 Les services... 9 5.3 Modélisation de l architecture logicielle... 10 5.4 Déduction de l architecture matérielle... 12 6 Les choix techniques... 13 6.1 Choisir la version du Framework... 13 6.2 Choisir les technologies d accès aux données... 14 6.3 Choisir le langage... 15 6.4 Choisir l EDI... 15 6.5 Choisir le stockage de données... 16 7 Etablir une maquette de l IHM... 17 8 Modélisation de la base de données... 18 8.1 Diagrammes ORM... 18 8.2 Générer le schéma de votre base de données... 19 9 Représentations objets... 21 9.1 Diagrammes de cas d utilisation / Etudes des acteurs et scénarii... 22 9.2 Diagrammes de paquetages & Composants... 23

2 Création d application d entreprise 10 Surveillance et gestion des erreurs du système... 25 10.1 Support d enregistrement des logs & actions à surveiller... 25 10.2 Comportement du système face aux erreurs non gérées... 26 11 Implémentation de la sécurité... 27 11.1 Les entrées utilisateurs... 27 11.2 Les entrées non utilisateur... 28 11.3 Les tentatives d attaques... 29 12 Les tests... 32 12.1 Tests unitaires... 33 12.2 Tests d intégration... 39 12.3 Tests de validation... 40 13 Le déploiement... 41 13.1 Choix du déploiement de votre application... 41 13.2 Projet de déploiement... 41 13.3 Click Once... 45 14 Le travail collaboratif... 51 14.1 Introduction WSS... 51 14.2 Introduction à Team Foundation Server... 52 15 Planification d un projet... 54

3 Création d application d entreprise 1 Introduction 1.1 Préface & Public de ce tutorial «Concevoir une spécification pour un projet.net», un titre bien long mais prometteur! Cela faisait bien longtemps que je voulais écrire ce tutorial. Actuellement formateur certifié Microsoft & chef de projets au sein d une société Toulousaine, j ai eu l occasion de mettre en pratique certains principes de base me permettant de me faire comprendre des clients, des développeurs et surtout de moi-même. Mettre ses idées sur papier, imposer des formalismes et des processus vous permettront de réaliser un travail de qualité. Ce livre d entrainement intervient dans le cursus certifiant MCPD 2.0 et 3.5 («Microsoft Certified Professional Developer»), saint graal des certifications.net au sein de Microsoft. De par leurs expériences, Bertrand Vergnault & Laurent Assis-Arantes (Développeur.NET, MCPD) m aideront activement à écrire ce tutorial. Le public de ce livre devra connaître la base du développement en.net et avoir des notions de Winforms, ASP.NET, Services

4 Création d application d entreprise 2 Une spécification pour développeur 2.1 Définition du mot spécification dans cet ouvrage Le mot «spécification» est à la base le document intervenant après un cahier des charges et avant le processus de conception préliminaire (cf. chapitre sur le cycle de vie). Dans cet ouvrage nous allons nous intéresser à une spécification au sens «large» du terme, ce qui est souvent le cas lors de projets où le développeur est lui-même le chef de projets. Nous allons voir comment il est possible, en un seul document, d architecturer notre SI. 2.2 L intérêt d une spécification Dans mon expérience passée, j ai eu l occasion de travailler avec des entreprises où la spécification était inexistante ou se résumait à un bout de papier écrit sur un coin de table. Le problème était que les directeurs ne souhaitaient pas dépenser de l argent pour une analyse qu ils trouvaient sans intérêts. On se retrouvait avec : Des délais non respectés. Des délais respectés car le temps imparti était trop conséquent (le développeur se permettant alors de travailler un jour sur deux). Un client revenant toujours sur ce qui avait été validé au préalable. Normal rien n était mis noir sur blanc. Vous remarquerez que sur ces trois points, l entreprise perd de l argent. 2.3 Les outils Nous allons voir dans ce livre comment utiliser plusieurs outils, tels que : Microsoft Visual Studio 2008 Team System Architect Edition, nous permettant de créer l architecture logicielle de notre SI. Team Foundation Server & Windows Sharepoint Services, pour le travail collaboratif. Microsoft Visio 2007, pour la modélisation objet. NUnit, pour les tests unitaires. Microsoft Office Project 2007, pour la gestion du temps.

5 Création d application d entreprise 3 Le cycle de vie du projet Il existe de nombreux cycles de vie dans le monde de la gestion de projets. Nous allons nous intéresser plus particulièrement à deux d entre eux : Cycle de vie en V Cycle de vie incrémental 3.1 Cycle de vie en V Le cycle de vie en V vous permet de décomposer en plusieurs étapes le cycle de vie de votre SI. Une etape N doit attendre que l étape N-1 soit réalisée. Chaque étape d analyse possède une étape de «test». L analyse des besoins : Etape se faisant avec le client, généralement par un appel d offre et une réponse à appel d offre. La spécification : Ce document vous permettra de décrire l architecture logicielle & matérielle, les technologies utilisées, les contraintes, les délais Ce document doit être compréhensible par le client et par le développeur. La conception préliminaire & détaillée : Ces etapes dépendent de l ampleur du projet, parfois seul un document de spécification est nécessaire. Ces étapes vont vous permettre de mettre sur papier l architecture en détail de votre logiciel (de la classe à la simple méthode de classe, voir même leur façon de s éxecuter). La codage : réalisation du système suivant ce qui aura été spécifié dans les étapes antérieures. Les tests : Chacun des tests correspond à une étape d analyse, par exemple, un test unitaire verifiera une partie bien précise du système. Un test d intégration verifiera si les différents soussystèmes sont capable de cohabiter ensemble. Pour finir, le test de validation va nous permettre de verifier si le logiciel conçu répond bien à la specification. Si une erreur survient dans l un des tests, il est necessaire de remonter la modification directement à l étape d analyse associée.

6 Création d application d entreprise 3.2 Cycle de vie incrémental Dans le modèle par incréments, un logiciel noyau est développé, puis successivement, les incréments sont développés et intégrés. Par exemple on démarre un cycle de vie en V pour la version 1 de notre logiciel puis après la phase de réalisation, on démarre un autre cycle en V pour la version 2 en parallèle à la fin de notre premier cycle. Les avantages du cycle incrémental sont : Un travail en parallèle permettant de ne jamais arrêter la production Les intégrations entre sous-systèmes se font au fur et à mesure La charge de travail est répartie dans le temps, pas de grosse pression au début et à la fin du développement. On peut livrer un logiciel dès le début, même si il n existe pas toutes les fonctionnalités. L inconvénient : Si le noyau ou le précédent incrément est mauvais, tous les autres incréments le sont aussi.

7 Création d application d entreprise 4 Etudes des besoins d un projet 4.1 Savoir écouter le client Mettons la technique de côté et passons du côté MOA. Savoir écouter (et pas juste entendre) les besoins du client est primordial pour la réussite de votre projet. Il vous faut utiliser un langage de non informaticien, schématiser ce dont vous parlez, appuyezvous sur des schémas UML compréhensibles par tous (cf. chapitre sur l UML). N oubliez pas que le client est roi mais ne sait pas tout! Vous intervenez en tant que «consultant» capable de délimiter le faisable de l impossible. Ne remettez pas en cause les conseils métier du client qui risqueraient de le froisser. Qui n a pas déjà eu des phrases du type «Non je ne suis pas d accord, le menu doit être à droite car je connais mes utilisateurs et il faut que ce soit là.». Vous n êtes pas là pour discuter mais réaliser et hypothétiquement faire rentrer de l argent. N oubliez pas de mettre par écrit toutes les demandes du client afin de vérifier que vous les avez bien identifiées. N hésitez pas à tout faire signer à chaque fois pour éviter qu à la livraison on vous dise que ce n était pas ce qui avait été convenu. 4.2 Interpréter les besoins du client Prendre le temps de comprendre le besoin est primordial, cependant, il faut aussi pouvoir l interpréter. C est pourquoi le langage UML (Unified Language Model) a été créé. Cette méthode non propriétaire va vous permettre de schématiser le système d information par rapport aux besoins client. L UML n est pas la seule façon d interpréter les besoins. N hésitez pas à faire vos propres commentaires, schémas (grâce notamment à Visual studio).

8 Création d application d entreprise 5 L architecture du système 5.1 Choix du type de client Lors de la création d une spécification, une des choses importantes à identifier, est le type de client de notre SI. Est-ce un site web? Une application windows? Sur quel type de plateforme doit-il être exécuté? Il existe deux grosses catégories de client applicatif en.net : RIA : Les Rich Internet Applications, pour le web RDA : Les Rich Desktop Applications, pour l exécution sur le système d exploitation Les applications riches vous permettent une interaction forte avec l IHM. Prenons l exemple d Outlook, vous pouvez l avoir en ligne ou sur votre bureau. Version RDA Version RIA Les technologies utilisées pour les applications de type RIA sont l ASP.NET avec de l Ajax (grâce à l ASP.NET 3.5 par exemple, ou l Ajax toolkit), du JavaScript (Librairie JQuery intégrée dans Visual Studio 2010), ou tout simplement du Silverlight 2. L intérêt des applications de type RIA vient du fait que tous les systèmes d exploitation peuvent les utiliser. Peu importe le système d exploitation ou le navigateur (Seulement Mac OS X et Windows pour Silverlight).

9 Création d application d entreprise Attention de bien faire la distinction entre ce qui s exécute côté serveur (ASP.NET) et du côté client (Silverlight, Javascript ). Les applications RDA (Rich Desktop Applications) vont vous permettre de s exécuter coté client grâce à la CLR (Common Language Runtime). L avantage est le fait d avoir la main sur le système d exploitation (systèmes de fichiers, base de registres ). Les deux technologies utilisées pour les RDA sont les Windows forms et WPF (Windows Presentation Foundation). 5.2 Les services Une solution bien pensée doit intégrer ce qu on appelle des services. Un service est un programme qui va permettre d exposer des données à notre application afin d éviter que notre application soit en contact direct avec notre base de données. Si notre service est exposé sur internet on parle alors de «web service». Dans l exemple ci-dessus, il existe 3 services dont un nommé CoursService. Ce service nous met à disposition des méthodes telles que GetCourses(). Pourquoi utiliser des services? Les services vont permettre de granulariser votre applicatif. Cela implique une maintenance plus facile et permet à une application tierce de re-consommer ces services si besoin est. Est-ce long à développer? Un service peut prendre du temps à développer, cependant pour ceux qui souhaiteraient aller au plus vite il existe un projet appelé Astoria ou Data Services qui vous générera automatiquement votre service pour exposer vos données.

10 Création d application d entreprise 5.3 Modélisation de l architecture logicielle Après avoir déterminé le type de client (RDA/RIA) que vous allez utiliser ainsi que l emplacement des services, vous pouvez commencer à penser à votre architecture logicielle. Afin de modéliser votre architecture, Microsoft vous propose Visual Sudio Team Foundation Architect Edition 2008. Prenons comme exemple la création d un site d e-commerce (type RIA, ASP.NET/Ajax), voici comment nous allons modéliser notre SI : Nous créons un projet de type Distributed Systems / Application Design. Il vous est maintenant possible d architecturer votre applicatif grâce à la Toolbox à gauche. Il est possible de glisser-déposer des éléments puis de les configurer (version du Framework, nom du service, etc ).

11 Création d application d entreprise Pour l exemple pris précédemment voici comment nous aurions pu le concevoir :

12 Création d application d entreprise 5.4 Déduction de l architecture matérielle A partir de l architecture logicielle il est simple d en déduire l architecture matérielle. Suivant les moyens consacrés au projet, vous pouvez séparer l hébergeur de service du serveur de base de données. Visio 2007 va nous permettre de réaliser un schéma d architecture matérielle. Pour la partie serveur, je vous conseille IIS avec Windows Server 2003 ou 2008 (La nouveauté WAS vous permet d héberger vos services très facilement) bien qu il soit possible grâce au projet Cassini d héberger du.net sur Apache. Pour en revenir à l exemple de site d e-commerce, voici ce que nous aurions pu schématiser : Cependant nous aurions pu intégrer sur le même serveur la base de données, le service et l hébergeur du site web.

13 Création d application d entreprise 6 Les choix techniques 6.1 Choisir la version du Framework A l heure où j écris ces lignes les spécifications du Framework 4.0 viennent de sortir. Le premier Framework fut le 1.0 sortie en 2002. Pour des raisons de corrections critiques, la version 1.1 est sortie par la suite. Ce Framework, à moins de ne pas avoir le choix, ne doit pas être utilisé. En effet de nombreux correctifs et améliorations ont été apportés au 2.0. Le Framework 2.0 est la base minimum pour tout nouveau développement.net. Il est considéré comme le noyau de toutes les nouvelles versions. Grâce au Framework 2.0 il vous sera possible de développer en ASP.NET, Winforms, Web Services. Puis est apparu le Framework 3.0, qui n est qu un ajout de fonctionnalités au 2.0. Dans cette nouvelle version vient s ajouter : WCF : Création de services de façon simplifiée WPF : Création d applications type RDA WF : Création de Workflow CardSpace : Système d identification Le Framework 3.5, lui, propose des technologies comme ASP.NET Ajax et LINQ (API d accès aux données de façon générique). Il est aussi bon de noter qu il existe un Compact Framework permettant de développer pour les systèmes embarqués type Windows CE. N ayez crainte d utiliser les dernières versions du Framework en pensant qu elles ne seraient pas stables. L actuel Framework 3.5 vient d hériter d une version SP1 améliorant considérablement celui-ci. Le choix du Framework dépendra entièrement des besoins clients et des compétences des développeurs mais dans un souci d évolutivité il est conseillé de prendre la dernière version à jour.

14 Création d application d entreprise 6.2 Choisir les technologies d accès aux données L accès aux données joue un rôle important lors de la conception de notre logiciel. Soit votre application va directement chercher les données, soit ce sera votre service. L API d accès aux données dans.net s appelle ADO.NET. Cette technologie va vous permettre d accéder aux données de façon générique. ADO.NET : L utilisation d ADO.NET avec les classes de base type DataReader (mode connecté) ou DataSet (mode déconnecté) vous permettront de requêter votre base à l aide du langage SQL. Cette solution est disponible à partir du Framework 2.0. Linq : LinqToSql et LinqToEntities (ADO.NET Entity Framework) sont deux technologies permettant de faire du Mapping Objet Relationnel. C'est-à-dire qu à partir d une base de données nous faisons abstraction du modèle relationnel pour faire un modèle conceptuel et travailler avec des objets. Fini donc les requêtes SQL et autres joyeusetés. Exemple de classe générée par Linq en glissant-déposant des tables d une base de données Note : Microsoft vient d annoncer que Linq-To-Sql ne sera plus maintenu pour les nouveaux fournisseurs de données, il est donc préférable d utiliser LinqToEntities. Le choix du type d accès aux données est très lié au choix du Framework puisque Linq n apparait qu à partir du 3.5.

15 Création d application d entreprise 6.3 Choisir le langage Le langage n a pas véritablement son importance. La technologie.net vous permet d utiliser plusieurs langages dans un même projet grâce au code MSIL généré. La tendance reste au C# et VB.NET. Le VB connait un succès grâce aux développeurs venant de l ancienne version VB6. Utilisez le C# ou VB.NET selon les préférences du client. Evitez d utiliser d autres langages qui seraient difficiles à maintenir par une autre équipe de développeurs. 6.4 Choisir l EDI L environnement de développement s impose naturellement : Visual Studio. Bien qu il est possible d utiliser Mono et les différents EDI qui gravitent autour sous Linux. Chez Microsoft, il existe une multitude de versions de Visual Studio. Nous nous intéressons à la version 2008 qui permet de choisir le Framework lors de la création d un projet. Visual Studio Team System Cet outil permet une communication et une collaboration accrues entre les équipes de développement. Il apporte aussi quelques outils tels que la schématisation d architecture logicielle. Visual Studio Team System est le produit idéal pour la production d application d entreprise. Visual Studio Professional Edition Visual Studio 2008 Professional Edition est un environnement de développement complet conçu pour que les développeurs individuels puissent créer des applications. Visual Studio Standard Edition Visual Studio Standard Edition est un environnement de développement extrêmement spécialisé conçu pour les développeurs individuels pour la création d'applications client/serveur Windows et de sites Web. Des projets tels que application basée sur Office ne sont pas présents contrairement à l édition professionnelle. Visual Studio Express Edition Des outils légers, faciles à utiliser et faciles à maîtriser pour les amateurs, les passionnés et les étudiants (gratuits).

16 Création d application d entreprise 6.5 Choisir le stockage de données Le choix du stockage de données est important, il doit être pris suivant plusieurs facteurs comme la quantité de données ou le type d applications (mobile, RIA, RDA ). Stockage basé sur les fichiers SQL Express Souvent utilisé avec de l XML, je vous le recommande pour de petites applications. Peut devenir contraignant s il existe beaucoup de données. C est une base de données gratuite permettant de créer des petits projets de base de données. Cette option peut être considérée si vous manquez de moyens financiers. Attention cependant, ce genre de base de données est limité à 1GO de RAM, 4GO de données et travaille avec un seul CPU. SQL Everywhere SQL Server editions Autres SQL Everywhere appelé aussi SQL Mobile est une version allégée de SQL Server. Cette option vous permet de retrouver vos données en local sur un mobile. Base de données de Microsoft permettant de stocker tout type projet volumineux. Il existe un large panel de stockage. Attention cependant aux incompabilités possible avec.net.

17 Création d application d entreprise 7 Etablir une maquette de l IHM Créer une maquette d IHM dans le dossier de spécification est primordial et doit être validé par le client. Peu importe que vous utilisiez «paint» ou un logiciel plus évolué. L intérêt n est pas de montrer vos talents de graphiste mais surtout l ergonomie de base et l enchainement des fenêtres. Exemple avec une petite application : N hésitez surtout pas à attacher à côté un schéma simplifié montrant les interactions entre chaque interface. C est un travail fastidieux mais qui se révélera utile lors de la validation avec le client.

18 Création d application d entreprise 8 Modélisation de la base de données Une base de données doit être bien pensée si vous souhaitez avoir un produit final de qualité. Pour cela il existe de nombreuses méthodes. Je vous conseille le Merise ou/et les diagrammes ORM. 8.1 Diagrammes ORM ORM est une approche de modélisation sémantique qui décrit le monde en termes d'objets et des rôles que ceux-ci jouent. Un diagramme ORM se crée à partir de Visio. Il va permettre de mettre en évidence tous les attributs possibles pour un objet. Généralement ce genre de diagramme est très apprécié des développeurs puisque l on pense «objet». Les ronds représentent des objets : Les rectangles représentent une relation : Les «a...» représentent l appartenance. Par exemple, une voiture contient des sièges, un siège est contenu dans une voiture.

19 Création d application d entreprise Après avoir schématisé grâce à ORM vos objets, il est facile d en déduire la base de données. Ce schéma met en évidence une table Voiture, possédant des attributs tels que Couleur, Numéro de série et le Modèle. 8.2 Générer le schéma de votre base de données Si vous souhaitez générer un schéma capable de montrer la modélisation de votre base de données pour enrichir votre spécification, il est possible de le faire grâce au SQL Server Management Studio. Après avoir créé la maquette de votre base, faites un nouveau diagramme :

20 Création d application d entreprise Puis sélectionnez les tables qui devront être présente dans le schéma : Le résultat ressemble à ce genre de diagramme :

21 Création d application d entreprise 9 Représentations objets UML (en anglais Unified Modeling Language, «langage de modélisation unifié») est un langage graphique de modélisation des données. Il va nous permettre de mettre sur papier l architecture du SI par rapport aux besoins du client. Vous pouvez réaliser vos schémas grâce à des outils comme Rational Rose ou Visio. Créer un projet UML dans Visio Menu de vision pour concevoir vos schémas Il existe de nombreux diagrammes (de séquences, de classes ) cependant nous ne verrons que ceux susceptibles de définir notre logiciel.

22 Création d application d entreprise 9.1 Diagrammes de cas d utilisation / Etudes des acteurs et scénarii Les diagrammes d utilisation permettent de décrire le SI d un point de vue extérieur. Il met en évidence ce que fait le système. Ce diagramme, très simple à comprendre, permet une interaction entre le client et vous. Vous allez pouvoir montrer les différents scénarii possibles ainsi que les acteurs qui rentrent en jeux. Dans un premier temps, il faut identifier les acteurs. Par exemple, l utilisateur d un logiciel : Type de l acteur : actif (c'est-à-dire qu il va déclencher le scénario, sinon il est passif) Type d'entité : personne Rôle : utilisateur du logiciel Sur un diagramme UML, les acteurs sont représentés par de petits bonshommes. Les cas d utilisation sont représentés par une ellipse. Un cas d utilisation correspond à un scénario.

23 Création d application d entreprise 9.2 Diagrammes de paquetages & Composants Le diagramme de paquetages et de composants mettent en évidence l architecture logicielle. Les architectures les plus connues sont SOA, MVC, N-tiers Un paquet correspond à un ensemble, par exemple «IHM» ou «Accès aux données». Généralement une architecture 3-Tiers se représente de cette manière : Il est aussi possible de détailler vos paquets grâce aux «composants». Un composant représente un sous ensemble de votre couche. Par exemple :

24 Création d application d entreprise Voici un exemple d architecture permettant de mette en œuvre un service et une architecture en couche : Une couche IHM contenant des technologies type Winforms, ASP.NET, Silverlight Une couche Métier, souvent représentée par une assembly de type library (dll). Une couche Service de type WCF ou Remoting. Une couche d accès aux données qui servira de DataContract. De type ADO.NET ou plus particulièrement Linq (ToEntities de préference puisque Microsoft ne maintient plus ToSql).

25 Création d application d entreprise 10 Surveillance et gestion des erreurs du système Bien souvent négligée lors de création d applications pour diverses raisons telles que le coût représenté et également parce qu elle est parfois peu connue par les développeurs, la sécurité est un point essentiel dans la conception d applications. Cette partie vous présentera la sécurité d un point de vue général, et vous apprendra à être vigilant dans vos développements. Si vous avez le temps n hésitez pas à approfondir vos recherches dans ce domaine qui évolue en permanence. 10.1 Support d enregistrement des logs & actions à surveiller La surveillance des actions utilisateurs est un des axes importants dans la gestion d erreurs. Il faut impérativement avoir une remontée complète d informations lors des interactions avec l utilisateur et surveiller que l utilisateur ne puisse pas nuire à notre système. En effet, une grande partie des attaques se fait simplement par des entrées de l application qui sont mal ou pas du tout protégées. Pour cette raison il faut adopter certains principes et nous verrons dans la partie «Implémentation de la sécurité» juste après. Cependant, il est intéressant de savoir si quelqu un a tenté une attaque envers notre application. Nous allons pour cela loguer les tentatives d intrusion de différentes manières : par envoi de mail, stockage en base de données ou même en XML. L important est de détecter une manipulation frauduleuse d un utilisateur. On pourra alors identifier une valeur erronée d un identifiant dans un paramètre de l URL, ou encore du script dans une TextBox et nous sauvegarderons les informations concernant l utilisateur ayant effectué cette action. Après il ne tient qu à vous d envoyer un avertissement à l utilisateur concerné. De même si dans le cadre d une application web (ASP.NET) l utilisateur n est pas enregistré, il sera toujours bon de récupérer son adresse IP avec le code suivant et loguer sa tentative d intrusion : Request.ServerVariables["REMOTE_ADDR"] Même si ce genre de méthode ne va pas empêcher l utilisateur de s introduire dans notre application, elle pourra le dissuader de récidiver dans la plupart des cas. Vous montrez à l utilisateur que vous n avez en aucun cas négligé la sécurité et que vous êtes attentif à ses actions. Il est même parfois moins couteux pour l entreprise de faire de la répression que de la prévention. Dans la partie «Implémentation de la sécurité» vous verrez plusieurs cas d utilisation où le Log est le bienvenu et comment il peut être complémentaire dans la sécurisation d application.

26 Création d application d entreprise 10.2 Comportement du système face aux erreurs non gérées Une bonne application d entreprise est aussi une application qui réagit correctement face aux erreurs non gérées. En effet, il peut subsister des erreurs non prévues par les développeurs dues par exemple au déploiement de l application sur un environnement de production différent que celui de développement. De ce fait, les utilisateurs doivent pouvoir rencontrer une interface prévue à cet effet afin de ne pas être trop déstabilisé face à l erreur. Par exemple, pour une application web, il convient de concevoir une page d erreur personnalisée pouvant indiquer aux utilisateurs qu une erreur vient de se produire sur l application et qu un mail a été envoyé à l administrateur. L utilisateur pourra donc voir que l erreur est certes bien apparue mais que l équipe en charge de l application vient d être prévenue. De plus, l équipe de développement pourra alors avoir un listing des erreurs apparues dans l application lors d une utilisation courante. Ils pourront ainsi régler plus rapidement les problèmes rencontrés. Il est évident qu il faut que ce cas se produise le moins possible afin que l utilisateur n ait pas l impression que l application qu il est en train d utiliser est mal conçue! C est dans cette optique que la partie à propos des différents tests à réaliser sur l application est très importante. Elle permet d éviter les situations d erreurs trop nombreuses. Afin que ces situations soient le moins souvent rencontrées, il faut que l équipe de développement ait bien respectée les bonnes pratiques : utilisation de blocs Try-Catch-Finally afin d englober les portions de code à risque, vérifications diverses des variables pour ne pas rencontrer d erreurs (null, négatives, etc ). try { Rappel d utilisation d un bloc Try-Catch-Finally : //Portion de code à risque //Si une exception se produit à l'exécution //le code dans le bloc "catch" est exécuté } catch (NullReferenceException ne) { //Portion de code à exécuter si une exception se produit //Il est possible de mettre plusieurs blocs "catch" à la //suite les uns des autres afin de pouvoir capturer //des exceptions différentes } catch(exception e) { //Portion de code à exécuter dans le cas //d'une exception basique } finally { //Portion de code s'exécutant dans tous les cas : si la //portion de code à risque s'exécute correctement ou si //une exception se produit cette portion s'exécutera }

27 Création d application d entreprise 11 Implémentation de la sécurité Implémenter la sécurité dans les applications n est pas chose simple, d autant plus que des failles apparaissent régulièrement, mais il y a des façons simples de limiter les risques. Tout d abord, il faut appliquer le principe du moindre privilège, partir du fait que l utilisateur doit avoir le moins de droit possible et le moins d accès possible pour limiter la surface d attaque. On ne dira plus alors : tout le monde voit tout sauf l utilisateur simple qui ne voit pas cela, mais personne ne voit rien sauf l administrateur qui voit cela. Ce n est pas toujours la manière la plus simple de penser mais elle peut jouer son rôle notamment en termes de failles auxquelles on ne penserait pas. On distinguera ensuite les différentes entrées de donnée telles que : - les données entrées par l utilisateur - les données stockées localement (qui peuvent être modifiées) - les données stockées dans l url On les divisera ici en deux parties distinctes, les entrées utilisateurs et les entrées non utilisateurs. 11.1 Les entrées utilisateurs Il y a plusieurs moyens de limiter les entrées de l utilisateur natif à.net et même si ça ne permet pas d éliminer complètement la menace, toute sécurité supplémentaire est bonne à prendre. En Web Form (ASP.NET) on retrouve tout d abord les différents validateurs qui permettent de limiter les entrées : - Le RequiredFieldValidator qui est un composant qui permet de vérifier si un champ n est pas vide. - Le CompareValidator qui permet de comparer la valeur entrée avec une autre valeur. - le RangeValidator qui permet de vérifier que la valeur d entrée est située entre 2 valeurs. - Le RegularExpressionValidator qui permet des vérifications utilisant les expressions régulières. - Le CustomValidator qui permet de créer votre propre logique de validation. - Le ValidationSummary qui permet de rassembler les erreurs trouvées sur la même page web En Windows Form on peut utiliser le namespace System.Text.RegularExpressions. De même, on assignera toujours une valeur à la propriété «MaxLength» qui permettra de limiter la taille du texte rentré dans une TextBox par exemple. Toutes ces validations sont importantes mais ne suffisent pas. Elles sont, dans le cadre d une application web, gérées par du script côté client qui peut être désactivé. Par conséquent nos vérifications ne sont plus effectives. Nous allons donc devoir effectuer ces validations également coté serveur en utilisant la propriété Page.IsValid. On utilisera cette propriété après validation grâce à la fonction

28 Création d application d entreprise Page.Validate() qu il ne sera pas nécessaire d appeler si vous avez laissé la propriété CauseValidation de votre contrôle à «true». 11.2 Les entrées non utilisateur Il y a d autres types d entrées non utilisateur qui peut également être source d intrusion : Pour le Web : - Les paramètres passés dans l URL (QueryString) - Les cookies Egalement valables pour le Windows Form : - Les fichiers lus et utilisés Pour les paramètres dans l URL, il faut penser à vérifier différents points : - Tout d abord, si on veut récupérer un entier, il sera bon de le convertir en utilisant la fonction TryParse au lieu de Parse, qui nous permettra alors d identifier un changement du type de notre valeur. - On testera en permanence si le résultat d une requête effectuée (avec une valeur ayant pu être modifiée par l utilisateur) n est pas «null». Il faudra alors identifier si cette requête peut retourner, dans le cadre d une utilisation normale, une valeur «null» ou si ce résultat est dû à une manipulation frauduleuse qui pourra alors être logué. - On veillera également à effectuer des vérifications complémentaires sur les droits d accès. L URL pouvant être modifiée simplement et même copiée collée entre différents utilisateurs, on vérifiera que l identifiant de l utilisateur lui permet bien d accéder à une ressource. Les cookies peuvent également être une faille importante. Certains développeurs ont tendance à mettre beaucoup d informations dans les cookies, sans se soucier de la faille que cela représente. - Les cookies peuvent en effet être utilisés pour récupérer des informations sur l utilisateur. Il faut donc faire attention aux informations que l on y met (pas de mot de passe en clair par exemple). - Ils peuvent également être utilisés pour usurper l identité d un utilisateur si le cookie permet une authentification. Pour un site pouvant contenir des informations sensibles, on ne permettra pas d authentification automatique par cookies. Les cookies peuvent être volés de différentes manières : - Directement sur la machine cliente dans le répertoire contenant les cookies (arrive régulièrement dans le cadre où vous travailleriez sur un poste qui ne vous est pas réservé et où d autres personnes peuvent avoir accès). - En interceptant les cookies par «sniffing» ou par la méthode «man in the middle», les cookies passant par requêtes HTTP, on peut les intercepter. Il faudrait pour contrer cela utiliser un protocole chiffré (HTTPS par exemple).

29 Création d application d entreprise 11.3 Les tentatives d attaques Les tentatives d attaques peuvent avoir lieu sur tout type d entrée et peuvent être de différents types. Nous allons maintenant essayer d identifier les principales attaques possibles et essayer de les contrer. Quelles sont les différentes attaques auxquelles nous devons faire face? - Injection de code SQL - Vol d identifiants de session - Cross Site Scripting (XSS) Injection de code SQL : Cette attaque intervient dans le contexte où une entrée utilisateur serait insérée directement dans une requête SQL sans subir de vérification sur son contenu ; elle pourrait alors être interprétée comme du code SQL et dans ce cas effectuer des actions sur nos données. Exemple concret : Considérons deux champs texte contenant un nom d utilisateur et un mot de passe pour une authentification directement dans la base de données. SELECT user FROM table_users WHERE login= login AND password= password Dans le cas où nous n effectuerions pas de vérifications sur le login et password entrés on pourrait voir ceci : SELECT user FROM table_users WHERE login= Administrateur ; AND password= password Nous serions alors bien logué comme Administrateur sans avoir eu besoin du mot de passe. Comment peut-on alors contrer ce genre d attaque? - Utiliser des procédures stockées ou même des requêtes paramétrées à la place du SQL dynamique. Les données entrées par l'utilisateur sont alors transmises comme paramètres, sans risque d'injection. - Vérifier de manière précise et exhaustive l'ensemble des données venant de l'utilisateur. On peut, par exemple, utiliser une expression régulière afin de valider qu'une donnée entrée par l'utilisateur est bien de la forme souhaitée. - Utiliser des comptes utilisateurs SQL à accès limité (en lecture seule) quand cela est possible. - Réaliser un contrôle en amont en bloquant systématiquement les entrées contenant EXEC, SELECT, INSERT, DROP, CREATE, ALTER, UPDATE... - Utiliser du LinQ qui empêche ce genre d attaque nativement.

30 Création d application d entreprise Vol d identifiants de session : Il est important de savoir que le vol de session est possible par la méthode force brute et qu il peut être plus ou moins facile en fonction de l algorithme de génération d IdSession utilisé. Le meilleur moyen de limiter la possibilité de ce genre d attaque est de limiter la durée de vie d une session et de la supprimer dès qu elle n est plus utilisée. Cross Site Scripting (XSS) : Le principe du Cross Site Scripting est d utiliser du code HTML, Javascript ou VBScript que l on introduit dans l application web par une des entrées mal sécurisées. Ce code sera alors envoyé à d autres utilisateurs de l application qui pourra servir à afficher du contenu subversif, à rediriger l'utilisateur vers un autre site ou même à voler des informations du client accessible par le site Web comme des cookies par exemple. Avec votre application ASP.NET vous êtes protégé contre ce genre d attaque, du fait que par défaut la variable validaterequest est définit à «true» protège contre tout code intrusif et génère une exception dans ce cas. Si par contre vous désirez pouvoir insérer du code HTML dans les entrées utilisateur, il sera nécessaire de le désactiver et vous devrez alors utiliser par exemple une expression régulière pour contrer ce genre d attaque. Cette variable est accessible directement depuis votre Web.config : <pages validaterequest="false" /> Considérons l exemple suivant : Nous avons un champ texte rempli par l utilisateur et il y insert du code HTML. En laissant notre variable validaterequest à «false», tout se passe bien et le code est interprété. Si nous la passons à «true» nous obtenons ceci : Il détecte donc bien un code potentiellement dangereux. On peut également, pour ne pas que le code HTML bloque le fonctionnement de notre application, utiliser la fonction «Server.HtmlEncode». Elle nous permettra d obtenir du code gardant son format HTML mais qui ne sera plus interprété. En réalité le format HTML sera reformaté comme nous allons le voir sur le même exemple que précédemment. Nous utilisons le code suivant : txtbdesc.text = Server.HtmlEncode(txtbDesc.Text);

31 Création d application d entreprise Voici le résultat : Nous avons donc gardé l intégralité de notre code mais reformaté en HTML pour qu il ne soit plus interprété, en retournant dans le mode édition nous avons alors ceci : Cette méthode est donc intéressante mais ne nous permet pas d utiliser un formatage HTML tout en empêchant l usage de script. Ayant maintenant vu les tentatives d intrusion les plus connues auxquelles vous serez amené à faire face, nous espérons que votre réflexion dans le développement se fera de façon sécurisée.

32 Création d application d entreprise 12 Les tests Dans ce chapitre nous aborderons les différents tests qui doivent être réalisés avant de mettre une application en production. En effet, une application correctement testée permet d être plus stable. De nos jours, il n est pas concevable de livrer une application non testée à un client! Pour certains les tests peuvent être considérés comme une perte de temps mais ils ont tout faux : le gain est énorme car le temps passé à débuguer l application s en verra réduit d autant plus que les tests seront importants. En effet, l exécution de tests amènera plus rapidement à identifier les bugs et pourra permettre alors au développeur de les corriger. Le gain d énergie et de temps sera d autant plus considérable pour le développeur puisqu il lui suffira de quelques minutes pour corriger son code. Il existe donc plusieurs types de tests à réaliser : Les tests unitaires qui permettent de tester, au fur et à mesure de l avancement du développement, les différents composants. Les tests d intégration permettant de tester l intégration de chaque composant de l application et le bon fonctionnement entre eux. Les tests de validation permettant de vérifier que les fonctionnalités de l application sont bien en accord avec la spécification et les demandes du client.

33 Création d application d entreprise 12.1 Tests unitaires Dans cette première partie nous allons aborder l implémentation des tests unitaires. Définition : Un test unitaire est une portion de code qui va permettre de tester une autre portion de code en exécutant celle-ci et en analysant son résultat. Les tests unitaires permettent de rendre une application le plus robuste possible en testant comment elle réagit à diverses situations (erreurs, performances, ). De plus, le temps gagné par l exécution de tests automatisés est très appréciable! Il existe plusieurs types de bonnes pratiques pour la mise en place des tests préconisées par la méthode Extreme programming : Implémenter les tests unitaires avant d écrire le code afin de pouvoir tester du début à la fin du développement de notre portion de code (appélée Test Driven Programming). Il existe aussi la programmation croisée qui nécessite deux développeurs : l un implémente les tests pendant que l autre écrit le code. Implémenter les tests unitaires après l écriture du code afin d avoir une vue d ensemble des fonctionnalités à tester. Par définition, un test unitaire doit pouvoir être autant disponible que le code qu il teste. En effet un autre développeur doit pouvoir tester la portion de code. De ce fait, il doit aussi être exécutable sur le poste d un autre développeur : il doit donc être indépendant de l environnement de travail. Pour assurer un gain de temps optimal, le test unitaire doit pouvoir être exécuté automatiquement : par exemple juste après la compilation de la portion de code à tester afin de pouvoir immédiatement répertorier les éventuels bugs. Il existe plusieurs Framework de tests qui ont été développé pour différentes technologies. Pour réaliser ces tests unitaires nous utiliserons dans ce cours le Framework de test NUnit. Ce Framework a été développé par Charlie Poole, Michael Two, Alexei Vorontsov, et Jim Newkirk dans le langage C#. Cependant, il est utilisable par les langages.net (C#, VB.NET, ). Ce Framework est totalement gratuit et peut être téléchargé à cette adresse : http://sourceforge.net/projects/nunit Sachez qu il existe la version console de NUnit qui est installé en même temps que la version GUI. La version console présente le logiciel en mode texte et affiche la sortie des tests dans la console. Cette version ne sera pas abordée dans ce cours. Une fois l installation réalisée, il suffit de lancer l exécutable pour avoir la fenêtre suivante qui s ouvre :

34 Création d application d entreprise Dans la partie de gauche, on trouve une arborescence qui affichera les classes de tests et les méthodes de test du projet chargé. Pour charger un projet il suffit de venir récupérer la dll du projet à tester. Dans la partie droite de l application, on peut trouver deux boutons (Run & Stop) et une barre de progression. Ces boutons permettent de lancer/stopper le test d une des méthodes. Le résultat du test est affiché dans le cadre de la partie basse à droite. Le barre de menu possède les options comme la modification visuelle de l affichage (taille de la police, ), de récupérer les informations sur l assembly courante ou encore la gestion des Addins. Sachez qu il est possible de charger plusieurs assemblies en même temps : pour cela cliquer sur «Project» «Add assembly». Maintenant que l on sait se servir du logiciel NUnit, nous allons voir comment, dans notre code, implémenter des méthodes de tests afin de pouvoir les exécuter via le logiciel NUnit. Premièrement, pour pouvoir utiliser le Framework NUnit, il faut le référencer dans le projet dans lequel seront créés les tests : Pour cela faire clic droit sur le projet dans Visual Studio «Ajouter une référence». Ensuite dans l onglet «.NET», il faut référencer la dll nunit.framework.dll.

35 Création d application d entreprise Attention à bien choisir celle correspondant au runtime v2.0.50727 si vous travaillez avec le Framework.NET 2.0 ou supérieur. Nous allons maintenant créer notre méthode à tester : cette méthode sera volontairement très simpliste. public class ClasseATester { public ClasseATester() { } /// <summary> /// Méthode qui vérifie l'exactude du format d'une heure /// </summary> /// <returns></returns> public bool MethodeATester(string email) { if (email == null) throw new NullReferenceException(); return Regex.IsMatch(email, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.) (([\w-]+\.)+))([a-za-z]{2,4} [0-9]{1,3})(\]?)$"); } } Dans cette classe nous avons donc une méthode permettant de tester la validité d un champ correspondant à une adresse e-mail. Maintenant, nous allons mettre en place les méthodes de test. Pour qu une classe soit interprétée par NUnit comme étant une classe de test il faut qu elle ait l attribut [TestFixture] en en-tête de la classe. Désormais, toutes les méthodes ayant l attribut [Test] seront à leur tour considérées comme des méthodes de test.

36 Création d application d entreprise Ces attributs se trouvent dans l espace de noms NUnit.Framework. Nous allons donc ajouter une classe de test possédant deux méthodes permettant de tester notre méthode créée précédemment : [TestFixture] public class ClassTest { public ClassTest() { } /// <summary> /// Methode permettant de tester l @ email avec des noms de domaine erronés /// </summary> [Test] public void TestSansDomaine() { Assert.IsTrue(new ClasseATester().MethodeATester("test@test.com")); Assert.IsFalse(new ClasseATester().MethodeATester("test@test")); Assert.IsFalse(new ClasseATester().MethodeATester("test@test.")); Assert.IsFalse(new ClasseATester().MethodeATester("test@")); } } /// <summary> /// Méthode permettant de tester l @ email sans partie locale /// </summary> [Test] public void TestSansPartieLocale() { Assert.IsTrue(new ClasseATester().MethodeATester("test@test.com")); Assert.IsFalse(new ClasseATester().MethodeATester("@test.com")); Assert.IsFalse(new ClasseATester().MethodeATester(" @test.com")); } L attribut [Test] possède plusieurs attributs supplémentaires qui peuvent être utiles : ExpectedException() permet de définir quelle sera l exception attendue en sortie. Si une exception est levée et qu il s agit bien du type d exception spécifiée en paramètre de cette méthode alors le test est passé avec succès Explicit permet d indiquer que la méthode devra être manuellement exécutée. Lorsqu on clique sur «Tester tout» dans NUnit, une méthode de test portant cette attribut ne sera pas exécutée. Ignore Les méthodes de test portant cet attribut ne seront pas exécutées et seront marquées comme «Warning» dans NUnit. Il existe encore d autres attributs qui ne seront pas explicités ici. Une fois la dll chargée dans NUnit, voilà l affichage que l on obtient :

37 Création d application d entreprise Lorsqu on lance les tests, voici l affichage que l on obtient : Si un test se déroule avec succès il s affiche en vert et en rouge s il y a une erreur. De plus, lorsqu il y a une erreur sur un test, un message indicatif apparait dans la partie en dessous de la barre de progression. Pour simuler une erreur dans notre code nous allons modifier l expression régulière de notre classe à tester : En supprimant de l expression régulière la vérification de la partie locale d une adresse e-mail, le test «TestSansPartieLocale» ne sera pas exécuté avec succès :

38 Création d application d entreprise Dans le code contenu dans les méthodes de tests, on peut noter plusieurs appels aux méthodes de la classe Assert. Cette classe permet de faire des assertions dans notre code et permet donc de tester les valeurs de retour des méthodes à tester. Voici le diagramme de la classe Assert : Grâce à toutes ces méthodes, il est donc possible de tester de nombreux cas d utilisations : IsFalse permet de vérifier si l expression passée en paramètre est false IsNull permet de vérifier si l expression passée en paramètre est null Les noms étant assez explicites, nous ne détaillerons pas plus les autres méthodes.

39 Création d application d entreprise Les bonnes pratiques pour bien réaliser ses tests unitaires sont les suivantes : Une classe à tester = une classe de test en effet autant tester l intégralité de notre classe dans une seule classe de test possédant plusieurs méthodes de test. Développer à la fois des tests simples et des tests plus conséquents afin de tester en profondeur l application pour être sûr de sa robustesse Enfin, les tests doivent être dans la même assembly que les classes à tester afin de garder le bon niveau de visibilité. Pour conclure sur cette partie, les tests unitaires permettent donc : de gagner du temps sur le débogage, une non régression du code étant donné que les tests sont exécutés très souvent ainsi qu une meilleure documentation. 12.2 Tests d intégration Les tests d intégration permettent de vérifier que les différents composants réalisés lors de la phase de développement fonctionnent correctement entre eux et avec le reste de l application. Voyons un exemple simple : Il pourra être testé le bon fonctionnement d un composant permettant d afficher une liste d utilisateurs et un autre composant permettant d ajouter un utilisateur. Lorsqu on ajoutera un utilisateur il devra s être affiché dans le composant listant tous les utilisateurs. Pour être bien sûr de valider la totalité des composants et de leurs fonctionnalités, il est fortement recommandé de garder une trace de tous ces tests en réalisant des fiches. Dans ces fiches on pourrait répertorier deux grandes parties : la présentation du test d intégration et le rapport de test afin de garder une trace du résultat obtenu. Voici les grandes lignes de ce que l on peut trouver dans la présentation d un test d intégration : L objectif du test reprenant les différents composants à tester Une description permettant de détailler la démarche à suivre pour réaliser le test L environnement nécessaire (matériel et logiciel) Le résultat attendu Voici une liste non exhaustive des points abordés dans un rapport de test d intégration : La date à laquelle a été réalisé le test Les intervenants qui ont réalisé le test Les numéros de version des composants intégrés testés L environnement de test Le résultat obtenu ainsi qu une partie pour commenter ce résultat

40 Création d application d entreprise 12.3 Tests de validation Les tests de validation permettent de vérifier que les fonctionnalités développées sont bien en accord avec la spécification de départ réalisée en collaboration avec le client. En effet, il paraît évident de vérifier la bonne concordance entre le produit créé et les volontés du client. Les tests de validation de composent en général de plusieurs phases : Une validation fonctionnelle permettant de tester les fonctionnalités de chaque composant afin d être sûr qu elles correspondent bien à la spécification. Une validation solution permettant de tester les cas d utilisations afin d agréer que l application réagira comme il le faut ainsi que le respect des standards applicables au projet. Tout comme pour les tests d intégration il est fortement recommandé de tenir à jour une documentation de compte-rendu de tests de validation. En effet, il est possible que ce soit des équipes de développement différentes qui testent l application de celles qui développent l application. De ce fait, il est important pour l équipe en charge du développement d avoir une trace de ce qui a été réalisé au niveau des tests. Voici les informations que peuvent contenir une fiche de test de validation : L objectif du test ainsi qu une courte description comme par exemple : tester le cas d utilisation «connexion à l application» La description des actions que l utilisateur doit réaliser pour atteindre l objectif du test L environnement nécessaire pour mener à bien le test Le résultat obtenu ainsi qu un commentaire

41 Création d application d entreprise 13 Le déploiement 13.1 Choix du déploiement de votre application Il existe aujourd hui plusieurs solutions de déploiement adaptées aux différentes contraintes que l on peut avoir. Il est important de connaitre les possibilités qui nous sont proposées par Microsoft pour déployer en toute simplicité nos applications. Dans un premier temps nous étudierons la méthode de déploiement classique, en utilisant un projet de déploiement. Nous verrons par la suite que d autres solutions existent aujourd hui telles que ClickOnce qui nous permet une installation très simple par internet. 13.2 Projet de déploiement Le projet de déploiement est la façon la plus classique de déployer votre application. Son principe est assez simple, vous créez un projet contenant l application précédemment développée ainsi que les ressources qu elle nécessite. On commencera par choisir parmi les différents types de projet disponibles. On distingue le projet de déploiement (Setup Project) qui sera utilisé pour les applications clientes (Windows Form) et le projet de déploiement Web (Web Setup Project) qui comme son nom l indique sera utilisé pour les applications web. Le Setup Wizard est un assistant pour créer votre projet de déploiement, seuls les deux principaux projets de déploiement cités précédemment seront étudiés ici. Lors de la création de votre projet de déploiement, qu il soit client lourd ou application web, vous aurez accès à une barre d outils spécifique reprenant les fonctionnalités suivantes : - File System editor : Définition de l'organisation des fichiers à copier. - Registry Editor : Définition des modifications à apporter dans la base de registres. - File Types Editor : Permet d'associer une extension de fichier à notre application. - User Interface Editor : Définition des différentes interfaces qui vont se dérouler lors de l'installation. - Custom Actions Editor : Création d'actions personnalisées. - Launch Conditions Editor : Définition des conditions de lancement. Nous allons voir ci-dessous plus en détail à quoi correspondent ces différents outils :

42 Création d application d entreprise File System editor C est le principal outil dans le déploiement, il va nous permettre de gérer toutes l implémentation de nos fichiers. La partie de gauche est constituée de multiples répertoires qui peuvent être de deux types : - Répertoire standard - Répertoire spécial (avec l étoile bleue sur le logo) Les répertoires spéciaux nous permettent d accéder à différents endroits de Windows. Nous utiliserons ces dossiers par exemple pour définir des raccourcis sur le bureau, dans le menu «Démarrer» ou encore des Assemblies (Attention les Assemblies doivent absolument être signées) : Dans la partie de droite on pourra venir mettre des fichiers dans les différents répertoires. Ces fichiers pourront être de différents types : - Fichiers : permet de choisir des fichiers à intégrer - Dossiers : permet d organiser les fichiers - Assemblies : Permet de choisir une Assembly à intégrer - Sorties de projet Nous allons nous intéresser à la sortie de projet, qui représente le point le plus important :

43 Création d application d entreprise L interface présente ici nous permet d ajouter une sortie de projet. C est le moyen d intégrer notre application au projet de déploiement. Il faudra ensuite choisir parmi les différents types de sortie : - Sortie principale : L'exécutable ou la dll générée par le projet ainsi que toutes ses dépendances. - Ressources localisées : Les ressources associées à des projets localisés (multi langues. Par exemple dans le cas des applications Windows). - Symboles de débogages : Tous les fichiers pdb qui permettent de débugger l'application. Cette sortie n'est pas conseillée car généralement on n'installe jamais la version Debug d'un projet. - Content file : Installe les fichiers marqués comme «Contenu» dans le projet. Registry Editor Il peut arriver parfois que l on soit amené à modifier la base de registre. Il est alors bon de savoir qu une interface nous permet de la modifier facilement. On peut ainsi y créer ou y modifier des clés simplement. File Types Editor Dans certains cas, votre application peut être liée à un type de fichier défini et il faut alors lier l extension de ce type de fichier avec votre logiciel. Comme on peut le voir ci-contre, on ajoute simplement le type de fichier et on lui spécifie son extension. On pourra également ici définir une icône liée à cette extension et modifier les actions (par défaut : Open).

44 Création d application d entreprise User Interface Editor Cet outil vous permettra de configurer l interface d installation de votre application cependant si vous ne désirez pas le paramétrer, l interface par défaut sera mise en place. Vous pourrez donc modifier les étapes de l installation et des éléments graphiques pour personnaliser votre installeur. On retrouvera des éléments tels que : - Le Splash : Une image qui s'affiche quelques secondes au lancement de l installation. - La licence : demandant à l utilisateur d'accepter les termes d'une licence - Numéro de série : Oblige l'utilisateur à entrer un numéro de série afin de poursuivre l'installation. Custom Actions Editor Nous ne détaillerons pas ici les actions personnalisées, elles permettent des actions très complètes mais nécessite une configuration plus longue notamment en redéfinissant la classe Installeur. Launch Conditions Editor Cet outil nous permet de définir des conditions d installation, comme par exemple la présence d une certaine version du Framework.NET, ou encore si IIS es requis pour l installation. On commencera par effectuer une recherche qui pourra être de différents types : - Présence de fichiers : Permet de rechercher un fichier en fonction de ses paramètres (par exemple son nom). - Présence de clés dans base de registre : Regarde si une clé existe à un emplacement donné. - Présence d'une installation antérieure d'un MSI : Cette recherche se base sur l'identifiant d'installation du MSI. On définit ensuite la condition de lancement qui va être testé à l'issue de la recherche :

45 Création d application d entreprise Nous avons vu de façon globale comment paramétrer notre projet d installation. Nous allons maintenant découvrir qu il existe d autres moyens de déploiement. 13.3 Click Once ClickOnce qu est-ce que c est? C est un moyen très simple de déployer une application et de permettre à tout le monde de l installer par Internet. Cette technique de déploiement peut avoir des avantages comme des inconvénients. Nous allons découvrir comment mettre en place ce genre de déploiement. Click Once est une nouveauté du Framework 2.0, il utilise le protocole HTTP pour diffuser notre projet et permet de l installer simplement mais également d effectuer des mises à jour. Il faut savoir que ce type d installeur nécessite donc que le client dispose d une connexion Internet et que nous ayons un serveur Web IIS installé. Déploiement et installation d application avec ClickOnce Nous allons commencer par créer notre projet que l on désire installer ; On utilisera ici un projet WindowsForm. Une fois notre projet compilé, nous allons directement le déployer. On va alors dans les propriétés de notre application et on coche la case «Sign the ClickOnce manifest» (signer le manifeste ClickOnce) dans l onglet «Signing».

46 Création d application d entreprise On définit ensuite les autorisations de sécurité. Il sera bon de les restreindre au maximum, pour suivre la règle du moindre privilège abordée dans le chapitre sur la sécurité. Vous pouvez utiliser l outil fournit par Visual Studio «Calculer les permissions» afin de vérifier les permissions qui sont nécessaires. Vient ensuite la partie publication dans l onglet «Publish». Sur cette page, nous allons définir si l application sera publiée sur un FTP, un partage réseau ou un serveur IIS. On définira également si notre application sera accessible uniquement de façon online (retélechargée à chaque fois) ou de façon offline : téléchargée et installée sur le poste client.

47 Création d application d entreprise On va maintenant paramètrer les différents points de cet onglet : - Publishing Location : c est le partage Web depuis lequel votre application sera déployée et/ou mise à jour. - Install Mode and Settings : on spécifiera ici si votre application doit être disponible "OnLine" ou "OffLine". - Prerequisites : comme vu précédement avec le projet de déploiement, on pourra définir des pré-requis pour ClickOnce. - Updates : vous pourrez spécifier dans cette partie si votre application doit ou non vérifier la présence de mise à jour sur le serveur. On pourra également déterminer le moment ou s effectue cette vérification (avant ou après le démarrage de l'application). - Options : cette partie concerne des informations générales. On paramétrera en premier les pré-requis, de la même manière que pour le projet de déploiement, vous choisirez les éléments nécessaires. Dans le cas où il ne serait pas installé sur le client, on paramètre l endroit où il peut se le procurer. Dans les options on déterminera par exemple la description de notre application, son nom de publication ou le site web servant de support s il y en a. Mais d autres parties plus importantes, comme la page web de déploiement, pourront être créées automatiquement. Dans notre cas nous génèrerons une page Accueil.html qui sera générée et ressemblera à la page ci-dessous. Cette page nous récapitule les informations remplies précédemment et nous permet d exécuter l application.

48 Création d application d entreprise Un assistant de publication est également à notre disposition, il nous permettra de paramétrer certains des attributs vus précédemment, de manière simple. Nous avons maintenant configuré notre déploiement Click Once, il reste alors à l installer. En exécutant le fichier «WindowsFormsApplication1.application» qui a été créé par ClickOnce et qui correspond à notre application ou simplement en cliquant sur le bouton «Run» de notre page web, nous obtenons une fenêtre de chargement. Ensuite notre application est démarrée. De même dans le cadre d une installation, nous aurions un bouton «Install» et notre application s installerait. Ici nous avons une application sans intérêt, qui n a aucun contenu mais nous pouvons voir que le déploiement c est bien effectué. Mise à jour de notre application Une autre fonctionnalité simple que permet ClickOnce est la mise à disposition de mise à jour et la détection de celle-ci. Dans la page des propriétés de notre application, nous irons dans la partie «Update» et il faut alors cocher l option pour vérifier les mises à jour de l application. Ici nous décidons d effectuer la vérification avant le lancement de l application.

49 Création d application d entreprise Pour publier une mise à jour il faudra simplement après avoir reconstruit notre projet, cliquer sur publier. L utilisateur lançant son application, aura maintenant une fenêtre de recherche de mise à jour qui se lancera au démarrage. Il me propose alors d installer une mise à jour et mon application est alors modifiée par la nouvelle version. Sécuriser votre installeur Nous avons la possibilité de signer le manifest de notre application ClickOnce ainsi que de signer notre assembly.net. Pour cela il nous suffit d aller dans la partie Signing (Signature) et de choisir l option «Sign the assembly». On choisit alors de créer notre nouveau fichier snk.