2. ??? Cahier des charges ??? Faire un jeu, il s’agit d’un robot qui se déplace dans un labyrinthe, il doit ramasser des objets et les rapporter dans la pièce de départ pour gagner. Le robot peut rester bloquer dans une pièce et il ne peut pas porter trop d’objets correspondant à un poids max. Si il est en surcharge, le joueur a perdu. http://bernard.vinot.net/exo/robot/robotApplet/AppletRobot.html
3. Le Robot Agile Initialisation du projet Equipe 2 Dvp + 1 client (25%) + 1 expert JDBC Une itération = 1 jour (8h) Méthode tendant vers XP
4. Que faire? UC-US Backlog planning de release Iter1 Tâches Modélisation Tests Codage Remaniement Doc Demo Bilan Iter2 ……….
8. Le Scénario : Jouer Deplacer: Le joueur choisit Nord, Sud, Est ou Ouest. Si possible, le robot va ds la pièce, sinon un message « pas d’issues » Prendre un objet Le système propose la liste des objets, le joueur en prend un (possibilité de perdre si surcharge – Fin du jeu) Deposer un objet Le système propose la liste des objets, le joueur en choisit un (possibilité de gagner - Fin du jeu)
13. I1 : Exemple de tests (TR) Perdu : surcharge Gagné …………. Perdu Fichier de sortie (référence) Faites votre choix : Vous etes dans : Entree et vous ….. Vous etes dans : Salon et vous ….. Bascule Oui,Non Vous etes dans : Salonet vous ….. …… nom:Bascule,poids:4000,solide Whisky Oui,Non Perdu Fichier d’entrée S P O P O EOF
18. I1 : Exemple de test(TU) Junit-Deplacer import org.junit.Before; import junit.framework.TestCase; //TestDeplacer.java public class TestDeplacerextendsTestCase{ private Robot r; @Before public voidsetUp() throws Exception { Piece e = new Piece ("entree"); Piece s = new Piece ("salon"); e.AjouterIssue(PointsCardinaux.sud, s); s.AjouterIssue(PointsCardinaux.nord,e); r = new Robot(e,10 ); } public voidtestDeplacerOK() { try { r.Deplacer(PointsCardinaux.sud); assertTrue ( r.GetPiece().GetNom().equals("salon")); r.Deplacer(PointsCardinaux.nord); assertTrue ( r.GetPiece().GetNom().equals("entree")); } catch (ExceptionRobot e) { fail(); } } public voidtestDeplacerNOK() { try { r.Deplacer(PointsCardinaux.nord); fail(); } catch (ExceptionRobot e) { assertTrue (e.getMessage().equals ("pas d'issues dans cette direction"));}
19. I1 : Exemple de test(TU-TR) Junit-Gagner import org.junit.*; import junit.framework.TestCase; public class TestGagnerextendsTestCase{ private Config c; @Before public voidsetUp() { c = new Config(); } public voidtestGagner() { try{ c.Deplacer(PointsCardinaux.nord); fail(); }catch (ExceptionRobot e){} try{ c.Deplacer(PointsCardinaux.sud); c.Deplacer(1);//sud c.Deplacer(3);//ouest c.Prendre("Pastis"); …………………………. c.Deplacer(1);//sud c.Deplacer(3);//ouest c.Prendre("Gauguin"); c.Deplacer(2);//est c.Deplacer(0);//nord c.Deposer("Gauguin"); }catch (ExceptionRobot e) {assertEquals(e.getMessage(),"Bravo!!!!!");} }
20. I1 : JunitTestSuite import junit.framework.Test; import junit.framework.TestSuite; //AllTests.java public class AllTests { public static Test suite() { TestSuite suite = new TestSuite("Test for default package"); //$JUnit-BEGIN$ suite.addTestSuite(TestGagner.class); suite.addTestSuite(TestDeplacer.class); //$JUnit-END$ return suite; } }
27. Remaniement Mettre une énumération pour les points cardinaux Faire une nouvelle classe conteneur d’objets pour éviter les doublons de code Retester
29. Bilan de l’itération 1 Product backLog estimé à 10 points Itération estimée à 8H et réalisée Choisir des fonctionnalités de l’itération 2 Soit la sérialisation (2 points de plus) Velocité = 10 + 2 Iter1
31. Bilan de l’itération Qu’est ce qui a bien marché ? Qu’est ce qui n’a pas marché ? A-t-on besoin de qq chose ? Que faut-il ne plus faire ? Comment peut-on améliorer qq chose ? ? Binôme-Estimation-TU-DP-Moral-Qualité-Client présent Applet-Selenium
32. Le Robot Agile Iter2 : Configurer Prendre en compte les retours utilisateurs et les bugs Puis replanifier
33. Le Scénario : Configurer Charger une partie à partir d’un nom Sauvegarder la partie en cours en lui donnant un nom Fabriquer une nouvelle configuration Créer les objets Tableau (nom, poids, auteur) Chaise (nom, poids, solide ou non) Bouteille (nom, poids, degré, volume) Créer les pièces et les issues Ranger les objets dans les pièces Créer le robot (poidsMax, Piece)
34. I2 : Découpe en tâches IHM pour la configuration (3H) Schéma de la base (1H) Conversion des objets en base avec l’expert (JDBC – 6H) IHM-CONF Objets IHM JOUER ACCESS JDBC Fichier TU-Gagner TU-Ga Perdu Serialisation
38. Bilan de l’itération 2 Product backLog estimé à 10H Itération estimée à 10H et réalisée Itération 3 est aussi terminée !!! Iter2 Iter1
39. Bilan de la release Velocite 30 points en 2 release 2*8H Velocite = 15
40. RQM Conclusion IHM-DOS Jouer Tests JUNIT IHM-LUXE Jouer Objets IHM-ACCESS Configurer Serialization JDBC IHM Configurer Fichier Access Editeur XML (notePad) Configurer Fichier-XML A vendre pour l’iter3
41. RQM <<Sing>> RQM ---------------------- Energie ----------------------Deplacer(PC) <<TM>>Deposer Nourriture ---------------------- energie Ne pas les compter en nbObjet