\documentclass[a4paper,12pt]{report}
 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{indentfirst}
%\usepackage{layout}
%\usepackage{geometry}
%\usepackage{setspace}
\usepackage{soul}
\usepackage{ulem}
%\usepackage{eurosym}
\usepackage{graphicx}
%\usepackage{bookman}
%\usepackage{charter}
%\usepackage{newcent}
%\usepackage{lmodern}
%\usepackage{mathpazo}
%\usepackage{mathptmx}
%\usepackage{url}
%\usepackage{verbatim}
%\usepackage{moreverb}
%\usepackage{listings}
%\usepackage{fancyhdr}
\usepackage{wrapfig}
%\usepackage{color}
%\usepackage{colortbl}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage{eurosym}
%\usepackage{asmthm}
%\usepackage{makeidx}
\usepackage[babel=true]{csquotes}
 
\addto\captionsfrench{\renewcommand{\chaptername}{Partie}}

\begin{document}

\begin{titlepage}
\begin{figure}[h]
\begin{center}
%\includegraphics[width=5cm]{eisti.jpg}
\end{center}
\end{figure}

\begin{center}

\begin{Huge}
\bsc{Génie Logiciel 2 :\\ Cahier des charges}\\
\end{Huge}

\vspace*{1cm}

\begin{Large}
Christian \bsc{Ingouff}\\
Pierre-Alexandre \bsc{Tyndal}\\
Sonia \bsc{Seddiki}\\
Yann \bsc{Charbonnier}\\
\vspace*{1cm}
EISTI\\
\end{Large}

\vspace*{0.33cm}

2013/2014\\
Semestre 2\\
\end{center}

\end{titlepage}

\tableofcontents

\chapter{Présentation générale du projet}

\section{Contexte et objectifs du projet}

L'objectif principal de ce projet Génie Logiciel 2 est la réalisation d'un projet informatique dans la continuité directe du sujet du premier semestre, qui était en l'occurrence \enquote{Gestion de questionnaires}.\\

La réalisation d'un projet informatique se doit de respecter les contraintes imposées et d'être pertinent dans son utilité. Cette dernière nous demande de développer un logiciel de gestion et de traitement de questionnaires à choix multiples (QCM). Ce logiciel est destiné à une école et a pour but d'évaluer des élèves sur des modules en leur faisant passer ces QCM.\\

