Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zér0 > Les tutoriels > Non-Officiels > Site Web > Divers > Lecture du tutoriel

Rédiger correctement un Cahier des Charges

Avatar
Auteur : souls killer
Créé : le 12/09/2007 16:12:50
Modifié : le 03/06/2008 15:45:10
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Salut à vous, jeunes padawans Zér0s.

Si vous êtes ici, c'est soit parce que vous avez besoin d'aide pour rédiger un cahier des charges, soit parce que vous n'avez pas compris le titre. :p

Ici, nous allons apprendre :


Allez, c'est parti ! ;)
Sommaire du chapitre :

Généralités sur le CDCF

C'est quoi, le "CDCF" ? Je ne suis pas un cours sur les martiens, moi !!


Non, ne vous en faites pas, ce n'est pas une secte. :p
C'est en fait le nom correct de "Cahier des Charges". CDCF signifie Cahier des Charges Fonctionnel.

À quoi sert un CDCF ?



Le CDCF est un document utilisé par les entreprises pour savoir ce que devra ou non faire un produit. Toutes les entreprises utilisent un CDCF pour tous les produits qu'elles conçoivent (que ce soit un stylo ou le nouveau satellite de la NASA). ^^
Il sert aussi à certains particuliers (comme vous...) qui ont des projets de développement et de conception d'objets / de programmes / de sites web.

Que mettre dans un CDCF ?



Dans un CDCF, on intègre toutes les informations nécessaires pour savoir ce que doit faire ou non un produit, ainsi que ses caractéristiques (forme, poids, couleur(s), dimensions, ...).
Par exemple, dans le cas d'un stylo, on met tout ce qu'il doit pouvoir faire.
Dans le cas d'une voiture, on met tout ce que doit savoir faire la voiture.

Le CDCF est un document court (environ une page), qui doit être concis et complet (il ne faut oublier aucune information, car dans certains cas, cela peut se révéler catastrophique : imaginez que l'on oublie, dans le cas d'une voiture, combien de chevaux aura le moteur !!).

En plus de ce que doit savoir faire ou non le produit, on peut ajouter le prix final (dans le cas où le produit est à vendre), les normes auxquelles répond le produit, etc. ;)

Comment ça, les normes ?

En fait, les entreprises se sont fixé des règles très précises et strictes sur la façon dont doivent être rédigés leurs documents. Toutes ces règles sont régies par l'AFNOR .



Le CDCF doit être obligatoirement respecté : c'est sur ce document que se basera toute la conception et toute la fabrication.

Qu'est-ce qu'il ne faut pas mettre dans un CDCF ?



Il ne faut pas mettre de solutions de conception.
Par exemple, si le CDCF d'un stylo dit qu'il faut que ce stylo soit rechargeable, il ne dira pas comment faire pour que le stylo soit rechargeable, mais uniquement qu'il faut qu'il le soit.
Si on développe une alarme qui doit réagir au mouvement, on dit dans le CDCF : "L'alarme devra s'enclencher en cas de mouvement", mais on ne dit pas : "L'alarme devra s'enclencher en cas de mouvement." En cas de mouvement, une bille envoie un signal à l'interrupteur et ferme le circuit électrique, ce qui provoque un signal sonore."

Toute la partie en italique ne devrait pas figurer sur le CDCF, car ce sont des solutions. Comme je l'ai déjà dit, il ne faut jamais proposer de solutions de conception dans un CDCF.

Ouais, mais pourquoi il ne faut pas mettre de solutions de conception ?


La première raison, c'est que ce n'est pas sa place... On réfléchit à la conception après avoir décrit le produit et son utilité.
Il y a aussi des raisons de sécurité : imaginez qu'une entreprise ait pour idée de développer un télé-porteur (pour ceux qui ne sont pas sûrs, le télé-porteur n'existe pas encore :p ), et qu'elle écrive dans son CDCF des solutions de conception... Comme un CDCF est édité un grand nombre de fois (suffisamment pour que toutes les équipes du projet puissent en avoir un exemplaire), le concept pourrait être "volé", et par conséquent reproduit...
Il faut aussi se dire que trouver toutes les caractéristiques d'un objet non encore inventé représente suffisamment de travail pour ne pas, en plus, devoir trouver comment le faire fonctionner. ^^


Pour aller plus loin



Comme vous le voyez, dans cette partie, je ne fais qu'effleurer le sujet (sinon, il faudrait presque un big-tuto). :p

Si vous souhaitez aller plus loin dans le sujet, je vous conseille deux articles de Wikipédia :
Le premier lien est particulièrement riche d'un point de vue juridique et commercial, ce qui vous sera utile si vous réalisez vos projets dans un cadre professionnel. ;)
Le second est beaucoup plus axé méthodologie, et parle notamment des normes.


