Вы находитесь на странице: 1из 54

1

Cration dapplication dentreprise

Cration dapplication dentreprise


Sommaire
Cration dapplication dentreprise ..................................................................................................... 1 1 Introduction ..................................................................................................................................... 3 1.1 2 Prface & Public de ce tutorial ................................................................................................ 3

Une spcification pour dveloppeur ............................................................................................... 4 2.1 2.2 2.3 Dfinition du mot spcification dans cet ouvrage .................................................................. 4 Lintrt dune spcification .................................................................................................... 4 Les outils .................................................................................................................................. 4

Le cycle de vie du projet .................................................................................................................. 5 3.1 3.2 Cycle de vie en V ...................................................................................................................... 5 Cycle de vie incrmental ......................................................................................................... 6

Etudes des besoins dun projet ....................................................................................................... 7 4.1 4.2 Savoir couter le client ............................................................................................................ 7 Interprter les besoins du client ............................................................................................. 7

Larchitecture du systme ............................................................................................................... 8 5.1 5.2 5.3 5.4 Choix du type de client ............................................................................................................ 8 Les services .............................................................................................................................. 9 Modlisation de larchitecture logicielle ............................................................................... 10 Dduction de larchitecture matrielle ................................................................................. 12

Les choix techniques...................................................................................................................... 13 6.1 6.2 6.3 6.4 6.5 Choisir la version du Framework ........................................................................................... 13 Choisir les technologies daccs aux donnes ....................................................................... 14 Choisir le langage................................................................................................................... 15 Choisir lEDI ........................................................................................................................... 15 Choisir le stockage de donnes ............................................................................................. 16

7 8

Etablir une maquette de lIHM ...................................................................................................... 17 Modlisation de la base de donnes............................................................................................. 18 8.1 8.2 Diagrammes ORM ................................................................................................................. 18 Gnrer le schma de votre base de donnes ...................................................................... 19

Reprsentations objets ................................................................................................................. 21 9.1 9.2 Diagrammes de cas dutilisation / Etudes des acteurs et scnarii ........................................ 22 Diagrammes de paquetages & Composants ......................................................................... 23 Date

Cration dapplication dentreprise

10 10.1 10.2 11 11.1 11.2 11.3 12 12.1 12.2 12.3 13 13.1 13.2 13.3 14 14.1 14.2 15

Surveillance et gestion des erreurs du systme ........................................................................ 25 Support denregistrement des logs & actions surveiller .................................................... 25 Comportement du systme face aux erreurs non gres ..................................................... 26 Implmentation de la scurit .................................................................................................. 27 Les entres utilisateurs.......................................................................................................... 27 Les entres non utilisateur .................................................................................................... 28 Les tentatives dattaques ...................................................................................................... 29 Les tests ..................................................................................................................................... 32 Tests unitaires ....................................................................................................................... 33 Tests dintgration................................................................................................................. 39 Tests de validation ................................................................................................................. 40 Le dploiement.......................................................................................................................... 41 Choix du dploiement de votre application .......................................................................... 41 Projet de dploiement........................................................................................................... 41 Click Once .............................................................................................................................. 45 Le travail collaboratif ................................................................................................................. 51 Introduction WSS................................................................................................................... 51 Introduction Team Foundation Server ............................................................................... 52 Planification dun projet ............................................................................................................ 54

Date

Cration dapplication dentreprise

1 Introduction
1.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

Date

Cration dapplication dentreprise

2 Une spcification pour dveloppeur


2.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 spcification


Dans 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 outils


Nous 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.

Date

Cration dapplication dentreprise

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 intresser plus particulirement deux dentre eux : Cycle de vie en V Cycle de vie incrmental

3.1 Cycle de vie en V


Le 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 soussystmes 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.

Date

Cration dapplication dentreprise

3.2 Cycle de vie incrmental


Dans 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.

Date

Cration dapplication dentreprise

4 Etudes des besoins dun projet


4.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 de votre projet. Il vous faut utiliser un langage de non informaticien, schmatiser ce dont vous parlez, appuyezvous 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 client


Prendre 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).

Date

Cration dapplication dentreprise

5 Larchitecture du systme
5.1 Choix du type de client
Lors 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).

Date

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 RDA sont les Windows forms et WPF (Windows Presentation Foundation).

5.2 Les services


Une 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 aller au plus vite il existe un projet appel Astoria ou Data Services qui vous gnrera automatiquement votre service pour exposer vos donnes.

Date

10

Cration dapplication dentreprise

5.3 Modlisation de larchitecture logicielle


Aprs 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).

Date

11

Cration dapplication dentreprise

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

Date

12

Cration dapplication dentreprise

5.4 Dduction de larchitecture matrielle


A 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.

Date

13

