\documentclass[a4paper,12pt]{report}
%\title{Dossier~d'Alternance \\Application de partage de connaissance \\par extranet}
%\author{Sun Seng TAN}
%\date{Netpepper - Ingénieurs 2000 - UMLV\\ Filière Informatique et réseau - 2ème année\\Août  2003}

\title{Soutenance du Dossier~d'Alternance \\Application de partage de connaissance \\par extranet}
\author{Sun Seng TAN}
\date{Netpepper - Ingénieurs 2000 - UMLV\\ Filière Informatique et réseau - 2ème année\\Septembre 2003}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{indentfirst}
\usepackage{graphicx}
\usepackage{makeidx}
\makeindex
\begin{document}
\maketitle
\tableofcontents
\chapter{Préambule.}


L'année dernière, ma cousine canadienne était venue passer l'été à Paris. Son séjour s'est bien déroulé.
Dix ans avant, elle avait effectuée ce même séjour et à la fin de celui ci, nous nous échangions nos adresses
 postales pour une correspondance. Mais de nos temps, les choses ont bien changé : on 
ne s'échange plus d'adresse  postale, ni de numéro de téléphone. Ce sont les 
``adresses email'' ou autre ``numéro icq'' qui se notaient sur nos agendas.


Aujourd'hui,  \index{Internet} Internet a énormément développé nos outils de communication.
En effet, des outils comme le ``tchatche''  ou ``l'email'' permettent à des
 personnes situées à n'importe quel point du globe de s'envoyer des messages.
 Les spécialistes  peuvent parler de crise, mais les utilisateurs restent là, ils 
communiquent encore par cet outil qu'est `` \index{Internet} Internet''.

Pourquoi je parle de crise ? A vrai dire, \index{Netpepper} Netpepper, l'entreprise dans laquelle
 j'éffectue mon apprentissage est en dépôt de bilan et se dirige vers
 la liquidation judiciaire. Ce sont des choses qui ne sont pas évidentes à vivre mais qui
 font parties de l'expérience que l'on acquiert en tant que salarié. Les raisons
sont multiples mais on va juste retenir que la crise a eu raison de \index{Netpepper} Netpepper.



\chapter{Présentation \index{Netpepper} Netpepper.}
\section{Expérience professionnelle.}
Cela fait maintenant deux ans que je suis en alternance dans le monde professionnel chez \index{Netpepper} Netpepper. Cela représente déjà une
période significative et ne peut qu'apporter
 un plus pour mon insertion professionnelle dans la vie active. Dernièrement, j'en ai parlé avec un ami qui vient de terminer
 son parcours scolaire avec une école d'ingénieur dite ``classique'' et il m'a fait part de sa crainte pour son insertion ;
 en effet  il n'a pas l'expérience technique et relationnelle que j'ai pu acquérir
 durant ces deux années.

Tout d'abord, \index{Netpepper} Netpepper est une petite SSII\footnote{SSII : Société de Services et d'Ingénierie Informatique.}. D'un premier constat, on pourrait
 se dire qu'une petite entreprise n'apporte rien d'intéressant. Petite, elle
 ne peut pas apporter une image réelle de la vie professionnelle. De plus,
 les gros projets intéressants ne peuvent se faire que dans des grandes entreprises.\\
En réalité, je vois \index{Netpepper} Netpepper autrement : une entreprise dont l'esprit s'apparente
 du point de vue relationnel à celui d'une famille. Les liens que j'ai tissés avec l'ensemble 
du personnel sont loin d'être froids mais au contraire très chaleureux. Du coté professionnel,
cette structure m'a permis de toucher aux technologies les plus intéressantes (développement 
d'applications web) tout en gardant le sérieux des grands projets par la communication
 à travers les différents rapports et réunion.

\section{Historique de \index{Netpepper} Netpepper.}
\index{Netpepper} Netpepper à été crée en 1998 par Benoit Lelong et Maher Abdennadji. En 1998, on était au début 
de tout car  \index{Internet} Internet commençait tout juste à exploser. Les mots ``email'' ou ``web''  rentraient 
à peine dans le vocabulaire du grand public.
Entre les années 1999 et 2001, \index{Netpepper} Netpepper était en pleine expansion.
 On parle alors de ``bulle  \index{Internet} Internet'' et de ``bug de l'an 2000''. L'industrie informatique 
recrute (parfois maladroitement) alors que le reste du monde reste au chômage.
 Les investisseurs permettent la naissance de nombreuses ``start up''. On sentait alors dans le secteur
 une certaine euphorie. A \index{Netpepper} Netpepper, les offres viennent d'elles même, les prix flambent.
A partir de 2001, différents évènements ont amené l'industrie `` \index{Internet} Internet'' à la crise : les 
crises boursières ou encore les attentats de septembre 2001. Durant cette période, \index{Netpepper} Netpepper 
était dans une phase stable mais où les projets sont plus difficiles à décrocher avec une concurrence
 plus rude, et durant laquelle le client reprenait ses droits.

\section{Qualité, Réactivité et \'Ecoute.}
L'objectif de \index{Netpepper} Netpepper est de fournir un véritable service à ses clients en 
privilégiant la qualité, la réactivité et l'écoute. Pour atteindre cet objectif, \index{Netpepper} Netpepper doit fournir à ses clients :
\begin{itemize}
\item Une maîtrise des techniques
\item La connaissance du fonctionnel
\item L'implication de ses collaborateurs dans le sens de l'engagement
\end{itemize}


\section{Activité.}
Les services offerts par \index{Netpepper} Netpepper s'orientent autour de quatre axes de compétence :

\begin{itemize}
\item Ingénieries :
\index{Netpepper} Netpepper met à disposition de ses clients un véritable savoir-faire dans les projets \index{I*net}I*net les plus ambitieux (intranet, extranet, e-commerce...). Les différents projets et une veille technologique alimentent le savoir faire dans le domaine de l'\index{I*net}I*net\footnote{\index{I*net}I*net : Domaine d'activité utilisant les 
technologies liées à Internet : Internet, Intranet et Extranet.} : \index{J2EE}J2EE, ASP COM, sécurité et désormais .NET. 

\item Formation :
\index{Netpepper} Netpepper est un centre de formation agrée : la société propose des formations en interne ou en externe. Forts de leur expérience acquise autour de projets menés en entreprise, les formateurs de \index{Netpepper} Netpepper sont de véritables professionnels dans leur domaine. Les cours et séminaires s'appuient sur des études de cas ou de travaux pratiques inspirés de missions et projets réels.

\item Conseil et expertise :
\index{Netpepper} Netpepper aide les entreprises à définir leurs stratégies  \index{Internet} Internet et à la décliner en terme de choix fonctionnel et organisationnel. Les membres de \index{Netpepper} Netpepper apportent leur savoir faire au cours des différentes étapes de leur projet :
La conception et les études.
L'analyse, l'étude en amont et le cahier des charges.
L'expertise technique et l'assistance à la maîtrise d'ouvrage.
Le conseil en architecture en sécurité.


\item Produits :
En plus des activités de services, \index{Netpepper} Netpepper développe et distribue des produits inhérents à  \index{Internet} Internet :
Reholis : solution de e-recrutement en ligne.
Votravi : outil de marketing intéractif et de gestion d'enquêtes en ligne.
Jmarketplace : place de marché `` temps réel'' d'échange de produits financiers.
Jeton sécurisé : Outil de chiffrement pour les échanges inter-serveurs.


\end{itemize}

 \index{Internet} Internet est devenu l'outil de communication et de promotion le plus important de nos jours. Il apporte la réponse aux nouveaux besoins d'échanges, des solutions concrètes à des activités internationales et dans la rapidité de transmission de l'information.

Que ce soit pour des prestations spécifiques ou pour des projets globaux,
 \index{Netpepper} Netpepper met en oeuvre les compétences les plus adaptées pour répondre
 de la manière la plus adéquate possible aux besoins exprimés.

Pour cela, \index{Netpepper} Netpepper s'est spécialisée dans deux pôles technologiques :
\begin{itemize}
\item Les technologies JAVA : CORBA, JEE, EJB, JAVABEANS, JSP.
\item Les technologies Microsoft : DCOM, ASP, COM/COM+, .NET.
\end{itemize}
Et également un pôle transverse :
\begin{itemize}
\item Sécurité : CRYPTOGRAPHIE, PKI, SSL, SSO, LDAP, FIREWALL
\end{itemize}

\section{Quelques chiffres.}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EFFECTIF
\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.8]{daImg1.eps}
\end{center}
\caption{Effectif de la Société.}
\label{fig:effectif}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CA
\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.8]{daImg2.eps}
\end{center}
\caption{Chiffres d'affaire.}
\label{fig:pagesclassiques}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%            CHAPTER 2 :                                                  %
%                       PROJET CONTEXTE ET DEMARCHES                      %
%                                                                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Le projet.}
\section{Une \index{Application Web}application web.}
Le réseau  \index{Internet} Internet est né dans les années 70 dans un contexte de guerre froide. Sa structure en ``toile d'araignée''
devait permettre de se mettre à l'abri d'une attaque ciblée sur un lieu ou toutes les informations informatiques
seraient stockées. Ainsi, seule une attaque instantanée sur tous les points de la toile pouvait mettre en échec
le réseau, ce qui était quasiment impossible.
Une fois le mur de Berlin tombé,  \index{Internet} Internet fût utilisé par les universités puis par les entreprises et enfin par
des particuliers.

