From 9b93d8a9e20773d74719c5a78251da1056b6c758 Mon Sep 17 00:00:00 2001 From: Etienne Ischer Date: Mon, 17 Sep 2018 15:47:45 +0200 Subject: [PATCH] echeancier, intro, rdv, conclusion --- annexes/glossary.tex | 5 ++ bibli.bib | 12 +++++ chapitres/conclusions/resultats.tex | 18 +++++++ chapitres/gestion/echeancier.tex | 45 ++++++++++++++++++ chapitres/gestion/rendezvous.tex | 25 ++++++++++ chapitres/introduction/introduction.tex | 13 ++++- chapitres/introduction/network.tex | 4 +- ... at 17.30.09.png => gitlab_milestones.png} | Bin index.tex | 35 ++++++++------ 9 files changed, 139 insertions(+), 18 deletions(-) create mode 100644 chapitres/conclusions/resultats.tex create mode 100644 chapitres/gestion/echeancier.tex create mode 100644 chapitres/gestion/rendezvous.tex rename images/{Screen Shot 2018-08-10 at 17.30.09.png => gitlab_milestones.png} (100%) diff --git a/annexes/glossary.tex b/annexes/glossary.tex index b9fd299..de09bdb 100644 --- a/annexes/glossary.tex +++ b/annexes/glossary.tex @@ -39,4 +39,9 @@ \newglossaryentry{restful}{ name=RESTful, description={Un service web est dit \emph{RESTful} s'il respecte une architecture REST. Les points clés de cette architecture sont la notion de Client-Serveur et des échanges sans état. Les actions sont effectuées aux travers de méthodes HTTP (GET, POST, PUT/PATCH, DELETE).} +} + +\newglossaryentry{sprint}{ + name=sprint, + description={Dans l'application des méthodologies Agile, le cadre de travail "Scrum" découpe le projet en période de temps fixe itérative qui s'appellent des sprints. Ils commencent par une planification et se termine par une revue avec le client.} } \ No newline at end of file diff --git a/bibli.bib b/bibli.bib index 88db9cd..859f883 100644 --- a/bibli.bib +++ b/bibli.bib @@ -171,3 +171,15 @@ title = {The pluggable linting utility for JavaScript and JSX}, note = {URL: "\url{https://eslint.org/}"} } + +@misc{postman, + author = {Postman}, + title = {Postman Makes API Development Simple}, + note = {URL: "\url{https://www.getpostman.com/}"} +} + +@misc{wellknownports, + author = {Wikipedia}, + title = {Liste de ports logiciels}, + note = {URL: "\url{https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels}"} +} diff --git a/chapitres/conclusions/resultats.tex b/chapitres/conclusions/resultats.tex new file mode 100644 index 0000000..29c1771 --- /dev/null +++ b/chapitres/conclusions/resultats.tex @@ -0,0 +1,18 @@ +\chapter{Résultats} + +\section{Aspects fonctionnels} + +D'un point de vue technique, l'application + +\section{Aspects visuels} + +divers screenshots de l'application + +\chapter{Synthèses} + +\section{Retours du mandant} + +Au terme de la période de la réalisation de ce travail de bachelor, le résultat obtenu répond à l'ensemble des besoins exprimés dans le cahier des charges de la pré-étude. Le mandant du projet pour le CHUV ainsi que les membres de son équipe ont pu tester et utiliser l'application au cours de sa création et ainsi participer activement à son développement en donnant des retours réguliers. + +\section{Conclusion personnel} + diff --git a/chapitres/gestion/echeancier.tex b/chapitres/gestion/echeancier.tex new file mode 100644 index 0000000..6de01da --- /dev/null +++ b/chapitres/gestion/echeancier.tex @@ -0,0 +1,45 @@ +\chapter{Échéancier détaillé} + +\section{Sprints} + +La réalisation de ce présent travail de bachelor a été faite en suivant les \emph{User Stories} définis au chapitre "Analyse et planification" de la pré-étude. La période de réalisation en elle-même a été découpée en six \gls{sprint} de deux semaines. Le but est de pouvoir faire une revue avec le client à la fin de chacun d'entre eux, pour avoir des retours sur le travail effectué et réajusté la priorité d'une fonctionnalité si besoin. Le premier sprint ayant surtout consisté à mettre en place l'environnement de développement et le réseau de test, il n'y avait pas lieu de faire une revue, car il n'y avait rien de terminé à montrer au client. Le dernier sprint se termine le jour du rendu de ce présent rapport, aucune revue ne sera donc faite avant cette date. + +\vspace{3mm} +\begin{table}[H] + \centering + \caption{Planification des sprint} + \label{gestion-tab-sprint} + \begin{tabular}{|l|l|l|l|} + \hline + \textbf{N°} & \textbf{Début} & \textbf{Fin} & \textbf{Revue} \\ \hline + 1 & 09.07.2018 & 22.07.2018 & - \\ \hline + 2 & 23.07.2018 & 05.08.2018 & 09.08.2018 \\ \hline + 3 & 06.08.2018 & 19.08.2018 & 21.08.2018 \\ \hline + 4 & 20.08.2018 & 02.09.2018 & 04.09.2018 \\ \hline + 5 & 03.09.2018 & 16.09.2018 & 18.09.2018 \\ \hline + 6 & 17.09.2018 & 28.09.2018 & - \\ \hline + \end{tabular} +\end{table} +\vspace{3mm} + +La gestion des sprints est gérée par le serveur Gitlab sous la forme de "milestone". Cette fonctionnalité permet de définir une date de début et de fin et d'attribuer ensuite les tâches et les requêtes de mise à jour du code. Cela permet également d'avoir une vue consolidée du travail en cours ainsi que du temps de travail nécessaires pour les fonctionnalités en cours de développement. + +\begin{figure}[H] + \centering + \includegraphics[width=100mm]{gitlab_milestones} + \caption{Gestion des sprints avec Gitlab} +\end{figure} + + +\subsection*{Sprint - 1} + +\textbf{Planification} + +\noindent +Objectifs: +\begin{itemize} + \item Mise en place de l'environnement de développement + \item Configuration du réseau de test + +\end{itemize} + diff --git a/chapitres/gestion/rendezvous.tex b/chapitres/gestion/rendezvous.tex new file mode 100644 index 0000000..ec92d58 --- /dev/null +++ b/chapitres/gestion/rendezvous.tex @@ -0,0 +1,25 @@ +\chapter{Rencontres} + +\section{Conseiller} + +Plusieurs rencontres ont eut lieu avec le conseiller durant la période de réalisation de ce projet. Le but à chaque fois était de se focaliser sur un élément un particulier du projet afin de pouvoir apporter des conseils pratiques et de l'expérience. + +\subsection*{Détails des échanges} + +\begin{itemize} + \item \textbf{16.07.2018 17h-18h30:} Discussions autour du \gls{tdd} et de comment le mettre en place dès le début du projet. Travail sur la structure du projet. + \item \textbf{11.08.2018:} Email à destination du conseiller pour lui transmettre les informations pour accéder à un environnement Gitlab mis en place pour rendre disponible le code depuis internet. Retour sur l'état actuel du projet par email. + \item \textbf{27.08.2018 17h30-18h30:} Échanges sur l'avancement du projet et travail spécifique sur la construction d'un schéma bloc du projet. Validation du résumé sur la plateforme GAPS. + \item \textbf{11.09.2018 18h:} Signature et validation de l'affiche pour la mise à disposition sur GAPS. +\end{itemize} + +\section{Client - CHUV} + +Les rencontres avec le mandant du projet et son équipe se sont déroulées dans les bureaux du CHUV pour faire les revues de fin de sprint. Ces échanges ont permis de valider les différentes \emph{User Story} et d'obtenir des retours sur l'utilisation de la solution. + +\begin{itemize} + \item \textbf{09.08.2018 14h-15h30:} Démonstration de la première version du backend en faisant des requêtes sur l'API avec l'outil Postman\cite{postman}. Validation des quatres premières user stories. + \item \textbf{21.08.2018 15h-16h30:} Démonstration d'une recherche de règle de sécurité en utilisant une première version de l'interface WEB. Cela a permit de valider le fonctionnement du moteur de recherches et d'obtenir plusieurs demandes d'amélioration pour l'aspect visuel. + \item \textbf{04.09.2018 08h30-09h:} Présentation d'une nouvelle version de l'interface WEB pour valider les user stories en lien avec l'interface client. Cette version inclut également le chiffrement des échanges avec HTTPS. + \item \textbf{18.09.2018 08h30-09h:} Nouvelle version du backend qui permet de supporter les équipements de sécurité PaloAlto. +\end{itemize} \ No newline at end of file diff --git a/chapitres/introduction/introduction.tex b/chapitres/introduction/introduction.tex index 895e6e0..0c99ad1 100644 --- a/chapitres/introduction/introduction.tex +++ b/chapitres/introduction/introduction.tex @@ -14,4 +14,15 @@ Lorsqu'une nouvelle application doit être mise en production, l'équipe réseau \section{L'analyse du besoin} -Pour définir précisément les besoins du projet, une série de cas d'utilisation ont été rédigées avec l'équipe qui sera amener à l'utiliser. Toutes ces \emph{User Stories} ont été formalisées et sont décrites dans la pré-étude de ce projet dans la partie 2 "Analyses et planification". Elles ont été ensuite priorisée par la personne responsable de l'équipe qui est également le mandant de ce projet. Il a été convenu qu'une séance de revue sur l'avancement du projet soit faite toutes les deux semaines tout au long de la durée de la réalisation du projet. Les détails sur le déroulement du projet se trouvent au chapitre "Dossier de gestion". \ No newline at end of file +Pour définir précisément les besoins du projet, une série de cas d'utilisation ont été rédigées avec l'équipe qui sera amener à l'utiliser. Toutes ces \emph{User Stories} ont été formalisées et sont décrites dans la pré-étude de ce projet dans la partie 2 "Analyses et planification". Elles ont été ensuite priorisée par la personne responsable de l'équipe qui est également le mandant de ce projet. Il a été convenu qu'une séance de revue sur l'avancement du projet soit faite toutes les deux semaines tout au long de la durée de la réalisation du projet. Les détails sur le déroulement du projet se trouvent au chapitre "Dossier de gestion". + +\section{Découpage du projet} + +La réalisation de ce projet est découpée en plusieurs sous-projets différents qui correspondent à une partie de développement spécifique. Ce découpage permet notamment de tester ces différentes parties de façon indépendantes les unes des autres et d'être gérés dans des dépôts Git différents. Ce découpage correspond également à la structure des dossiers dans le CD annexe qui contient les codes sources. + +\begin{itemize} + \item \textbf{backend:} Projet principal de l'application, c'est là qu'est écrit la partie métier du projet. + \item \textbf{frontend:} Il s'agit de l'interface WEB de l'application + \item \textbf{fortigem:} Module d'extension pour faire des requêtes sur les équipements Fortinet$^{\mbox{\scriptsize{\textregistered}}}$ + \item \textbf{paltogem:} Module d'extension pour faire des requêtes sur les équipements PaloAlto$^{\mbox{\scriptsize{\textregistered}}}$ +\end{itemize} diff --git a/chapitres/introduction/network.tex b/chapitres/introduction/network.tex index 2c6e5ab..c6bb706 100644 --- a/chapitres/introduction/network.tex +++ b/chapitres/introduction/network.tex @@ -131,9 +131,7 @@ La dernière caractéristique importante d'une route est son interface de sortie \subsection{TCP \& UDP} -Si la couche trois définit l'adressage logique qui fournit les outils pour acheminer les paquets dans un réseau, la couche quatre va permettre de définir comment ces communications sont gérées par les n\oe{}uds. Il existe plusieurs protocoles de transport différent mais en pratique, TCP et UDP sont ceux qui sont le plus utilisé dans les réseaux internes d'entreprise. Ces deux protocoles ont comme point commun le fait d'utiliser un numéro de port pour identifier leurs communications. De la même façon qu'il y a une adresse IP source et destination, il y a aussi un port source et destination. Le port de destination est utilisé par le n\oe{}ud de destination pour savoir quel processus doit traiter cette requête. Le numéro de port est codé sur 16bits et bien que n'importe quel programme peut utiliser un port, les 1024 premiers sont considérés comme "well-known" et sont identifiés. Par exemple, le protocol HTTP utilisé pour les applications web utilisent le port 80 et sa version chiffrée, le HTTPS, le 443. Ces éléments s'appellent des services et correspondent dans cette application à la classe \Colorbox{light-gray}{\lstinline{Service}} (section \ref{sec:classe:service}) qui sont composés d'une liste de port TCP et UDP qui sont représentés par la classe \Colorbox{light-gray}{\lstinline{PortRange}}. - -tableau avec les well-known port +Si la couche trois définit l'adressage logique qui fournit les outils pour acheminer les paquets dans un réseau, la couche quatre va permettre de définir comment ces communications sont gérées par les n\oe{}uds. Il existe plusieurs protocoles de transport différent mais en pratique, TCP et UDP sont ceux qui sont le plus utilisé dans les réseaux internes d'entreprise. Ces deux protocoles ont comme point commun le fait d'utiliser un numéro de port pour identifier leurs communications. De la même façon qu'il y a une adresse IP source et destination, il y a aussi un port source et destination. Le port de destination est utilisé par le n\oe{}ud de destination pour savoir quel processus doit traiter cette requête. Le numéro de port est codé sur 16bits et bien que n'importe quel programme peut utiliser un port, les 1024 premiers sont considérés comme "well-known" et sont identifiés\cite{wellknownports}. Par exemple, le protocol HTTP utilisé pour les applications web utilisent le port 80 et sa version chiffrée, le HTTPS, le 443. Ces éléments s'appellent des services et correspondent dans cette application à la classe \Colorbox{light-gray}{\lstinline{Service}} (section \ref{sec:classe:service}) qui sont composés d'une liste de port TCP et UDP qui sont représentés par la classe \Colorbox{light-gray}{\lstinline{PortRange}}. Lorsqu'un n\oe{}ud "client" ouvre une connexion vers un n\oe{}ud "serveur", il va utiliser un port source aléatoire géré par le système d'exploitation et le port de destination est définis par le programme utilisé. diff --git a/images/Screen Shot 2018-08-10 at 17.30.09.png b/images/gitlab_milestones.png similarity index 100% rename from images/Screen Shot 2018-08-10 at 17.30.09.png rename to images/gitlab_milestones.png diff --git a/index.tex b/index.tex index 9d9c06b..a8a51fb 100644 --- a/index.tex +++ b/index.tex @@ -46,19 +46,21 @@ % Marges \usepackage{geometry} \geometry{ - left=2.5cm, - right=2cm, + left=2cm, + right=2.5cm, top=2cm, - bottom=1.5cm, + bottom=2cm, headheight=35pt, includehead,includefoot, heightrounded } +\usepackage{pdfpages} + % En-têtes et pieds de page \setlength\headheight{26pt} \pagestyle{fancy} -\fancyhead[L] {\begin{picture}(0,0) \put(0,0){\includegraphics[height=1.5cm, keepaspectratio=true]{heig-vd.png}} \end{picture}} +\fancyhead[L]{\begin{picture}(0,0) \put(0,0){\includegraphics[height=1.5cm, keepaspectratio=true]{heig-vd.png}} \end{picture}} \fancyhead[R]{Ischer Etienne \\} \renewcommand\footrulewidth{3pt} \fancyfoot[LO]{Travail de Bachelor} @@ -76,7 +78,9 @@ \pagenumbering{roman} \setcounter{page}{2} % Page 2 - Préambule (école) +\includepdf[pages=-]{annexes/preambule.pdf} % Page 3 - Copie du résumé (signée) +\includepdf[pages=-]{annexes/resume.pdf} % Page 4 - Table des matières \tableofcontents \newpage @@ -96,32 +100,35 @@ \include{chapitres/model/diagram} \part{Dossier de gestion} -% Dossier de gestion -% Echéancier détaillé du déroulement du travail de Bachelor -% Les rendez-vous et contacts avec le Conseiller, l'entreprise d'accueil et tiers +\include{chapitres/gestion/echeancier} +\include{chapitres/gestion/rendezvous} \part{Synthèse et conclusions} -% Synthèse et conclusions -% Retour sur la gestion du projet -% Problèmes rencontrés -% Résultat du projet -% Conclusion +\include{chapitres/conclusions/resultats} \appendix -% Dernière page - Authentification de l'auteur (modèle école) +\addcontentsline{toc}{chapter}{Annexes} +% Dernière page - Authentification de l'auteur (modèle école) +\addcontentsline{toc}{section}{Authentification} +\includepdf[pages=-]{annexes/authentification.pdf} + +\addcontentsline{toc}{section}{Glossaire} +\addcontentsline{toc}{section}{Acronymes} \printglossaries \newpage +\addcontentsline{toc}{section}{Bibliographie} \bibliographystyle{unsrt} \bibliography{bibli} +\addcontentsline{toc}{section}{Table des figures} \listoffigures +\addcontentsline{toc}{section}{Liste des tableaux} \listoftables \printindex \end{document} - \ No newline at end of file