site perso d’Emmanuel Dieul contact
plan du site
Photos
Expériences professionnelles
Logiciels
CV et références

PCDC : écriture de cahiers des charges

dimanche 26 juin 2011

Introduction et fonctionnalités

PCDC, PHP pour les Cahiers Des Charges, est un logiciel qui permet d’écrire un cahier des charges. Ce logiciel a été conçu pour me permettre d’écrire un cahier des charges pour la construction d’une maison. Toutefois, ce logiciel étant générique, il permet également d’écrire des cahiers des charges dans d’autres domaines [1] et même tout type de document structuré en sections et paragraphes.

Évidemment, il n’y a rien d’extraordinaire dans le fait de permettre la rédaction d’un cahier des charges : un simple traitement de texte suffit. Toutefois, PCDC fournit plusieurs aspects essentiels à la rédaction de cahiers des charges :

  • la gestion des versions des exigences,
  • la validation d’un document par rapport à la validation des exigences,
  • la gestion des acteurs (rédacteurs et/ou valideurs). Tout document se satisfaisant de ces contraintes peut être écrit avec PCDC.

Cet outil fournit également une génération PDF du document écrit.

La gestion de version

Chaque document est découpé en sections, chacune d’elles étant remplie par des exigences ou d’autres sections. Les exigences, elles, constituent deux groupes : les exigences elles-mêmes (formalisées sous forme structurée) et les paragraphes.

Chacun de ces deux éléments (section et exigence) est soumis à la gestion des versions. Ceci permet notamment :

  • de visualiser l’historique d’un élément et les modifications apportées (sous forme d’affichage de différences/suivi des révisions),
  • de poser des "références" [2] sur tout un document, figeant ainsi l’ensemble des versions des éléments du document.

La validation de document

Pour PCDC, la validation d’un document correspond à la validation de ses exigences. Chaque exigence (et paragraphe) subit ainsi un processus simple de validation. Chaque valideur peut soit :

  • accepter l’exigence
  • refuser l’exigence avec un motif
  • réinitialiser son acceptation

Le document n’est validé que si tous les valideurs ont accepté chacune des exigences. Autrement dit, une exigence refusée ou non acceptée fait que le document est non accepté.

Les acteurs

Autour d’un cahier des charges, deux catégories d’acteurs sont rencontrés :

  • les rédacteurs du cahier des charges, qui ont les droits de rédaction [3] sur le cahier des charges ;
  • les valideurs, qui ont les droits de validation du cahier des charges.

Un acteur peut être rédacteur, valideur ou les deux.

Intégration dans SPIP, accès pour d’autres systèmes

Pour avoir une mise en forme dans le contenu des exigences et des paragraphes (listes à puces, gras, italique, images...), PCDC est directement interfacé avec SPIP. En chargeant PCDC au sein de l’article, les outils d’édition de SPIP s’intègrent automatiquement et formatent ainsi l’affichage du document.

Il est également possible d’avoir un cahier des charges par article SPIP. De ce fait, la gestion des traductions dans SPIP se faisant via plusieurs articles (avec des identifiants différents), une traduction d’un article aura nécessairement un cahier des charges distinct de sa version originale.

SPIP peut parfois causer des problèmes de rafraichissement à cause de sa mémoire cache intégrée, ce qui se prête assez mal aux logiciels PHP. Idem pour la mémoire cache des navigateurs. Il faut donc modifier le squelette "article.html" pour y inclure les entêtes suivantes :

  • #CACHE{0}
  • #HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"}
  • #HTTP_HEADER{"Expires: Mon, 26 Jul 1997 05:00:00 GMT"}
  • #HTTP_HEADER{Pragma: no-cache}

Si votre site SPIP ne contient pas que des articles avec des cahiers des charges [4], il faut dupliquer le squelette "article.html" dans un fichier "article-n°rubrique.html" [5] et y incorporer ces directives.

Toutefois, PCDC peut également s’intégrer à un autre système que SPIP. Il faut alors développer la couche spécifique en PHP dans la classe "Cdc_connecteur_specifique".

Installation et licence

Zip - 16.5 Mo
PCDC (09/05/2011) - 16.5 Mo

PCDC est distribué sous licence GPL. L’arborescence de l’archive est simple :
- mes_fonctions.php : permet à SPIP d’exécuter du code PHP dans un article
- include/ : contient tout le code de PCDC
- include/css : contient les styles HTML de PCDC
- include/images : contient les images de l’interface HTML de PCDC
- include/lang : contient les fichiers de langue (français, anglais)
- include/Text : contient le code de Text_Diff, distribué sous licence LGPL
- include/fop-1.0 : contient FOP, qui permet la génération de documents PDF et distribué sous licence Apache

Pour une installation sous SPIP, il suffit de décompresser l’archive à la racine du site, en vérifiant au préalable que vos fichiers ne seront pas écrasés (e.g. mes_fonctions.php). Ensuite, il faut activer la nouvelle fonction décrite dans "mes_fonctions.php" en remplaçant la balise #TEXTE par [(#TEXTE|autoriser_php)] dans le squelette de l’article : "article.html". Enfin, dans l’article prévu pour le cahier des charges, il suffit d’écrire #INCLURE(cdc_gerer.php).
Dans le cas où PCDC ne se lancerait pas, il faut alors vérifier que le dossier "include" est bien dans le chemin de recherche de PHP.

Pour une installation sur un autre système, le fichier "mes_fonctions.php" ne sert pas. Le dossier "include" créé par l’archive doit alors être accessible depuis le système.

Génération PDF : installation supplémentaire si besoin

PCDC génère des fichiers PDF à partir d’un fichier XSL:FO et en utilisant FOP. Cela nécessite que le serveur HTTP autorise la fonction exec et que java 1.5 ou supérieur soit installé sur ce serveur.

Dans le cas où le serveur ne dispose pas cette configuration et que vous ne pouvez pas la modifier (cas d’un hébergeur comme Free), vous pouvez utiliser un serveur distant [6] disposant de cette configuration pour générer des fichiers PDF. Ce serveur n’a pas besoin d’être disponible en permanence : s’il n’est pas disponible, le bouton de génération PDF ne s’affichera pas.

Sur le serveur distant, il faut alors :

  • avoir un serveur web et java d’installé [7],
  • déployer PCDC (seuls quelques fichiers PHP de PCDC et FOP sont nécessaires).

Sur le serveur où PCDC est hébergé (e.g. Free), il faut alors :

  • modifier la fonction Cdc_connecteur_specifique ::adresse_serveur_generation_pdf et renseigner l’adresse du serveur distant, comme "http://serveur distant/chemin/vers/PCDC/cdc_pdf_distant.php

Si le serveur distant est correctement configuré, PCDC (installé sur le serveur principal) gèrera automatiquement la génération PDF.

Test de PCDC

Voir PCDC par l’exemple est la meilleure façon de le découvrir. Ici vous trouverez une interface bridée car vous n’êtes ni rédacteur ni valideur. Toutefois, cela vous présente le bandeau d’actions document, le sommaire et, dans l’ensemble, la représentation des exigences ou paragraphe et leur intégration à SPIP.


[1la conception de logiciel notamment

[2les références sont semblables aux baselines Clearcase ou aux tags CVS

[3création, modification et suppression de sections et d’exigences

[4auquel cas la gestion du cache est intéressante

[5n°rubrique correspond à l’identifiant de la rubrique contenant votre cahier des charges

[6sur ce site, j’utilise le PC de mon domicile pour générer des PDF

[7il n’est pas utile d’avoir un serveur MySQL