\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 sur lequel Apache est configuré \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} Un conflit peut apparaître lors de la mise à jour d'un composant dans les cas suivants : \begin{itemize} \item L'utilisateur s'est identifié sur plusieurs postes à la fois et modifie le même composant à partir de ces différents postes au même instant. \item L'administrateur modifie le composant d'un utilisateur pendant que ce dernier effectue lui aussi une modification sur le même composant. \end{itemize} Le nombre d'utilisateurs simultanés étant très faible et les conditions d'occurence d'un conflit suffisamment restrictives, nous considérons que la probabilité qu'un tel conflit survienne est négligeable. Ainsi, aucune gestion de ces conflits ne sera prise en compte dans le programme. \section{Gestion des documents} Tous les documents doivent être déposés sur le serveur Web afin qu'ils soient disponibles à la consultation pour tous les utilisateurs dans le cas de documents publics et accessibles de n'importe quel poste informatique par son propriétaire pour des documents protégés ou privés.\\ Un dispositif de sécurisation des documents protégés et privés doit être mis en place afin que seul le propriétaire du document y ait accès. \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 \end{itemize} Nous utilisons Artichow, une bibliothèque de PHP, pour construire les différents graphiques.\\ 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}