\noindent Les objectifs à remplir au cours du projet sont donc :
\begin{itemize}
\item Définir le(s) administrateur(s)
\item Définir les professeurs, créateurs de QCM
\item Définir des élèves (qui seront entre autres les interviewés)
\item Définir la hiérarchie des droits des utilisateurs en fonction de leur rôle
\item Mémoriser les QCM entrés
\item Mémoriser les réponses des interviewés aux différentes sessions de questionnaires
\item Réaliser le programme en langage \enquote{Java}
\item Avoir un rendu ergonomique (look, facilité d'utilisation, ...)
\item Fournir une documentation exhaustive et claire
\end{itemize}

\begin{figure}[h]
\begin{center}
\includegraphics[width=8cm]{img/beteACorne.png}
\caption{Utilisateurs concernés et enjeu : Bête à corne}
\end{center}
\end{figure}

\newpage

\section{Acteurs du projet}

\noindent Ce projet est réalisé par un groupe de quatre acteurs :
\begin{itemize}
\item INGOUFF Christian
	\begin{itemize}
	\item Contact : ingouffchr@eisti.eu
	\item Connaissances : Pascal, C, OCaml, HTML/CSS/PHP, SQL/gestion BDD, VBA
	\end{itemize}
\item TYNDAL Pierre-Alexandre
	\begin{itemize}
	\item Contact : tyndalpier@eisti.eu
	\item Connaissances : Pascal, C, Java, OCaml, HTML/CSS/PHP, SQL/gestion BDD
	\end{itemize}
\item SEDDIKI Sonia
	\begin{itemize}
	\item Contact : seddikison@eisti.eu
	\item Connaissances : C, Maple, SQL/gestion BDD
	\end{itemize}
\item CHARBONNIER Yann
	\begin{itemize}
	\item Contact : charbonnie@eisti.eu
	\item Connaissances : C, SQL/gestion BDD
	\end{itemize}
\end{itemize}

\newpage

\section{Intérêts pédagogiques}

Ce projet est, comme pour le premier semestre, une occasion d'organiser et gérer un projet grâce à des méthodes telles que la méthode \enquote{SIXO} ou le diagramme de Gantt via Microsoft Project. Ce travail, effectué en groupe, requerra également des compétences abordées dans le module \enquote{Travail en équipe}.\\

D'un point de vue technique, nous développerons nos connaissances dans le langage de programmation \enquote{Java} et nous organiserons notre travail sous le principe de la programmation objet et du \enquote{pattern MVC}. Cette rigueur nous donne une approche de la programmation au niveau professionnel.

\chapter{Expression fonctionnelle des besoins}

\section{Environnement}

Le but du logiciel est de gérer des QCM. Nous avons donc besoin de lister les éléments qui constituent l'environnement et créent les contraintes imposées à sa réalisation. Ces éléments sont les suivants :
\begin{itemize}
\item L'ordinateur
\item L'espace mémoire disponible
\item Les normes et législations
\item L'utilisateur
\end{itemize}

\vspace*{0.5cm}

\begin{figure}[h]
\begin{center}
\includegraphics[width=6cm]{img/DiagramePieuvre.png}
\caption{Diagramme pieuvre des contraintes}
\end{center}
\end{figure}

\newpage

\section{Description des fonctions et contraintes}

L'ensemble des éléments constituants l'environnement impose un certain nombre de contraintes :\\

\begin{tabular}[h]{|r|l|}
\hline
Contraintes & Intitulé \\
\hline
C1 & Pouvoir interagir avec l'interface \\
C2 & Être le moins spacieux possible \\
C3 & Respecter les normes et législations imposées par le sujet \\
C4 & Être esthétique et ergonomique \\
\hline
\end{tabular}

\vspace*{0.5cm}

\noindent D'autres contraintes nous sont aussi imposées :\\
\begin{itemize}
\item Langage de développement : Java version 1.7
\item Persistance des données : Sérialisation des objets proposée par Java
\item Cette technique de sérialisation doit être masquée par une interface (au sens UML) afin de pouvoir changer simplement de méthode de persistance de données
\item Analyse et conception en UML
\item Utilisation du pattern MVC
\item Dans un souci de maintenance et d'évolution possible, les objets doivent communiquer entre eux à travers des interfaces
\item La sauvegarde des données se fait automatiquement à la sortie du programme ou à chaque fois que l'utilisateur le demande. Seules les données modifiées, crées ou supprimées doivent être mises à jour lors d'une sauvegarde.
\end{itemize}

\vspace*{0.5cm}

\noindent Un ensemble de fonctions contraintes devront permettre de réaliser l'application :\\
\begin{itemize}
	\item Un administrateur définit :
	\begin{itemize}
		\item Les utilisateurs
		\item Les promotions (listes d'élèves)
		\item Les modules, dont il peut définir ou modifier
		\begin{itemize}
			\item Le nom du module
			\item La liste des modules pré-requis
			\item Le syllabus du module
		\end{itemize}
	\end{itemize}
\newpage
	\item Un utilisateur est défini par :
	\begin{itemize}
		\item Son nom
		\item Son prénom
		\item Son rôle : enseignant (préciser liste de modules), élève ou administrateur
	\end{itemize}
\vspace*{0.5cm}
	\item Un professeur peut :
	\begin{itemize}
		\item Définir des QCM (privés ou publics) : liste de questions
		\begin{itemize}
			\item Si un QCM est privé, seul le professeur qui l'a créé peut l'utiliser. Sinon, tous les professeurs peuvent l'utiliser.
			\item Les questions ont un libellé et présentent une liste de réponses
			\item Les réponses ont un libellé et un attribut vrai ou faux selon leur véracité
		\end{itemize}
		\item Définir des sessions de QCM :
		\begin{itemize}
			\item Date de début
			\item Date de fin
			\item Module associé
			\item Promotion associée
			\item Nombre maximum de fois pour répondre au QCM
		\end{itemize}
		\item Consulter une session de QCM s'il l'a définie :
		\begin{itemize}
			\item Réponses et score final de chaque élève
			\item Statistiques sur l'ensemble des élèves : moyenne, écart-type, fréquence de bonnes réponses par question
		\end{itemize}
	\end{itemize}
\vspace*{0.5cm}
	\item Un élève peut :
	\begin{itemize}
		\item Répondre à une session de QCM à laquelle il est inscrit, entre la date de début et la date de fin de session
		\item Visualiser ses résultats à une session de QCM à laquelle il a participé, à la suite de la session
	\end{itemize}
\end{itemize}

\vspace*{0.5cm}

\noindent Des fonctions facultatives complèteront les fonctions principales décrites précédemment :\\
\begin{itemize}
	\item Authentification : Tout utilisateur devra s'authentifier afin de pouvoir utiliser le logiciel
	\item Interface graphique : Esthétique et utilisation aisée
	\item Interaction inter-utilisateur : Messagerie entre les différents utilisateurs
\end{itemize}

\chapter{Ressources}

\section{Ressources humaines}

\noindent Nous disposons de personnes présentes pour nous superviser et nous aider dans notre projet. Ces dernières sont :
\begin{itemize}
\item Superviseur informatique : Mme. NGUYEN Nga
\item Superviseur RH : M. ABDELMOULA Nejib
\end{itemize}

\section{Ressources techniques}

\noindent L'ensemble des ressources techniques se divise en deux parties :
\begin{itemize}
\item Les ressources techniques mises à disposition
\item Les ressources techniques à acquérir
\end{itemize}
\noindent Les ressources techniques mises à disposition sont :
\begin{itemize}
\item LaTeX : professionnalisme pour les rapports
\item Langage Java : réalisation du programme
\item Eclipse : IDE pour la programmation en Java
\end{itemize}
\noindent Les ressources techniques à acquérir sont :
\begin{itemize}
\item Méthode d'analyse à l'aide de diagrammes UML
\item Connaissances sur le langage de programmation Java
\end{itemize}

\section{Ressources temporelles}

Maintenant que le projet est visualisé, nous avons établi grâce à Microsoft Project une organisation temporelle du travail, afin de hiérarchiser les différentes étapes du projet. Le diagramme est également disponible en image plus nette dans le fichier \textit{gantt.png} fourni.

\newpage

\begin{figure}[h]
\begin{center}
\includegraphics[width=8.5cm]{img/gantt_rot.png}
\caption{Diagramme de Gantt du projet}
\end{center}
\end{figure}

\chapter{Structuration SIXO}

Après avoir établi les principales lignes de notre projet, nous pouvons conclure en l'organisant selon la méthode SIXO, en répondant aux six points :\\

\vspace*{0.5cm}

\begin{tabular}[h]{|r|p{9cm}|}
\hline
Objectif & Gestion de QCM \\
\hline
Objets & Cahier des charges, Analyse UML, Conception, Programmation Java \\
\hline
Opérations & Utilisation d'outils et de ressources (MS Project, UML, Java) \\
\hline
Ordre & Structuration en 5 modules successifs \\
\hline
Opérateurs & Une école \\
\hline
Outils & Répartition des opérations en rôles, gestion de l'équipe \\
\hline
\end{tabular} 

\end{document}