Contraintes et objectifs



Tous les objets créés le sont parce qu'ils sont utiles (enfin, normalement). :D
Pour être utiles, ils doivent répondre à des besoins.
On appelle ces besoins : des contraintes.

On doit forcément répondre à ces contraintes (sinon, le produit ne sert plus à rien) . :p

En plus des contraintes "causées" par le client, il y a des contraintes émanant de l'entreprise qui développe : temps, argent, matériel, ...
En effet, si un client veut un produit (un stylo, par exemple) dans deux semaines, il faut pas lui donner dans 3, sinon, ça donne des clients mécontents, et l'entreprise perd de l'argent.
De plus, une entreprise ne peut développer des objets qu'avec les moyens dont elle dispose. Elle ne peut pas créer un objet qui lui coûtera 1 million de dollars si elle n'en a "que" 700 000 ou 800 000.
Il y a aussi la contrainte du personnel.

Les entreprises indiquent ces contraintes dans le cahier des charges.


À chaque fois qu'une entreprise développe un produit, elle a un objectif (d'où le titre, d'ailleurs...). Cet objectif, la plupart du temps, c'est de gagner de l'argent. :pirate:
Seulement, en fonction des objets créés, l'argent gagné ne sera pas le même... Le cahier des charges doit aussi définir l'objectif à atteindre.

Si vous codez pour votre loisir, ces notions de contrainte et d'objectif vous importent peu, vous pouvez donc les oublier mais c'est quand même bon à savoir. ;)

Un Cahier des Charges en programmation

Ici, nous allons voir comment rédiger un CDCF correct en programmation, avec pour exemple le langage C.

Le C n'est qu'un exemple, mais cela fonctionne de la même façon 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, ce n'est pas du tout pareil. :p

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 :D ] ).
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 d'or de papier et de faire une sorte de brouillon de votre algorithme.

Qu'est-ce qu'on algorithme ?


C'est exactement ce que vous êtes en train de faire. :D C'est-à-dire le listing des différentes "réactions" de votre programme en fonction des actions des utilisateurs.
Il faut absolument penser à tout. 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; 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 quelle 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, s'ils en ont, par exemple), s'il y a des objets, décrivez à quoi servent les objets, 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 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 du 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 :


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 partie de la conception, normalement. :p

La seconde partie parle des capacités du programme (ce qu'il pourra faire / ne pas faire). C'est la partie fon-da-men-tale (je peux écrire plus gros, si vous voulez), qu'il ne faut surtout pas rater !! :D

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 compréhensible pour le commun des mortels les personnes qui ne programment pas. ^^
C'est assez long, et il ne faut rien oublier...


Ensuite, on parle des sprites du jeu. C'est la partie concernant les images du jeu. Cette partie n'est pas forcément 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 en plus : si votre projet est très gros, je vous conseille 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. :D
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.

Un Cahier des Charges pour une page web dynamique

Ici, nous allons voir en détails ce qu'il faut mettre dans un CDCF pour une page web dynamique (avec pour exemple un script PHP). :)

Ce chapitre fonctionne avec tous les développements web, mais je doute qu'il soit utile de rédiger un CDCF si votre site ne contient que du HTML. ;)


Cela risque d'être un peu plus complexe que pour un programme, car il faudra penser à tous les liens, toutes les pages qu'on devra créer... Sans pour autant trop entrer dans les détails parce qu'on ne veut pas avoir un document de 30 pages. Si vous avez bien lu, vous vous rappellerez qu'il faut plus ou moins 1 page. Mais bon, pour du PHP, comme c'est plus chiant (et parce que suis très gentil), on va accepter jusqu'à trois pages... :D
Il faudra faire attention à rédiger un CDCF pour chaque "sous-partie" de votre projet : un pour le forum, un autre pour les news, un autre encore pour le livre d'or, un autre pour la gestion du staff, un autre une fois de plus pour... euh... Enfin, vous m'avez compris. ^^

Généralités sur les CDCF en PHP



Ce qu'il faut mettre dans un CDCF en PHP



En fait, comme d'habitude, il faudra lister ce que fera le site (original, n'est-ce pas ?). :p
Par exemple, dans les forums, il faudra dire si les sujets seront éditables...
Mais il faudra aussi indiquer des informations supplémentaires : la façon dont cela sera fait.

Cependant - et c'est une des particularités des CDCF pour le web - il ne sert à rien d'indiquer ce que ne pourra pas faire le script. En effet, s'il se passe une chose impossible en PHP, il faut forcément afficher un message d'erreur...

C'est là que ça devient compliqué : il ne faut en aucun cas proposer des solutions de conception mais simplement détailler la façon dont sera faite l'action demandée par l'utilisateur :