Le Web est la partie d' \index{Internet} Internet qui se compose de pages et de liens
 consultables à partir d'un \index{Navigateur Web}navigateur Web. Par exemple le site Yahoo propose
 des pages Web où il est possible de consulter ses mails, de faire des recherches, etc.


Classiquement, on trouve sur le web des pages dites ``statiques''. Ces pages
 sont stockées sur une machine qu'on appelle le serveur Web. Et tout utilisateur
 voulant consulter ses pages utilisera un \index{Navigateur Web}navigateur\footnote{Navigateur Web : Logiciel qui permet de se connecter
à un serveur Web. Il affiche et met en forme les pages consultées. Les deux navigateurs
 les plus répandus sont Mozilla et Internet Explorer.} et les verra
affichées telles qu'elles sont. 


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%shema : root + pages  <---------consultation ------ \index{Navigateur Web}navigateurs avec page
%Site Web composé de pages ``statiques''.

\begin{figure}[htbp]
\begin{center}
\includegraphics[width=15cm]{pagesstatiques.eps}
\end{center}
\caption{Site Web composé de pages ``statiques''.}
\label{fig:pagesclassiques}
\end{figure}
%%%%%%%%%%%% shema avec root + les pages %%%%%%%%%%%%%%%%%

Ces quatre dernières années, on voit apparaître sur  \index{Internet} Internet de plus en plus
 d'applications Web. Contrairement aux pages statiques, les pages d'une \index{Application Web}application web
 sont générées dynamiquement en fonction des données stockées sur les serveurs,
