Skip to content

Commit 290fd03

Browse files
authored
Refactor cdc (#21)
* fix: typo * wip: explanation about searchTags * ref: more ref to bibliographic search
1 parent 4040081 commit 290fd03

File tree

2 files changed

+39
-20
lines changed

2 files changed

+39
-20
lines changed

sections/chapters/cahierDesCharges/index.tex

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ \chapter{Analyse des besoins}
77

88
La phase d'analyse est dans la vie d'un projet l'une des phases les plus critiques, car celle-ci formalise les besoins des clients sous tous ses aspects afin que toutes les parties (dont les développeurs) puissent se mettre d'accord. Pour pallier les nombreuses difficultés inhérentes au contexte, plusieurs méthodes reconnues existent (notamment \Gls{QQOQCCP} et UML). \\
99

10-
La principale fonctionnalité attendue de l'application web est la recherche de \glspl{fiche} sur base d'une combinaison de critères divers et variés (dont notamment des \glspl{tag}) pourrait sembler à première vue simple, mais il n'en est rien. En effet, la question sous-jacente est le problème du référencement de \glspl{resinfo}. Contrairement à d'autres domaines et l'existence de normes pour organiser les informations d'une \gls{resinfo} (\textit{Dublin Core} / \textit{LOM} pour ne citer que quelques unes), il n'existe pas de consensus sur l'arborescence / la taxonomie des \glspl{tag} (cf annexe \ref{annexe:AnalyseBiblio}).
10+
La principale fonctionnalité attendue de l'application web est la recherche de \glspl{fiche} sur base d'une combinaison de critères divers et variés (dont notamment des \glspl{tag}) pourrait sembler à première vue simple, mais il n'en est rien. En effet, la question sous-jacente est le problème du référencement de \glspl{resinfo}. Contrairement à d'autres domaines et l'existence de normes pour organiser les informations d'une \gls{resinfo} (\textit{Dublin Core} / \textit{LOM} pour ne citer que quelques unes), il n'existe pas de consensus sur l'arborescence / la taxonomie des \glspl{tag} (cf. annexe \ref{annexe:AnalyseBiblio}).
1111

1212
\section{Analyse fonctionnelle}
1313
\label{section:analyseFonctionnelle}
@@ -37,7 +37,7 @@ \subsection*{Fonctionnalités}
3737
\item \textcolor{gray}{\textbf{W}on't} : C'est ce qui "ne sera pas fait cette fois, mais sera fait plus tard" (\textbf{luxe})
3838
\end{itemize}
3939

40-
À titre informatif, le choix du \textbf{JSON} se justifie par la norme que nous avons élaborée (cf annexe \ref{annexe:AnalyseBiblio}), qui l'utilise afin de pouvoir manipuler plus aisément les données contenues dans celui-ci.
40+
À titre informatif, le choix du \textbf{JSON} se justifie par la norme que nous avons élaborée (cf. annexe \ref{annexe:AnalyseBiblio}), qui l'utilise afin de pouvoir manipuler plus aisément les données contenues dans celui-ci.
4141
Des explications complémentaires sur d'autres aspects de cet inventaire seront apportées dans les prochaines sections de ce chapitre.
4242

4343
\subsubsection*{Tout visiteur peut : }
@@ -47,7 +47,7 @@ \subsubsection*{Tout visiteur peut : }
4747
\begin{itemize}
4848
\item[\textcolor{red}{\textbf{M}}] Rechercher dans les \glspl{tag} des \glspl{fiche}
4949
\item[\textcolor{red}{\textbf{M}}] Rechercher dans le titre des \glspl{fiche}
50-
\item[\textcolor{red}{\textbf{M}}] Rechercher les \glspl{fiche} par leurs états (cf figure \ref{pic:stateDiagramForFiches})
50+
\item[\textcolor{red}{\textbf{M}}] Rechercher les \glspl{fiche} par leurs états (cf. figure \ref{pic:stateDiagramForFiches})
5151
\item[\textcolor{red}{\textbf{M}}] Rechercher les \glspl{fiche} sur base d'un certain seuil sur le résultat moyen accordé par les utilisateurs
5252
\item[\textcolor{red}{\textbf{M}}] Rechercher les \glspl{fiche} par leurs créateurs
5353
\item[\textcolor{red}{\textbf{M}}] Rechercher les \glspl{fiche} par leurs identifiants
@@ -62,7 +62,7 @@ \subsubsection*{Tout visiteur peut : }
6262
\item le nombre de votants pour une \gls{fiche}
6363
\item la date de la dernière modification de la \gls{fiche}
6464
\item le titre de la \gls{fiche}
65-
\item l'état de la \gls{fiche} (cf figure \ref{pic:stateDiagramForFiches})
65+
\item l'état de la \gls{fiche} (cf. figure \ref{pic:stateDiagramForFiches})
6666
\item l'identifiant de la \gls{fiche}
6767
\end{itemize}
6868
\item[\textcolor{green}{\textbf{C}}] Choisir quelles propriétés des \glspl{fiche} que l'on souhaite consulter
@@ -73,7 +73,7 @@ \subsubsection*{Tout utilisateur peut : }
7373
\begin{itemize}
7474
\item[\textcolor{red}{\textbf{M}}] Mettre en ligne une \gls{fiche} (avec éventuellement un fichier)
7575
\item[\textcolor{red}{\textbf{M}}] Modifier les informations d'une \gls{fiche} lui appartenant
76-
\item[\textcolor{red}{\textbf{M}}] Changer l'état d'une \gls{fiche} lui appartenant (cf figure \ref{pic:stateDiagramForFiches} : pour éviter des dérives, seuls les états \textbf{DRAFT}, \textbf{PENDING} et \textbf{ARCHIVED} sont possibles pour ce rôle spécifique)
76+
\item[\textcolor{red}{\textbf{M}}] Changer l'état d'une \gls{fiche} lui appartenant (cf. figure \ref{pic:stateDiagramForFiches} : pour éviter des dérives, seuls les états \textbf{DRAFT}, \textbf{PENDING} et \textbf{ARCHIVED} sont possibles pour ce rôle spécifique)
7777
\item[\textcolor{red}{\textbf{M}}] Proposer un nouveau ou plusieurs mot(s) clé(s)
7878
\item[\textcolor{orange}{\textbf{S}}] Gérer des favoris
7979
\item[\textcolor{orange}{\textbf{S}}] Utiliser des favoris dans la recherche de \gls{fiche}s
@@ -86,18 +86,18 @@ \subsubsection*{Tout administrateur peut : }
8686
\item[\textcolor{red}{\textbf{M}}] Importer plusieurs \glspl{fiche} sur base d'un fichier JSON.
8787
Cette fonctionnalité comprend les fonctionnalités sous-jacentes suivantes :
8888
\begin{itemize}
89-
\item Ajouter éventuellement un état spécifique pour chacune des \glspl{fiche} à importer (cf figure \ref{pic:stateDiagramForFiches})
90-
\item Créer automatiquement les \glspl{tag} non existants dans le système, avec éventuellement un état de départ (cf figure \ref{pic:stateDiagramForTags})
89+
\item Ajouter éventuellement un état spécifique pour chacune des \glspl{fiche} à importer (cf. figure \ref{pic:stateDiagramForFiches})
90+
\item Créer automatiquement les \glspl{tag} non existants dans le système, avec éventuellement un état de départ (cf. figure \ref{pic:stateDiagramForTags})
9191
\item Créer automatiquement les \glspl{tagCat} non existantes dans le système
9292
\item Associer les \glspl{tag} à leurs \glspl{fiche} respectives.
9393
\end{itemize}
9494
\item[\textcolor{red}{\textbf{M}}] Exporter des \glspl{fiche} au format JSON
95-
\item[\textcolor{red}{\textbf{M}}] Proposer un nouveau ou plusieurs mot(s) clé(s), avec éventuellement un état spécifique pour chacun (cf figure \ref{pic:stateDiagramForTags})
95+
\item[\textcolor{red}{\textbf{M}}] Proposer un nouveau ou plusieurs mot(s) clé(s), avec éventuellement un état spécifique pour chacun (cf. figure \ref{pic:stateDiagramForTags})
9696
\item[\textcolor{red}{\textbf{M}}] Modifier un \gls{tag}
9797
\item[\textcolor{red}{\textbf{M}}] Modifier une \gls{tagCat}
98-
\item[\textcolor{red}{\textbf{M}}] Changer l'état d'un ou plusieurs mot(s) clé(s) (cf figure \ref{pic:stateDiagramForTags})
98+
\item[\textcolor{red}{\textbf{M}}] Changer l'état d'un ou plusieurs mot(s) clé(s) (cf. figure \ref{pic:stateDiagramForTags})
9999
\item[\textcolor{red}{\textbf{M}}] Modifier les informations d'une \gls{fiche}
100-
\item[\textcolor{red}{\textbf{M}}] Changer l'état d'une \gls{fiche} (cf figure \ref{pic:stateDiagramForFiches}: aucune restriction)
100+
\item[\textcolor{red}{\textbf{M}}] Changer l'état d'une \gls{fiche} (cf. figure \ref{pic:stateDiagramForFiches}: aucune restriction)
101101
\item[\textcolor{red}{\textbf{M}}] Créer ou trouver des \glspl{tagCat}
102102
\item[\textcolor{orange}{\textbf{S}}] Lister tous les utilisateurs de l'application (sans distinction)
103103
\end{itemize}
@@ -152,7 +152,24 @@ \subsection*{Recherche par \glspl{tag}}
152152
\item $\neg M3$
153153
\end{itemize}
154154

155-
Nous reviendrons d'ailleurs ultérieurement (cf section \ref{section:SearchTagImpl}, figure \ref{figure:rechercheBibliotheque}, ...) sur les façons dont nous avons mis en place cette réflexion dans l'implémentation de \texttt{SourceCode}.
155+
Dès lors, il est plus aisé d'identifier quelle(s) \gls{fiche}(s) corresponde(nt) à nos critères de recherche
156+
(à des fins de clarté, nous utiliserons le symbole \checkmark ici, mais également dans la table \ref{tab:fichesWithTagImpl}).
157+
158+
\begin{table}[H]
159+
\centering
160+
\begin{tabular}{|c|c|c|c|}
161+
\hline
162+
recherche / \gls{fiche} & F1 & F2 & F3 \\ \hline
163+
$M1 \lor M2$ & \checkmark & \checkmark & \\ \hline
164+
$M2 \land (\neg M1 \lor \neg M2)$ & & \checkmark & \\ \hline
165+
$\neg M3$ & \checkmark & & \checkmark \\ \hline
166+
\end{tabular}
167+
\caption{Solution théorique de la recherche par \glspl{tag}}
168+
\label{tab:fichesWithTagTh}
169+
\end{table}
170+
171+
Nous reviendrons d'ailleurs ultérieurement (cf. section \ref{section:SearchTagImpl}, figure \ref{figure:rechercheBibliotheque} ...) sur les façons dont nous avons mis en place cette réflexion dans l'implémentation de \texttt{SourceCode}.
172+
Vous pourrez noter, qu'en dépit de conventions d'écriture différentes (car inhérentes au contexte), les tables \ref{tab:fichesWithTagTh} et \ref{tab:fichesWithTagImpl} expriment les mêmes principes.
156173

157174
\pagebreak
158175
\subsection*{État d'une \gls{fiche}}
@@ -163,7 +180,8 @@ \subsection*{État d'une \gls{fiche}}
163180
\item Le manque d'évolutivité technique dans la gestion des \glspl{fiche}, que nous pouvons sans doute imputer à une analyse très restrictive. Conséquence du point précédent, cette lacune rend difficile l'ajout de nouvelles fonctionnalités telles que l'archivage numérique de ces ressources.
164181
\end{itemize}
165182

166-
C'est ainsi que nous avons décidé d'associer un état à chaque \gls{fiche}, permettant ainsi de distinguer la situation de chacune au cours de ses processus. Le diagramme UML à états ci-dessous représente ces états et les principales transitions entre états (pour ne pas surcharger celui-ci) :
183+
C'est ainsi que nous avons décidé d'associer un état à chaque \gls{fiche}, permettant ainsi de distinguer la situation de chacune au cours de ses processus (cf. annexe \ref{annexe:AnalyseBiblio} - table 4.1 : élément "state").
184+
Le diagramme UML à états ci-dessous représente ces états et les principales transitions entre états (pour ne pas surcharger celui-ci) :
167185

168186
% width=\textwidth,height=\textheight,keepaspectratio
169187
\begin{figure}[H]
@@ -178,13 +196,17 @@ \subsection*{État d'un \gls{tag}}
178196
Une des questions annexes au sujet des \glspl{fiche} est la gestion des \glspl{tag}. En effet, les \glspl{tag} étant des éléments indispensables d'une \gls{fiche} de qualité pour un meilleur référencement, il convient d'établir une stratégie précise pour exploiter au mieux ceux-ci. \\
179197

180198
Durant notre analyse, nous avons pu constater deux écoles de pensée bien distinctes (comparable à ce qui existe en économie) :
199+
% Avec mon rajout de texte, il vaut mieux sauter l'itemize à la page suivante libre
200+
\pagebreak
181201
\begin{itemize}
182202
\item laissez-faire : Il s'agit de donner une liberté totale en matière de marquage (en utilisant aussi bien des \glspl{tag} existants que non). Bien que cette approche a le mérite de faire émerger de nouveaux \glspl{tag} par les contributions d'utilisateurs, cela restreint les possibilités de modération.
183203
\item l'interventionnisme : Il s'agit de restreindre le choix en matière de marquage (exclusivement des \glspl{tag} existants). Bien que cette approche rend la modération facile, cela restreint les possibilités de s'adapter à une réalité changeante.
184204
\end{itemize}
185205

186206
Nous avons remarqué qu'aucune de ces deux possibilités ne se distinguait suffisamment de l'autre pour répondre de manière optimale à la problématique.
187-
C'est pourquoi nous avons fait le choix d'une 3e voie, qui se situe donc entre ces 2 manières de penser. Tout comme les \glspl{fiche}, il s'agit d'associer un état à chaque \gls{tag} pour distinguer sa situation propre. Le diagramme UML à états ci-dessous représente ces états et les principales transitions entre états (pour ne pas surcharger celui-ci) :
207+
C'est pourquoi nous avons fait le choix d'une 3e voie, qui se situe donc entre ces 2 manières de penser.
208+
Tout comme les \glspl{fiche}, il s'agit d'associer un état à chaque \gls{tag} pour distinguer sa situation propre (cf. annexe \ref{annexe:AnalyseBiblio} - table 4.2 : élément "state").
209+
Le diagramme UML à états ci-dessous représente ces états et les principales transitions entre états (pour ne pas surcharger celui-ci) :
188210

189211
% width=\textwidth,height=\textheight,keepaspectratio
190212
\begin{figure}[H]
@@ -205,9 +227,6 @@ \subsection*{Maintenabilité aisée des données}
205227

206228
\section{Analyse non fonctionnelle}
207229
\label{section:AnalyseNonFonctionnelle}
208-
% On explique ici (design, ergonomie)
209-
% Donner les critères d'ergonomie
210-
% Pas forcément des tonnes de page : à priori 3-4 max devraient suffire
211230

212231
\subsection*{Sécurité}
213232

@@ -228,7 +247,7 @@ \subsection*{Maintenance et évolution}
228247

229248
\subsection*{Ergonomie}
230249

231-
Une application web à destination d'un public varié et conséquent se doit d'avoir une interface simple et efficace pour ne pas perdre ses utilisateurs et gagner en popularité. On pourrait considérer que le design d'une application est subjectif, mais un point à ne sûrement pas négliger se situe autour de l'ergonomie. La question à se poser pour chaque interface est alors de savoir comment disposer les éléments afin de rendre la navigation la plus claire possible. Nous nous sommes donc concentrés sur cette problématique en élaborant un patchwork que vous pouvez consulter à la fin de la section \ref{section:problem}\\
250+
Une application web à destination d'un public varié et conséquent se doit d'avoir une interface simple et efficace pour ne pas perdre ses utilisateurs et gagner en popularité. On pourrait considérer que le design d'une application est subjectif, mais un point à ne sûrement pas négliger se situe autour de l'ergonomie. La question à se poser pour chaque interface est alors de savoir comment disposer les éléments afin de rendre la navigation la plus claire possible. Nous nous sommes donc concentrés sur cette problématique en élaborant un patchwork que vous pouvez consulter à la fin de la section \ref{section:problem}.\\
232251

233252
Au fur et à mesure de nos meetings avec le \textit{Pr. Kim Mens} et \textit{Olivier Goletti}, les conseils et recommandations ont souvent été pris en compte pour améliorer l'expérience utilisateur. Par la même occasion, nous avons fait tester l'application à différents utilisateurs (amis, designer) tout au long de la phase de développement afin de nous faire part de leur ressenti.
234253

@@ -238,7 +257,7 @@ \subsection*{Ergonomie}
238257

239258
Une première contrainte évidente est indubitablement le temps. Nous avons consacré une année académique entière sur ce mémoire, mais ce n'est certainement pas assez pour rendre mature \texttt{SourceCode}.\\
240259

241-
Pour la partie \gls{frontend}, nous avons décidé de nous consacrer uniquement sur le design et l'ergonomie d'un desktop ayant une largeur minimale de 1550 pixels. Pour l'instant, nous avons recommandé aux utilisateurs de l'application ayant une petite résolution de modifier l'échelle du navigateur internet afin d'avoir une expérience optimale malgré notre contrainte. Créer les autres déclinaisons pour petits desktop, tablettes et smartphones ne nous auraient pas permis d'intégrer toutes les fonctionnalités qu'on avait prévu d'ajouter sur la plateforme, car cela aurait pris trop de temps (modifier la disposition des éléments, créer de nouveaux éléments, changer le layout, ...). \\
260+
Pour la partie \gls{frontend}, nous avons décidé de nous consacrer uniquement sur le design et l'ergonomie d'un desktop ayant une largeur minimale de 1550 pixels. Pour l'instant, nous avons recommandé aux utilisateurs de l'application ayant une petite résolution de modifier l'échelle du navigateur internet afin d'avoir une expérience optimale malgré notre contrainte. Créer les autres déclinaisons pour petits desktop, tablettes et smartphones ne nous auraient pas permis d'intégrer toutes les fonctionnalités qu'on avait prévu d'ajouter sur la plateforme, car cela aurait pris trop de temps (modifier la disposition des éléments, créer de nouveaux éléments, changer le layout ...). \\
242261

243262
Pour la partie \gls{backend}, il nous a été imposé de travailler avec une base de données relationnelle\footnote{
244263
\href{https://fr.wikipedia.org/wiki/Base\_de\_donn\%C3\%A9es\_relationnelle}

sections/chapters/solution/api/index.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ \subsubsection{\Glspl{middleware}}
8686

8787
Pour rappel (cf. section \ref{section:choixTechnologiques}), Express a été le "squelette" sur lequel nous avons construit notre application.
8888
Une de ses particularités est l'usage de \glspl{middleware}\footnote{
89-
Par exemple, ceux en section \ref{section:choixTechnologiques} : Passport.js et OpenAPI-Enforcer
89+
Par exemple, aux \glspl{middleware} en section \ref{section:choixTechnologiques} : Passport.js et OpenAPI-Enforcer
9090
} dont nous pouvons expliquer le fonctionnement général par le biais de cette illustration :
9191

9292
\begin{figure}[H]
@@ -99,7 +99,7 @@ \subsubsection{\Glspl{middleware}}
9999
\begin{itemize}[nosep,noitemsep,topsep=0pt,partopsep=0pt,after=\vspace*{2pt}]
100100
\item La requête est interceptée par le serveur.
101101
\item La requête traverse successivement chaque "couche" (\gls{middleware} 1, 2, ...) jusqu'à atteindre le cœur de l'application,
102-
à condition qu'il n'y ait pas eu d'erreurs lors du parcours.
102+
à condition qu'il n'y ait pas eu d'erreurs avant.
103103
\item Quelle que soit la situation, une réponse est toujours envoyée au client de la requête.
104104
\end{itemize}
105105

0 commit comments

Comments
 (0)