Ici, nous allons voir comment rédiger un CDCF correct en programmation, avec pour exemple le langage C.
Bien entendu, la démarche est similaire pour tous les langages.
Quelques explications
Quelles sont les particularités des CDCF en programmation ?
Il y a quelques différences entre un CDCF pour un objet et un CDCF pour un programme.
En effet, un objet ne doit pas «réagir» en fonction de ce que fait l'utilisateur. Un stylo, qu'on l'utilise avec la main droite ou la main gauche, c'est pareil, alors qu'un programme, si on appuie sur
Tab et si on appuie sur
Espace, c'est totalement différent.
Que mettre dans le CDCF d'un programme ?
Comme dans un CDCF «normal», il ne faut pas mettre de solution de conception, mais uniquement ce que doit pouvoir ou non faire le programme.
Il faudra lister étape par étape ce qui se passe lorsque l'utilisateur fait quelque chose (appuyer sur une touche, cliquer avec sa souris, donner un coup de marteau sur son unité centrale [dans ce cas, il faudra afficher un message d'erreur, si c'est encore possible

] ).
C'est assez long, mais si vous pensez à tout, cela simplifiera grandement votre travail au moment de coder.
Je vous conseille d'ailleurs pour cette étape de prendre une feuille de papier et de faire une sorte de brouillon de votre algorithme.
Qu'est-ce qu'un algorithme ?
C'est exactement ce que vous êtes en train de faire. C'est-à-dire le listing des différentes «réactions» de votre programme en fonction des actions des utilisateurs.
Je vous conseille le tutoriel rédigé par
bluestorm :
Algorithmique pour l'apprenti programmeur, qui explique bien mieux que moi ce qu'est l'algorithmique.
Il faut absolument penser à
tout en faisant l'algorithme. Les événements si vous faites de la SDL, et ce qui va se passer lorsque l'utilisateur appuiera sur
Suppr alors que vous ne l'aviez pas prévu.
C'est un peu le code de votre programme, mais rédigé en français : vous ne vous souciez pas des
if et des
else, ou même des
while; (ou autres, selon le langage dans lequel vous codez) et encore moins des fonctions de votre programme.
Si vous codez un jeu, il faudra aussi énumérer toutes les interactions possibles (débuter un dialogue, prendre un objet, tomber, sauter, acheter un objet, tuer quelqu'un, ...), et dans quelles conditions ces interactions doivent avoir lieu.
Vous pouvez aussi, si vous réalisez des fenêtres, mettre les images nécessaires ainsi que ce qu'elles représentent.
Si vous réalisez un jeu avec des personnages, vous pouvez aussi ajouter une brève présentation de ceux-ci (en indiquant leurs particularités, par exemple), s'il y a des objets, décrivez à quoi ils servent, etc.
Vous pouvez aussi, si votre projet est particulièrement conséquent, préciser quelle quantité de RAM et de CPU le programme devra utiliser au maximum. Ne donnez cependant cette indication que si vous êtes sûrs de votre coup, uniquement si vous avez l'habitude de programmer et que l'utilisation de la mémoire et du processeur n'ont pas de secret pour vous.
Indiquez aussi sur quel(s) OS votre programme devra être utilisable.
Bref, indiquez tout ce qui va vous être utile pour ne rien oublier lors du codage.
Qu'est-ce qu'il ne faut pas mettre dans notre CDCF ?
Comme dans les autres cas, il y a des informations à ne pas donner,
en plus des solutions de conception.
Il
ne faut pas mettre les dossiers de votre programme, ainsi que ses fonctions, car ça, on y réfléchit lors de sa conception, et non avant.
Il ne faut pas non plus mettre la taille des images ou de la fenêtre, par exemple, car ça aussi, c'est du domaine de la conception.
Actuellement, je n'ai que ces exemples d'informations à ne pas mettre dans un CDCF, mais si vous en voyez d'autres,
envoyez-moi un MP.
Un exemple pour bien comprendre
Pour exemple, je vais utiliser le cahier des Charges de M@teo21 dans
son TP : Mario Sokoban.
Même si vous ne programmez pas, vous pourrez comprendre cette partie, car elle ne parle que de méthodologie.
Comme vous le voyez, le CDCF est divisé en plusieurs parties :
- À propos du Sokoban :
- Le but du jeu,
- Pourquoi avoir choisi ce jeu ;
- Le Cahier des Charges ;
- Récupérer les sprites du jeu.
La première partie (
à propos du Sokoban) fait un simple tour d'horizon de ce qu'est le jeu, en quoi il consiste, mais ce, sans rentrer dans les détails.
Cependant, si vous avez bien suivi le tuto, vous aurez remarqué que La sous-partie
Pourquoi avoir choisi ce jeu ne rentre pas tout à fait dans la rédaction du CDCF, car on y parle de création de fichiers
.c, comment, pourquoi... Cette étape fait normalement partie de la conception.
La seconde partie parle des capacités du programme (ce qu'il pourra / ne pas faire). C'est la partie fondamentale, il ne faut surtout pas la rater !!
Vous devez tout dire, sans exception : si vous codez en fenêtre, listez tous les événements possibles et leurs conséquences ; si vous êtes en console, indiquez ce qui se passe au niveau de l'affichage de l'écran.
En clair, décrivez entièrement ce que devra faire le programme une fois terminé, comme si vous codiez, sauf que vous rédigez en un français habituel, lisible par tous, un peu comme si vous écriviez un roman (sauf que vous pouvez écrire en pseudo-code). C'est assez long, et il ne faut rien oublier...
Qu'est-ce que le pseudo-code ?
Contrairement à son nom, ce n'est pas un langage de programmation. C'est en fait une façon particulière de présenter un algorithme, en reprenant les structures utilisées dans la plupart des langages de programmation (
Tant que ;
si, alors... sinon, etc.), sauf qu'on ne tient pas compte de la syntaxe particulière des langages de programmation. Prenons l'exemple de l'algorithme du jeu de Plus ou Moins :
Code : Autre1
2
3
4
5
6
7
8
9
| TANT QUE nombreSecret non trouvé
RÉPÉTER demander d'entrer un nombre
SI nombreEntre < nombreSecret
ALORS indiquer que le nombre à trouver est plus grand
SINON SI nombreEntre > nombreSecret
ALORS indiquer que le nombre à trouver est plus petit
SINON Indiquer que le nombre entré est correct
FIN SI
FIN TANT QUE |
Nota : l'algorithme est simplifiable, mais sous cette forme, il me permet de vous montrer la structure en SI, SINON SI, SINON.
Ensuite, on parle des sprites du jeu. C'est la partie concernant les images du jeu. Cette partie n'est pas indispensable si vous avez peu d'images, mais dès que vous faites des projets un peu gros, vous commencerez à avoir 40-50 images, vous serez bien contents d'avoir une courte description de chacune d'elles !
Comme vous le voyez, M@teo ne parle pas une seule fois, dans son CDCF, de la façon dont il va s'organiser, il ne fait que
présenter le résultat final. J'insiste beaucoup sur le fait que vous ne devez pas donner de solutions de conception, car c'est vraiment important !!
Un conseil supplémentaire : si votre projet est très gros, je vous suggère de mettre la description des images avant de décrire le jeu lui-même. En effet, souvent, lorsque vous décrivez les événements (en fenêtre), ils mettent souvent des images en action. Donc, il vaut mieux savoir à quoi sert chaque image et ce qu'elle représente. Dans l'exemple, il aurait fallu mettre la présentation des sprites avant la partie décrivant que peut / ne peut pas faire le jeu. Cela dit, le projet n'étant pas vraiment très gros, ce n'est pas non plus trop gênant.
En bonus, voici la bête à cornes du jeu :
Strictement interdit de critiquer mes qualités artistiques.
J'en profite pour attirer votre attention sur la matière d'oeuvre ("Sur quoi agit-il ?") : on a tendance à croire qu'il s'agit du joueur, mais ça n'est pas le cas. Le joueur est celui à qui on rend service, mais ce sur quoi on agit est bel et bien son ordinateur (une autre façon de formuler la question pourrait être "De quoi modifie-t-on le comportement ?").
Je ne vous fais pas de diagramme pieuvre car ça n'est pas réellement nécessaire : la seule fonction ici est de divertir le joueur... Une contrainte éventuelle pourrait être l'usage de la SDL, mais rien de plus.