Création d'application d'entreprise

download Création d'application d'entreprise

of 54

Transcript of Création d'application d'entreprise

  • 8/3/2019 Cration d'application d'entreprise

    1/54

    Date

    1 Cration dapplication dentreprise

    Cration dapplication dentrepriseSommaire

    Cration dapplication dentreprise ..................................................................................................... 1

    1 Introduction ..................................................................................................................................... 3

    1.1 Prface & Public de ce tutorial ................................................................................................ 3

    2 Une spcification pour dveloppeur ............................................................................................... 4

    2.1 Dfinition du mot spcification dans cet ouvrage .................................................................. 4

    2.2 Lintrt dune spcification.................................................................................................... 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 incrmental ......................................................................................................... 6

    4 Etudes des besoins dun projet ....................................................................................................... 7

    4.1 Savoir couter le client ............................................................................................................ 7

    4.2 Interprter les besoins du client ............................................................................................. 7

    5 Larchitecture du systme ............................................................................................................... 8

    5.1 Choix du type de client ............................................................................................................ 8

    5.2 Les services .............................................................................................................................. 9

    5.3 Modlisation de larchitecture logicielle ............................................................................... 10

    5.4 Dduction de larchitecture matrielle ................................................................................. 12

    6 Les choix techniques...................................................................................................................... 13

    6.1 Choisir la version du Framework ........................................................................................... 13

    6.2 Choisir les technologies daccs aux donnes....................................................................... 14

    6.3 Choisir le langage ................................................................................................................... 15

    6.4 Choisir lEDI........................................................................................................................... 15

    6.5 Choisir le stockage de donnes ............................................................................................. 16

    7 Etablir une maquette de lIHM ...................................................................................................... 17

    8 Modlisation de la base de donnes ............................................................................................. 18

    8.1 Diagrammes ORM ................................................................................................................. 18

    8.2 Gnrer le schma de votre base de donnes ...................................................................... 19

    9 Reprsentations objets ................................................................................................................. 21

    9.1 Diagrammes de cas dutilisation / Etudes des acteurs et scnarii ........................................ 22

    9.2 Diagrammes de paquetages & Composants ......................................................................... 23

  • 8/3/2019 Cration d'application d'entreprise

    2/54

    Date

    2 Cration dapplication dentreprise

    10 Surveillance et gestion des erreurs du systme ........................................................................ 25

    10.1 Support denregistrement des logs & actions surveiller .................................................... 25

    10.2 Comportement du systme face aux erreurs non gres ..................................................... 26

    11 Implmentation de la scurit .................................................................................................. 27

    11.1 Les entres utilisateurs .......................................................................................................... 27

    11.2 Les entres non utilisateur .................................................................................................... 28

    11.3 Les tentatives dattaques ...................................................................................................... 29

    12 Les tests ..................................................................................................................................... 32

    12.1 Tests unitaires ....................................................................................................................... 33

    12.2 Tests dintgration................................................................................................................. 39

    12.3 Tests de validation ................................................................................................................. 40

    13 Le dploiement .......................................................................................................................... 41

    13.1 Choix du dploiement de votre application .......................................................................... 41

    13.2 Projet de dploiement........................................................................................................... 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 dun projet ............................................................................................................ 54

  • 8/3/2019 Cration d'application d'entreprise

    3/54

    Date

    3 Cration dapplication dentreprise

    1 Introduction1.1 Prface & Public de ce tutorial

    Concevoir une spcification 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 dune socit Toulousaine, jai eu loccasion de mettre en pratique certains

    principes de base me permettant de me faire comprendre des clients, des dveloppeurs et surtout

    de moi-mme.

    Mettre ses ides sur papier, imposer des formalismes et des processus vous permettront de

    raliser un travail de qualit.

    Ce livre dentrainement 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 expriences, Bertrand Vergnault & Laurent Assis-Arantes (Dveloppeur .NET,

    MCPD) maideront activement crire ce tutorial.

    Le public de ce livre devra connatre la base du dveloppement en .NET et avoir des notions de

    Winforms, ASP .NET, Services

  • 8/3/2019 Cration d'application d'entreprise

    4/54

    Date

    4 Cration dapplication dentreprise

    2 Une spcification pour dveloppeur2.1 Dfinition du mot spcification dans cet ouvrage

    Le mot spcification est la base le document intervenant aprs un cahier des charges et

    avant le processus de conception prliminaire (cf. chapitre sur le cycle de vie).

    Dans cet ouvrage nous allons nous intresser une spcification au sens large du terme, ce

    qui est souvent le cas lors de projets o le dveloppeur est lui-mme le chef de projets. Nous allons

    voir comment il est possible, en un seul document, darchitecturer notre SI.

    2.2 Lintrt dune spcificationDans mon exprience passe, jai eu loccasion de travailler avec des entreprises o la

    spcification tait inexistante ou se rsumait un bout de papier crit sur un coin de table.

    Le problme tait que les directeurs ne souhaitaient pas dpenser de largent pour une

    analyse quils trouvaient sans intrts. On se retrouvait avec :

    Des dlais non respects.

    Des dlais respects car le temps imparti tait trop consquent (le dveloppeur se

    permettant alors de travailler un jour sur deux).

    Un client revenant toujours sur ce qui avait t valid au pralable. Normal rien ntait mis

    noir sur blanc.

    Vous remarquerez que sur ces trois points, lentreprise perd de largent.

    2.3 Les outilsNous allons voir dans ce livre comment utiliser plusieurs outils, tels que :

    Microsoft Visual Studio 2008 Team System Architect Edition, nous permettant de crer

    larchitecture logicielle de notre SI.

    Team Foundation Server & Windows Sharepoint Services, pour le travail collaboratif.

    Microsoft Visio 2007, pour la modlisation objet.

    NUnit, pour les tests unitaires.

    Microsoft Office Project 2007, pour la gestion du temps.

  • 8/3/2019 Cration d'application d'entreprise

    5/54

    Date

    5 Cration dapplication dentreprise

    3 Le cycle de vie du projetIl existe de nombreux cycles de vie dans le monde de la gestion de projets. Nous allons nous

    intresser plus particulirement deux dentre eux :

    Cycle de vie en V

    Cycle de vie incrmental

    3.1 Cycle de vie en VLe cycle de vie en V vous permet de dcomposer en plusieurs tapes le cycle de vie de votre SI.

    Une etape N doit attendre que ltape N-1 soit ralise. Chaque tape danalyse possde une

    tape de test .

    Lanalyse des besoins: Etape se faisant avec le client, gnralement par un appel doffre et

    une rponse appel doffre.

    La spcification: Ce document vous permettra de dcrire larchitecture logicielle &

    matrielle, les technologies utilises, les contraintes, les dlais Ce document doit tre

    comprhensible par le client et par le dveloppeur.

    La conception prliminaire & dtaille: Ces etapes dpendent de lampleur du projet,

    parfois seul un document de spcification est ncessaire. Ces tapes vont vous permettre de mettre

    sur papier larchitecture en dtail de votre logiciel (de la classe la simple mthode de classe, voir

    mme leur faon de sxecuter).

    La codage : ralisation du systme suivant ce qui aura t spcifi dans les tapes

    antrieures.

    Les tests : Chacun des tests correspond une tape danalyse, par exemple, un test unitaire

    verifiera une partie bien prcise du systme. Un test dintgration verifiera si les diffrents sous-

    systmes sont capable de cohabiter ensemble. Pour finir, le test de validation va nous permettre de

    verifier si le logiciel conu rpond bien la specification. Si une erreur survient dans lun des tests, il

    est necessaire de remonter la modification directement ltape danalyse associe.

  • 8/3/2019 Cration d'application d'entreprise

    6/54

    Date

    6 Cration dapplication dentreprise

    3.2 Cycle de vie incrmentalDans le modle par incrments, un logiciel noyau est dvelopp, puis successivement, les

    incrments sont dvelopps et intgrs.

    Par exemple on dmarre un cycle de vie en V pour la version 1 de notre logiciel puis aprs la

    phase de ralisation, on dmarre un autre cycle en V pour la version 2 en parallle la fin de notre

    premier cycle.

    Les avantages du cycle incrmental sont :

    Un travail en parallle permettant de ne jamais arrter la production

    Les intgrations entre sous-systmes se font au fur et mesure

    La charge de travail est rpartie dans le temps, pas de grosse pression au dbut et la fin du

    dveloppement.

    On peut livrer un logiciel ds le dbut, mme si il nexiste pas toutes les fonctionnalits.

    Linconvnient :

    Si le noyau ou le prcdent incrment est mauvais, tous les autres incrments le sont aussi.

  • 8/3/2019 Cration d'application d'entreprise

    7/54

    Date

    7 Cration dapplication dentreprise

    4 Etudes des besoins dun projet4.1 Savoir couter le client

    Mettons la technique de ct et passons du ct MOA.

    Savoir couter (et pas juste entendre) les besoins du client est primordial pour la russite devotre projet.

    Il vous faut utiliser un langage de non informaticien, schmatiser ce dont vous parlez, appuyez-

    vous sur des schmas UML comprhensibles par tous (cf. chapitre sur lUML).

    Noubliez pas que le client est roi mais ne sait pas tout ! Vous intervenez en tant que

    consultant capable de dlimiter le faisable de limpossible.

    Ne remettez pas en cause les conseils mtier du client qui risqueraient de le froisser. Qui na

    pas dj eu des phrases du type Non je ne suis pas daccord, le menu doit tre droite car je

    connais mes utilisateurs et il faut que ce soit l. . Vous ntes pas l pour discuter mais raliser et

    hypothtiquement faire rentrer de largent.

    Noubliez pas de mettre par crit toutes les demandes du client afin de vrifier que vous les

    avez bien identifies. Nhsitez pas tout faire signer chaque fois pour viter qu la livraison on

    vous dise que ce ntait pas ce qui avait t convenu.

    4.2 Interprter les besoins du clientPrendre le temps de comprendre le besoin est primordial, cependant, il faut aussi pouvoir

    linterprter. Cest pourquoi le langage UML (Unified Language Model) a t cr. Cette mthode

    non propritaire va vous permettre de schmatiser le systme dinformation par rapport aux besoins

    client.

    LUML nest pas la seule faon dinterprter les besoins. Nhsitez pas faire vos propres

    commentaires, schmas (grce notamment Visual studio).

  • 8/3/2019 Cration d'application d'entreprise

    8/54

    Date

    8 Cration dapplication dentreprise

    5 Larchitecture du systme5.1 Choix du type de clientLors de la cration dune spcification, 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

    excut ?

    Il existe deux grosses catgories de client applicatif en .NET :

    RIA : Les Rich Internet Applications, pour le web

    RDA : Les Rich Desktop Applications, pour lexcution sur le systme dexploitation

    Les applications riches vous permettent une interaction forte avec lIHM. Prenons lexemple

    dOutlook, vous pouvez lavoir en ligne ou sur votre bureau.

    Version RDA

    Version RIA

    Les technologies utilises pour les applications de type RIA sont lASP.NET avec de lAjax (grce

    lASP .NET 3.5 par exemple, ou lAjax toolkit), du JavaScript (Librairie JQuery intgre dans Visual

    Studio 2010), ou tout simplement du Silverlight 2.

    Lintrt des applications de type RIA vient du fait que tous les systmes dexploitation

    peuvent les utiliser. Peu importe le systme dexploitation ou le navigateur (Seulement Mac OS X et

    Windows pour Silverlight).

    http://www.asp.net/ajax/ajaxcontroltoolkit/samples/http://www.asp.net/ajax/ajaxcontroltoolkit/samples/http://www.asp.net/ajax/ajaxcontroltoolkit/samples/http://www.asp.net/ajax/ajaxcontroltoolkit/samples/
  • 8/3/2019 Cration d'application d'entreprise

    9/54

    Date

    9 Cration dapplication dentreprise

    Attention de bien faire la distinction entre ce qui sexcute ct serveur (ASP.NET) et du ct

    client (Silverlight, Javascript ).

    Les applications RDA (Rich Desktop Applications) vont vous permettre de sexcuter cot client

    grce la CLR (Common Language Runtime). Lavantage est le fait davoir la main sur le systme

    dexploitation (systmes de fichiers, base de registres). Les deux technologies utilises pour les RDAsont les Windows forms et WPF (Windows Presentation Foundation).

    5.2 Les servicesUne solution bien pense doit intgrer ce quon appelle des services.

    Un service est un programme qui va permettre dexposer des donnes notre application afin

    dviter que notre application soit en contact direct avec notre base de donnes.

    Si notre service est expos sur internet on parle alors de web service .

    Dans lexemple ci-dessus, il existe 3 services dont un nomm CoursService. Ce service nous

    met disposition des mthodes 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 dvelopper ?

    Un service peut prendre du temps dvelopper, cependant pour ceux qui souhaiteraient allerau plus vite il existe un projet appel Astoria ou Data Services qui vous gnrera automatiquement

    votre service pour exposer vos donnes.

  • 8/3/2019 Cration d'application d'entreprise

    10/54

    Date

    10 Cration dapplication dentreprise

    5.3 Modlisation de larchitecture logicielleAprs avoir dtermin le type de client (RDA/RIA) que vous allez utiliser ainsi que

    lemplacement des services, vous pouvez commencer penser votre architecture logicielle.

    Afin de modliser votre architecture, Microsoft vous propose Visual Sudio Team Foundation

    Architect Edition 2008.

    Prenons comme exemple la cration dun site de-commerce (type RIA, ASP.NET/Ajax), voici

    comment nous allons modliser notre SI :

    Nous crons un projet de type Distributed Systems / Application Design.

    Il vous est maintenant possible darchitecturer votre applicatif grce la Toolbox gauche.

    Il est possible de glisser-dposer des lments puis de les configurer (version du Framework,

    nom du service, etc).

  • 8/3/2019 Cration d'application d'entreprise

    11/54

    Date

    11 Cration dapplication dentreprise

    Pour lexemple pris prcdemment voici comment nous aurions pu le concevoir :

  • 8/3/2019 Cration d'application d'entreprise

    12/54

    Date

    12 Cration dapplication dentreprise

    5.4 Dduction de larchitecture matrielleA partir de larchitecture logicielle il est simple den dduire larchitecture matrielle.

    Suivant les moyens consacrs au projet, vous pouvez sparer lhbergeur de service du serveur

    de base de donnes.

    Visio 2007 va nous permettre de raliser un schma darchitecture matrielle.

    Pour la partie serveur, je vous conseille IIS avec Windows Server 2003 ou 2008 (La nouveaut

    WAS vous permet dhberger vos services trs facilement) bien quil soit possible grce au projet

    Cassini dhberger du .NET sur Apache.

    Pour en revenir lexemple de site de-commerce, voici ce que nous aurions pu schmatiser :

    Cependant nous aurions pu intgrer sur le mme serveur la base de donnes, le service et

    lhbergeur du site web.

  • 8/3/2019 Cration d'application d'entreprise

    13/54

    Date

    13 Cration dapplication dentreprise

    6 Les choix techniques6.1 Choisir la version du Framework

    A lheure o jcris ces lignes les spcifications du Framework 4.0 viennent de sortir.

    Le premier Framework fut le 1.0 sortie en 2002. Pour des raisons de corrections critiques, laversion 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 amliorations ont t apports au 2.0.

    Le Framework 2.0 est la base minimum pour tout

    nouveau dveloppement .NET. Il est considr comme le

    noyau de toutes les nouvelles versions.

    Grce au Framework 2.0 il vous sera possible de

    dvelopper en ASP.NET, Winforms, Web Services.

    Puis est apparu le Framework 3.0, qui nestquun ajout

    de fonctionnalits au 2.0. Dans cette nouvelle version vient

    sajouter :

    WCF : Cration de services de faon simplifie

    WPF : Cration dapplications type RDA

    WF : Cration de Workflow

    CardSpace : Systme didentification

    Le Framework 3.5, lui, propose des technologies comme ASP.NET Ajax et LINQ (API daccs aux

    donnes de faon gnrique).

    Il est aussi bon de noter quil existe un Compact Framework permettant de dvelopper pour

    les systmes embarqus type Windows CE.

    Nayez crainte dutiliser les dernires versions du Framework en pensant quelles ne seraient

    pas stables. Lactuel Framework 3.5 vient dhriter dune version SP1 amliorant considrablement

    celui-ci.

    Le choix du Framework dpendra entirement des besoins clients et des comptences des

    dveloppeurs mais dans un souci dvolutivit il est conseill de prendre la dernire version jour.

  • 8/3/2019 Cration d'application d'entreprise

    14/54

    Date

    14 Cration dapplication dentreprise

    6.2 Choisir les technologies daccs aux donnesLaccs aux donnes joue un rle important lors de la conception de notre logiciel. Soit votre

    application va directement chercher les donnes, soit ce sera votre service.

    LAPI daccs aux donnes dans .NET sappelle ADO.NET. Cette technologie va vous permettre

    daccder aux donnes de faon gnrique.

    ADO.NET :

    Lutilisation dADO.NET avec les classes de base type DataReader (mode connect) ou

    DataSet (mode dconnect) vous permettront de requter votre base laide 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 dune base de donnes nous faisons abstraction du modle

    relationnel pour faire un modle conceptuel et travailler avec des objets.

    Fini donc les requtes SQL et autres joyeusets.

    Exemple de classe gnre par Linq en glissant-dposant des tables dune base de donnes

    Note :Microsoft vient dannoncer que Linq-To-Sql ne sera plus maintenu pour les nouveaux

    fournisseurs de donnes, il est donc prfrable dutiliser LinqToEntities.

    Le choix du type daccs aux donnes est trs li au choix du Framework puisque Linq

    napparait qu partir du 3.5.

  • 8/3/2019 Cration d'application d'entreprise

    15/54

    Date

    15 Cration dapplication dentreprise

    6.3 Choisir le langageLe langage na pas vritablement son importance. La technologie .NET vous permet dutiliser

    plusieurs langages dans un mme projet grce au code MSIL gnr.

    La tendance reste au C# et VB.NET. Le VB connait un succs grce aux dveloppeurs venant de

    lancienne version VB6.

    Utilisez le C# ou VB.NET selon les prfrences du client. Evitez dutiliser dautres langages qui

    seraient difficiles maintenir par une autre quipe de dveloppeurs.

    6.4 Choisir lEDILenvironnement de dveloppement simpose naturellement: Visual Studio. Bien quil est

    possible dutiliser Mono et les diffrents EDI qui gravitent autour sous Linux.

    Chez Microsoft, il existe une multitude de versions de Visual Studio. Nous nous intressons la

    version 2008 qui permet de choisir le Framework lors de la cration dun projet.

    Visual Studio Team SystemCet outil permet une communication et une collaboration accrues entre les

    quipes de dveloppement.

    Il apporte aussi quelques outils tels que la schmatisation darchitecture

    logicielle.

    Visual Studio Team System est le produit idal pour la production

    dapplication dentreprise.

    Visual Studio Professional EditionVisual Studio 2008 Professional Edition est un environnement de

    dveloppement complet conu pour que les dveloppeurs individuels

    puissent crer des applications.

    Visual Studio Standard EditionVisual Studio Standard Edition est un environnement de dveloppement

    extrmement spcialis conu pour les dveloppeurs individuels pour la

    cration d'applications client/serveur Windows et de sites Web. Des projetstels que application base sur Office ne sont pas prsents contrairement

    ldition professionnelle.

    Visual Studio Express EditionDes outils lgers, faciles utiliser et faciles matriser pour les amateurs, les

    passionns et les tudiants (gratuits).

  • 8/3/2019 Cration d'application d'entreprise

    16/54

    Date

    16 Cration dapplication dentreprise

    6.5 Choisir le stockage de donnesLe choix du stockage de donnes est important, il doit tre pris suivant plusieurs facteurs

    comme la quantit de donnes ou le type dapplications (mobile, RIA, RDA).

    Stockage bas sur les fichiers Souvent utilis avec de lXML, je vous le recommande pour de

    petites applications. Peut devenir contraignant sil existebeaucoup de donnes.

    SQL Express Cest une base de donnes gratuite permettant de crer des

    petits projets de base de donnes. Cette option peut tre

    considre si vous manquez de moyens financiers. Attention

    cependant, ce genre de base de donnes est limit 1GO de

    RAM, 4GO de donnes et travaille avec un seul CPU.

    SQL Everywhere SQL Everywhere appel aussi SQL Mobile est une version allge

    de SQL Server. Cette option vous permet de retrouver vosdonnes en local sur un mobile.

    SQL Server editions Base de donnes de Microsoft permettant de stocker tout type

    projet volumineux.

    Autres Il existe un large panel de stockage. Attention cependant aux

    incompabilits possible avec .NET.

  • 8/3/2019 Cration d'application d'entreprise

    17/54

    Date

    17 Cration dapplication dentreprise

    7 Etablir une maquette de lIHMCrer une maquette dIHM dans le dossier de spcification est primordial et doit tre valid

    par le client.

    Peu importe que vous utilisiez paint ou un logiciel plus volu. Lintrt nest pas de

    montrer vos talents de graphiste mais surtout lergonomie de base et lenchainement des fentres.

    Exemple avec une petite application :

    Nhsitez surtout pas attacher ct un schma simplifi montrant les interactions entre

    chaque interface. Cest un travail fastidieux mais qui se rvlera utile lors de la validation avec le

    client.

  • 8/3/2019 Cration d'application d'entreprise

    18/54

    Date

    18 Cration dapplication dentreprise

    8 Modlisation de la base de donnesUne base de donnes doit tre bien pense si vous souhaitez avoir un produit final de qualit.

    Pour cela il existe de nombreuses mthodes. Je vous conseille le Merise ou/et les diagrammes ORM.

    8.1 Diagrammes ORMORM est une approche de modlisation smantique qui dcrit le monde en termes d'objets et

    des rles que ceux-ci jouent.

    Un diagramme ORM se cre partir de Visio. Il va permettre de mettre en vidence tous les

    attributs possibles pour un objet. Gnralement ce genre de diagramme est trs apprci des

    dveloppeurs puisque lon pense objet .

    Les ronds reprsentent des objets :

    Les rectangles reprsentent une relation :

    Les a... reprsentent lappartenance. Par exemple, une voiture contient des siges, un

    sige est contenu dans une voiture.

  • 8/3/2019 Cration d'application d'entreprise

    19/54

    Date

    19 Cration dapplication dentreprise

    Aprs avoir schmatis grce ORM vos objets, il est facile den dduire la base de donnes.

    Ce schma met en vidence une table Voiture, possdant des attributs tels que Couleur,

    Numro de srie et le Modle.

    8.2 Gnrer le schma de votre base de donnesSi vous souhaitez gnrer un schma capable de montrer la modlisation de votre base de

    donnes pour enrichir votre spcification, il est possible de le faire grce au SQL Server Management

    Studio.

    Aprs avoir cr la maquette de votre base, faites un nouveau diagramme :

  • 8/3/2019 Cration d'application d'entreprise

    20/54

    Date

    20 Cration dapplication dentreprise

    Puis slectionnez les tables qui devront tre prsente dans le schma :

    Le rsultat ressemble ce genre de diagramme :

  • 8/3/2019 Cration d'application d'entreprise

    21/54

    Date

    21 Cration dapplication dentreprise

    9 Reprsentations objetsUML (en anglais Unified Modeling Language, langage de modlisation unifi ) est un

    langage graphique de modlisation des donnes. Il va nous permettre de mettre sur papier

    larchitecture du SI par rapport aux besoins du client.

    Vous pouvez raliser vos schmas grce des outils comme Rational Rose ou Visio.

    Crer un projet UML dans Visio

    Menu de vision pour concevoir vos schmas

    Il existe de nombreux diagrammes (de squences, de classes) cependant nous ne verrons

    que ceux susceptibles de dfinir notre logiciel.

  • 8/3/2019 Cration d'application d'entreprise

    22/54

    Date

    22 Cration dapplication dentreprise

    9.1 Diagrammes de cas dutilisation / Etudes des acteurs et scnariiLes diagrammes dutilisation permettent de dcrire le SI dun point de vue extrieur. Il met en

    vidence ce que fait le systme.

    Ce diagramme, trs simple comprendre, permet une interaction entre le client et vous.

    Vous allez pouvoir montrer les diffrents scnarii possibles ainsi que les acteurs qui rentrent en jeux.

    Dans un premier temps, il faut identifier les acteurs. Par exemple, lutilisateur dun logiciel :

    Type de lacteur : actif (c'est--dire quil va dclencher le scnario, sinon il est passif)

    Type d'entit : personne

    Rle : utilisateur du logiciel

    Sur un diagramme UML, les acteurs sont reprsents par de petits bonshommes.

    Les cas dutilisation sont reprsents par une ellipse. Un cas dutilisation correspond un scnario.

  • 8/3/2019 Cration d'application d'entreprise

    23/54

    Date

    23 Cration dapplication dentreprise

    9.2 Diagrammes de paquetages & ComposantsLe diagramme de paquetages et de composants mettent en vidence larchitecture logicielle.

    Les architectures les plus connues sont SOA, MVC, N-tiers

    Un paquet correspond un ensemble, par exemple IHM ou Accs aux donnes .

    Gnralement une architecture 3-Tiers se reprsente de cette manire :

    Il est aussi possible de dtailler vos paquets grce aux composants .

    Un composant reprsente un sous ensemble de votre couche.

    Par exemple :

  • 8/3/2019 Cration d'application d'entreprise

    24/54

    Date

    24 Cration dapplication dentreprise

    Voici un exemple darchitecture 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 Mtier, souvent reprsente par une assembly de type library (dll).

    Une couche Service de type WCF ou Remoting.

    Une couche daccs aux donnes qui servira de DataContract. De type ADO.NET ou plus

    particulirement Linq (ToEntities de prference puisque Microsoft ne maintient plus ToSql).

  • 8/3/2019 Cration d'application d'entreprise

    25/54

    Date

    25 Cration dapplication dentreprise

    10Surveillance et gestion des erreurs du systmeBien souvent nglige lors de cration dapplications pour diverses raisons telles que le cot

    reprsent et galement parce quelle est parfois peu connue par les dveloppeurs, la scurit est un

    point essentiel dans la conception dapplications. Cette partie vous prsentera la scurit dun point

    de vue gnral, et vous apprendra tre vigilant dans vos dveloppements. Si vous avez le temps

    nhsitez pas approfondir vos recherches dans ce domaine qui volue en permanence.

    10.1Support denregistrement des logs & actions surveillerLa surveillance des actions utilisateurs est un des axes importants dans la gestion derreurs. Il

    faut imprativement avoir une remonte complte dinformations lors des

    interactions avec lutilisateur et surveiller que lutilisateur ne puisse pas nuire

    notre systme.

    En effet, une grande partie des attaques se fait simplement par des entres de

    lapplication qui sont mal ou pas du tout protges. Pour cette raison il faut

    adopter certains principes et nous verrons dans la partie Implmentation de la scurit juste

    aprs.

    Cependant, il est intressant de savoir si quelquun a tent une attaque envers notre

    application. Nous allons pour cela loguer les tentatives dintrusion de diffrentes manires : par

    envoi de mail, stockage en base de donnes ou mme en XML. Limportant est de dtecter une

    manipulation frauduleuse dun utilisateur. On pourra alors identifier une valeur errone dun

    identifiant dans un paramtre de lURL, ou encore du script dans une TextBox et nous

    sauvegarderons les informations concernant lutilisateur ayant effectu cette action. Aprs il ne tient

    qu vous denvoyer un avertissement lutilisateur concern.

    De mme si dans le cadre dune application web (ASP.NET) lutilisateur nest pas enregistr, il

    sera toujours bon de rcuprer son adresse IP avec le code suivant et loguer sa tentative dintrusion :

    Request.ServerVariables["REMOTE_ADDR"]

    Mme si ce genre de mthode ne va pas empcher lutilisateur de sintroduire dans notre

    application, elle pourra le dissuader de rcidiver dans la plupart des cas. Vous montrez lutilisateur

    que vous navez en aucun cas nglig la scurit et que vous tes attentif ses actions.

    Il est mme parfois moins couteux pour lentreprise de faire de la rpression que de la

    prvention.

    Dans la partie Implmentation de la scurit vous verrez plusieurs cas dutilisation o le

    Log est le bienvenu et comment il peut tre complmentaire dans la scurisation dapplication.

  • 8/3/2019 Cration d'application d'entreprise

    26/54

    Date

    26 Cration dapplication dentreprise

    10.2Comportement du systme face aux erreurs non gresUne bonne application dentreprise est aussi une application qui ragit correctement face aux

    erreurs non gres. En effet, il peut subsister des erreurs non prvues par les dveloppeurs dues par

    exemple au dploiement de lapplication sur un environnement de production diffrent que celui de

    dveloppement. De ce fait, les utilisateurs doivent pouvoir rencontrer une interface prvue cet

    effet afin de ne pas tre trop dstabilis face lerreur.

    Par exemple, pour une application web, il convient de concevoir une page derreur

    personnalise pouvant indiquer aux utilisateurs quune erreur vient de se produire sur lapplication

    et quun mail a t envoy ladministrateur. Lutilisateur pourra donc voir que lerreur est certes

    bien apparue mais que lquipe en charge de lapplication vient dtre prvenue. De plus, lquipe de

    dveloppement pourra alors avoir un listing des erreurs apparues dans lapplication lors dune

    utilisation courante. Ils pourront ainsi rgler plus rapidement les problmes rencontrs.

    Il est vident quil faut que ce cas se produise le moins possible afin que lutilisateur nait pas

    limpression que lapplication quil est en train dutiliser est mal conue! Cest dans cette optique

    que la partie propos des diffrents tests raliser sur lapplication est trs importante. Elle permet

    dviter les situations derreurs trop nombreuses.

    Afin que ces situations soient le moins souvent rencontres, il faut que lquipe de

    dveloppement ait bien respecte les bonnes pratiques : utilisation de blocs Try-Catch-Finally afin

    denglober les portions de code risque, vrifications diverses des variables pour ne pas rencontrer

    derreurs (null, ngatives, etc).

    Rappel dutilisation dun bloc Try-Catch-Finally :

    try{

    //Portion de code risque//Si une exception se produit l'excution//le code dans le bloc "catch" est excut

    }catch (NullReferenceException ne){

    //Portion de code excuter 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 diffrentes

    }catch(Exception e){

    //Portion de code excuter dans le cas//d'une exception basique

    }finally{

    //Portion de code s'excutant dans tous les cas : si la//portion de code risque s'excute correctement ou si//une exception se produit cette portion s'excutera

    }

  • 8/3/2019 Cration d'application d'entreprise

    27/54

    Date

    27 Cration dapplication dentreprise

    11Implmentation de la scuritImplmenter la scurit dans les applications nest pas chose simple,

    dautant plus que des failles apparaissent rgulirement, mais il y a des faons

    simples de limiter les risques.

    Tout dabord, il faut appliquer le principe du moindre privilge, partir du

    fait que lutilisateur doit avoir le moins de droit possible et le moins daccs

    possible pour limiter la surface dattaque. On ne dira plus alors : tout le monde

    voit tout sauf lutilisateur simple qui ne voit pas cela, mais personne ne voit rien sauf ladministrateur

    qui voit cela. Ce nest pas toujours la manire la plus simple de penser mais elle peut jouer son rle

    notamment en termes de failles auxquelles on ne penserait pas.

    On distinguera ensuite les diffrentes entres de donne telles que :

    - les donnes entres par lutilisateur

    - les donnes stockes localement (qui peuvent tre modifies)- les donnes stockes dans lurl

    On les divisera ici en deux parties distinctes, les entres utilisateurs et les entres non utilisateurs.

    11.1Les entres utilisateursIl y a plusieurs moyens de limiter les entres de lutilisateur natif

    .NET et mme si a ne permet pas dliminer compltement la

    menace, toute scurit supplmentaire est bonne prendre.

    En Web Form (ASP.NET) on retrouve tout dabord les diffrents

    validateurs qui permettent de limiter les entres :

    - Le RequiredFieldValidatorqui est un composant qui permet de vrifier si un champ nest pas

    vide.

    - Le CompareValidatorqui permet de comparer la valeur entre avec une autre valeur.

    - le RangeValidatorqui permet de vrifier que la valeur dentre est situe entre 2 valeurs.

    - Le RegularExpressionValidator qui permet des vrifications utilisant les expressions

    rgulires.

    - Le CustomValidatorqui permet de crer votre propre logique de validation.

    - Le ValidationSummaryqui permet de rassembler les erreurs trouves sur la mme page web

    En Windows Form on peut utiliser le namespace System.Text.RegularExpressions.

    De mme, on assignera toujours une valeur la proprit 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 dune

    application web, gres par du script ct client qui peut tre dsactiv. Par consquent nos

    vrifications ne sont plus effectives.

    Nous allons donc devoir effectuer ces validations galement cot serveur en utilisant la

    proprit Page.IsValid. On utilisera cette proprit aprs validation grce la fonction

    http://www.dotnet-tech.com/tutoriels/secu2/#L9http://www.dotnet-tech.com/tutoriels/secu2/#L9http://www.dotnet-tech.com/tutoriels/secu2/#L9http://www.dotnet-tech.com/tutoriels/secu2/#L9http://www.dotnet-tech.com/tutoriels/secu2/#L9
  • 8/3/2019 Cration d'application d'entreprise

    28/54

    Date

    28 Cration dapplication dentreprise

    Page.Validate() quil ne sera pas ncessaire dappeler si vous avez laiss la proprit CauseValidation

    de votre contrle true .

    11.2Les entres non utilisateurIl y a dautres types dentres non utilisateur qui peut galement tre source dintrusion :

    Pour le Web :

    - Les paramtres passs dans lURL (QueryString)

    - Les cookies

    Egalement valables pour le Windows Form :

    - Les fichiers lus et utiliss

    Pour les paramtres dans lURL, il faut penser vrifier diffrents points :

    - Tout dabord, si on veut rcuprer un entier, il sera bon de le convertir en utilisant la

    fonction TryParse au lieu de Parse, qui nous permettra alors didentifier un changement du

    type de notre valeur.

    - On testera en permanence si le rsultat dune requte effectue (avec une valeur ayant pu

    tre modifie par lutilisateur) nest pas null . Il faudra alors identifier si cette requte

    peut retourner, dans le cadre dune utilisation normale, une valeur null ou si ce rsultat

    est d une manipulation frauduleuse qui pourra alors tre logu.

    - On veillera galement effectuer des vrifications complmentaires sur les droits daccs.

    LURL pouvant tre modifie simplement et mme copie colle entre diffrents utilisateurs,

    on vrifiera que lidentifiant de lutilisateur lui permet bien daccder une ressource.

    Les cookies peuvent galement tre une faille importante. Certains dveloppeurs ont tendance

    mettre beaucoup dinformations dans les cookies, sans se soucier de la faille que cela reprsente.

    - Les cookies peuvent en effet tre utiliss pour rcuprer des informations sur lutilisateur. Il

    faut donc faire attention aux informations que lon y met (pas de mot de passe en clair par

    exemple).

    - Ils peuvent galement tre utiliss pour usurper lidentit dun utilisateur si le cookie permet

    une authentification. Pour un site pouvant contenir des informations sensibles, on ne

    permettra pas dauthentification automatique par cookies.

    Les cookies peuvent tre vols de diffrentes manires :

    - Directement sur la machine cliente dans le rpertoire contenant les cookies (arrive

    rgulirement dans le cadre o vous travailleriez sur un poste qui ne vous est pas rserv et

    o dautres personnes peuvent avoir accs).

    - En interceptant les cookies par sniffing ou par la mthode man in the middle , les

    cookies passant par requtes HTTP, on peut les intercepter. Il faudrait pour contrer cela

    utiliser un protocole chiffr (HTTPS par exemple).

  • 8/3/2019 Cration d'application d'entreprise

    29/54

    Date

    29 Cration dapplication dentreprise

    11.3Les tentatives dattaquesLes tentatives dattaques peuvent avoir lieu sur tout type dentre et peuvent tre de

    diffrents types. Nous allons maintenant essayer didentifier les principales attaques possibles et

    essayer de les contrer.

    Quelles sont les diffrentes attaques auxquelles nous devons faire face ?

    - Injection de code SQL

    - Vol didentifiants de session

    - Cross Site Scripting (XSS)

    Injection de code SQL :

    Cette attaque intervient dans le contexte o une entre utilisateur serait insre directement

    dans une requte SQL sans subir de vrification sur son contenu ; elle pourrait alors tre interprte

    comme du code SQL et dans ce cas effectuer des actions sur nos donnes.

    Exemple concret :

    Considrons deux champs texte contenant un nom dutilisateur et un mot de passe pour une

    authentification directement dans la base de donnes.

    SELECT user FROM table_users WHERE

    login=login AND password=password

    Dans le cas o nous neffectuerions pas de vrifications sur le login et password entrs 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 dattaque ?

    - Utiliser des procdures stockes ou mme des requtes paramtres la place du SQL

    dynamique. Les donnes entres par l'utilisateur sont alors transmises comme paramtres,

    sans risque d'injection.

    - Vrifier de manire prcise et exhaustive l'ensemble des donnes venant de l'utilisateur. Onpeut, par exemple, utiliser une expression rgulire afin de valider qu'une donne entre par

    l'utilisateur est bien de la forme souhaite.

    - Utiliser des comptes utilisateurs SQL accs limit (en lecture seule) quand cela est possible.

    - Raliser un contrle en amont en bloquant systmatiquement les entres contenant EXEC,

    SELECT, INSERT, DROP, CREATE, ALTER, UPDATE...

    - Utiliser du LinQ qui empche ce genre dattaque nativement.

    http://fr.wikipedia.org/wiki/SQLhttp://fr.wikipedia.org/wiki/Expression_rationnellehttp://fr.wikipedia.org/wiki/SQLhttp://fr.wikipedia.org/wiki/SQLhttp://fr.wikipedia.org/wiki/Expression_rationnellehttp://fr.wikipedia.org/wiki/SQL
  • 8/3/2019 Cration d'application d'entreprise

    30/54

    Date

    30 Cration dapplication dentreprise

    Vol didentifiants de session :

    Il est important de savoir que le vol de session est possible par la mthode force bruteet quil

    peut tre plus ou moins facile en fonction de lalgorithme de gnration dIdSession utilis. Le

    meilleur moyen de limiter la possibilit de ce genre dattaque est de limiter la dure de vie dune

    session et de la supprimer ds quelle nest plus utilise.

    Cross Site Scripting (XSS) :

    Le principe du Cross Site Scripting est dutiliser du code HTML, Javascript ou VBScript que lon

    introduit dans lapplication web par une des entres mal scurises. Ce code sera alors envoy

    dautres utilisateurs de lapplication qui pourra servir afficher du contenu subversif, rediriger

    l'utilisateur vers un autre site ou mme voler des informations du client accessible par le site Web

    comme des cookies par exemple.

    Avec votre application ASP.NET vous tes protg contre ce genre dattaque, du fait que par

    dfaut la variable validateRequestest dfinit true protge contre tout code intrusif et gnre

    une exception dans ce cas. Si par contre vous dsirez pouvoir insrer du code HTML dans les entresutilisateur, il sera ncessaire de le dsactiver et vous devrez alors utiliser par exemple une expression

    rgulire pour contrer ce genre dattaque. Cette variable est accessible directement depuis votre

    Web.config :

    Considrons lexemple suivant :

    Nous avons un champ texte rempli par lutilisateur et il y insert du code HTML.

    En laissant notre variable validateRequest false , tout se passe bien et le code est

    interprt. Si nous la passons true nous obtenons ceci :

    Il dtecte 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 dobtenir du code

    gardant son format HTML mais qui ne sera plus interprt. En ralit le format HTML sera reformat

    comme nous allons le voir sur le mme exemple que prcdemment.

    Nous utilisons le code suivant : txtbDesc.Text = Server.HtmlEncode(txtbDesc.Text);

  • 8/3/2019 Cration d'application d'entreprise

    31/54

    Date

    31 Cration dapplication dentreprise

    Voici le rsultat :

    Nous avons donc gard lintgralit de notre code mais reformat en HTML pour quil ne soit

    plus interprt, en retournant dans le mode dition nous avons alors ceci :

    Cette mthode est donc intressante mais ne nous permet pas dutiliser un formatage HTML

    tout en empchant lusage de script.

    Ayant maintenant vu les tentatives dintrusion les plus connues auxquelles vous serez amen

    faire face, nous esprons que votre rflexion dans le dveloppement se fera de faon scurise.

  • 8/3/2019 Cration d'application d'entreprise

    32/54

    Date

    32 Cration dapplication dentreprise

    12Les testsDans ce chapitre nous aborderons les diffrents tests qui doivent tre raliss avant de mettre

    une application en production. En effet, une application correctement teste permet dtre plus

    stable. De nos jours, il nest pas concevable de livrer une application non teste un client !

    Pour certains les tests peuvent tre considrs comme une perte de temps mais ils ont tout

    faux : le gain est norme car le temps pass dbuguer lapplication sen verra rduit dautant plus

    que les tests seront importants. En effet, lexcution de tests amnera plus rapidement identifier

    les bugs et pourra permettre alors au dveloppeur de les corriger. Le gain dnergie et de temps sera

    dautant plus considrable pour le dveloppeur puisquil lui suffira de quelques minutes pour corriger

    son code.

    Il existe donc plusieurs types de tests raliser :

    Les tests unitaires qui permettent de tester, au fur et mesure de lavancement du

    dveloppement, les diffrents composants. Les tests dintgration permettant de tester lintgration de chaque composant de

    lapplication et le bon fonctionnement entre eux.

    Les tests de validation permettant de vrifier que les fonctionnalits de lapplication sont

    bien en accord avec la spcification et les demandes du client.

  • 8/3/2019 Cration d'application d'entreprise

    33/54

    Date

    33 Cration dapplication dentreprise

    12.1Tests unitairesDans cette premire partie nous allons aborder limplmentation des tests unitaires.

    Dfinition : Un test unitaire est une portion de code qui va permettre de tester une autre

    portion de code en excutant celle-ci et en analysant son rsultat.

    Les tests unitaires permettent de rendre une application le plus robuste possible en testant

    comment elle ragit diverses situations (erreurs, performances,). De plus, le temps gagn par

    lexcution de tests automatiss est trs apprciable !

    Il existe plusieurs types de bonnes pratiques pour la mise en place des tests prconises par la

    mthodeExtreme programming:

    Implmenter les tests unitaires avant dcrire le code afin de pouvoir tester du dbut la fin

    du dveloppement de notre portion de code (apple Test Driven Programming).

    Il existe aussi la programmation croise qui ncessite deux dveloppeurs : lun implmente

    les tests pendant que lautre crit le code.

    Implmenter les tests unitaires aprs lcriture du codeafin davoir une vue densemble des

    fonctionnalits tester.

    Par dfinition, un test unitaire doit pouvoir tre autant disponible que le code quil teste. En

    effet un autre dveloppeur doit pouvoir tester la portion de code. De ce fait, il doit aussi tre

    excutable sur le poste dun autre dveloppeur : il doit donc tre indpendant de lenvironnement

    de travail. Pour assurer un gain de temps optimal, le test unitaire doit pouvoir tre excut

    automatiquement : par exemple juste aprs la compilation de la portion de code tester afin de

    pouvoir immdiatement rpertorier les ventuels bugs.

    Il existe plusieurs Framework de tests qui ont t dvelopp pour

    diffrentes technologies. Pour raliser ces tests unitaires nous utiliserons

    dans ce cours le Framework de test NUnit.

    Ce Framework a t dvelopp 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 tlcharg cette adresse :

    http://sourceforge.net/projects/nunit

    Sachez quil existe la version console de NUnit qui est install en mme temps que la version

    GUI. La version console prsente le logiciel en mode texte et affiche la sortie des tests dans la

    console. Cette version ne sera pas aborde dans ce cours.

    Une fois linstallation ralise, il suffit de lancer lexcutable pour avoir la fentre suivante qui

    souvre :

    http://fr.wikipedia.org/wiki/Extreme_programminghttp://fr.wikipedia.org/wiki/Extreme_programminghttp://fr.wikipedia.org/wiki/Extreme_programminghttp://sourceforge.net/projects/nunithttp://sourceforge.net/projects/nunithttp://sourceforge.net/projects/nunithttp://fr.wikipedia.org/wiki/Extreme_programming
  • 8/3/2019 Cration d'application d'entreprise

    34/54

    Date

    34 Cration dapplication dentreprise

    Dans la partie de gauche, on trouve une arborescence qui affichera les classes de tests et les

    mthodes de test du projet charg. Pour charger un projet il suffit de venir rcuprer la dll du projet

    tester.

    Dans la partie droite de lapplication, on peut trouver deux boutons (Run & Stop) et une barrede progression. Ces boutons permettent de lancer/stopper le test dune des mthodes. Le rsultat

    du test est affich dans le cadre de la partie basse droite.

    Le barre de menu possde les options comme la modification visuelle de laffichage (taille de la

    police,), de rcuprer les informations sur lassembly courante ou encore la gestion des Addins.

    Sachez quil est possible de charger plusieurs assemblies en mme temps : pour cela cliquer sur

    Project Add assembly .

    Maintenant que lon sait se servir du logiciel NUnit, nous allons voir comment, dans notre

    code, implmenter des mthodes de tests afin de pouvoir les excuter via le logiciel NUnit.

    Premirement, pour pouvoir utiliser le Framework NUnit, il faut le rfrencer dans le projet

    dans lequel seront crs les tests : Pour cela faire clic droit sur le projet dans Visual Studio

    Ajouter une rfrence . Ensuite dans longlet .NET , il faut rfrencer la dll

    nunit.framework.dll .

  • 8/3/2019 Cration d'application d'entreprise

    35/54

    Date

    35 Cration dapplication dentreprise

    Attention bien choisir celle correspondant au runtime v2.0.50727 si vous travaillez avec le

    Framework .NET 2.0 ou suprieur.

    Nous allons maintenant crer notre mthode tester : cette mthode sera volontairement

    trs simpliste.

    publicclassClasseATester

    {public ClasseATester(){

    }

    ////// Mthode qui vrifie l'exactude du format d'une heure//////publicbool MethodeATester(string email){

    if (email == null)

    thrownewNullReferenceException();returnRegex.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 mthode permettant de tester la validit dun champ

    correspondant une adresse e-mail.

    Maintenant, nous allons mettre en place les mthodes de test.

    Pour quune classe soit interprte par NUnit comme tant une classe de test il faut quelle ait

    lattribut[TestFixture] en en-tte de la classe. Dsormais, toutes les mthodes ayant lattribut

    [Test] seront leur tour considres comme des mthodes de test.

  • 8/3/2019 Cration d'application d'entreprise

    36/54

    Date

    36 Cration dapplication dentreprise

    Ces attributs se trouvent dans lespace de noms NUnit.Framework.

    Nous allons donc ajouter une classe de test possdant deux mthodes permettant de tester

    notre mthode cre prcdemment :

    [TestFixture]publicclassClassTest{

    public ClassTest(){

    }

    //////Methode permettant de tester l@ email avec des noms de domaine

    errons///[Test]publicvoid TestSansDomaine(){

    Assert.IsTrue(newClasseATester().MethodeATester("[email protected]"));Assert.IsFalse(newClasseATester().MethodeATester("test@test"));Assert.IsFalse(newClasseATester().MethodeATester("test@test."));Assert.IsFalse(newClasseATester().MethodeATester("test@"));

    }

    //////Mthode permettant de tester l@ email sans partie locale///[Test]publicvoid TestSansPartieLocale(){

    Assert.IsTrue(newClasseATester().MethodeATester("[email protected]"));Assert.IsFalse(newClasseATester().MethodeATester("@test.com"));Assert.IsFalse(newClasseATester().MethodeATester(" @test.com"));

    }}

    Lattribut [Test] possde plusieurs attributs supplmentaires qui peuvent tre utiles :

    ExpectedException()permet de dfinir quelle sera lexception attendue en sortie.

    Si une exception est leve et quil sagit bien du type dexception spcifie en paramtre

    de cette mthode alors le test est pass avec succs

    Explicit permet dindiquer que la mthode devra tre manuellement excute.Lorsquon clique sur Tester tout dans NUnit, une mthode de test portant cette

    attribut ne sera pas excute.

    Ignore Les mthodes de test portant cet attribut ne seront pas excutes et seront

    marques comme Warning dans NUnit.

    Il existe encore dautres attributs qui ne seront pas explicits ici.

    Une fois la dll charge dans NUnit, voil laffichage que lon obtient :

  • 8/3/2019 Cration d'application d'entreprise

    37/54

    Date

    37 Cration dapplication dentreprise

    Lorsquon lance les tests, voici laffichage que lon obtient :

    Si un test se droule avec succs il saffiche en vert et en rouge sil y a une erreur. De plus,

    lorsquil 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 lexpression rgulire de notre

    classe tester : En supprimant de lexpression rgulire la vrification de la partie locale dune

    adresse e-mail, le test TestSansPartieLocale ne sera pas excut avec succs :

  • 8/3/2019 Cration d'application d'entreprise

    38/54

    Date

    38 Cration dapplication dentreprise

    Dans le code contenu dans les mthodes de tests, on peut noter plusieurs appels aux

    mthodes de la classe Assert. Cette classe permet de faire des assertions dans notre code et

    permet donc de tester les valeurs de retour des mthodes

    tester.

    Voici le diagramme de la classe Assert :

    Grce toutes ces mthodes, il est donc possible de tester denombreux cas dutilisations :

    IsFalse permet de vrifier si lexpression passe en

    paramtre est false

    IsNull permet de vrifier si lexpression passe en

    paramtre est null

    Les noms tant assez explicites, nous ne dtaillerons pas plus

    les autres mthodes.

  • 8/3/2019 Cration d'application d'entreprise

    39/54

    Date

    39 Cration dapplication dentreprise

    Les bonnes pratiques pour bien raliser ses tests unitaires sont les suivantes :

    Une classe tester = une classe de testen effet autant tester lintgralit de notre classe

    dans une seule classe de test possdant plusieurs mthodes de test.

    Dvelopper la fois des tests simples et des tests plus consquents afin de tester en

    profondeur lapplication pour tre sr de sa robustesse

    Enfin, les tests doivent tre dans la mme 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

    dbogage, une non rgression du code tant donn que les tests sont excuts trs souvent ainsi

    quune meilleure documentation.

    12.2Tests dintgrationLes tests dintgration permettent de vrifier que les diffrents composants raliss lors de la

    phase de dveloppement fonctionnent correctement entre eux et avec le reste de lapplication.

    Voyons un exemple simple : Il pourra tre test le bon fonctionnement dun composant

    permettant dafficher une liste dutilisateurs et un autre composant permettant dajouter un

    utilisateur. Lorsquon ajoutera un utilisateur il devra stre affich dans le composant listant tous les

    utilisateurs.

    Pour tre bien sr de valider la totalit des composants et de leurs fonctionnalits, il est

    fortement recommand de garder une trace de tous ces tests en ralisant des fiches. Dans ces fiches

    on pourrait rpertorier deux grandes parties : la prsentation du test dintgration et le rapport de

    test afin de garder une trace du rsultat obtenu.

    Voici les grandes lignes de ce que lon peut trouver dans la prsentation dun test dintgration :

    Lobjectif du test reprenant les diffrents composants tester

    Une description permettant de dtailler la dmarche suivre pour raliser le test

    Lenvironnement ncessaire (matriel et logiciel)

    Le rsultat attendu

    Voici une liste non exhaustive des points abords dans un rapport de test dintgration :

    La date laquelle a t ralis le test

    Les intervenants qui ont ralis le test

    Les numros de version des composants intgrs tests

    Lenvironnement de test

    Le rsultat obtenu ainsi quune partie pour commenter ce rsultat

  • 8/3/2019 Cration d'application d'entreprise

    40/54

    Date

    40 Cration dapplication dentreprise

    12.3Tests de validationLes tests de validation permettent de vrifier que les fonctionnalits dveloppes sont bien en

    accord avec la spcification de dpart ralise en collaboration avec le client. En effet, il parat

    vident de vrifier la bonne concordance entre le produit cr et les volonts du client.

    Les tests de validation de composent en gnral de plusieurs phases :

    Une validation fonctionnelle permettant de tester les fonctionnalits de chaque composant

    afin dtre sr quelles correspondent bien la spcification.

    Une validation solution permettant de tester les cas dutilisations afin dagrer que

    lapplication ragira comme il le faut ainsi que le respect des standards applicables au projet.

    Tout comme pour les tests dintgration 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 dveloppement diffrentes qui testent lapplication de cel les qui dveloppent

    lapplication. De ce fait, il est important pour lquipe en charge du dveloppement davoir une trace

    de ce qui a t ralis au niveau des tests.

    Voici les informations que peuvent contenir une fiche de test de validation :

    Lobjectif du test ainsi quune courte description comme par exemple : tester le cas

    dutilisation connexion lapplication

    La description des actions que lutilisateur doit raliser pour atteindre lobjectif du test

    Lenvironnement ncessaire pour mener bien le test

    Le rsultat obtenu ainsi quun commentaire

  • 8/3/2019 Cration d'application d'entreprise

    41/54

    Date

    41 Cration dapplication dentreprise

    13Le dploiement13.1Choix du dploiement de votre application

    Il existe aujourdhui plusieurs solutions de dploiement adaptes aux diffrentes contraintes

    que lon peut avoir. Il est important de connaitre les possibilits qui nous sont proposes par

    Microsoft pour dployer en toute simplicit nos applications.

    Dans un premier temps nous tudierons la mthode de dploiement classique, en utilisant un

    projet de dploiement. Nous verrons par la suite que dautres solutions existent aujourdhui telles

    que ClickOnce qui nous permet une installation trs simple par internet.

    13.2Projet de dploiementLe projet de dploiement est la faon la plus classique de dployer votre application. Son

    principe est assez simple, vous crez un projet contenant lapplication prcdemment dveloppe

    ainsi que les ressources quelle

    ncessite.

    On commencera par choisir

    parmi les diffrents types de projet

    disponibles.

    On distingue le projet de dploiement (Setup Project) qui sera utilis pour les applications

    clientes (Windows Form) et le projet de dploiement Web (Web Setup Project) qui comme son nom

    lindique sera utilis pour les applications web.

    Le Setup Wizard est un assistant pour crer votre projet de dploiement, seuls les deux

    principaux projets de dploiement cits prcdemment seront tudis ici.

    Lors de la cration de votre projet de

    dploiement, quil soit client lourd ou application web,

    vous aurez accs une barre doutils spcifique

    reprenant les fonctionnalits suivantes :

    - File System editor: Dfinition de l'organisation des fichiers copier.

    - Registry Editor: Dfinition des modifications apporter dans la base de registres.- File Types Editor: Permet d'associer une extension de fichier notre application.

    - User Interface Editor: Dfinition des diffrentes interfaces qui vont se drouler lors de

    l'installation.

    - Custom Actions Editor: Cration d'actions personnalises.

    - Launch Conditions Editor: Dfinition des conditions de lancement.

    Nous allons voir ci-dessous plus en dtail quoi correspondent ces diffrents outils :

  • 8/3/2019 Cration d'application d'entreprise

    42/54

    Date

    42 Cration dapplication dentreprise

    File System editor

    Cest le principal outil dans le dploiement, il va nous permettre de grer toutes

    limplmentation de nos fichiers.

    La partie de gauche est constitue de multiples rpertoires qui peuvent tre de deux types :

    - Rpertoire standard

    - Rpertoire spcial (avec ltoile bleue sur le logo)

    Les rpertoires spciaux nous permettent daccder diffrents endroits de Windows. Nous

    utiliserons ces dossiers par exemple pour dfinir des raccourcis sur le bureau, dans le menu

    Dmarrer ou encore des Assemblies (Attention les Assemblies doivent absolument tre signes) :

    Dans la partie de droite on pourra venir mettre des fichiers dans les diffrents rpertoires. Ces

    fichiers pourront tre de diffrents types :

    - Fichiers : permet de choisir des fichiers intgrer

    - Dossiers : permet dorganiser les fichiers

    - Assemblies : Permet de choisir une Assembly intgrer

    - Sorties de projet

    Nous allons nous intresser la sortie de projet, qui reprsente le point le plus important :

  • 8/3/2019 Cration d'application d'entreprise

    43/54

    Date

    43 Cration dapplication dentreprise

    Linterface prsente ici nous permet dajouter une sortie de projet. Cest le moyen dintgrer

    notre application au projet de dploiement. Il faudra ensuite choisir parmi les diffrents types de

    sortie :

    - Sortie principale : L'excutable ou la dll gnre par le projet ainsi que toutes ses

    dpendances.

    - Ressources localises : Les ressources associes des projets localiss (multi langues. Par

    exemple dans le cas des applications Windows).

    - Symboles de dbogages : Tous les fichiers pdb qui permettent de dbugger l'application.

    Cette sortie n'est pas conseille car gnralement on n'installe jamais la version Debug d'un

    projet.

    - Content file : Installe les fichiers marqus comme Contenu dans le projet.

    Registry Editor

    Il peut arriver parfois que lon soit amen modifier la base de

    registre. Il est alors bon de savoir quune interface nous permet de la

    modifier facilement. On peut ainsi y crer ou y modifier des cls

    simplement.

    File Types Editor

    Dans certains cas, votre application peut tre lie un type

    de fichier dfini et il faut alors lier lextension 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 spcifie son extension.

    On pourra galement ici dfinir une icne lie cette

    extension et modifier les actions (par dfaut : Open).

  • 8/3/2019 Cration d'application d'entreprise

    44/54

    Date

    44 Cration dapplication dentreprise

    User Interface Editor

    Cet outil vous permettra de configurer linterface dinstallation de votre application cependant

    si vous ne dsirez pas le paramtrer, linterface par dfaut sera mise en place.

    Vous pourrez donc modifier les tapes de linstallation etdes lments graphiques pour personnaliser votre installeur.

    On retrouvera des lments tels que :

    - Le Splash : Une image qui s'affiche quelques secondes au

    lancement de linstallation.

    - La licence : demandant lutilisateur d'accepter les

    termes d'une licence

    - Numro de srie : Oblige l'utilisateur entrer un numro

    de srie afin de poursuivre l'installation.

    Custom Actions Editor

    Nous ne dtaillerons pas ici les actions personnalises, elles permettent des actions trs

    compltes mais ncessite une configuration plus longue notamment en redfinissant la classe

    Installeur.

    Launch Conditions Editor

    Cet outil nous permet de dfinir des conditions dinstallation, comme par exemple la prsence

    dune certaine version du Framework .NET, ou encore si IIS es requis pour linstallation.

    On commencera par effectuer une recherche qui pourra tre de diffrents types :

    - Prsence de fichiers : Permet de rechercher un fichier en fonction de ses paramtres (par

    exemple son nom).

    - Prsence de cls dans base de registre : Regarde si une cl existe un emplacement donn.

    - Prsence d'une installation antrieure d'un MSI : Cette recherche se base sur l'identifiant

    d'installation du MSI.

    On dfinit ensuite la condition de lancement qui va tre test l'issue de la recherche :

  • 8/3/2019 Cration d'application d'entreprise

    45/54

    Date

    45 Cration dapplication dentreprise

    Nous avons vu de faon globale comment paramtrer notre projet dinstallation. Nous allons

    maintenant dcouvrir quil existe dautres moyens de dploiement.

    13.3Click OnceClickOnce quest-ce que cest? Cest un moyen trs simple de dployer une application et de

    permettre tout le monde de linstaller par Internet. Cette technique de dploiement peut avoir des

    avantages comme des inconvnients. Nous allons dcouvrir comment mettre en place ce genre de

    dploiement.

    Click Once est une nouveaut du Framework 2.0, il utilise le protocole HTTP pour diffuser

    notre projet et permet de linstaller simplement mais galement deffectuer des mises jour. Il faut

    savoir que ce type dinstalleur ncessite donc que le client dispose dune connexion Internet et que

    nous ayons un serveur Web IIS install.

    Dploiement et installation dapplication avec ClickOnce

    Nous allons commencer par crer notre projet que lon dsire installer ; On utilisera ici unprojet WindowsForm.

    Une fois notre projet compil, nous allons directement le dployer. On va alors dans les

    proprits de notre application et on coche la case Sign the ClickOnce manifest (signer le

    manifeste ClickOnce) dans longlet Signing .

  • 8/3/2019 Cration d'application d'entreprise

    46/54

    Date

    46 Cration dapplication dentreprise

    On dfinit ensuite les autorisations de scurit. Il sera bon de les restreindre au maximum,

    pour suivre la rgle du moindre privilge aborde dans le chapitre sur la scurit. Vous pouvez

    utiliser loutil fournit par Visual Studio Calculer les permissions afin de vrifier les permissions qui

    sont ncessaires.

    Vient ensuite la partie publication dans longlet Publish . Sur cette page, nous allons dfinir

    si lapplication sera publie sur un FTP, un partage rseau ou un serveur IIS. On dfinira galement si

    notre application sera accessible uniquement de faon online (retlecharge chaque fois) ou de

    faon offline : tlcharge et installe sur le poste client.

  • 8/3/2019 Cration d'application d'entreprise

    47/54

    Date

    47 Cration dapplication dentreprise

    On va maintenant paramtrer les diffrents points de cet onglet :

    - Publishing Location : cest le partage Web depuis lequel votre application sera dploye

    et/ou mise jour.

    - Install Mode and Settings : on spcifiera ici si votre application doit tre disponible "OnLine"

    ou "OffLine".

    - Prerequisites : comme vu prcdement avec le projet de dploiement, on pourra dfinir des

    pr-requis pour ClickOnce.

    - Updates : vous pourrez spcifier dans cette partie si votre application doit ou non vrifier la

    prsence de mise jour sur le serveur. On pourra galement dterminer le moment ou

    seffectue cette vrification (avant ou aprs le dmarrage de l'application).

    - Options : cette partie concerne des informations gnrales.

    On paramtrera en premier les pr-requis,

    de la mme manire que pour le projet de

    dploiement, vous choisirez les lments

    ncessaires. Dans le cas o il ne serait pas

    install sur le client, on paramtre lendroit o il

    peut se le procurer.

    Dans les options on dterminera par exemple la

    description de notre application, son nom de publication

    ou le site web servant de support sil y en a.

    Mais dautres parties plus importantes, comme la

    page web de dploiement, pourront tre cres

    automatiquement. Dans notre cas nous gnrerons une

    page Accueil .html qui sera gnre et ressemblera la

    page ci-dessous. Cette page nous rcapitule les

    informations remplies prcdemment et nous permet

    dexcuter lapplication.

  • 8/3/2019 Cration d'application d'entreprise

    48/54

    Date

    48 Cration dapplication dentreprise

    Un assistant de publication est galement notre disposition, il nous permettra de paramtrer

    certains des attributs vus prcdemment, de manire simple.

    Nous avons maintenant configur notre dploiement Click Once, il reste alors linstaller .

    En excutant 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 fentre de chargement. Ensuite notre

    application est dmarre. De mme dans le cadre dune

    installation, nous aurions un bouton Install et notre

    application sinstallerait.

    Ici nous avons une application sans intrt, qui na aucun contenu mais nous

    pouvons voir que le dploiement cest bien effectu.

    Mise jour de notre application

    Une autre fonctionnalit simple que permet ClickOnce est la mise disposition de mise jouret la dtection de celle-ci.

    Dans la page des proprits de notre application, nous irons dans la partie Update et il faut

    alors cocher loption pour vrifier les mises jour de lapplication. Ici nous dcidons deffectuer la

    vrification avant le lancement de lapplication.

    http://localhost/appli/WindowsFormsApplication1.applicationhttp://localhost/appli/WindowsFormsApplication1.applicationhttp://localhost/appli/WindowsFormsApplication1.applicationhttp://localhost/appli/WindowsFormsApplication1.application
  • 8/3/2019 Cration d'application d'entreprise

    49/54

    Date

    49 Cration dapplication dentreprise

    Pour publier une mise jour il faudra simplement aprs avoir reconstruit notre projet, cliquer

    sur publier. Lutilisateur lanant son application, aura maintenant une fentre de recherche de mise

    jour qui se lancera au dmarrage.

    Il me propose alors dinstaller une mise jour

    et mon application est alors modifie par la nouvelle

    version.

    Scuriser 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 daller dans la partie Signing ( Signature) et de

    choisir loption Sign the assembly .

    On choisit alors de crer notre nouveau fichier snk.

  • 8/3/2019 Cration d'application d'entreprise

    50/54

    Date

    50 Cration dapplication dentreprise

    Rappelons que signer les assemblies .NET est une technique efficace et trs pratique, dans le

    cas o vous seriez amen les rutiliser dans dautres projets. Cela vous permet de les inscrire dans

    le GAC (Global Assembly Cache) et vous vite ainsi, de devoir redployer la DLL de votre assembly

    chaque fois que vous dployez un nouveau projet.

    On peut galement utiliser un certificat de scurit pour signer le manifest de votre applicationClickOnce.

    ClickOnce est donc un outil trs simple mettre en place, performant et facilement

    paramtrable. Cependant, il ne convient pas tous les types de dploiement, notamment parce que

    son mode de publication se fait par Internet.

  • 8/3/2019 Cration d'application d'entreprise

    51/54

    Date

    51 Cration dapplication dentreprise

    14Le travail collaboratif14.1Introduction WSS

    WSS ou Windows SharePoint Services est un outil de travail collaboratif

    dvelopp par Microsoft.

    Cet outil recle de nombreuses fonctionnalits :

    Il constitue un portail web et intranet permettant aux membres dune entreprise de pouvoir

    centraliser des documents et des informations relatives au travail dquipe : plannings,

    espaces de discussions, carnets de rendez-vous, gestions

    de tches, etc

    Cration et gestion de site webs : il est possible de crer

    des applications web bases sur SharePoint. Cesapplications web sont totalement personnalisable grce

    entre autres la cration de webparts et masterpages

    intgrables aux sites web.

    Il constitue aussi une vraie base documentaire grce la

    mise en place de stockage/partage de documents de tous

    types ainsi que la gestion des droits daccs sur ces

    documents. De plus, WSS 3.0 propose une gestion des

    versions des documents permettant tout moment de revenir une version antrieure.

    Fonctionnalits supplmentaires : cration de blogs, wikis, gestion dalertes et de flux RSS

    pour tre au fait de modifications faites sur le portail.

    Cet outil permet donc entre autres damliorer la productivit dune quipe grce des outils

    faciles utiliser puisque toutes les informations relatives leur travail sont centralises sur une

    mme application. De plus, il permet de ce fait, de faciliter la gestion des ressources documentaires

  • 8/3/2019 Cration d'application d'entreprise

    52/54

    Date

    52 Cration dapplication dentreprise

    et humaines pour les chefs de projets. Enfin, il constitue une base solide pour venir crer des

    applications web grce ses fonctionnalits de customisation et de cration.

    14.2Introduction Team Foundation ServerTFS ou Team Foundation Server est un produit dvelopp par Microsoft . Cest

    aussi un outil de travail collaboratif ; Cependant, il est orient dveloppement

    dapplications en .NET et fonctionne avec Visual Studio 2005 ou 2008.

    Pour installer Team Foundation Server il faut avoir un serveur sous Windows

    Server 2003 ou 2008 avec IIS et SQL Server 2005 ou 2008.

    Les utilisateurs du serveur TFS devront possder une version Team System de Visual Studio

    (Database Edition, Development Edition, Test Edition ou Architecture Edition). De plus, les

    utilisateurs de TFS devront avoir install le plugin Visual Studio Team System Team Explorer. Ce

    plugin permet, sous Visual Studio Team System, de se connecter un serveur TFS et ainsi de pouvoir

    bnficier des fonctionnalits Team System.

  • 8/3/2019 Cration d'application d'entreprise

    53/54

    Date

    53 Cration dapplication dentreprise

    Cet outil de travail collaboratif permet une quipe de dveloppement ayant accs un projet

    dquipe de pouvoir partager des documents, de pouvoir travailler sur le mme code source en

    mme temps et de pouvoir versionner celui-ci. Par exemple deux dveloppeurs peuvent

    travailler sur la mme classe en mme temps et au moment de la publication sur le serveur, les

    ventuels conflits de version et de collision de code feront le ncessaire pour viter que chacun des

    dveloppeurs perdent son travail ou crase celui de lautre. Grce loutil Team Exp lorer il vous sera

    possible dtablir des verrouillages afin que les autres dveloppeurs ne puissent pas modifier le

    fichier que vous tes en train de modifier.

    Pour le chef de projets, lintrt de cet outil nest pas ngligeable : il pourra mettre en place

    des lments de travail ou Work Items . Ceux-ci permettront dindiquer aux dveloppeurs des

    tches raliser comme la rsolution dun bug, dun composant raliser, etc De plus, le chef de

    projet pourra mettre en ligne des documents utiles lquipe (spcifications, diagrammes, etc).

    Enfin, il sera possible de crer des rgles dans le contrle de code source afin dimposer vos

    dveloppeurs certaines bonnes pratiques : imposer que la solution compile avant de pouvoir publier

    la version sur le serveur, imposer un pourcentage de commentaires dans le code.

    Comme on peut le voir, Team Foundation Server est un outil trs complet permettant aux

    quipes de dveloppement en collaboration trs facilement. Le gain de productivit peut tre

    considrablement accru.

  • 8/3/2019 Cration d'application d'entreprise

    54/54

    54 Cration dapplication dentreprise

    15Planification dun projetLa planification dun projet est la chose la plus importante dans votre spcification.

    Pour cela vous pouvez vous aidez de logiciel tel que MS Project.

    Vous pourrez gnrer un diagramme de Gantt qui pourra se synchroniser sur un SharePoint.

    Ce qui permettra au client et aux dveloppeurs de connatre le planning et ltat davancement

    du projet.