Les outils de gestion du cycle de vie logiciel

Mesure de l'avancement et de la qualité

Depuis peu les entreprises ont pris conscience de l'importance de la qualité du travail. Des nouveaux outils apparaissent ou des anciens sont ressortis des tiroirs pour vérifier le travail réalisé. On comptera dans ceux-ci les tests, la gestion d'anomalies et la qualimétrie.

Tests

Les tests sont très importants dès le commencement de la phase de développement dans le cycle de vie du logiciel. On parle même de "Test Driven Development" lorsque les tests sont réalisés avant le logiciel. On distingue trois types de tests :

Il n'y a pas à proprement parler de logiciels de tests. Les tests doivent être écrits par le développeur, en s'appuyant éventuellement sur des bibliothèques de tests comme JUnit, JTestCase... Par contre, on trouvera des logiciels permettant de gérer des suites de test, c'est-à-dire exécuter un ensemble de tests sur une fonctionnalité, un composant et à terme le programme complet, et en ressortir un rapport mettant en évidence les problèmes et leurs origines.
Le leader du marché est TestDirector de Mercury Interactive qui associe une fonctionnalité (affectée à un développeur) ses tests fonctionnels et ses bugs connus et apporte de nombreuses fonctionnalités de reporting. On pourra également se tourner vers TestComplete d'AutomatedQA ou voir sur le site http://www.opensourcetesting.org/ pour des outils open-source (par exemple TestLink en Php ou Salomé-TMF en Java qui se rapprochent de TestDirector).

Test Director montre graphiquement les résultats des tests
Résultat des tests sous Test Director

Couverture de tests

Pour être efficaces, les tests doivent être complets, c'est-à-dire vérifier tous les cas d'utilisation possible. Les tests sont inutiles s'ils ne couvrent pas l'intégralité du projet. Pour résoudre ce problème, on utilisera des logiciels de couverture de code comme BullseyeCoverage pour le C/C++, Emma ou Cobertura en Java, NCover ou Clover en DotNet. Ces logiciels vérifient que l'ensemble du code source soit exécuté lorsque la suite de test est passée.

Gestion des anomalies et évolutions

Dès qu'un projet est développé par plusieurs personnes, il est indispensable d'utiliser un gestionnaire d'anomalies. Certains gestionnaires d'annomalies implémentent un workflow de résolution :

Le logiciel de gestion d'anomalies le plus connu est Bugzilla, développé en open-source par la fondation Mozilla. Bugzilla est développé en perl et s'appuie sur une base de données MySQL. C'est encore le plus utilisé, mais la relève arrive avec Jira, de Altassian.
Jira est écrit en Java et est mis à la disposition des projets open-source gratuitement. Il propose plus de fonctionnalités que BugZilla, dont la possibilité de créer des formulaires de bugs et des workflows de résolutions personnalisés, la gestion d'une roadmap ainsi qu'une sécurité accrue.
La communauté Tigris propose également Scarab, écrit en Java, qui propose un niveau de fonctionnalités intermédiaires entre Bugzilla et Jira.

La Roadmap de Jira
La Roadmap de Jira

Intégration continue

L'intégration continue commence à apparaître dans les grandes entreprises, mais est utile à tout le monde, même lors des projets dans le cadre de l'école Ingénieur 2000. L'intégration continue permet d'avoir des retours permanents sur l'évolution du projet, construisant le projet à intervalles réguliers et y en exécutant des séries de tests. Le résultat est à disposition de l'ensemble de l'équipe de développement dès que le développement a commencé et donne des informations sur les bugs fonctionnels, de programmation et d'intégration.

De nombreux logiciels libres ont été développés pour l'intégration continue : Cruisecontrol, Continuum (fondation Apache), Tinderbox (fondation Mozilla). IBM a lui aussi son logiciel d'intégration continue : Rational Build Forge.

Intégration continue avec Cruisecontrol
Intégration continue avec Cruisecontrol

Reporting et indicateurs (Qualimétrie)

La plupart de ces logiciels répondent à un même besoin : avoir une vue d'ensemble sur le projet, regrouper les tests, la couverture de code, l'état des livrables afin d'obtenir des indicateurs les plus précis possibles.
Ces indicateurs devront être croisés avec le suivi de projet pour déterminer son avancement.