des informations concernant l'utilisateur qui consulte la page ou encore les éléments de présentation créés par le Web
Designer. Dans ce cas, un développeur d'\index{Application Web}application web entre en jeu, et décide du comportement de l'application selon
tous ces paramètres.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%shema : parametres <--- programme, comportement programmer par un informaticien <----- consultation -----
 %                                                                                --------- page généré ----> \index{Navigateur Web}navigateur avec la page généré 
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=15cm]{pagesdynamiques.eps}
\end{center}
\caption{Site Web dynamique.}
\label{fig:pagesdynamiques}
\end{figure}
%%%%%%%%%%%% shema avec les differents parametres et au milieu la page généré :
%%%%%%%%%%%%  bdd, information de l'utilisateur connecté, les éléments de présentation

Avec certains outils, on peut alors imiter le comportement de véritables applications.
 Par exemple on peut consulter nos emails avec des pages web générées dynamiquement.
 Ce genre de Webmail reproduit alors les fonctionnalités
 d'un logiciel tel qu'Outlook Express ou Eudora.
L'avantage est le suivant : l'application ne nécessite pas l'installation d'un
 logiciel supplémentaire ; il est consultable directement avec un \index{Navigateur Web}navigateur Web.
 Mais, il existe plusieurs inconvénients dus à la distance entre le lieu où
 est stocké l'application (serveurs Web) et l'utilisateur final et à la pauvreté des langages de présentation.
 Par exemple, l'\index{Application Web}application web est très limitée en interactivité ou encore, elle est moins sécurisée qu'une application classique. 