Cration dapplication dentreprise

6 Les choix techniques


6.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, 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 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 nest quun 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.

Date

14

Cration dapplication dentreprise

6.2 Choisir les technologies daccs aux donnes


Laccs 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.

Date

15

Cration dapplication dentreprise

6.3 Choisir le langage


Le 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 lEDI


Lenvironnement 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 System


Cet 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 Edition


Visual Studio 2008 Professional Edition est un environnement de dveloppement complet conu pour que les dveloppeurs individuels puissent crer des applications.

Visual Studio Standard Edition


Visual 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 projets tels que application base sur Office ne sont pas prsents contrairement ldition professionnelle.

Visual Studio Express Edition


Des outils lgers, faciles utiliser et faciles matriser pour les amateurs, les passionns et les tudiants (gratuits).

Date

16

Cration dapplication dentreprise

6.5 Choisir le stockage de donnes


Le 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 existe beaucoup de donnes. 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 Express

SQL Everywhere

SQL Everywhere appel aussi SQL Mobile est une version allge de SQL Server. Cette option vous permet de retrouver vos donnes en local sur un mobile. Base de donnes de Microsoft permettant de stocker tout type projet volumineux. Il existe un large panel de stockage. Attention cependant aux incompabilits possible avec .NET.

SQL Server editions

Autres

Date

17

Cration dapplication dentreprise

7 Etablir une maquette de lIHM


Crer 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.

Date

18

Cration dapplication dentreprise

8 Modlisation de la base de donnes


Une 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 ORM


ORM 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.

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 donnes


Si 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 :

Date

20

Cration dapplication dentreprise

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

Le rsultat ressemble ce genre de diagramme :

Date

21

Cration dapplication dentreprise

9 Reprsentations objets
UML (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.

Date

22

Cration dapplication dentreprise

9.1 Diagrammes de cas dutilisation / Etudes des acteurs et scnarii


Les 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.

Date

23

Cration dapplication dentreprise

9.2 Diagrammes de paquetages & Composants


Le 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 :

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).

Date

25

Cration dapplication dentreprise

10 Surveillance et gestion des erreurs du systme


Bien 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.1 Support denregistrement des logs & actions surveiller


La 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.

Date

26

Cration dapplication dentreprise

10.2 Comportement du systme face aux erreurs non gres


Une 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 }

Date

27

Cration dapplication dentreprise

11 Implmentation de la scurit
Implmenter 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.1 Les entres utilisateurs


Il 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 RequiredFieldValidator qui est un composant qui permet de vrifier si un champ nest pas vide. Le CompareValidator qui permet de comparer la valeur entre avec une autre valeur. le RangeValidator qui permet de vrifier que la valeur dentre est situe entre 2 valeurs. Le RegularExpressionValidator qui permet des vrifications utilisant les expressions rgulires. Le CustomValidator qui permet de crer votre propre logique de validation. Le ValidationSummary qui 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

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.2 Les entres non utilisateur


Il 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).

Date

29

Cration dapplication dentreprise

11.3 Les tentatives dattaques


Les 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. On peut, 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.

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 brute et 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 validateRequest est 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 entres utilisateur, 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 : <pages validateRequest="false" /> 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); 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.

Date

32

Cration dapplication dentreprise

12 Les tests
Dans 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.

Date

33

Cration dapplication dentreprise

12.1 Tests unitaires


Dans 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 mthode Extreme 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 code afin 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 :

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 barre de 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.

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.
public class ClasseATester { public ClasseATester() { } /// <summary> /// Mthode qui vrifie 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}\.[09]{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. 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] public class ClassTest { public ClassTest() { } /// <summary> /// Methode permettant de tester l@ email avec des noms de domaine errons /// </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> /// Mthode 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")); } }

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 :

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 :

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 de nombreux 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.

Date

39

Cration dapplication dentreprise

Les bonnes pratiques pour bien raliser ses tests unitaires sont les suivantes : Une classe tester = une classe de test en 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.2 Tests dintgration


Les 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

Date

40

Cration dapplication dentreprise

12.3 Tests de validation


Les 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 celles 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

Date

41

Cration dapplication dentreprise

13 Le dploiement
13.1 Choix 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.2 Projet de dploiement


Le 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 :

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 :

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).

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 et des 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 :

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.3 Click Once


ClickOnce 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 un projet 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 .

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.

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.

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 jour et 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.

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.

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 application ClickOnce. 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.

Date

51

Cration dapplication dentreprise

14 Le travail collaboratif
14.1 Introduction 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. Ces applications 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

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.2 Introduction Team Foundation Server


TFS 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.

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 Explorer 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.

Date

54

Cration dapplication dentreprise

15 Planification dun projet


La 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.

Date

Вам также может понравиться