From e37d4911c750550896c4155f452736200d977b83 Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Mon, 16 Jan 2023 02:51:22 -0500 Subject: Almost done... --- rapport/main.tex | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 167 insertions(+), 16 deletions(-) (limited to 'rapport/main.tex') diff --git a/rapport/main.tex b/rapport/main.tex index a465927..638a69d 100644 --- a/rapport/main.tex +++ b/rapport/main.tex @@ -4,6 +4,9 @@ \usepackage{titlepage} \usepackage{float} \usepackage{algorithm} +\usepackage{amsmath} +\usepackage{graphicx} +\usepackage{tikz-uml} \usepackage{algpseudocode} \usepackage{frpseudocode} \usepackage[T1]{fontenc} @@ -12,6 +15,7 @@ % \addbibresource{bibliography.bib} % \nofiles + % \institution{Université de Sherbrooke} % \faculty{Faculté de génie} % \department{Département de génie électrique et de génie informatique} @@ -24,7 +28,7 @@ Benjamin Chausse & -- & chab1704 \\ \end{tabular} } -\teacher{Eugène Morin} +\teacher{Domingo Palao Muñoz} % \location{Sherbrooke} % \date{\today} @@ -33,31 +37,178 @@ \maketitle \newpage \tableofcontents +\listoffigures +\listoftables \newpage \section{Diagrammes UML} -\section{Pseudo-code} +La figure \ref{fig:class} montre les diverses relation entre les classes de +graphicus-02. Elle permet d'observer la hiérarchie des classes ainsi que les +facteurs de dépendance entre les classes. + +\begin{figure}[H] % Diagramme de classes {{{ +\centering +\caption{Diagrame de classes de graphicus-02}\label{fig:class} +\includegraphics[width=0.8\textwidth]{class.png} +\end{figure} % }}} + +La figure \ref{fig:sequence} montre comment l'application procéderait +lorsqu'un utilisateur voudrait activer la couche 1 du canevas alors que la +couche 0 est présentement active. Les autres couches ont été omises pour +alléger le diagramme. + +\begin{figure}[H] % Diagramme de séquence {{{ +\centering +\caption{Diagrame de séquence d'activation de couche}\label{fig:sequence} +\includegraphics[width=\textwidth]{sequence.png} +\end{figure} % }}} + -Ceci est un test pour voir comment le package frpseudocode fonctionne. -Du pseudo-code est pertinent pour l'APP ira ici. +La figure \ref{fig:usecase} montre les différentes actions que l'utilisateur +peut exécuter dans l'application. Nous voyos par la suite comment certaines de +ces actions agissent en arrière plan et dépendent d'autres actions (parfois +même d'autres actions accessibles à l'utilisateur). -\begin{algorithm} -\caption{Euclid's algorithm}\label{alg:euclid} +\begin{figure}[H] +\centering\caption{Diagramme de cas d'utilisation}\label{fig:usecase} +\includegraphics[width=\textwidth]{usecase.png} +\end{figure} + + +\section{Pseudo-code} + +\begin{algorithm} % {{{ +\caption{Ajout d'un élément au vecteur}\label{alg:ajouterForme} \begin{algorithmic}[1] - \Function{Euclid}{$a, b$} - \While{$a \neq b$} - \If{$a > b$} - \State $a \gets a - b$ - \Else - \State $b \gets b - a$ - \EndIf - \EndWhile - \State \Return $a$ + \Function{Vecteur::ajouterForme}{$f$}{ Booléen}\\ + \hspace{.5cm}// $f$: Forme à ajouter au vecteur\\ + \hspace{.5cm}// $Vecteur::taille$: nombre d'éléments actuellement dans le vecteur (entier)\\ + \hspace{.5cm}// $Vecteur::capacite$: capacité maximale du vecteur actuellement (entier)\\ + \hspace{.5cm}// $Vecteur::formes$: Liste de pointeurs vers les formes du vecteur (*Forme)\\ + \textbf{DÉBUT}\\ + \hspace{.5cm}// $newCapacite$: nouvelle capacité du vecteur (entier)\\ + \hspace{.5cm}// $newFormes$: nouvelle liste de pointeurs vers les formes du vecteur (*Forme) + \If{$f$ est de valeur nulle} + \Comment{Vérifier si la forme est valide} + \State\Return{Faux} + \EndIf + \If{$Vecteur::taille =\joinrel= Vecteur::capacite$} + \Comment{Si le vecteur est plein} + \State $newCapacite := Vecteur::capacite\times2$ + \If{L'espace disponible en mémoire $<$ $newCapacite\times taille(Forme)$} + \State\Return{Faux} + \EndIf + \State $newFormes :=\ $allouer$(newCapacite\times taille(Forme))$ + \For{\textbf{CHAQUE} Forme $i$ dans $Vecteur::formes$} + \State $newFormes[i] := Vecteur::formes[i]$ + \EndFor + \State $Vecteur::capacite := newCapacite$ + \State libérer$(Vecteur::formes)$ + \State $Vecteur::formes := newFormes$ + \EndIf + \State $Vecteur::taille := Vecteur::taille + 1$ + \State $Vecteur::formes[Vecteur::taille] := f$ + \State \Return{Vrai} \EndFunction \end{algorithmic} -\end{algorithm} +\end{algorithm} % }}} + +\section{Plan de test} + +\subsection{Identification} +\begin{table}[H] % {{{ +\centering\caption{Informations générales du plan de test}\label{fig:planTest} +\begin{tabular}{rl} + \\ \toprule + Nom: & Scénario de test du rapport d'APP \\ + But: & Vérifier les fonctionnalitées globales de graphicus-02\\ + Acteur principal: & classe \verb|Test| \\ + Date de création: & 2023-01-14 \\ + Auteur: & Benjamin Chausse -- chab1704 \\ + Version: & 1.0 \\ + \bottomrule +\end{tabular} +\end{table}% }}} + +\subsection{Scénario} + +\subsubsection{Préconditions} + +\begin{itemize} + \item Un canevas vierge vient d'être créé + \item Ce cas d'utilisation emploie la méthode \verb|tests_application_cas_02| + de la classe \verb|Tests|. La première ayant été utilisée lors de la + validation en classe. +\end{itemize} + + +\subsubsection{Postconditions} + +\begin{itemize} + \item Le déroulement du test se fait sans intervention de l'utilisateur. + \item L'affichage doit-être accessible à l'évaluateur: + \begin{itemize} + \item soit par écriture dans un fichier + \item soit par affichage dans un terminal + \end{itemize} + \item Le numéro de chaque étape est identifié avant son exécution. + \item La description de chaque étape est affichée avant son exécution. + \item Les informations passées à chaque étape sont affichées avant son exécution. +\end{itemize} + + +\subsubsection{Limitations} + +\begin{itemize} + \item Le test ne vérifie pas la totalité des cas limites + (ex: capacité insuffisante en mémoire pour agrandir le vecteur). +\end{itemize} + + +\subsection{Enchaînement nominal} + +\subsubsection{Étapes 1 à 4} +\begin{enumerate} + % \setcounter{enumi}{1} + \item Activer la couche d'index 4 + \item Ajouter les formes suivantes au canevas: + \begin{itemize} + \item un cercle de centre (1, 2) et de rayon $\frac{1}{\sqrt{\pi}}$ + \item un rectangle anchré en (3, 4), de largeur + \item un carré anchré en (-1, -1), de côté 2 + \end{itemize} + \item Afficher le canevas + \item Imprimer l'aire du canevas (doit être égale à $1+12+4$ soit $17$) +\end{enumerate} +\subsubsection{Étapes 5 à 13} +\begin{enumerate} + \setcounter{enumi}{4} + \item Activer la couche d'index 3 + \item Ajouter les formes par défaut au canevas. Soit: + \begin{itemize} + \item un cercle de centre (0, 0) et de rayon 1 + \item un rectangle anchré en (0, 0), de largeur 1 et de hauteur 1 + \item un carré anchré en (0, 0), de côté 1 + \end{itemize} + \item Afficher le canevas + \item Translater le canevas de (1, 1) + \item Afficher le canevas + \item Supprimer la forme de l'index 0 (la première) + \item Activer la couche 4 + \item Supprimer la forme de l'index 2 (la dernière) + \item Afficher le canevas +\end{enumerate} +\subsubsection{Étapes 14 à 18} +\begin{enumerate} + \setcounter{enumi}{13} + \item Initialiser la couche 4 + \item Afficher le canevas + \item Imprimer l'aire du canevas (doit être égale à $1+1$ soit $2$) + \item Réinitialiser le canevas + \item Afficher le canevas +\end{enumerate} % \newpage -- cgit v1.2.3