Toutefois, les outils aidant au développement de ce genre d'application sont de plus en plus évolués et d'énormes progrès sont encore
à faire dans ce domaine là.


Un des succès du Web était la possibilité de faire d'une \index{Application Web}application web, un service. Ainsi, l'utilisateur
accède à des services fournis par des entreprises à travers le Web sans trop de frais de connexion et quel que soit l'endroit
d'où il se connecte. 


Durant les premiers mois de ma séquence professionnelle, j'étais chargé d'étudier le framework\footnote{Infrastructure logicielle, il permet la mise en place d'outils simplifiant le développement d'une application, ou d'un service.} \index{Struts}Struts. Mais ma mission principale était de créer une \index{Application Web}application web : ``une application de partage de connaissance par Extranet''.


\section{Contexte.}
 \index{Internet} Internet est avant tout un moyen de communiquer. La technologie ne permet pas seulement d'échanger des
messages ou de consulter des pages, elle transporte également des fichiers informatiques qui peuvent contenir
 des films ou de la musique.
Justement, sont actuellement discutées à Bruxelles des lois concernant les échanges illégaux de films ou de musiques sur
l' \index{Internet} Internet à travers des outils tels que Emule ou Kazaa. Les possibilités d'échanges sur  \index{Internet} Internet font réfléchir jusqu'à
nos représentants de la commission européenne.

\index{Netpepper} Netpepper est une SSII. Comme nous l'avons vu dans le chapitre précédent, la société offre des services
 d'ingénierie à ses clients. C'est à l'occasion de ces services que certains de nos collaborateurs peuvent être
 amenés à travailler à l'extérieur de l'entreprise. Et c'est là que les problèmes peuvent se poser : 
\begin{itemize}
  \item Il est parfois impossible d'accéder à un serveur de transfert de données à cause de la politique de sécurité instaurée par le client.
  \item Les bookmarks\footnote{Bookmarks : lien vers une page Internet que l'utilisateur garde en mémoire
pour pouvoir y accéder ultérieurement.} stockés sur la machine personnelle d'un collaborateur à \index{Netpepper} Netpepper ne sont pas accessibles de l'extérieur.
  \item Clé usb, graveurs, les outils ne manquent pas pour sauvegarder ou transporter ses données personnelles. 
        Mais on ne dispose pas toujours de clé usb, de graveur sur soi. Et de plus, il est fastidieux de sauvegarder ses informations dès qu'on
        change de lieu de travail.
  \item On veut partager des espaces de stockage avec certains utilisateurs. Par exemple, un espace ``gestion'' pourrait être crée. On y stockerait les documents liés à l'administration et seules les personnes concernées pourraient y avoir accès.
  \item On peut stocker un nombre énorme de documentations, aller retrouver des informations peut devenir le parcours
            du combattant si les documents ne sont pas soigneusement classés.
  \item On ne veut pas que n'importe quel internaute puisse accéder à nos données.
\end{itemize}

\section{Objectifs.}
Un proverbe chinois dit : ``si deux personnes s'échangent un objet ils ont chacun un objet. Mais si deux personnes s'échangent une idée, ils ont chacun deux idées.''
Finalement, ce que l'on veut c'est un outil qui permette de partager des  données, des informations ou plutôt des connaissances.
Pour cela, l'application à réaliser doit respecter les fonctionnalités suivantes :

\begin{itemize} 
\item Accès par l' \index{Internet} Internet. L' \index{Internet} Internet est désormais encré dans nos meurs. Le mot email est méconnu de personne.
       J'ai même lu que la RATP   voulait fournir un accès à  \index{Internet} Internet sans câble ; idéal pour
       les cadres voulant se connecter à  \index{Internet} Internet dans le métro a partir de 
      leur portable. A condition, d'y avoir accès,  \index{Internet} Internet permet d'accéder à un lieu où seront stockées
      nos connaissances indifféremment du lieu d'où l'on se connecte. Dans notre cas, les données seraient stockées au sein de la société. 
\item Données personnelles. Le problème d' \index{Internet} Internet est la sécurité. N'importe qui ayant accès au réseau ne devra pas pouvoir consulter mes
      données librement.  C'est pourquoi, l'application doit incorporer un système ``sécurisé'' par login et mot de passe. Ainsi, seul
      les personnes de la société pourront  accéder aux puits de connaissances.
\item Administration de l'application.  Plusieurs utilisateurs pourront gérer le partage de connaissance : ces privilégiés se connecteront
      aux partages et pourront gérer les utilisateurs et les différents partages. Ils pourront par exemple rajouter un nouvel utilisateur, ou
      modifier les propriétés d'un partage.


\end{itemize}
\section{Démarches.}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PLANNING
%%%%%%%%%%%%%%%%%%%%%%%%%% PLANNING
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=15cm]{planning.eps}
\end{center}
\caption{Planning mis en place avant le projet.}
\label{fig:planning}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pour réaliser cette application, j'ai défini un planning qui définit les différentes phases du projet.

