\chapter{Besoins non fonctionnels} \section{Architecture} Le programme nécessite une architecture trois tiers composée des entitées suivantes : \begin{itemize} \item Un ou des poste(s) informatique(s) muni(s) d'un navigateur Web \item Un serveur Web faisant tourner Apache \item Un serveur de base de données faisant tourner MySQL \end{itemize} \begin{figure}[h] \centering \includegraphics[width=1\textwidth]{architecture.png} \caption{Architecture} \label{fig:architecture} \end{figure} \section{Serveur} Le serveur Web et le serveur de base de données peuvent être installés sur la même machine. Les serveurs doivent disposer d'une plate-forme \textbf{LAMP} (Linux Apache MySQL PHP), \textbf{WAMP} (Windows Apache MySQL PHP) ou \textbf{MAMP} (Macintosh Apache MySQL PHP).\\ Dans le cas d'une utilisation mono-poste, il est envisageable que le serveur Web et le serveur de base de données soient installés sur l'unique poste de consultation.\\ \section{Gestion des conflits multi-utilisateurs} Le nombre d'utilisateurs simultanés, bien que faible, peut poser des problèmes de conflit. Un composant appartenant à l'ensemble des utilisateurs (et non à son créateur) peut être modifié par plusieurs personnes en même temps. Pour résoudre ce problème, nous choisissons de vérouiller le composant dès qu'un utilisateur l'édite. Ainsi, pendant son édition, aucun autre utilisateur n'est autorisé à modifier ce composant.\\ De même, pour éviter que deux instances d'un même utilisateur puissent modifier simultanément un composant lui appartenant, un utilisateur ne peut pas ouvrir simultanément plusieurs sessions sur le programme. Ceci implique que lorsque l'administrateur utilise l'identité d'un des utilisateurs, l'utilisateur ne peut plus accéder au programme jusqu'à ce que l'administrateur quitte la session de l'utilisateur en question. \section{Gestion des documents} Les documents publics doivent être déposés sur le serveur Web afin qu'ils soient disponibles à la consultation pour tous les utilisateurs.\\ Les documents protégés et privés doivent être présents sur le disque dur de l'utilisateur afin qu'ils ne puissent en aucun cas être consultables par les autres utilisateurs. A CONFIRMER !! LE FAIT QUE LE DOCUMENT SOIT SUR LE DISQUE DUR DE L'UTLISATEUR IMPLIQUE QUE L'UTILISATEUR DOIT UTILISER LE MÊME ORDINATEUR S'IL VEUT CONSULTER SES DOCUMENTS. MAIS LE FAIT DE METTRE LES DOCUMENTS PROTEGES SUR LE SERVEUR RISQUE DE POSER DES PROBLEMES DE DROITS/SECURITE. \section{Langages de programmation} Les langages utilisés pour le programme sont : \begin{itemize} \item MySQL pour gérer la base de données \item HTML, CSS et JavaScript pour réaliser l'interface \item PHP pour réaliser le coeur du programme \item Artichow, une bibliothèque de PHP, pour construire les différents graphiques \end{itemize} Les logiciels devant être installés et configurés sur le serveur Web sont : Apache, PHP et MySQL. Les versions de ces logiciels gratuits et open source doivent être les plus récentes possibles et ne doivent pas être des versions bêta (versions de test) afin d'avoir une sécurité, des performances et une compatibilité optimales.\\ Les versions recommandées sont les suivantes (ou plus récentes) : \begin{itemize} \item Apache HTTP Server 2.2.8 \item PHP 5.2.5 \item MySQL 5.0.37 (avec le moteur MyISAM et InnoDB) \end{itemize}