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
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
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
Vous remarquerez que sur ces trois points, lentreprise perd de largent.
Date
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
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
LUML nest pas la seule faon dinterprter les besoins. Nhsitez pas faire vos propres commentaires, schmas (grce notamment Visual studio).
Date
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
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).
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
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
Date
12
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
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
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
Date
16
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.
Autres
Date
17
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
Les a... reprsentent lappartenance. Par exemple, une voiture contient des siges, un sige est contenu dans une voiture.
Date
19
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.
Date
20
Puis slectionnez les tables qui devront tre prsente dans le schma :
Date
21
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.
Il existe de nombreux diagrammes (de squences, de classes) cependant nous ne verrons que ceux susceptibles de dfinir notre logiciel.
Date
22
Date
23
Il est aussi possible de dtailler vos paquets grce aux composants . Un composant reprsente un sous ensemble de votre couche. Par exemple :
Date
24
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
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
Date
27
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.
Date
28
Page.Validate() quil ne sera pas ncessaire dappeler si vous avez laiss la proprit CauseValidation de votre contrle true .
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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.
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
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
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
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.
Date
45
Nous avons vu de faon globale comment paramtrer notre projet dinstallation. Nous allons maintenant dcouvrir quil existe dautres moyens de dploiement.
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
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
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
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
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 .
Date
50
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
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
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.
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
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
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