\subsection{Spécifications fonctionnelles et techniques.} 
Avant de commencer tout projet, il est important de définir les objectifs en fonction des besoins des utilisateurs
finaux. C'est en cela que consistait la définition de l'expression des besoins, les specifications fonctionnelles et
techniques de l'application.


\subsection{Développement de la couche de présentation.}  
Le développement proprement dit a consisté, dans un premier temps, à développer la ``couche de présentation''. Cette couche
 est la partie graphique et interactive de l'application. Le développement de
 cette couche consiste à créer les pages de l'application. Cependant, comme on l'a
vu précédemment, l'\index{Application Web}application web que l'on va créer ne sera pas constituée de pages statiques. Car dans ce cas là, il serait bien
difficile de définir un comportement pour l'application. Chaque page est donc générée dynamiquement en fonction de différents
paramètres.


Tout d'abord, j'ai créé les éléments graphiques qui seront réutilisés sur toutes les pages de l'application :
\begin{itemize}
\item Le menu horizontal et un menu vertical (en forme d'onglet) qui permettent de sélectionner les grandes parties de l'application
\item Le titre de l'application.
\end{itemize}
On voit là tout l'intérêt d'une page web dynamique. J'ai écrit ces composants une seule fois, et ils
seront intégrés sur chaque page dynamiquement. De plus si je modifie l'aspect du menu, j'aurais juste
à modifier le composant.


Ensuite, j'ai crée les pages :
\begin{itemize}
\item Page de navigation de partage.
\item Pages d'administration des utilisateurs.
\item Pages d'administration des partages.
\item etc ...
\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% refoutre un shéma donnée + parametre -> page généré ----------> \index{Navigateur Web}navigateur ou bien faire une référence
%%%%%%%%%%%%%%% => les différentes couche : système de fichier + base de donnée => couche d'accès au donnée => objets métier => couche de présentation

\begin{figure}[htbp]
\begin{center}
\includegraphics[width=6cm]{couches.eps}
\end{center}
\caption{Les différentes ``couches'' de l'application.}
\label{fig:couches}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ùùùùùùùùùùùùùùùùùùùùùùùùùùù

Lorsque notre application sera finalisée, ces pages iront chercher les données à partir de la couche métier. Mais comme
celle ci n'est pas encore développée, les données sont entrées en ``dur''. C'est à dire qu'elles sont entrées à la main
 afin de tester l'affichage. Par la suite, lorsque les autres couches seront développées
il sera alors simple de fusionner chaque couche pour obtenir l'application finale.

\subsection{Préparation de la couche d'accès aux données.}
On dispose d'une base de donnée où l'on pourra stocker toutes les données de notre application. Notre application
stockera les informations relatives aux utilisateurs, aux partages et aux bookmarks.


La couche d'accès aux données que l'on veut réaliser permet d'accéder à cette base de donnée de manière simple.
On parle alors de couche de persistance : le but est de représenter dans le langage informatique les données qui se trouvent dans
la base de donnée. 



\subsection{Création de la couche métier.}
La couche métier est l'intermédiaire entre la couche d'accès aux données et la couche de présentation. Sans rentrer
dans les détails, elle définit dans un langage informatique le comportement ou le scénario de notre application.
Mon but lors de la création de cette couche a été de programmer les différentes actions possibles de mon application.
Pour chaque action, j'y ai défini un comportement en fonction des paramètres.


Par exemple, lorsqu'un utilisateur voudra accéder à la partie administration de mon application, l'action correspondante
va consulter la couche d'accès aux données pour vérifier que l'utilisateur a des droits d'administrateur
et selon les cas, il va lui donner accès ou non à la page d'administration.



\subsection{Fusion et déploiement.}
Enfin lorsque chaque couche est développée, la dernière démarche consiste à fusionner toutes les couches. La couche
de présentation sera modifiée de manière à utiliser la couche métier et cette dernière sera modifiée pour utiliser la couche
d'accès aux données. Lorsque l'application est finalisée, il faut la mettre en place dans le réseau de sorte qu'elle soit accessible
d' \index{Internet} Internet.

\section{Difficultés rencontrées.}
Les difficultés que j'ai rencontrées sont plutôt du domaine humain. En effet, la fermeture de la société
ne motive pas. L'ambiance ne prête pas trop au travail. De plus, avec cette fermeture l'application
que je suis en train de réaliser ne trouve plus vraiment un grand intérêt, elle ne sera pas utilisée.

Néanmoins, je veux la finaliser car techniquement, elle m'apporte beaucoup. Les différentes technologies 
 abordées ne peuvent qu'apporter un plus à mon savoir faire; enfin, faire face à toute situation, c'est
aussi le challenge d'un futur ingénieur.


J'ai également éprouvé des difficultés à mesurer le temps nécessaire à chaque tâche. En particulièrement, quand je n'ai
pas encore les connaissances techniques pour l'accomplir.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%  quelques copie d'écran
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=15cm]{screenshot.eps}
\end{center}
\caption{Une copie d'écran de l'interface Web.}
\label{fig:screenshot}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Résultats.}

Sur ce projet, l'application n'est pas encore finalisée : la couche d'accès aux données et une partie de la couche
de présentation reste encore à faire. Néanmoins, je pense que l'application sera finalisée avant la fin de ma
séquence professionnelle.








%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%            CHAPTER 3 :                                                  %
%                       CHOIX TECH                                        %
%                                                                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Les choix techniques et architecture mise en place.}
Cette partie décrit les différents choix techniques auxquels j'ai été confronté.
 Elle ne se contente pas de lister ces choix, j'y explique les raisons en mettant
 en valeur leurs avantages. J'en profite pour expliquer comment j'ai intégré ces
 outils dans mon application. Cela me permet, en plus de montrer l'architecture
 de l'application d'un coté plus technique. Dans cette partie je m'adresse
 donc à des lecteurs ayant quelques connaissances en informatique.