Ce qu'il ne faut pas mettre dans un CDCF en PHP



J'insiste, car c'est vraiment très important : il ne faut pas donner de solutions de codage.

Si l'utilisateur doit être redirigé à l'accueil du forum après avoir posté, dites-le, mais ne dites pas comment vous allez appeler le lien qui mène vers l'index du forum.

Un bon exemple pour bien comprendre



Dans mon exemple, je vais rédiger un CDCF pour un système d'inscription :

Ce que le système devra faire



Les deux phases de l'inscription devront avoir lieu dans des pages différentes !


Première phase de l'inscription

Cette partie indiquera les étapes de l'inscription.



Seconde phase de l'inscription

Je rappelle que cette phase a lieu dans une page différente de la première. ;)


Cette partie permettra à l'utilisateur de personnaliser son interface membre.




Voilà : après, c'est à vous d'imaginer tout un tas d'options diverses et variées, mais bon, personnellement, je suis moyennement motivé pour trouver 50 possibilités du script... Et vous, vous serez moyennement motivés pour lire ces 50 propositions. :p

OK, c'est bien, cet exemple, mais moi, j'arrive pas à organiser correctement mon document !! Je fais comment ?


En fait, il n'y a pas d'organisation universelle, le tout étant que votre document décrive précisément ce que fait le script. ;)

Souvent, ce que je fais, c'est une liste détaillant tout ce qui se passe au fur et à mesure que le visiteur avance dans la page.
Regardez mon exemple : j'ai détaillé étape par étape ce qui se passe au fur et à mesure de l'inscription.
Si au début, vous avez du mal à trouver une organisation bien à vous, je vous conseille de faire pareil. :)

Un Cahier des Charges pour un design en CSS

Ici, nous allons explorer les mystères des CDCF pour créer un design. Vous allez souffrir. :diable:

Si toutes vos pages ont des designs différents, je vous conseille de faire un cahier des charges général (pour le menu, les boutons, etc.), et un cahier des charges différent pour chaque sous-partie de votre site (forum, news, album photos, ...).
Il faudra que vous créiez un fichier CSS par CDC que vous avez écrit.


Généralités sur le CDCF en CSS



Ce qu'il faut mettre dans un cahier des charges CSS



Voilà : comme dans les autres chapitres, nous allons voir ce qu'il faut mettre dans un CDCF pour un design. Voici ce que je fais, en général :

Si besoin, vous pouvez faire la même chose avec la police (un conseil : soyez fainéants, et ne le faites pas si la police ne change pas :-° ).

Je mets aussi :







Si vous avez des images et qu'elles doivent toutes avoir la même position (ce qui doit être assez rare) ^^ , indiquez-le aussi ; et idem si vous avez des tableaux, des cadres, indiquez si les angles sont droits, arrondis, la couleur des barres, ...

Comme vous le voyez, c'est assez long, et il faut penser à tout (d'ailleurs, je suis presque sûr d'avoir oublié quelque chose, mais moi, j'ai une excuse : je veux que vous lisiez le tuto en entier) :p .

Encore un exemple !



Voilà, on arrive au traditionnel exemple. ;)

Je vais rédiger le CDCF du design de la speedbarre du SdZ (sous Bluzaz2).



P.-S. : il se peut que les noms de couleurs que j'ai écrits ne soient pas exacts, car je suis daltonien. ^^ N'hésitez pas à me corriger sur les couleurs. ;)
J'ai sans doute oublié certaines choses... Dans ce cas aussi, n'hésitez pas à me prévenir. ;)

Q.C.M.

Que signifie CDCF ?
l'AFNOR est chargée de régir les normes :
Que ne faut-il pas mettre dans un cahier des charges ?
Dans un CDC pour un programme, il faut mettre :


Voilà : je pense que vous en savez assez pour pouvoir rédiger correctement un Cahier des Charges pour vos projets. ;)

Si vous avez des suggestions ou remarques, n'hésitez pas à commenter ce tuto ou à m'envoyer un MP. ;)

Merci aux zCorrecteurs Klouguinette et Craw pour avoir corrigé ce tuto avec efficacité et rapidité.
Merci aussi à vous qui avez lu ce tuto jusqu'à la fin. ^^
Merci enfin à tous ceux qui ont posté dans le topic dédié à ce tutoriel (topic qui n'est plus accessible car il a été supprimé) pour m'aider à rédiger un texte de la meilleure qualité possible.

Par ailleurs, si quelqu'un est motivé pour créer un icône pour ce mini-tuto, qu'il n'hésite pas à me faire signe. :D
Auteur : souls killer
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 679 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0811s (0.0673s)