Nous distinguons sept phases dans la vie d'un produit logiciel:
Toute spécification dans le rapport des exigences doit se référer explicitement aux documents de base. Les changements des exigences doivent également se référer explicitement aux demandes faites par l'utilisateur avec de préférence des documents à l'appui.
Dans le rapport de spécification il est demandé de préciser les éléments suivants:
Eléments à prendre en compte pour l'élaboration du document de conception:
Il est important durant la période qui suit immédiatement l'installation chez le client du logiciel de suivre les rapports de bug. Pour cela nous préconisons l'utilisation de l'outil de suivi des réclamations de sourceforge.net Un outil de suivi des bug permettant de suivre les informations suivantes:
Aucun bug déclaré ne doit rester plus de 48h sans être assigné à un membre de l'équipe du projet qui est chargé de l'instruire.
On essaiera autant que possible d'écrire un fichier par fonction, procédure ou classe. Un fichier ne devrait pas dépasser deux à trois pages de listings. On ne regroupera qu'exceptionnellement plusieurs fonctions dans un seul fichier. Dans ce cas, chaque fonction aura son propre entête comme cela est décrit dans le paragraphe qui suit.
Pour les classes C++ il est préférable d'observer les règles suivantes:
Chaque fichier devra contenir une entête sous forme de commentaires. Cette entête devra contenir au moins les informations suivantes :
Les commentaires doivent être suffisant et utiles : ni trop ni trop peu. On suivra la notation de l'outil doxygen. Les identificateurs de fonctions, classes et variables devront suivre les règles Java. La présentation des programmes suivra la présentation des programmes GNU/Linux.
Le processus de développement devra livrer plusieurs produits:
Nous distinguons deux types de produits élaborés durant les diverses phases du cycle de vie d'un produit logiciel : les documents et les applications ou programmes. Un document est un texte, formaté ou non, sur une ou plusieurs pages, écrit sous forme électronique et qui est généralement imprimé sur papier. Les applications ou programmes sont des logiciels construits à partir de documents que sont les programmes sources. Pour ces deux types de produits, la gestion des configuration consiste à gérer la codification, les versions, le stockage et l'intégrité de ces produits.
Tout produit final ou intermédiaire, qu'il soit un document ou un logiciel aura un numéro de version. Le numéro de version est de la forme x.y où x est le numéro de version majeure et y le numéro de version mineure. Quand des modifications importantes sont apporté à un produit, on change son numéro de version majeure. Exemple de modification majeurs : changement important des spécifications ou ajout de nouvelles spécifications pour un logiciel ou un rapport de spécification. Quand il s'agit de correction moins importante on change uniquement le numéro de version mineure. Exemple de changement mineur : correction de bugs dans un logiciel ou d'erreurs mineurs dans un document écrit.
Bien qu'un logiciel soit lié de manière intrinsèque à un document de conception d'une version bien déterminée, les numéros de version du document de conception et du logiciel évoluent différemment. En effet le document de conception peut ne pas avoir changé alors le logiciel a changé de version pour corriger un bug ou pour ajouter une nouvelle fonctionnalité en cas de livraion par étape, etc. Par contre il y a une adéquation parfaite entre un logiciel construit (compilé et linké) et ses programmes sources. On doit pouvoir régénérer sans problème un logiciel à partir de ses sources et inversement on doit retrouver immédiatement les sources à partir de la version du programme construit. Pour cela on utilisera le logiciel de gestion de versions concurrentes cvs pour tous les programmes sources et pour la documentation. Celle-ci pour bénéficier des possibilités de cvs il est souhaitable qu'elle soit produite avec des outils générant des fichiers texte comme Latex, Lyx ou les outils à base de XML ou SGML.
Chaque document est caractérisé par les éléments suivants :
Type de documents | Code associé | Type de documents | Code associé |
Plan de développement de projet | PL | fichiers sources | FS |
Document de plannification | DL | tarball's du projet | TB |
Rapport de spécification | SP | Résultat des tests qualité | RQ |
Document de conception | CO | Rapport de recette provisoire | RP |
Plan Qualité du projet | PQ | client Rapport de recette définitive client | RD |
Rapports d'état d'avancement | RA | Rapport de support logiciel | SL |
Guide d'utilisateur | GU | compte rendu de réunion | CR |
Guide de référence | GR | Devis ou proposition technique ou commerciale | DP |
Guide d'installation | GI | Correspondance, lettre, mail, fax | CL |
README | RM | Procédures et standards | PS |
INSTALL | IN | Documenttation générale | DG |
Makefile | MF | Rapport de conclusion de projet | RC |
Le nom du fichier électronique contenant le source du document doit être sous la forme pppCCnnnVx-y_nom.ext où 'pppCCnnn' est la référence du document explicité ci-dessus et 'nom' est un nom quelconque donné au fichier et 'ext' est l'extension du nom de fichier, correspondant en générale à la nature du fichier : .c pour fichier source C, .lyx pour fichier source lyx, etc. Quant à 'Vx-y' c'est le numéro de version du document explicité au paragraphe 2.6.1.
Dans le cas du projet Sirius, le numéro du projet 'ppp' peut être omis car il y a un seul projet en cours.
Une application est forcément stockée sous-forme électronique. Elle est caractérisée par:
Chaque projet a son espace de stockage sur un serveur de fichier sous forme d'un répertoire nommé ARnnn où nnn est le numéro de projet et 'AR' signifie 'armoire'. Ce répertoire contient deux sous-répertoires 'Documents' et 'Applications', le premier contient tous les documents du projet et le second, lui même subdivisé en deux sous répertoires 'src' et 'runtime' contenant respectivement les diverses versions des fichiers sources et des applications construites.
En principe le répertoire consacré au projet ne contient que les documents validés et non pas les documents en cours d'élaboration, de vérification ou de validation. Idem pour les applications on ne stockera que les versions d'applications stables qui ont été publiées. Toute autre version en cours de développement ne sera pas stockée dans ce répertoire.
Concernant les fichiers sources des versions déjà publiées comme celles en cours de développement, ils seront tous gérés à l'aide d'un CVS. En principe une version d'une application extraite du CVS devra être rigoureusement identique à celle stockée dans le répertoire du projet.
Il n'est pas exclu que les versions papiers des documents de projets soient stockées dans une armoire physique consacrée au projet. Par ailleur tous les documents du projet, sauf les fichiers textes, doivent être publiés au format PDF pour être consulté sur internet/intranet.
Chaque produit intermédiaire ou final, document ou application est signé à l'aide d'un résumé MD5. Ce résumé créé au moment de la validation du document permet de vérifier que le produit n'a pas été altéré. On créera une table dans une base de données où il y a la référence du produit et son résumé MD5. Quiconque pourra consulter cette base pour vérifier l'intégrité du poduit qu'il a entre les mains. La mise à jour de cette table est évidemment restreinte et tient compte des règles de sécurité permettant d'avoir confiance dans son contenu.
Chaque document écrit ou programme écrit doit être revu par une autre personne que celle qui l'a écrit. Le but est de le critiquer et en vérifier la conformité aux exigences qualité convenus. Cette vérification peut se faire de manière formelle dans une réunion ou informelle selon l'importance du document ou programme.
Nous distinguons trois types de test :