Commit 0fbb0b4f authored by sunye's avatar sunye
Browse files

Add project issues

parent 708b5fb5
.Issues
* Passer de Maven à Gradle
* Créer un composant Apache Thrift
* Séparer l'interface du composant en plusieurs pour respecter la bonne pratique "Interface Segregation"
* Traduire le code en anglais
* Utiliser les modules pour rendre les classes internes inaccessibles.
Une grande partie des problèmes à résoudre durant le projet sont listés ici.
Ils ne sont triés ni par niveau de difficulté, ni par priorité :
c'est à vous de définir tout cela !
.Module Core
* Compléter l'interface `GTDServer`.
* Décomposer l'interface `GTDServer` en plusieurs pour respecter la bonne pratique "Ségrégation d'interfaces"
.Module Main
. Ajoutez une classe _Façade_ au module, qui servira de point d'entrée, permettant d'accéder (au moins) aux projets et contextes existants
. La classe _Façade_ doit aussi servir de _Fabrique_ des classes du projet
. La classe _Façade_
. Vérifiez la bonne mise en oeuvre des associations bidirectionnelles suivantes :
.. `Projet -- User`
.. `Projet -- Task`
.. `Task -- Context`
. Vérifier la bonne mise en oeuvre des associations suivantes:
.. `Task -- Tag`
.. `Task -- User`
.. `User -- Idea`
.. `Project -- Project`
.. `Projet -- User`
.Module Thrift
. Complétez le fichier `gtd-server-service.thrift` pour que le service `GTDServerService` propose les mêmes méthodes que l'interface `GTDSrver`
.Module RMI
. Déplacez ici tout le code en relation avec RMI, principalement la classe `ReactorRMI`
. Améliorez la classe `ReactorRMI` pour la faire utiliser une `BlockingQueue`
.Module Persistent
. Assurez-vous qu'après la modification des autres modules, il est toujours possible de compiler ce module.
.Module GUI
. Assurez-vous qu'après la modification des autres modules, il est toujours possible de compiler ce module.
.Projet
. Traduisez le code en anglais
. Améliorez l'encapsulation des objets: tous les champs des classes doivent être privés !
. Modifiez le code pour respecter les conventions de codage Java.
. Ajoutez des tests unitaires pour bien vérifier la mise en oeuvre des méthodes.
. Utilisez la _programmation défensive_ pour vérifier les arguments des méthodes publiques.
. Utilisez la _programmation assertive_ pour détecter les _erreurs internes_
(comportements inattendus) des méthodes privées.
. Utilisez des *exceptions* pour traiter les _erreurs clients_ (comportements attendus).
. Pour gérer les dates utilisez le paquetage `java.time`, disponible depuis Java 8 et qui fournit
des outils très puissants pour la gestion des dates.
.Bonus
. Migrez le projet de Maven à Gradle
. Utilisez les modules pour rendre les classes internes inaccessibles.
......@@ -98,12 +98,12 @@ enum Frequency {
}
Project -> "subprojects [*]" Project
Project *--> "[*]" Task
Project "[*]" -- "creator [1]" User
Project "[1]" *-- "[*]" Task
Project "[*]" --> "creator [1]" User
Project -- "participants [*]" User
User -> "*" Idea
Task *--> "[*]" Tag
Task --> "[1]" Context
Task "[*]" -- "[1]" Context
Task -> "creator [1]" User : "\t\t\t"
----
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment