1 Génie Logiciel Cas d'étude : Puissance 4 Analyse des besoins Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 18/04/2007
2 Exercice Vous êtes employé(e) dans une société qui édite des jeux sur ordinateur. Votre patron est venu vous voir et vous a dit : Je voudrais qu'on ait un «puissance 4» au catalogue pour la rentrée. Et je veux qu'il me batte! Vous êtes allé(e) voir l'équipe marketing et vous les avez aidé à écrire un cahier des charges. Il s'agit maintenant de définir le produit, avec le responsable des développements.
3 Donnée = le cahier des charges Ici volontairement simpliste mais ~ exhaustif (presque) implémentable pendant le cours Documentation = transparents grandes lignes seulement sans les contraintes de forme
Contenu du cahier des charges 4 (rappel) Énoncé du problème à résoudre Liste des fonctionnalités de base requises Caractéristiques techniques du produit Exigences de qualité Priorités éventuelles
Cahier des charges : 5 Énoncé du problème p à résoudre Faire un puissance 4 Règles du jeu précises (omises ici) Pouvoir jouer contre l'ordinateur
Cahier des charges : 6 Liste des fonctionnalités requises (1) Interface : textuelle (les «O» jouent contre les «X») en français entrées au clavier indication de qui doit jouer (ordinateur ou utilisateur)
Cahier des charges : 7 Liste des fonctionnalités requises (2) Commandes utilisateur (avant nouvelle partie) : choix des X ou O, puis choix de qui commence Commandes utilisateur (quand à lui de jouer) : jouer une colonne abandonner la partie (et en commencer une nouvelle) revenir en arrière ou repartir en avant paramétrer la profondeur de réflexion de l'ordinateur Commandes utilisateur (à tout moment) : quitter le jeu
Cahier des charges : 8 Caractéristiques techniques Une seule partie à la fois (pas de simultanées) Pas de limite sur la profondeur de réflexion Pas de limite sur le retour en arrière Performance : suivant la profondeur de réflexion Exécutable sur toute plate-forme : Windows, Unix
Cahier des charges : 9 Exigences de qualité Rapidité moins de 2s à la profondeur de 5 demi-coups Force ne pas rater les coups gagnants battre le boss (au moins 3 parties sur 5) (Pour l'exercice : boss = prof )
Cahier des charges : 10 Priorités 1) Jeu à 1 demi-coup : vérification de la validité des coups ordinateur : coup gagnant ou choix aléatoire valide 2) Jeu à N demi-coups 3) Retour arrière/avant (Disponible «pour la rentrée» = fin du cours )
11 Contenu du cahier des charges Et rien d'autre (pour l 'exercice!) pas de jeu humain contre humain pas de jeu en réseau pas de sauvegarde d'historique pas de sauvegarde de parties en cours pas de high score pas d'aide pas de temps de réflexion...
Exercice : 12 Définir un modèle conceptuel Rappel : pour chaque grande fonction du produit : les objets (ou entités) que le produit crée/manipule les attributs de ces objets les opérations à réaliser sur ces objets
13 Exemple de modèle conceptuel (1) Objet : joueur Attributs : couleur : X ou O identité : utilisateur ou ordinateur profondeur de réflexion (ordinat.) : nombre de demi-coups Opérations : affecter une couleur affecter une identité changer la profondeur de réflexion
14 Exemple de modèle conceptuel (2) Objet : grille Attributs : contenu : 7 6 cases pouvant avoir 3 états (X, O,.) («.» représente une case vide) à qui le tour : X ou O Opérations : jouer dans une colonne ( coup joué ou signalé invalide) changer à qui le tour
15 Exemple de modèle conceptuel (3) Objet : partie (pour le retour arrière) Attributs : liste ordonnée des coups joués depuis le début curseur : position dans la liste des coups (différente de la position du dernier élément en cas de retour arrière) Opérations : ajouter un coup en fin de liste déplacer le curseur (vers l'avant ou l'arrière) tronquer la liste des coups au niveau du curseur (au cas où on joue un autre coup au lieu de repartir en avant)
16 Un meilleur modèle conceptuel? Il n'y a pas une réponse unique à la question du modèle conceptuel Mais certaines sont meilleures que d'autres... Exemples ( )
17 Modèle conceptuel : Alternatives (Q1) Attribut contenu dans l'entité grille, ou attribut position dans l'entité jeton?
18 Modèle conceptuel : Alternatives (R1) Attribut contenu dans l'entité grille, ou attribut position dans l'entité jeton? peu d'intérêt à individualiser les jetons en notant la position de chacun imaginer plutôt des marques sur la grille
19 Modèle conceptuel : Alternatives (Q2) Est-ce utile d'avoir une entité jeton?
20 Modèle conceptuel : Alternatives (R2) Est-ce utile d'avoir une entité jeton? oui si l'on veut absolument un modèle de simulation non si l'on conçoit les jetons comme un état de la grille
21 Modèle conceptuel : Alternatives (Q3) Attribut à qui le tour dans entité grille, joueur ou partie?
22 Modèle conceptuel : Alternatives (R3) Attribut à qui le tour dans entité grille, joueur ou partie? pas dans joueur car il serait dupliqué (il y a 2 joueurs) dans grille ou partie
23 Modèle conceptuel : Alternatives (Q4) Opération jouer dans une case ou jouer dans une colonne?
24 Modèle conceptuel : Alternatives (R4) Opération jouer dans une case ou jouer dans une colonne? si on veut absolument un modèle de simulation jouer dans une colonne la grille est en quelque sorte «intelligente» ( coup joué ou signalé invalide) sinon, on sort la «logique de jeu» de la grille, qui devient un objet plus passif jouer dans une case (on peut néanmoins vérifier la validité du coup)
25 Modèle conceptuel : Alternatives (Q5) Opérations ajouter un coup et tronquer réunies?
26 Modèle conceptuel : Alternatives (R5) Opérations ajouter un coup et tronquer réunies? plus facile à expliquer en deux actions séparées mais pas utile en pratique car toujours liées
Exercice : Définir 27 un modèle entité-association Rappel : Entités représentées par des rectangles Attributs attachés aux entités : liste d'attributs Identifiant de l'entité : item souligné dans la liste Relations : ovales Cardinalités : (1,1), (0,n),... adhérent emprunte (0,n) emprunter est empruntée (0,1) cassette N exemplaire date d'achat nb emprunts état
Exemple de 28 modèle entité-association liste des coups curseur est représentée par (1,1) partie représenter représente (1,1) grille met en jeu (2,2) contenir (0,42) mettre en jeu contenir mis en jeu par (1,1) est contenu dans (0,1) joueur posséder jeton possède (21,21) est possédé par (1,1) identité couleur prof. de réflexion état à qui le tour couleur joueur Importance de nommer la relation : représenter, contenir,...
Exercice : Dessiner 29 un diagramme états-transitions Rappel ( ) : Commandes utilisateur (avant nouvelle partie) : choix des X ou O, puis choix de commencer ou non Commandes utilisateur (quand à lui de jouer) : jouer une colonne abandonner la partie (et en commencer une nouvelle) revenir en arrière ou repartir en avant paramétrer la profondeur de réflexion de l'ordinateur Commandes utilisateur (à tout moment) : quitter le jeu
Rappel : diagramme états-transitions 30 Ex. cassette dans une vidéothèque Cassette commandée Demande d'emprunt et réponse N de cassette Cassette disponible Livraison de la cassette et enregistrement de l'entrée de la cassette Demande d'emprunt et réponse de refus Cassette empruntée Emprunt de la cassette et enregistrement de l'emprunt Retour cassette et enregistrement du retour Cassette perdue Temps d'emprunt dépassé et enregistrement de la perte de la cassette
Méthodologie de dessin de 31 diagrammes états-transitions (1). Identifier l'état initial (ou les états initiaux) et le dessiner ex. «programme non lancé», «nouvelle partie» (2). Examiner chacune des actions possibles dans cet état, et les états résultants correspondants Si un état résultant a déjà été dessiné, faire une flèche vers l'état résultant, étiquetée par l'action ex. «changer le niveau» Sinon, dessiner un nouvel état et faire une flèche vers le nouvel état, étiquetée par l'action ex. «choix de X ou O» Attention, une même action peut conduire à plusieurs états ex. «choix de qui commence» état «util. joue» ou état «ordi. joue» (3). Recommencer en (2) avec les états nouveaux
Puissance 4 : Exemple de 32 Diagramme états-transitions (1) Lancement du programme Jeu non lancé Quitter le jeu Quitter le jeu Coup valide et partie terminée Ordinateur commence Choix de X ou O À l'ordinateur de jouer Nouvelle partie Qui commence? Coup valide et partie inachevée Utilisateur commence À l'utilisateur de jouer Coup valide et partie terminée Abandon Coup valide et partie inachevée Revenir en arrière Repartir en avant Coup invalide Changement de niveau Revenir en arrière Repartir en avant
Ces états et transitions sont-ils 33 bien définis? Lancement du programme Jeu non lancé Quitter le jeu Quitter le jeu Coup valide et partie terminée Ordinateur commence Choix de X ou O À l'ordinateur de jouer Nouvelle partie Qui commence? Coup valide et partie inachevée Utilisateur commence À l'utilisateur de jouer Coup valide et partie terminée Abandon Coup valide et partie inachevée Revenir en arrière Repartir en avant Coup invalide Changement de niveau Revenir en arrière Repartir en avant
Diagramme états-transitions : 34 attention aux (abus de) notations suite d'actions Lancement du programme Jeu non lancé Quitter le jeu Quitter le jeu Coup valide et partie terminée Ordinateur commence Choix de X ou O À l'ordinateur de jouer Nouvelle partie Qui commence? Coup valide et partie inachevée Utilisateur commence À l'utilisateur de jouer Coup valide et partie terminée Abandon état virtuel (intermédiaire) actions alternatives (réduit le nombre de flèches) Coup valide et partie inachevée Revenir en arrière Repartir en avant Coup invalide Changement de niveau Revenir en arrière Repartir en avant
Un meilleur diagramme 35 états-transitions? Il n'y a pas une réponse unique à la question du diagramme état-transition Mais il y en a peu Exemples ( )
Puissance 4 : Exemple de 36 Diagramme états-transitions (2) état intermédiaire omis Lancement du programme Jeu non lancé Quitter le jeu Quitter le jeu Coup valide et partie terminée Nouvelle partie Choix de X ou O Coup valide et partie terminée Abandon Ordinateur commence Utilisateur commence À l'ordinateur de jouer Coup valide et partie inachevée A l'utilisateur de jouer Coup valide et partie inachevée Revenir en arrière Repartir en avant Coup invalide Changement de niveau Revenir en arrière Repartir en avant
Puissance 4 : Exemple de 37 Diagramme états-transitions (3) état intermédiaire omis Lancement du programme Jeu non lancé Quitter le jeu Quitter le jeu Coup valide et partie terminée Choix X ou O et l'ordinateur commence À l'ordinateur de jouer Nouvelle partie Coup valide et partie inachevée Choix X ou O et l'utilisateur commence À l'utilisateur de jouer Coup valide et partie terminée Abandon Coup valide et partie inachevée Revenir en arrière Repartir en avant Coup invalide Changement de niveau Revenir en arrière Repartir en avant
Puissance 4 : Exemple de 38 Diagramme états-transitions (4) Lancement du programme Jeu non lancé Quitter le jeu Quitter le jeu Nouvelle partie Coup valide (utilisateur) et partie terminée Choix de X ou O Choix de qui commence Coup éventuel de l'ordinateur Abandon Coup valide (utilisateur), réponse (ordinateur), et partie terminée À l'utilisateur de jouer (attente d'une commande) Coup invalide Coup valide (utilisateur), réponse (ordinateur), et partie inachevée Changement de niveau Revenir en arrière Repartir en avant fusion d'états (moins précis)
Puissance 4 : Exemple de 39 Diagramme états-transitions (5) Lancement du programme Jeu non lancé Nouvelle partie Coup valide puis partie terminée Choix de X ou O Choix de qui commence Coup éventuel de l'ordinateur Quitter le jeu Abandon Quitter le jeu À l'utilisateur de jouer (attente d'une commande) Coup invalide Coup valide puis partie inachevée Changement de niveau Revenir en arrière Repartir en avant fusion d'états transitions longues (moins précis)
Exercice : 40 Écrire une table de transition Rappel ( ) : Commandes utilisateur (avant nouvelle partie) : choix des X ou O, puis choix de qui commence Commandes utilisateur (quand à lui de jouer) : jouer une colonne abandonner la partie (et en commencer une nouvelle) revenir en arrière ou repartir en avant paramétrer la profondeur de réflexion de l'ordinateur Commandes utilisateur (à tout moment) : quitter le jeu
Rappel : Table de transition et 41 Diagramme états-transitions État Opérations autorisées État résultant délogué se loguer logué logué lire, écrire logué logué se déloguer délogué délogué se loguer se déloguer lire, écrire logué
42 Puissance 4 : Table de transitions État Opérations autorisées État résultant Jeu non lancé Lancement du programme Nouvelle partie Nouvelle partie Choix de X ou O Qui commence? Nouvelle partie Quitter le jeu Jeu non lancé Qui commence? Ordinateur commence L'ordinateur réfléchit Qui commence? Utilisateur commence L'utilisateur réfléchit L'ordinateur réfléchit Coup valide et partie terminée Nouvelle partie L'ordinateur réfléchit Coup valide et partie inachevée L'utilisateur réfléchit L'utilisateur réfléchit Coup valide et partie inachevée L'ordinateur réfléchit L'utilisateur réfléchit L'utilisateur réfléchit Coup invalide Changement de niveau Revenir en arrière Repartir en avant Coup valide et partie terminée Abandon L'utilisateur réfléchit Nouvelle partie L'utilisateur réfléchit Quitter le jeu Jeu non lancé
Comparer la table de transition au 43 diagramme états-transitions Lancement du programme Jeu non lancé Quitter le jeu Quitter le jeu Coup valide et partie terminée Ordinateur commence L'ordinateur réfléchit Choix de X ou O Nouvelle partie Qui commence? Coup valide et partie inachevée Coup valide et partie inachevée Utilisateur commence L'utilisateur réfléchit Coup valide et partie terminée Abandon Coup invalide Changement de niveau Revenir en arrière Repartir en avant
Comparaison de la table de transition 44 au diagramme états-transitions La représentation graphique est plus simple plus compacte moins redondante plus compréhensible la maintenance et les évolutions sont plus faciles
Exercice : Dessiner un 45 diagramme de flots de données...... pour le traitement de l'entrée utilisateur en cours de partie : jouer une colonne reculer / avancer dans l'historique de la partie abandonner la partie, quitter le jeu Rappel : modéliser les gisements d'information (rectangles) le transit des données (flèches) les traitements (ovales)
Rappel : Diagramme de flot de données 46 Ex. gestion des emprunts refus carte infos film demande d'emprunt référence film vérification cassette vérification client comptes clients N carte refus stock de cassettes N client N cassette enregistrement emprunt carte modifiée cassette
Puissance 4 : Ex. de diagramme de flot 47 de données pour l'entrée utilisateur refus vérification recul / avance nb coups recul/avance nb coups recul/avance enregistrement recul / avance abandonner analyse cmd utilisateur historique nouvelle grille grille entrée utilisateur nouveaux coups quitter N colonne vérification coup valide jeu du coup N colonne refus affichage infos joueurs