UML / JAVA
20 octobre 2005

Objectif du TD

Utiliser un outil UML pour dessiner des diagrammes, explorer la pro et la rétro-ingénierie objet. On reprendra la thématique générale des tortues qui jouent au ballon, pour concevoir d'abord en mode esquisse le fonctionnement du système, et les responsabilités des classes, puis en mode plan, on se concentrera sur le codage (génération, puis roundtrip). Ce TP est consacré à l'étude des liens entre les diagrammes UML et le code objet, et non aux méthodes de conception type UP.

Le TP est à rendre pour le 14 novembre midi.

Environnement

L'outil UML installé à l'UFR Informatique est Poseidon for UML Professionnal Edition. Le serveur de licence est b710nta, 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. 

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.

Déroulement

Application à construire

On souhaite mettre en place une application permettant à un utilisateur de faire jouer au ballon l'une contre l'autre deux équipes de tortues, jusqu'à la victoire de l'une d'entre elles. Ceci suppose de définir un critère de victoire (par exemple arriver avec le ballon dans une certaine zone du terrain).  Chaque équipe devra pouvoir utiliser au moins deux tactiques.  

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

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 et relancer un match, et changer la tactique d'une équipe en cours de jeu. 

Conception

Faites un diagramme de cas d'utilisation pour le système à concevoir (il y en a peu). Décrivez quelques scénarios en format abrégé (un paragraphe).

Commencez un diagramme de classes contenant les classes utiles de votre projet précédent (celles que vous allez a priori réutiliser : vous pouvez faire un peu de rétro-ingénierie si besoin), et quelques classes potentiellement utiles pour celui-ci (analyse rapide du domaine du jeu de ballon : tactique, joueur, terrain, etc.). 

Organisez les classes dans au minimum dux packages de votre système (un pour la gestion de l'affichage, un pour la logique de votre application). 

Complétez votre conception pour réaliser des scénarios correspondant à des interactions différentes au cours du jeu, notamment avec des diagrammes de séquence. Faites évoluer les classes avec les besoins identifiés, en complétant petit à petit attributs et méthodes (jusqu'à ce que vous pensiez que vous pouvez passer au codage). Utilisez diagrammes d'activités et de machine d'états pour illustrer les différents fonctionnements : système, équipe, joueurs, etc

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

Une fois vos classes de conception à peu près stabilisées, générez 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

Un fichier zip contenant