AlmaGTD est un logiciel de gestion de tâches personnelles développé par des étudiants du Master Alma en 2010.
Il est constitué d'un module serveur (GTDServer) et de plusieurs modules client.
\ No newline at end of file
Il est constitué d'un module serveur (GTDServer) et de plusieurs modules client (Agravain, Gauvain, Lancelot et Mordred).
Dans ce projet, vous allez travailler seulement sur le module serveur.
## Organisation
Ce travail sera réalisé par des groupes de 2 à 4 étudiants.
Quelques règles de mise en œuvre et gestion du projet:
1. Avant de cloner le projet, créez un "Fork" du projet sur le serveur.
Cliquez sur l'icône "Fork" de la page du projet ou alors sur le lien suivant: https://gitlab.univ-nantes.fr/sunye-g/alma-gtd/forks/new
2. Il ne doit y avoir qu'un seul "fork" par groupe d'étudiants.
2. Avant toute modification, vous devez créer un "problème" (Issue) sur votre projet. Et après la modification, vous devez faire une validation (Commit) en référence à ce problème.
3. Le cycle de travail sera donc le suivant: Analyse -> Création d'une _issue_ sur le serveur -> Modification des sources -> Validation.
4. Plusieurs outils d'analyse automatique du code sont déjà présents dans le projet: PMD, Checkstyle et Findbugs. Vous pouvez obtenir leurs rapports directement avec Maven:
```sh
mvn site
```
5. Faites le tri des informations: ces outils détectent beaucoup d'erreurs et vous ne pourrez pas toutes les résoudre. Concentrez vous sur les plus importantes.
## Travail à réaliser
- Mettez à jour les dépendances: certains artefacts sont anciens et doivent être mis à jour. Assurez-vous que la mise à jour est possible sans trop d'effort. Si c'est possible, faites-le et fermez le problème. Sinon, laissez-le ouvert.
- Détectez et corrigez (lorsque possible) les _code smells_. Si la correction n'est pas possible, laissez le problème ouvert. Quelques exemples:
- Méthode trop longue
- Classe trop grande
- Groupes répétitifs de paramètres
- Code dupliqué
- Assurez-vous que les conventions de codage sont respectées
- Créez des tests unitaires pour la classe `ReactorRMI`.
- Éliminez le code dupliqué des classes _commande_: `fr.alma.gtd.commande.Commande*` détecté par PMD.
- Éliminez tous les bugs détectés par FindBugs dont la priorité est "High".
## Évaluation
- Pour être évalué, tout étudiant doit participer activement du projet, en réalisant des "commits", en ajoutant des lignes de code, en ouvrant des "issues" sur le serveur GitLab.
- L'évaluation portera sur la qualité des modifications: code, test unitaires, commentaires, etc.
## Travail à rendre
- Le travail sera rendu par un "Pull request" sur GitLab. Il doit contenir:
- Un journal des modification (Changelog), contenant des résumés succincts des modifications, accompagnés de l'identifiant de l'auteur et de l'identifiant du problème (issue).
- L'ensemble de modifications (commits) réalisées.
## Bonus
Pour les _Hackers_ qui s'ennuient après avoir fini leur travail:
- Utilisez [Docker](https://www.docker.com) pour créer un micro-service contenant le serveur GTD JBoss.
Cela permettra le déploiement du serveur partout, dans la plus grande simplicité.
- Modifiez le design de la classe `ReactorRMI`. Cette classe créé un nouveau processus léger à chaque appel de méthode.
Remplacez la création des processus par l'ajout de l'appel à une queue bloquante et créez un seul processus léger pour traiter les éléments de cette queue.