SlideShare une entreprise Scribd logo
1  sur  41
La vie d’un mini projet Agile Le Robot Agile
??? 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
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
Que faire? UC-US Backlog planning de release Iter1 Tâches Modélisation Tests Codage Remaniement Doc Demo Bilan Iter2 ……….
Le diagramme des Use Case
BackLog du produit Les risques? Release complète livrée dans 3 jours Présence de l’expert JDBC  obligatoire J2
Le Robot Agile Iter1 : Jouer sans persistance
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)
I1 : Découpe en tâches
I1 : Modélisation (diag classe) Discussion avec Le client
I1 : Les IHM
I1 : Configurer Les objets
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
I1 : Deplacer
I1 : Prendre
I1 : Deposer
I1 : Diagramme de classe
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"));}
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!!!!!");} 	}
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; 	} }
I1 : Passer les tests NOK
I1 : Codage
Tests JUNIT
I1 : Tests Finaux
I1 : Documentation Seq
I1 : Documentation : Classe
Remaniement Mettre une énumération pour les points cardinaux Faire une nouvelle classe conteneur d’objets pour éviter les doublons de code Retester
I1 : Nouveau diagramme
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
I1 : Demo
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
Le Robot Agile Iter2 : Configurer Prendre en compte les retours utilisateurs et les bugs Puis replanifier
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)
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
IHM Configuration
I2 : Schéma & contenu de la base
I2 : JDBC – ce qu’explique l’expert DB_façadePersistent_object Persistent_object_list Statement executeQuery(sql : String) : ResultSet executeUpdate(sql : String) : int DBPersistentClass PersistentClassList PersistentClass create() : PersistentClass getData() new() read(searchCriteria : string)  : PersistentClassList setData() add(c: PersistentClass) update(c : PersistentClass) command() delete(c : PersistentClass) new() Persistent_object_list DB_façade Persistent_object PersistenceClient Requestor  SQL_helper Persistence - RDBMS - JDBC ResultSet Result getString() : string Drive_manager  DB_connection DriverManager Connection createStatement() : Statement getConnection(url, user, pass) : Connection
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
Bilan de la release Velocite 30 points en 2 release 2*8H Velocite = 15
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
RQM <<Sing>> RQM ---------------------- Energie ----------------------Deplacer(PC) <<TM>>Deposer Nourriture ---------------------- energie Ne pas les compter en nbObjet

Contenu connexe

Similaire à Le robot agile

Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Loic Yon
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Parischristophep21
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Microsoft
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?Fou Cha
 
11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdfPatiento Del Mar
 
Retour d'expérience développement jeux android
Retour d'expérience développement jeux androidRetour d'expérience développement jeux android
Retour d'expérience développement jeux androidjodem
 
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos SantosXebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos SantosPublicis Sapient Engineering
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptxSafaeLhr1
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveCedric Vidal
 
Simulation et modélisation avec ARENA .ppt
Simulation et modélisation avec ARENA .pptSimulation et modélisation avec ARENA .ppt
Simulation et modélisation avec ARENA .pptMariam713253
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Jérôme Tamborini
 
Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012Paris Android User Group
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanMicrosoft
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java SecondKatia Aresti
 

Similaire à Le robot agile (20)

Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf
 
Retour d'expérience développement jeux android
Retour d'expérience développement jeux androidRetour d'expérience développement jeux android
Retour d'expérience développement jeux android
 
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos SantosXebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
XebiCon'17 : Kotlin, état de l'art - Benjamin Lacroix et Sergio Dos Santos
 
Part1
Part1Part1
Part1
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptx
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehave
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Coder propre !
Coder propre !Coder propre !
Coder propre !
 
Simulation et modélisation avec ARENA .ppt
Simulation et modélisation avec ARENA .pptSimulation et modélisation avec ARENA .ppt
Simulation et modélisation avec ARENA .ppt
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012Android rendu et performance - 17 avril 2012
Android rendu et performance - 17 avril 2012
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java Second
 

Plus de VINOT Bernard

Plus de VINOT Bernard (8)

Introduction à l'Agilité
Introduction à l'AgilitéIntroduction à l'Agilité
Introduction à l'Agilité
 
Up1
Up1Up1
Up1
 
Un Sctroumph
Un SctroumphUn Sctroumph
Un Sctroumph
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 
Automate1 Correction
Automate1 CorrectionAutomate1 Correction
Automate1 Correction
 
Definitiondesbesoinsuml
DefinitiondesbesoinsumlDefinitiondesbesoinsuml
Definitiondesbesoinsuml
 
Uml
UmlUml
Uml
 
Mini Oo
Mini OoMini Oo
Mini Oo
 

Le robot agile

  • 1. La vie d’un mini projet Agile Le Robot Agile
  • 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 ……….
  • 5. Le diagramme des Use Case
  • 6. BackLog du produit Les risques? Release complète livrée dans 3 jours Présence de l’expert JDBC obligatoire J2
  • 7. Le Robot Agile Iter1 : Jouer sans persistance
  • 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)
  • 9. I1 : Découpe en tâches
  • 10. I1 : Modélisation (diag classe) Discussion avec Le client
  • 11. I1 : Les IHM
  • 12. I1 : Configurer Les objets
  • 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
  • 17. I1 : Diagramme de classe
  • 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; } }
  • 21. I1 : Passer les tests NOK
  • 24. I1 : Tests Finaux
  • 26. I1 : Documentation : Classe
  • 27. Remaniement Mettre une énumération pour les points cardinaux Faire une nouvelle classe conteneur d’objets pour éviter les doublons de code Retester
  • 28. I1 : Nouveau diagramme
  • 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
  • 36. I2 : Schéma & contenu de la base
  • 37. I2 : JDBC – ce qu’explique l’expert DB_façadePersistent_object Persistent_object_list Statement executeQuery(sql : String) : ResultSet executeUpdate(sql : String) : int DBPersistentClass PersistentClassList PersistentClass create() : PersistentClass getData() new() read(searchCriteria : string) : PersistentClassList setData() add(c: PersistentClass) update(c : PersistentClass) command() delete(c : PersistentClass) new() Persistent_object_list DB_façade Persistent_object PersistenceClient Requestor SQL_helper Persistence - RDBMS - JDBC ResultSet Result getString() : string Drive_manager DB_connection DriverManager Connection createStatement() : Statement getConnection(url, user, pass) : Connection
  • 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