Conception UML / JAVA
19 et 20 mars 2007

Objectifs

Concevoir une application Java en utilisant UML, utiliser quelques patterns GRASP, GoF ou autres. Faire un peu de ré-ingénierie de code. Utiliser un outil UML pour dessiner des diagrammes, explorer la pro et la rétro-ingénierie objet.

Environnement

Vous utiliserez UML en mode esquisse, sur papier et outil UML. Vous vous essaierez également à la pro-ingénierie et à la rétro-ingénierie avec un outil UML.

L'outil UML installé à l'UFR Informatique est Poseidon for UML Professionnal Edition. Le serveur de licence est proxy710.univ-lyon1.fr, et le port 6262. Une licence récupérée dure 2 jours, il est donc possible de la ramener chez soi pour 48 heures avec un portable. Une documentation sur le lancement de Poseidon est disponible.

Poseidon s'intègre normalement comme plug in dans Eclipse (non testé). Il est toujours possible d'utiliser Poseidon et un IDE quelconque, du moment que Poseidon sait où se trouvent les fichiers java.

Déroulement

On reprendra la thématique générale des tortues qui jouent au ballon, pour reconcevoir une nouvelle application. La conception se fera en deux étapes. La première concernera la ré-ingénierie (refactoring) du code des Tortues utilisé au TP1, afin de rendre les packages plus modulaires. La seconde sera dédiée à la conception d'une application permettant à deux équipes de Tortues de jouer au ballon.

Ré-ingénierie du code (td / TP)

Le code qui est fourni dans logo.zip est un package relativement fouillis. Toutes les classes sont dépendantes les unes des autres, les couches graphique et métier ne sont pas séparées.

Le premier travail va donc consister à reconcevoir le code (et le modèle) de telle sorte qu'on dispose au minimum d'une couche IHM qui gére les affichages, et d'une couche métier qui gère les classes métier de l'application. Pour cela, créez un diagramme de classes/packages qui réorganise les éléments de l'application logo (affichage des tortues et IHM d'un côté, gestion de la tortue, de ses déplacement de l'autre). Les changements dans le modèle métier (déplacements de la tortue) auront pour conséquence un affichage différent. L'utilisation de l'IHM (boutons) entraînera des changements dans le modèle métier. On considérera dans cette partie une IHM simplifiée, qui permet juste de commander une Tortue dans ses déplacements (avant, arrière, droite, gauche).

Indications

Une meilleure conception consiste à appliquer le pattern MVC, et à séparer la couche présentation de la couche métier en utilisant un contrôleur. Différentes possibilités existent alors pour définir le contrôleur.

Quelques URLs pouvant être utiles : http://csis.pace.edu/%7Ebergin/mvc/mvcgui.html, http://www.churchillobjects.com/c/14058.html.

Conception de l'application

L'objectif de l'application est de permettre à un utilisateur de faire jouer au ballon l'une contre l'autre deux équipes de joueurs/tortues. Le jeu se passera sur un terrain muni de deux enbuts, l'arrivée du ballon dans l'enbut de l'adversaire permettra à une équipe de marquer un point. Un match s'interrompra au bout d'un certain temps.

Chaque équipe aura une tactique de jeu, qu'elle pourra changer en cours de partie (action utilisateur). Une tactique concerne la manière de faire réagir une équipe de tortues de façon globale : mouvements, passes, etc. Une tactique peut dépendre de la position des tortues sur le terrain, de leurs poste, de leurs positions respectives, de l'équipe adverses, etc. On définira au moins trois tactiques en tout.

Le poste d'une tortue concerne sa manière de réagir quand elle a ou n'a pas la balle, en fonction de son placement sur le terrain, de la proximité des adversaires, etc. Il correspond à la réaction locale de la tortue. 

L'utilisateur devra au minimum pouvoir lancer un match entre deux équipes, de l'interrompre, de changer la tactique d'une équipe en cours de jeu.

Conception du jeu par équipes (TD)

Génération du code et rétro-ingénierie (TP)

Une fois vos classes de conception à peu près stabilisées, rentrez-les dans un outil UML (Poseidon).

Générez ensuite le code correspondant à votre projet, et mettez en place la procédure de roundtrip pour synchroniser en permanence code et modèle.

Codez vos classes, améliorez la conception, testez, en gardant synchrones modèle et code.

Rendu du travail

Le TD/TP est à rendre pour le lundi 6 novembre.

Il est impératif d'aller voir et de respecter les instructions générales pour le rendu de TP.

Vous enverrez à yannick.prie (a) liris.cnrs.fr une archive (zip uniquement) contenant : 

N'oubliez pas de demander un accusé réception.

Remarque

Le rapport sur le projet présentera les principaux diagrammes réalisés et illustrant les choix de conception (une dizaine de pages). Vous pourrez faire quelques remarques éventuelles sur l'outil UML utilisé (fonctionnement, praticité, intégration IDE, paramétrage, comparaison à d'autres outils, etc.), n'oubliez pas mettre en évidence les patterns utilisés, etc.

Barême