Menu

Guide développeur

Manon Caroy augustin borne Jacques Mironneau

Guide développeur

Nom d'équipe: Team4Software
Auteurs: Manon Caroy, Augustin Borne, Jacques Mironneau
Licences: MIT

I - Architecture du système

L'application est découpée en trois fichiers différents :
tea.js, Tweet.js et TweetParser.js.

Architecture des fichiers

1. Fichier tea.js

- Gère les entrées utilisateurs en ligne de commande
- Appelle la fonction de parse pour générer la liste de tweets à partir du/des fichier(s)
- Effectue le traitement des tweets en fonction de la commande
- Génère le rendu (graphique ou texte) des commandes

2. Fichier Tweet.js

- Décrit les objets tweets
- Fait des comparaisons de base (axiomes des spécifications algébriques)

3. Fichier TweetParser.js

- Récupère les données depuis un fichier
- Stocke chaque tweet dans un tableau d'objets Tweets (Tweet.js)

Ajouter une commande

Nous allons ajouter un commande affichant "hello world".

1. Créer une commande "Hello World"

Ajouter un .command avec le nom de la commande et la description de celle-ci
On peut aussi ajouter un alias avec .alias
On peut ajouter les arguments avec les commandes .argument et .option
Exemple :

.command('helloWorld','Afficher hello world en console')
.alias('hw')
.argument('<nom>',"Nom de l'utilisateur qui utilise la commande")
.option('-l, --langue <langue>', "option qui permet d'afficher la langue de l'utilisateur")

2. Ajouter un comportement

Pour ajouter un comportement ou une action à la commande créée, il suffit de chaîner la fonction .action().
Dans cette fonction on peut spécifier quels attributs on veut utiliser puis ajouter une fonction de callback afin d'ajouter un comportement concret.

Exemple :

    .command('helloWorld', 'Afficher hello world en console')
    // Arguments, options...
    ...
    .action(({args, options, logger}) => {

        logger.info(args);
        logger.info(options);

        logger.info('Bonjour Monde et bonjour à toi ' + args.nom);
        if (options.langue)
        {
            logger.info('Ah mais vous parlez ' + options.langue + ' !');
        }
        // Ajouter le code ici
    }

II - Pistes d’évolution

Séparer les fichiers en différents modules

La plus grande partie du programme est dans le fichier tea.js. Séparer le fichier en plusieurs modules permettra de rendre le code plus facilement maintenable. Pour cela, le logiciel pourra par exemple contenir un module pour afficher les graphiques, un module d'ouverture et gestion de fichier, un module de gestion de collection de tweet.

Ajouter des tests unitaires

Il n'y a aucun test unitaire pour sécuriser le logiciel. Pour cela il faudrait ajouter des tests unitaires pour augmenter la qualité du logiciel en le sécurisant d'éventuels bugs apparaissant lors de l'évolution et maintenance

Possibilité d'avoir plusieurs critères de même type

Dans les critères, il n'est actuellement pas possible de faire une recherche sur deux hashtags ou deux noms d'auteurs.
Il faudrait ajouter la possibilité de prendre en compte plusieurs auteurs et plusieurs hashtags lors de l'utilisation de la commande "criteres". Cela permettrait de combiner des filtres pour affiner la recherche.

Utiliser le score des spécifications algébriques pour le classement des auteurs

Le tri se fait actuellement sur la base des spécifications détaillées sans prendre en compte les spécifications algébriques. Pour respecter les spécifications algébriques, il faut introduire une pondération en fonction des informations présentes dans la description des auteurs. Cela permettrait d'afficher les auteurs qui n'ont pas rempli tous les champs.

Faire un diagramme avec la proportion de tweets par pays/region

On ne peut actuellment pas trier par pays ou par régions, à part pour les USA. Il faudrait introduire un fonction pour générer des camemberts avec la proportion de tweets par pays/régions comme spécifié dans le cahier des charges.

III - Exemple de nouvelle fonctionnalité

Pour améliorer le système et ajouter de nouvelles fonctionnalités, il serait possible de :
- créer une interface graphique pour utiliser les commandes depuis un navigateur ou une application de bureau
- analyser le contenu des tweets (enlever les tweets haineux, rechercher un type de contenu...)
- trier les tweets pour n'avoir que les auteurs certifiés
- classer les tweets par nombre de like
- récupérer les documents et média contenus dans les tweets (vidéos, musique, images, pdf...)