You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: glossary.tex
+31Lines changed: 31 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,7 @@
46
46
\newglossaryentry{frontend}
47
47
{
48
48
name={Frontend},
49
+
text={frontend},
49
50
description={
50
51
Il s'agit de la partie "émergée" de l'application (comparable à un iceberg). C'est l'interface graphique avec laquelle les utilisateurs finaux interagissent.
51
52
}
@@ -54,6 +55,7 @@
54
55
\newglossaryentry{backend}
55
56
{
56
57
name={Backend},
58
+
text={backend},
57
59
description={
58
60
Il s'agit de la partie "immergée" de l'application (comparable à un iceberg) : notre \Gls{api}.
59
61
}
@@ -172,4 +174,33 @@
172
174
description={
173
175
Ce terme désigne, comme expliqué par Wikipédia\cite{envvarDef}, "une variables dynamique utilisée par les différents processus d’un système d’exploitation".
174
176
}
177
+
}
178
+
179
+
\newglossaryentry{deploiement}
180
+
{
181
+
name={Déploiement},
182
+
text={déploiement},
183
+
description={
184
+
Ensemble d'activités permettant la mise en service du logiciel afin qu'il soit pret à être utilisé.
185
+
}
186
+
}
187
+
188
+
\newglossaryentry{maintenance}
189
+
{
190
+
name={Maintenance},
191
+
text={maintenance},
192
+
description={
193
+
Ensemble d'activités permettant d'assurer le bon fonctionnement du logiciel.
194
+
}
195
+
}
196
+
197
+
\newglossaryentry{ci_cd}
198
+
{
199
+
name={CI/CD},
200
+
description={
201
+
Abréviation anglophone pour "Continuous integration / Continuous Delivery", ce qui peut se traduire comme intégration continue / \gls{deploiement} continu.
202
+
Il s'agit donc de l'association de ces 2 concepts.
203
+
L'intégration continue consistant à vérifier que chaque modification du code source n'engendre pas de défauts, notamment par l'usage de tests.
204
+
Le \gls{deploiement} continu consistant à réaliser le \gls{deploiement} à chaque modification du code source, par le billet d'un système automatisé.
Copy file name to clipboardExpand all lines: sections/chapters/analyseCritique/index.tex
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -194,7 +194,7 @@ \subsection{Code coverage}
194
194
195
195
Avec 48 tests, nous avons pu atteindre une couverture maximale (100\%), car chaque méthode a été testée extensivement avec le \textit{branch coverage}.\\
196
196
197
-
Vous pouvez d'ailleurs consulter les résultats depuis \url{https://codecov.io/gh/SourceCodeOER/sourcecode_api/list/master/}.
197
+
Vous pouvez d'ailleurs consulter les résultats depuis \url{https://codecov.io/gh/SourceCodeOER/sourcecode_api/branch/master}.
Copy file name to clipboardExpand all lines: sections/chapters/approche/index.tex
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -130,8 +130,8 @@ \subsection*{Conception et implémentation}
130
130
Contrairement à l'analyse, la conception et l'implémentation ont été réalisées en fonction du domaine spécifique de chacun :
131
131
132
132
\begin{description}
133
-
\item[Jacques] : responsable du \Gls{backend} et du \Gls{cli} : base de données, extraction et nettoyage des données, gestion de la performance et la sécurité.
134
-
\item[Alexandre] : responsable du \Gls{frontend} : prototypage de l'application, interface graphique.
133
+
\item[Jacques] : responsable du \gls{backend} et du \Gls{cli} : base de données, extraction et nettoyage des données, gestion de la performance et la sécurité.
134
+
\item[Alexandre] : responsable du \gls{frontend} : prototypage de l'application, interface graphique.
135
135
\end{description}
136
136
137
137
Le principal problème avec cette approche est la "compartimentation" qui favorise une connaissance limitée de la totalité des technologies utilisées. Ceci risque de provoquer un arrêt qui, temporairement ou non, nuit à la bonne réalisation de nos objectifs dans les délais fixés si un membre de notre équipe se retrouve dans l'incapacité sa part de travail pour l'une ou l'autre raison. \\
Pour la générer en local, cela se fait via la commande :
34
34
npx redoc-cli bundle api.yml -o docs/index.html
35
35
} (cf. figure \ref{fig:exampleDoc} pour un exemple)
36
36
\item upload / files : resp. lieu de stockage des fichiers importés / stockés
37
-
\item .github : nos scripts d'automatisation (cf. section TODO)
37
+
\item .github : nos scripts d'automatisation de type Github Actions (cf. section \ref{section:GithubActions})
38
38
\item bin : du code n'entrant dans aucun autre dossier
39
39
\end{itemize}
40
40
@@ -46,7 +46,7 @@ \subsubsection{Paramétrisation de l'\Gls{api}}
46
46
Comme révélé en section \ref{section:AnalyseNonFonctionnelle}, il convient d'accorder un certain contrôle aux utilisateurs finaux.
47
47
Une manière de configurer une telle application est d'utiliser des \glspl{envvar},
48
48
qui permettent, contrairement à d'autres approches (comme les fichiers de configuration \textbf{JSON}, \textbf{YAML}, ...),
49
-
de changer de valeur directement, sans éteindre/rédémarrer l'application par exemple. \\
49
+
de changer de valeur directement, sans éteindre/redémarrer l'application par exemple. \\
50
50
51
51
Nous avons accordé les possibilités suivantes (la liste détaillée des \glspl{envvar} est disponible dans le fichier README.MD) :
52
52
@@ -84,7 +84,7 @@ \subsubsection{Documentation de l'\Gls{api}}
84
84
\pagebreak
85
85
\subsubsection{\Glspl{middleware}}
86
86
87
-
Pour rappel (cf section \ref{section:choixTechnologiques}), Express a été le "squelette" sur lequel nous avons construit notre application.
87
+
Pour rappel (cf. section \ref{section:choixTechnologiques}), Express a été le "squelette" sur lequel nous avons construit notre application.
88
88
Une de ses particularités est l'usage de \glspl{middleware}\footnote{
89
89
Par exemple, ceux en section \ref{section:choixTechnologiques} : Passport.js et OpenAPI-enforcer
90
90
} dont nous pouvons expliquer le fonctionnement général par le biais de cette illustration :
@@ -145,7 +145,113 @@ \subsubsection{Recherche par \glspl{tag}}
145
145
\section{Divers}
146
146
\label{chapter:solutionDivers}
147
147
148
+
Dans cette section, nous aborderons quelques éléments secondaires de \texttt{SourceCode}.
149
+
En effet, en dehors du développement, il existe bien d'autres facettes importantes du cycle de vie\footnote{
150
+
En anglais, ce terme est connu sous le nom de "software lifecycle". (\url{https://web.maths.unsw.edu.au/~lafaye/CCM/genie-logiciel/cycle-de-vie.htm})
151
+
} d'un logiciel : le \gls{deploiement} / la \gls{maintenance} ...
152
+
148
153
\subsection{\texorpdfstring{\Gls{cli}}{CLI}}
154
+
155
+
Comme nous l'évoquions précédemment (cf. annexe \ref{annexe:AnalyseBiblio}), il convient de disposer d'outils pour indexer / mettre en ligne un nombre conséquent de
156
+
\glspl{resinfo}, provenant de diverses sources, en un minimum de temps. C'est pour répondre à ce besoin que nous avons développé un \Gls{cli}, sur base du framework Yargs
Comme le montre le point d'entrée du \Gls{cli}, à savoir "index.js" (que nous avons inclus dans l'annexe \ref{code:mainYargs}), il sera aisé d'ajouter de nouvelles commandes à l'avenir.
\caption{\Gls{cli} - inventaire des commandes disponibles}
165
+
\label{fig:cliCommands}
166
+
\end{figure}
167
+
168
+
Chaque commande disposant naturellement de ses propres règles en matière d'arguments et/ou d'options.
169
+
Fort heureusement, Yargs possède un éventail de fonctionnalités très diversifié, que nous allons illustrer un échantillon représentatif sur la commande "crawler" (cf. annexe \ref{code:crawlerYargs}) :
\item La possibilité d'indiquer si une option est nécessaire ou non (ligne 28)
172
+
\item La possibilité de restreindre un choix uniquement à certaines valeurs (ligne 16)
173
+
\item La possibilité d'identifier quels options et arguments ont été donnés à la commande (lignes 59-62)
174
+
\item La possibilité de charger un fichier de configuration (lignes 39-40), permettant ainsi de ne pas devoir réécrire l'entièreté de la ligne de commande pour l'invoquer.
175
+
\end{itemize}
176
+
Veuillez noter que nous avons appliqué le "principe ouvert/fermé"\footnote{
177
+
La lettre \textbf{O} dans l'anagramme \textbf{SOLID} (\url{https://fr.wikipedia.org/wiki/SOLID\_(informatique)}), qui présente quelques principes pour la programmation orientée objet
178
+
} dans cette commande : en effet, il est possible d'utiliser des stratégies d'indexation déjà implémentées ou non (ex: "inginious-git" qui s'occupe de \glspl{resinfo} au format INGInious\footnote{
179
+
\url{https://inginious.info.ucl.ac.be/}
180
+
}, disponibles via Git\footnote{
181
+
\url{https://git-scm.com/}
182
+
}), tout en conservant le même comportement, quelque soit la situation.
183
+
184
+
Par respect de la norme que nous avons crée (cf. annexe \ref{annexe:AnalyseBiblio}), nous avons également adopté le \textbf{JSON} et les mêmes conventions d'écriture
185
+
pour les fichiers d'entrée / de sortie des différentes commandes, à quelques exceptions près que nous avons détaillé dans le fichier README.MD.
186
+
187
+
\pagebreak
149
188
\subsection{Docker}
189
+
\label{section:docker}
190
+
191
+
Comme expliqué par son site officiel\footnote{
192
+
\url{https://www.docker.com/why-docker}
193
+
}, il s'agit d'une plateforme de conteneurisation permettant de paqueter une application.
194
+
Dans un conteneur sont contenus une application ainsi que tous les éléments dont elle a besoin pour fonctionner (code source, \glspl{library}, ...).
195
+
Le \gls{deploiement} pouvant être réalisé sur n'importe quelle machine, tout en restant plus léger que des alternatives existantes
196
+
\footnote{
197
+
Des explications sont disponibles sur \url{https://www.docker.com/resources/what-container}
Nous avons ainsi découpé notre application en 3 images\footnote{
212
+
Elles sont disponibles sur Dockerhub (\url{https://hub.docker.com/})
213
+
et générées sur base de fichiers Dockerfile, présents dans chaque repository Github.
214
+
Notons enfin la présence dans le repository miscellaneous de fichiers docker-compose-***.yml pour déployer automatiquement l'entièreté de \texttt{SourceCode} avec Docker Compose, en fonction de l'environnement souhaité (plus d'informations dans le README.MD).
\item sourcecode-front : le \gls{frontend} de \texttt{SourceCode}
219
+
\item sourcecode\_api : le \gls{backend} de \texttt{SourceCode}
220
+
\item sourcecode-postgres : une base de données en Postgresql, contenant des données extraites par le \Gls{cli}, pour la démonstration de notre solution (cf. section \ref{section:validation})
Vous avez peut-être noté la présence d'un dossier \textit{.github} dans chacun des repositories composant notre solution.
235
+
Pour rappel (cf. section \ref{chapter:api}), ce dossier contient des scripts permettant d'automatiser un ensemble de tâches récurrentes, par le biais de Github Actions.
236
+
Comme expliqué par Github\footnote{
237
+
\url{https://github.com/features/actions}
238
+
}, Github Actions est une fonctionnalité permettant d'automatiser nos workflows\footnote{
239
+
Si ce terme vous êtes inconnu, nous vous invitons à le découvrir sur \url{https://fr.wikipedia.org/wiki/Workflow}
240
+
}
241
+
directement sur base du code hébergé chez Github (dont notamment du \gls{ci_cd}).
242
+
Ceci nous permettant de maintenir constantamment un niveau de qualité, via les quelques workflows que nous avons conçus :
0 commit comments