Le robot agile

1 404 vues

Publié le

Un micro projet agile
Plan de release
Backlog
2 itérations
Refactoring

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 404
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
23
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Le robot agile

  1. 1. La vie d’un mini projet Agile<br />Le Robot Agile<br />
  2. 2. ??? Cahier des charges ???<br />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.<br />http://bernard.vinot.net/exo/robot/robotApplet/AppletRobot.html<br />
  3. 3. Le Robot Agile<br />Initialisation du projet<br />Equipe 2 Dvp + 1 client (25%) + 1 expert JDBC<br />Une itération = 1 jour (8h)<br />Méthode tendant vers XP<br />
  4. 4. Que faire?<br />UC-US<br />Backlog planning de release<br />Iter1<br />Tâches<br />Modélisation<br />Tests<br />Codage<br />Remaniement<br />Doc<br />Demo<br />Bilan<br />Iter2<br />……….<br />
  5. 5. Le diagramme des Use Case<br />
  6. 6. BackLog du produit<br />Les risques?<br />Release complète livrée<br />dans 3 jours<br />Présence de l’expert JDBC <br />obligatoire J2<br />
  7. 7. Le Robot Agile<br />Iter1 : Jouer sans persistance<br />
  8. 8. Le Scénario : Jouer<br />Deplacer:<br />Le joueur choisit Nord, Sud, Est ou Ouest. Si possible, le robot va ds la pièce, sinon un message « pas d’issues »<br />Prendre un objet<br />Le système propose la liste des objets, le joueur en prend un (possibilité de perdre si surcharge – Fin du jeu)<br />Deposer un objet<br />Le système propose la liste des objets, le joueur en choisit un (possibilité de gagner - Fin du jeu)<br />
  9. 9. I1 : Découpe en tâches<br />
  10. 10. I1 : Modélisation (diag classe)<br />Discussion avec<br />Le client<br />
  11. 11. I1 : Les IHM<br />
  12. 12. I1 : Configurer Les objets<br />
  13. 13. I1 : Exemple de tests (TR)<br />Perdu : surcharge<br />Gagné<br />………….<br />Perdu<br />Fichier de sortie (référence)<br />Faites votre choix :<br />Vous etes dans : Entree et vous …..<br />Vous etes dans : Salon et vous …..<br />Bascule Oui,Non<br />Vous etes dans : Salonet vous …..<br />…… nom:Bascule,poids:4000,solide<br />Whisky Oui,Non<br />Perdu<br />Fichier d’entrée<br />S<br />P<br />O<br />P<br />O<br />EOF<br />
  14. 14. I1 : Deplacer<br />
  15. 15. I1 : Prendre<br />
  16. 16. I1 : Deposer<br />
  17. 17. I1 : Diagramme de classe<br />
  18. 18. I1 : Exemple de test(TU) Junit-Deplacer<br />import org.junit.Before;<br />import junit.framework.TestCase;<br />//TestDeplacer.java<br />public class TestDeplacerextendsTestCase{<br />private Robot r;<br /> @Before<br /> public voidsetUp() throws Exception {<br />Piece e = new Piece ("entree");<br />Piece s = new Piece ("salon");<br />e.AjouterIssue(PointsCardinaux.sud, s);<br />s.AjouterIssue(PointsCardinaux.nord,e);<br /> r = new Robot(e,10 );<br /> }<br /> public voidtestDeplacerOK()<br /> {<br />try {<br />r.Deplacer(PointsCardinaux.sud);<br />assertTrue ( r.GetPiece().GetNom().equals("salon"));<br />r.Deplacer(PointsCardinaux.nord);<br />assertTrue ( r.GetPiece().GetNom().equals("entree"));<br /> } catch (ExceptionRobot e) {<br />fail();<br /> }<br /> }<br />public voidtestDeplacerNOK()<br /> {<br />try {<br />r.Deplacer(PointsCardinaux.nord);<br />fail();<br /> } catch (ExceptionRobot e) {<br />assertTrue (e.getMessage().equals<br /> ("pas d'issues dans cette direction"));}<br />
  19. 19. I1 : Exemple de test(TU-TR) Junit-Gagner<br />import org.junit.*;<br />import junit.framework.TestCase;<br />public class TestGagnerextendsTestCase{<br />private Config c;<br /> @Before<br /> public voidsetUp() {<br /> c = new Config();<br /> } <br /> public voidtestGagner()<br /> {<br />try{<br />c.Deplacer(PointsCardinaux.nord);<br />fail();<br /> }catch (ExceptionRobot e){}<br />try{<br />c.Deplacer(PointsCardinaux.sud);<br />c.Deplacer(1);//sud<br />c.Deplacer(3);//ouest<br />c.Prendre("Pastis");<br /> ………………………….<br />c.Deplacer(1);//sud<br />c.Deplacer(3);//ouest<br />c.Prendre("Gauguin");<br />c.Deplacer(2);//est<br />c.Deplacer(0);//nord<br />c.Deposer("Gauguin");<br /> }catch (ExceptionRobot e)<br />{assertEquals(e.getMessage(),"Bravo!!!!!");}<br /> }<br />
  20. 20. I1 : JunitTestSuite<br />import junit.framework.Test;<br />import junit.framework.TestSuite;<br />//AllTests.java<br />public class AllTests {<br /> public static Test suite() {<br />TestSuite suite = new TestSuite("Test for default package");<br /> //$JUnit-BEGIN$<br />suite.addTestSuite(TestGagner.class);<br />suite.addTestSuite(TestDeplacer.class);<br /> //$JUnit-END$<br /> return suite;<br /> }<br />}<br />
  21. 21. I1 : Passer les tests NOK<br />
  22. 22. I1 : Codage<br />
  23. 23. Tests JUNIT<br />
  24. 24. I1 : Tests Finaux<br />
  25. 25. I1 : Documentation Seq<br />
  26. 26. I1 : Documentation : Classe<br />
  27. 27. Remaniement<br />Mettre une énumération pour les points cardinaux<br />Faire une nouvelle classe conteneur d’objets pour éviter les doublons de code<br />Retester<br />
  28. 28. I1 : Nouveau diagramme<br />
  29. 29. Bilan de l’itération 1<br />Product backLog estimé à 10 points<br />Itération estimée à 8H et réalisée<br />Choisir des fonctionnalités de l’itération 2<br />Soit la sérialisation (2 points de plus)<br />Velocité = 10 + 2<br />Iter1<br />
  30. 30. I1 : Demo<br />
  31. 31. Bilan de l’itération<br />Qu’est ce qui a bien marché ?<br />Qu’est ce qui n’a pas marché ?<br />A-t-on besoin de qq chose ?<br />Que faut-il ne plus faire ?<br />Comment peut-on améliorer qq chose ?<br />?<br />Binôme-Estimation-TU-DP-Moral-Qualité-Client présent<br />Applet-Selenium<br />
  32. 32. Le Robot Agile<br />Iter2 : Configurer<br />Prendre en compte les retours utilisateurs et les bugs<br />Puis replanifier<br />
  33. 33. Le Scénario : Configurer<br />Charger une partie à partir d’un nom<br />Sauvegarder la partie en cours en lui donnant un nom<br />Fabriquer une nouvelle configuration<br />Créer les objets<br />Tableau (nom, poids, auteur)<br />Chaise (nom, poids, solide ou non)<br />Bouteille (nom, poids, degré, volume)<br />Créer les pièces et les issues<br />Ranger les objets dans les pièces<br />Créer le robot (poidsMax, Piece)<br />
  34. 34. I2 : Découpe en tâches<br />IHM pour la configuration (3H)<br />Schéma de la base (1H)<br />Conversion des objets en base avec l’expert (JDBC – 6H)<br />IHM-CONF<br />Objets<br />IHM JOUER<br />ACCESS<br />JDBC<br />Fichier<br />TU-Gagner<br />TU-Ga <br />Perdu <br />Serialisation<br />
  35. 35. IHM Configuration<br />
  36. 36. I2 : Schéma & contenu de la base<br />
  37. 37. I2 : JDBC – ce qu’explique l’expert<br />DB_façadePersistent_object<br />Persistent_object_list<br />Statement<br />executeQuery(sql : String) : ResultSet<br />executeUpdate(sql : String) : int<br />DBPersistentClass<br />PersistentClassList<br />PersistentClass<br />create() : PersistentClass<br />getData()<br />new()<br />read(searchCriteria : string) : PersistentClassList<br />setData()<br />add(c: PersistentClass)<br />update(c : PersistentClass)<br />command()<br />delete(c : PersistentClass)<br />new()<br />Persistent_object_list<br />DB_façade<br />Persistent_object<br />PersistenceClient<br />Requestor <br />SQL_helper<br />Persistence -<br />RDBMS - JDBC<br />ResultSet<br />Result<br />getString() : string<br />Drive_manager <br />DB_connection<br />DriverManager<br />Connection<br />createStatement() : Statement<br />getConnection(url, user, pass) : Connection<br />
  38. 38. Bilan de l’itération 2<br />Product backLog estimé à 10H<br />Itération estimée à 10H et réalisée<br />Itération 3 est aussi terminée !!!<br />Iter2<br />Iter1<br />
  39. 39. Bilan de la release<br />Velocite<br />30 points en 2 release 2*8H<br />Velocite = 15<br />
  40. 40. RQM<br />Conclusion<br />IHM-DOS<br />Jouer<br />Tests<br />JUNIT<br />IHM-LUXE<br />Jouer<br />Objets<br />IHM-ACCESS<br />Configurer<br />Serialization<br />JDBC<br />IHM<br />Configurer<br />Fichier<br />Access<br />Editeur XML<br />(notePad)<br />Configurer<br />Fichier-XML<br />A vendre pour l’iter3<br />
  41. 41. RQM<br /><<Sing>><br />RQM<br />----------------------<br />Energie<br />----------------------Deplacer(PC)<br /><<TM>>Deposer<br />Nourriture<br />----------------------<br />energie<br />Ne pas les compter en nbObjet<br />

×