\section{Le projet - contexte.}
L'application doit permettre à des utilisateurs, à travers une connexion  \index{Internet} Internet, d'accéder à leurs bookmarks et à leurs fichiers.
On peut donc la découper en 4 parties ou couches :
\begin{itemize}
\item L'interface web. J'ai utilisé le framework \index{Struts}Struts pour mettre en place l'interface Web.
\item La base de données. La base de données utilisée est un moteur d'indexation XML : XPEERION.
\item L'accès au système de fichier. J'utilise les api java d'entrée sortie pour accéder au système de fichiers.
\item La couche métier. Elle est entièrement réalisée en \index{Java}Java.
\end{itemize}

\section{Les grandes orientations.}

\index{Java}Java, .net en passant par Php, décidément, les outils pour la réalisation
 d'applications Web ne manquent pas. A \index{Netpepper} Netpepper, les pôles .Net et \index{Java}Java
 prédominent par rapport aux autres. L'année dernière j'étais plutôt orienter
 .Net. Mais depuis la dernière séquence académique, l'enseignement donné
 m'a réorienté vers les outils basés sur \index{Java}Java. J'ai choisis 
 \index{Java}Java, car je voulais avoir une expérience professionnelle de ce que j'avais déjà 
abordé à l'école.

Pour la réalisation d'applications Web, on dispose des \index{Java}Java Server Pages couplé
 avec des Servlets. Ils permettent de réaliser des applications Web en utilisant
le langage \index{Java}Java.

