Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
naomod
Software Construction and Evolution (SCE)
GTD Server
Commits
0fbb0b4f
Commit
0fbb0b4f
authored
Feb 11, 2021
by
sunye
Browse files
Add project issues
parent
708b5fb5
Changes
2
Show whitespace changes
Inline
Side-by-side
ISSUES.adoc
View file @
0fbb0b4f
.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.
README.adoc
View file @
0fbb0b4f
...
...
@@ -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"
----
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment