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

Add project issues

parent 708b5fb5
.Issues Une grande partie des problèmes à résoudre durant le projet sont listés ici.
* Passer de Maven à Gradle Ils ne sont triés ni par niveau de difficulté, ni par priorité :
* Créer un composant Apache Thrift c'est à vous de définir tout cela !
* 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. .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 { ...@@ -98,12 +98,12 @@ enum Frequency {
} }
Project -> "subprojects [*]" Project Project -> "subprojects [*]" Project
Project *--> "[*]" Task Project "[1]" *-- "[*]" Task
Project "[*]" -- "creator [1]" User Project "[*]" --> "creator [1]" User
Project -- "participants [*]" User Project -- "participants [*]" User
User -> "*" Idea User -> "*" Idea
Task *--> "[*]" Tag Task *--> "[*]" Tag
Task --> "[1]" Context Task "[*]" -- "[1]" Context
Task -> "creator [1]" User : "\t\t\t" Task -> "creator [1]" User : "\t\t\t"
---- ----
......
Supports Markdown
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