\section{Serveur d'application Tomcat.}
Pour déployer nos pages JSP et Servlet, nous nous appuyons sur un
 conteneur web. En fait, Sun (à l'origine de java) définit les  spécifications des JSP
 et Servlet. Sun en fourni une implémentation par un conteneur Web, mais 
rien n'empêche les autres de mettre en place leurs propres conteneurs Web 
pouvant supporter les JSP et Servlet. Tomcat est l'une de ces implémentations.
 Il est réalisé par le groupe Apache Jakarta et est libre et en open source. Je 
l'ai choisi pour ces raisons là.

\section{Réalisation de la couche Web à l'aide du framework \index{Struts}Struts.}
Dans un premier temps, on m'avait demandé d'étudier le framework
 \index{Struts}Struts du projet Jakarta. Cette étude m'a amené à rédiger un article 
concernant le framework et de développer ma première application utilisant 
les outils \index{J2EE}J2EE. En réalité, j'ai surtout appris durant cette période à utiliser 
le framework et il en allait de soi que j'allais l'utiliser dans mes prochaines applications web dont cette dernière.


Mais qu'est ce que \index{Struts}Struts ? En une phrase, c'est une API \index{Java}Java qui
 permet de réaliser des applications Web en s'appuyant sur le modèle \index{MVC Model View Controller}MVC 
(Model, View, Controller). J'ai eu l'occasion d'utiliser le \index{MVC Model View Controller}MVC dans des
 applications Swing durant la séquence académique. Bien que l'utilisation soit
 un peu différente, cette expérience m'a permis d'aborder \index{Struts}Struts au mieux.

\subsection{Avantages et inconvénients de \index{Struts}Struts, pourquoi avoir choisi le framework.}

\index{Struts}Struts permet un découpage en plusieurs couches : le modèle, la vue et le contrôleur.
 Ce découpage permet de séparer les domaines de développement : les graphistes
s'occupent des vues, et les développeurs prennent en charge le
 modèle et le contrôleur. Mais surtout, elle permet de maintenir l'application facilement.
Les vues pourront être modifiées sans toucher au contrôleur ni au modèle.

\index{Struts}Struts encourage à réutiliser. Par exemple, il intègre un système de template évolué (tiles)
 permettant à partir de composant jsp (tile), de composer ses pages en suivant une mise en page.

Un système de gestion des formulaires et de leur validation est intégré dans le framework.

Bien que je ne l'aie pas utilisé dans cette application, \index{Struts}Struts permet à partir de fichiers de ressource,
de générer les pages selon la langue de l'utilisateur.


Par rapport aux inconvénients, je trouve que \index{Struts}Struts rajoute de la complexité à nos applications. 
De plus, lorsque l'on veut trop séparer en couche, il se peut qu'on ait des conséquences sur les performances
 de l'application. Sans réellement avoir vérifié par des tests, je pense que l'on perd plus ou moins en 
performances lorsqu'une application est  basée sur \index{Struts}Struts. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% shema récapitulatif de \index{Struts}Struts (celui de l'article)
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=10cm]{strutsmvc.eps}
\end{center}
\caption{Schéma récapitulatif du fonctionnement de \index{Struts}Struts.}
\label{fig:struts}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{XML comme modèle de donnée, XPEERION.}

\subsection{Base de données et moteur d'indexation pour la recherche.}
Pour le choix d'une base de données, classiquement nous utilisons des bases de données relationnelles comme Oracle ou MySql.

XML a fait son apparition ses dernières années et plusieurs bases de donnée basées sur ce langage ont fleuri. 


Donc le choix subsistait entre une base de données relationnelle (MySql) et une base de données XML (XPEERION).

L'avantage d'une base de donnée relationnelle comme MySql est qu'elle est robuste ; de nombreuses versions sont sorties
et les performances ont eu le temps de s'améliorer. XPEERION quand à lui est jeune et on n'est pas la l'abri de bugs.

De plus, MySql ne nécessite pas de période d'apprentissage. En effet, j'ai déjà manipulé JDBC avec MySql dans un
premier mini projet durant cette séquence.

Mais XML est un langage d'avenir, apprendre les langages de requête sur une base de données XML pourrait m'être utile
dans un avenir professionnel. 

De plus, XPEERION a un gros avantage pour le développement de mon application : il peut servir de moteur d'indexation de 
documents office, pdf etc. Cette fonctionnalité permettrait de mettre en place un système de recherche de documents
 sur les partages. Elle permettrait également de ne pas utiliser une autre application pour l'indexation comme Apache Lucene
ou encore de développer un nouveau système d'indexation.

Pour toutes ces raisons, je me suis penché sur XPEERION pour l'indexation et la base de donnée.

\subsection{Interfaçage XML/\index{Java}JAVA.}
Pour m'interfacer avec la base de données XML, j'utilise l'API ``JXDBC''. Celui-ci permet de communiquer avec
XPEERION grâce aux languages de requête XQuery et XPath.

Ma couche d'accès aux données (couche de persistance), a donc pour rôle de parser le document XML récupéré
 avec un parseur SAX. Elle crée les objets correspondants en fonction des données.



\section{Architecture de l'application au final.}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/////////////////
%%%%%%%%%%%%%%%%%%%%%%%% shéma de l'architecture de l'appli
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=7cm]{architecture.eps}
\end{center}
\caption{Architecture globale de l'application.}
\label{fig:architecture}
\end{figure}
%%%%%%%%%%%%%%/////////////////////////////////////////////////////////////////////





%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%            CHAPTER 4 :                                                  %
%                       Conclusion                                        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\chapter{Conclusion.}

\section{Un futur ingénieur.}
Globalement, la séquence s'est bien déroulée. Du point de vue technique, j'ai fait le tour des technologies opensource
\index{J2EE}J2EE et j'ai touché à ce que beaucoup pensent être le futur de l'informatique moderne : le XML. Ces acquis forment une
expérience professionnelle sans égale pour un apprenti ; ils permettront dans le futur d'appuyer mes recherches d'emplois.
Mais plus important, le sujet de cette sécquence m'a permis d'approfondir mon savoir faire dans le domaine \index{J2EE}J2EE.
Et surtout, je peux aujourd'hui affirmer que le futur ingénieur que je serai sera spécialisé dans ce domaine.
Du point de vue méthode de travail, je me suis efforcé à respecter les délais quels que soient les conditions.
En effet, la fermeture de la société remet en cause l'utilité de mon application. Mais, je tiens à la finaliser, car techniquement
elle ne peut que m'apporter un savoir faire supplémentaire et démontrer ma motivation face à une situation difficile.


\section{La réalité des choses.}
La première impression que j'ai eu de \index{Netpepper} Netpepper était son coté familial :
 petite SSII de cinq employés fixes. Mes premiers contacts étaient Omar et
 Pierre. Je postulais pour mon stage de fin d'étude pour mon DUT. Omar
 enchaînait les questions en s'appuyant sur mon CV, l'ambiance était quelque
 peu tendu. Mais à la fin de cet entretien, ils sont allés rendre compte aux 
dirigeants de la société de notre entretien. Au bout de dix minutes, Maher 
et Benoit sont rentrés et se sont présentés. De suite, l'atmosphère devint plus 
décontractée. Ils m'ont mis à l'aise en m'indiquant qu'ils ont eu un bon
écho de mon entretien. Et me proposent, après quelques questions, d'intégrer 
la société. C'est à la suite de ce stage que je leur ai proposé de me recruter
 enc tant qu'apprenti ingénieur.  Vous connaissez la suite. 


Après deux années passées en tant qu'apprenti, le fait de repenser au stage
 et aux différentes séquences professionnelles passées au sein de la société me 
rendent perplexe. En effet, le début des difficultés de la société lui a donné un 
visage bien différent. Il y règne une ambiance de fin, l'incertitude et l'incompréhension 
se lisent sur les visages de chacun. Des tensions sont nées. Je n'en dirai pas plus.


Néanmoins je tire une bonne expérience de ces évènements. J'ai eu la possibilité 
de voir les difficultés que l'on peut rencontrer dans la vie active 
pendant les périodes de crise. Ces difficultés sont humaines, sociales ou financières.

Si j'avais donc à faire un bilan de ces deux dernières années, je n'hésiterais
 pas, il serait positif. Et je quitte donc mon entreprise en espérant revivre une
 expérience aussi enrichissante humainement que professionnellement.


Enfin, je tiens à remercier Benoit et Maher de m'avoir accueilli à \index{Netpepper} Netpepper,
 de m'avoir formé et fait de moi un futur ingénieur à leur image.

\addcontentsline{toc}{chapter}{Index.}
\printindex

\end{document}