Analyse de projet
Auteur
nisrine hammout
Last Updated
il y a 7 ans
License
Creative Commons CC BY 4.0
Résumé
There is the analysis of hPC
There is the analysis of hPC
\documentclass[a4paper,12pt]{extarticle}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{caption}
\usepackage[english]{babel}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}
\setlength{\parindent}{0.4pt}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{HPC interface de soumission de travaux Slurm}
\rhead{Emines-UM6P}
\usepackage{hyperref}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\begin{document}
\begin{titlepage}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
\center
%----------------------------------------------------------------------------------------
% HEADING SECTIONS
%----------------------------------------------------------------------------------------
\includegraphics[width=0.9\textwidth]{1.png}\\[1cm]
\textsc{\LARGE EMINES - UM6P }\\[0.3cm]
\textsc{\Large School of Industrial Management }\\[0.1cm]
\textsc{\Large Projet informatique}\\[0.5cm] % Major heading such as course name
% Minor heading such as course title
%----------------------------------------------------------------------------------------
% TITLE SECTION
%----------------------------------------------------------------------------------------
\HRule \\[0.4cm]
{ \huge \bfseries HPC interface de soumission de travaux slurm}\\[0.03cm] % Title of your document
\HRule \\[2cm]
\textsc{\Large Analyse de projet}\\[1cm]
%----------------------------------------------------------------------------------------
% AUTHOR SECTION
%----------------------------------------------------------------------------------------
\begin{minipage}{0.4\textwidth}
\begin{flushleft} \large
\emph{Réalisé par:}\\
Badr LAAJAJ\\Nisrine HAMMOUT % Your name
\end{flushleft}
\end{minipage}
~
\begin{minipage}{0.4\textwidth}
\begin{flushright} \large
\emph{Encadré par:} \\
M. El Hassane AIT ZEMZAMI % Supervisor's Name
\end{flushright}
\end{minipage}\\[1cm]
{\large 13 Octobre 2017}\\[1cm]
\vfill % Fill the rest of the page with whitespace
\end{titlepage}
\renewcommand{\listfigurename}{Liste des figures}
\tableofcontents
\newpage
\listoffigures
\newpage
\section{Phase 1 : Analyse Fonctionnelle }
\subsection{Introduction }
\raggedright Notre projet "HPC interface de soumission des travaux SLURM" cherche à répondre au besoin du laboratoire de Modélisation et de Simulation (SIMLAB). Ce laboratoire représente l’une des unités de recherche de l’Université Mohammed VI Polytechnique-UM6P qui cherche à développer des concepts, méthodes et méthodologies qui permettent de mieux comprendre les phénomènes mis en jeu dans les procédés industriels, afin de mieux les modéliser pour les améliorer. Dans cette perspective, l’unité compte utiliser des grappes serveurs afin d’effectuer du calcul haute performance (connu sous le sigle \textbf{HPC}-High Performance Computing) et d’exécuter plusieurs tâches simultanément (le parallélisme).
\\
\raggedright En effet, l’utilisation des superordinateurs devient de plus en plus indispensable pour résoudre des problèmes complexes de modélisation dans plusieurs disciplines telles que : la modélisation climatique, l'analyse cryptographique, la géophysique, la mécanique des fluides, la biologie moléculaire, la dynamique moléculaire... Toutefois, ces machines sont sous des systèmes d'exploitation libres, le plus répandu est Linux\footnote{système d'exploitation libre sous la licence GNU-GPL, se basant sur la ligne de commande pour exécuter des tâches.}, qui a pour objectif, d'une part, de réduire les coûts (s'exonérer des licences ) et, en d'autres part, pouvoir adapter la puissance de calcul au besoin en développant ces propres outils "maison" d'exploitation comme les scripts d'administration système.
\\
\raggedright D’un point de vue utilisateur, la plupart des chercheurs ne sont pas familiarisés avec l’environnement Linux ni avec la technologie utilisant le HPC. Pour résoudre ce problème, on propose notre application web qui permettra à ces utilisateurs du serveur de calcul de générer des scripts qui leur permettent de soumettre des travaux de calcul d'une manière claire et facile.
\subsubsection{Objet du document }
\raggedright Cette première phase représente l’analyse fonctionnelle de notre produit « HPC interface de soumission des travaux SLURM » qui a pour but de caractériser et d’ordonner les différentes fonctions précisées par le client.
\raggedright Outre cela, elle va nous permettre de définir l’environnement du produit en d’autres termes les types d’utilisateur concerné ainsi que les interfaces connectées à notre interface.
\subsubsection{Structure du document }
\raggedright Afin de bien traiter cette partie, on va examiner les points suivants :
\begin{itemize}
\item \textbf{Description de la solution }
\\A ce stade, on doit tout d’abord décrire d’une manière détaillée l’ensemble des caractéristiques de notre solution. Il faut préciser ensuite non seulement les processus utilisateurs qui seront impactés par notre application mais aussi les autres applications qui interagissent avec note solution et définir cette relation.
\item \textbf{Description fonctionnelles détaillée }:
On peut répartir cette section en trois grands axes :
\begin{enumerate}
\item Modules/ Fonctionnalités : on regroupe les fonctionnalités de notre application sous forme de package puis on décrit le service qu’elle rend à l’utilisateur ainsi que ses règles de gestion.
\item Acteurs : On décrit les profils d’utilisateurs qui vont interagir avec l’interface.
\item Matrices acteurs/ Fonctionnalités : on lie les fonctionnalités avec les acteurs concernés grâce à une matrice de gestion de droit.
\end{enumerate}
\end{itemize}
\subsection{Description de la solution }
\subsubsection{Caractéristiques de la solution }
\raggedright Notre solution est sous forme d'une application web qui va permettre aux utilisateurs de générer des scripts et ensuite préciser la configuration de leur job qui va être soumis aux grappes serveurs. Notre application permet aussi aux administrateurs d'examiner l'état des machines et de gérer le job.
\subsubsection{Processus utilisateurs impactés }
\raggedright Les utilisateurs de notre application sont en général les concernés par le calcul, ils peuvent être alors des chercheurs, ingénieurs, postdoctoraux ou des doctorants et en particulier ceux de l'Université Mohammed VI Polytechnique.
\subsubsection{Applications connexes}
\raggedright Notre application web peut avoir une connexion avec le site du laboratoire SIMLAB . En effet, le laboratoire peut ajouter une rubrique sur leur site réservée au domaine HPC où notre application peut figurer.
\subsection{Description fonctionnelles détaillées }
\subsubsection{Module/Fonctionnalités }
\raggedright On peut décomposer notre interface web en 4 modules principaux regroupant l’ensemble des fonctionnalités comme suit :
\begin{itemize}
\item \textbf{Authentification des utilisateurs : }ce module contient plusieurs fonctionnalités autres que l’identification des utilisateurs qui est basée sur l'utilisation du LDAP \footnote{(Lightweight Directory Access Protocol): un protocole qui permet de lire uniquement d'une base de données et par conséquent partager l'utilisation des informations d'une façon légère avec les applications web}. On cite parmi eux la possibilité de connaître l’historique de leurs jobs, la consommation des ressources ainsi l’état des jobs (terminés, en cours ou en échec...). Il s’ajoute que grâce à ce module on peut différencier les types d’utilisateur ce qui nous permet d’autoriser aux administrateurs de gérer les droits d’utilisation de certains logiciels à licence, compilateur ou bibliothèque scientifique par les utilisateurs normaux.
\item \textbf{ Génération des scripts batch : }ce package représente l’axe principale du projet. En effet, grâce à six zones multi-choix l’utilisateur peut déterminer la configuration de son travail, principalement le nombre de nœuds à utiliser, leurs noms ainsi que le nombre de cœurs,le nombre de threads, la durée du job et son nom. Il peut aussi préciser les entrées/sorties utiles pour son job et même télécharger une version texte du script.
\item \textbf{ Monitoring: Administration du serveur de calcul },qui regroupe les fonctionnalités suivantes :
\begin{itemize}
\item Permettre aux administrateurs de contrôler les machines (marche/arrêt) et de connaître leurs états ;
\item Générer des statistiques d’utilisation sous forme de graphe ;
\item Gestion des travaux soumis.
\end{itemize}
\item\textbf{ Soumission des travaux de calcul}, cette fonctionnalité consiste à soumettre le job constitué du script et des commandes SLURM\footnote{(Simple Linux Utility for Resource Management): Système de gestion de tache (ordonnanceur) qui gère l'utilisation de ressources des machines}.
\end{itemize}
\subsubsection{Acteurs :}
Dans notre cas, les acteurs sont les utilisateurs de notre application web. Cependant il existe deux types de profil d’utilisateur qui ont accès à des fonctionnalités différentes, on distingue entre :
\begin{itemize}
\item\textbf{ Les administrateurs: } ceux qui gèrent et veillent au bon fonctionnement du serveur de calcul, c’est-à-dire configurer, installer et contrôler l’accès à ces machines, outre les avantages des utilisateurs normaux;
\item\textbf{Les utilisateurs normaux }, par contre eux ils peuvent uniquement soumettre des jobs, suivre l'état de leurs jobs et accéder aux informations de leurs travaux(en attente, courants, rejetés). On peut aussi distinguer parmi eux les \textbf{utilisateurs inscrits }qui ont l’autorisation d’utiliser les machines, en d'autres termes ils possèdent des comptes validés, et\textbf{les utilisateurs non-inscrits} qui peuvent être des simples visiteurs de l’interface.
\end{itemize}
\subsubsection{Matrices acteurs / Fonctionnalités }
\begin{center}
\includegraphics[scale=1]{Matrices_A_F.PNG}
\captionof{figure}{Gestion des accès }
\label{fig1}
\end{center}
\subsubsection{Cas d'utilisation :}
\raggedright Le diagramme ‘Cas d’utilisation’ ou ‘Use Case’ définit les liaisons fonctionnelles entres les acteurs et le système à l’étude, il est composé des éléments suivant :
\begin{itemize}
\item\textbf{ Acteur : } rôle joué par un utilisateur humain ou un autre système qui interagit directement avec le système.
\item\textbf{ Cas d’utilisations : }: ensemble de séquence d’actions réalisées par le système produisant un résultat observable intéressant pour un acteur particulier.
\item\textbf{ Association : }utilisé pour relier les acteurs et les cas d’utilisation par une relation qui signifie simplement « participe à ».
\item\textbf{ Inclusion : } le cas d’utilisation de bas incorpore implicitement un autre, de façon obligatoire.
\item\textbf{ Extension : } le cas d’utilisation de bas incorpore implicitement un autre, de façon optionnelle.
\item\textbf{ Généralisation : } les cas d’utilisations descendants héritent de la description de leur parent commun.
\end{itemize}
\raggedright En ce qui concerne le « use case » de notre projet, il permet de mieux représenter les interactions entre les différents utilisateurs et les fonctionnalités proposées par notre application web. En fait, on distingue entre trois acteurs : les administrateurs, les utilisateurs inscrits et les non-inscrits.
\raggedright Quant aux fonctionnalités, il diffère d’un acteur à un autre mais grâce au concept généralisation on aperçoit les fonctionnalités communes entre eux, ce qui rend ce diagramme très utile pour effectuer la gestion des droits/accès. Voici donc ci-dessous notre diagramme Use Case :
\begin{center}
\includegraphics[scale=0.6]{UseCase.png}
\captionof{figure}{Diagramme de cas d'utilisation de la solution }
\label{fig1}
\end{center}
\subsection{Conclusion}
\raggedright Après avoir établi la phase d’analyse où on cherche à comprendre et à décrire d'une façon bien détaillée les besoins des clients et les fonctionnalités des différents utilisateurs en utilisant la matrices Acteurs/Fonctionnalités et le diagramme de cas du langage visuel de modélisation l'UML\footnote{Unified Modeling Language}. On passe à l'étape de conception où on cherche à clarifier les aspects techniques de notre application en se servant d'une maquette explicitant notre application web, et aussi une architecture globale et des diagrammes tels diagramme de classe et diagramme de séquence .
\section{Phase 2 : Analyse technique}
\subsection{Introduction}
\raggedright L'analyse technique consiste à choisir ou concevoir des solutions techniques qui vont remplir les différentes fonctions élaborés dans la phase précédente de l'analyse fonctionnelle. Les étapes de cette phase sont :
\begin{enumerate}
\item Élaboration de l'architecture globale de l'interface.
\item Précisant des fonctions de service qui décrivent les fonctionnalité, les données en entrée et les données en sortie. Ainsi, une maquette pour donner une idée ce quoi ressemblé notre produit final.
\item Représentation de la structure de l'application, du point de
vue des données, et définit également les dépendances ou relations entre
ces différentes objets en utilisant un diagramme de classe.
\item Élaboration du diagramme de séquence pour traiter l'aspect dynamique de notre interface.
\end{enumerate}
\subsection{Architecture globale}
Elle s'agit de structurer notre application web en précisant les processus et les intervenants internes et externes et les composants de notre système:
\begin{center}
\includegraphics[scale=0.4]{2.png}
\captionof{figure}{Architecture globale de notre application web}
\label{fig1}
\end{center}
\subsection{Fonctions de service (IHM) et Maquette}
\raggedright Cette partie concerne la description détaillée des étapes à accomplir pour répondre aux fonctionnalités que notre application web propose.\\
\raggedright Notre application va contenir en premier lieu une page d'accueil qui sert à introduire aux visiteurs le but de création d'un tel service.
\begin{center}
\includegraphics[scale=0.4]{home.PNG}
\captionof{figure}{Accueil de l'application web}
\label{fig1}
\end{center}
\raggedright Un utilisateur non-inscrit, inscrit ou bien administrateur voulant résoudre des problèmes complexes de modélisation en utilisant la technologie des superordinateurs. Il a besoin tout d'abord d'un script batch généré par notre interface qui lui permettra après de soumettre son job.
La génération se fait en choisissant :
\begin{itemize}
\item le nombre de nœuds à utiliser;
\item le nom de noeud ;
\item le nombre de tasks par noeud;
\item le nombre de threads ;
\item le nom du job ;
\item le durée du job
\end{itemize}
\begin{center}
\includegraphics[scale=0.4]{generate.PNG}
\captionof{figure}{Formulaire pour générer un script}
\label{fig1}
\end{center}
\raggedright Pour préciser les inputs et les outputs d'un job, l'utilisateur a besoin d'authentifier en fournissant un username et un mot de passe propre à lui, si l'utilisateur n'a pas un compte il doit alors remplir un formulaire de demande d'inscription qui va être envoyé à l'administrateur.
\begin{center}
\includegraphics[scale=0.5]{signin.PNG}
\captionof{figure}{Sign In et demande d'inscription }
\label{fig1}
\end{center}
\raggedright Une fois l’utilisateur est authentifié, il a le droit non seulement de préciser les entrées et les sorties de son job, mais aussi de soumettre un job après avoir rempli le formulaire de génération de script:
\begin{center}
\includegraphics[scale=0.4]{connecte.PNG}
\captionof{figure}{ Fonction de soumettre un job}
\label{fig1}
\end{center}
\newpage
L’utilisateur inscrit a le droit aussi de consulter son propre historique de ses jobs et leurs états:\\
\begin{center}
\includegraphics[scale=0.4]{history.PNG}
\captionof{figure}{ Historique des Jobs }
\label{fig1}
\end{center}
\newpage
Cependant, si un visiteur non-inscrit essaie de voir la partie de "History Job" il va avoir la page d'erreur suivante: \\
\begin{center}
\includegraphics[scale=0.4]{error.PNG}
\captionof{figure}{ Erreur de Sign In}
\label{fig1}
\end{center}
\newpage
\raggedright En ce qui concerne l'administrateur, il a droit de toutes les fonctionnalités d'un utilisateur inscrit à coté de la partie monitoring qui permet de contrôler la machine (marche/arrêt) et de gérer les jobs: \\
\begin{center}
\includegraphics[scale=0.5]{monotring.PNG}
\captionof{figure}{ Monitoring}
\label{fig1}
\end{center}
\newpage
\raggedright Et si un utilisateur inscrit veut accéder au monitoring, il aura l'erreur suivante: \\
\begin{center}
\includegraphics[scale=0.5]{beadmin.PNG}
\captionof{figure}{ Erreur admin}
\label{fig1}
\end{center}
\newpage
\subsection{Description des données et des traitements }
\subsubsection{Modélisation des données } \raggedright Dans cette partie, on s’intéresse à la structure du système d'information de notre solution d'un côté statique ce qui nous permet de modéliser les relations et les dépendances entre les différentes classes. Alors en analysant les données liées à notre interface on obtient le diagramme de classe suivant :
\begin{center}
\includegraphics[scale=0.4]{Class_Diagram_Mod.png}
\captionof{figure}{Diagramme de classe de la solution }
\label{fig1}
\end{center}
\subsubsection{Description des traitements }
\raggedright Afin de décrire les traitements, nous avons eu recours au diagramme de séquence. Le diagramme de séquence représente une modélisation dynamique du fonctionnement de notre solution. En effet, il s'intéresse aux interactions entre les différents objets et précise comment ils communiquent entre eux afin d'accomplir une action.Afin de bien présenter notre diagramme de séquence, on l'a divisé en deux parties: la première concerne le visiteur (utilisateur non-inscrit) et la deuxième les utilisateurs inscrits (utilisateur normal et administrateur) vu qu'ils partagent plusieurs fonctionnalités principales. Voici donc nos diagrammes de séquences :
\begin{center}
\includegraphics[scale=0.4]{SequenceD.png}
\captionof{figure}{Diagramme de séquence du visiteur }
\label{fig1}
\end{center}
\raggedright Ce premier diagramme montre les fonctionnalités disponibles aux visiteurs ainsi qu'une démarche détaillée de la génération des scripts qui est commune avec les fonctionnalités des utilisateurs inscrits qui ont le diagramme de séquence suivant :
\begin{center}
\includegraphics[scale=0.4]{SequenceD_U.png}
\captionof{figure}{Diagramme de séquence du visiteur }
\label{fig1}
\end{center}
\subsection{Conclusion}
\raggedright Dans cette partie d'analyse technique, on a décrit d'un point de vue dynamique l'interaction entre les objets de notre application et les différents actions à exécuter pour remplir les fonctionnalités décrites dans la phase analyse fonctionnelle grâce à aux diagrammes de classe et de séquence ainsi qu'une maquette qui nous donne une idée sur le design de l'interface web en correspondance avec le scénario suivi.
\section{Conclusion générale }
\raggedright En guise de conclusion, cette analyse de projet a porté sur trois aspects essentiels à savoir l'aspect fonctionnel,qui nous a permis de décrire en détail notre solution et de définir les interactions entre ses acteurs et fonctionnalités, l'aspect statique qui se résume dans le diagramme de classe qui décrit les relations entre les objets et l'aspect dynamique qui détermine les différents scénarios possibles que notre application peut rencontrer.\\
Finalement, cette analyse nous sera très utile dans l'élaboration de notre application vu qu'elle nous a donnée des solutions techniques à développer dans la phase de réalisation .
\end{document}