Projet : Barrage par AB & CJ

Spécification de l'outil de capture : fait-tableau.sh

L’exploration étant maintenant terminée, il va falloir créer l’outil qui permettra de capturer, d’agréger et matérialiser une partie de l’inter-réseaunalisation du mot barrage.

Analyse fonctionnelle

La seconde phase consiste donc à écrire un programme bash : Bourn Again Shell. Les spécifications minimales de ce programme sont telles qu'il doit :

Schéma de l'analyse fonctionnelle

Le schéma ci-dessous représente cette analyse fonctionnelle.

Schéma de l'analyse
fonctionnelle

Commentaire sur la schématisation

Ce schéma montre plusieurs choses qui ne relèvent pas du même niveau conceptuel mais leur présence permet de synthétiser l'ensemble du système. On peut relever 3 niveaux conceptuels représentés par :

Ce schéma ne montre pas l'utilisateur du système, pourtant la présence de celui-ci est nécessaire pour exécuter le programme, et par un moyen ou un autre indiquer quel fichier d'URLs doit être utilisé par le programme. Savoir comment l'utilisateur indique le fichier à utiliser est un problème relevant plus de la conception que de l'analyse.

Demander qu'un système informatique puisse être utilisé par des handicapés est une spécification relevant de l'analyse des besoins utilisateurs. En revanche savoir que le système informatique utilisera des technologies TextToSpeach relève en principe de la conception du système mais en pratique relève bien souvent des décideurs détenteurs du cordon de la bourse.

Algorithme de l'outil de capture

La réalisation va se faire en plusieurs étapes. On va partir du schéma précédent pour construire le schéma de l'algorithme. Ce schéma algorithmique n'est pas un algorithme détaillé, il reste assez général dont le but est d'aider à structurer le programme. La réalisation pratique est expliquée dans la partie programmation.

Définition de l'algorithme

On va présenter ici l'algorithme de fait-tableau.sh tel qu'il sera par la suite programmé par Christian. Il ne sait traiter qu'un seul fichier d'URL à la fois et produit un seul tableau avec un titre. Notre outil fonctionne en mode interactif, en demandant des informations à l'utilisateur si nécessaire.

La réunion de plusieurs tableaux, le fractionnement en plusieurs pages sont laissés à des scripts différents, en faisant cela on reste dans la philosophie des scripts shell UNIX qui est : « Petit script qui fait une chose, la fait bien, et qui est inter-opérable avec d'autres scripts ». Pour un exemple de programme traitant plusieurs fichiers URLs on peut se reporter au programme d'Arianna ou au programme fusionné d'Arianna et Christan qui justement utilise fait-tableau.sh.

Schéma de l'algorithme

Explication de l'algorithme

Lecture voir Réalisation

Les trois premières opérations sont trois opérations de lecture/ affectation. En effet le script a besoin d'un fichier contenant une liste d'URLs, un titre à donner au tableau selon l'utilisation du mot qui est faite. Enfin le mot lui-même. On pourrait directement spécifier ce mot en l'occurence barrage directement dans le script mais il vaut mieux généraliser notre outil. On a donc à ce stade 3 variables initialisés : $ficUrl, $titre, $MOT.

Tester le fichier d'URL voir Réalisation

Ensuite il faut tester si le fichier d'URL ($ficUrl) existe. Ce fichier doit se trouver dans le répertoire : LISTES-URL. Le nom de fichier ne doit donc pas contenir de nom de répertoire. Cependant on va aussi tester s'il existe dans le répertoire courant car l'utilisateur veut peut-être créer tout une arborescence de projet avec ce fichier. Si le fichier n'existe pas on peut prévenir l'utilisateur de son éventuelle erreur de saisie.

Test et création de l'arborescence voir Réalisation

Logiquement le programme fait-tableau.sh est appelé depuis un répertoire courant dont les sous-répertoires constituent l'arborescence suivantes :

Si cette arborescence n'existe pas, alors le programme va la créer, et déplacer le fichier $ficUrl si nécessaire. On va aussi créer dans chaque sous-répertoire un répertoire qui contiendra les fichiers pour ce fichier d'URL précis. Le nom de ce sous-répertoire sera constitué de la concaténation du radical du nom de fichier d'URLs avec la chaîne suivante "_rep". Ex : si $ficUrl vaut faire_barrage.html, alors ce sous-répertoire aura pour valeur faire_barrage_rep.

Ensuite il faut concaténer ce sous-répertoire avec les sous-répertoires de l'arborescence afin d'obtenir des chemins complets à partir du répertoire courant, ces chemins seront concaténés au nom de fichier dynamique pour spécifier les fichiers destinations résultat de wget, lynx, egrep et tableau.html. Voici un exemple basé sur les valeurs précédentes :

$repPageAsp=PAGES_ASPIREES/faire_barrage_rep. 
# La variable $pageHtml vaudra JOURNAL/faire_barrage_rep/faire_barrage.html

La page html existe déjà que faire ? voir Réalisation

La prochaine étape est un travail optionnel, non demandé, qui consiste à tester si le fichier tableau URL existe déjà. Si cette page existe déjà cela veut dire que fait-tableau.sh a déjà été exécuté avec un fichier d'URL portant le même nom. Il est donc judicieux de demander à l'utilisateur ce qu'il veut faire.

Si le fichier existe, on propose trois options à l'utilisateur :

Le seul cas problématique est le cas de la concaténation. Cette opération ne sera pas précisée ici mais son utilisation est visible dans fait-tableau.sh et sa définition dans functions.sh.

Si le fichier n'existe pas, alors on va écrire le début de la page html et initialiser $nomPage à 1.

Itération du traitement sur chaque URL du fichier voir Réalisation

Ensuite il faut faire une itération sur chaque URL du fichier. L'ensemble du traitement est simple, il suffit d'appeler les différentes commandes wget,lynx et egrep avec les bonnes options, mais en prenant la précaution de tester si l'aspiration par wget a réussi afin d'éviter une succession d'erreur des autres traitements. N'oublions pas, comme montré sur le schéma d'analyse que la sortie des traitements constitue l'entrée des autres traitements.

Pour chaque page aspirée, il faudra créer une entrée dans le tableau.

Quand il n'y a plus d'URL dans le fichier, il ne reste plus qu'a écrire la fin de la page html, c'est à dire fermer les balises du tableau, du corps et de la page.

Maintenant qu'on a une idée précise du script à réaliser on va pouvoir l'écrire.

Menu