12 septembre 2006

Lutter contre les mystères du développement...

Au premier abord l'informatique n'est constituée que de zéros et de uns, combinés par une logique implacable. Il n'en est rien, bien heureusement pour tous les Développeurs qui trouveraient le temps bien long sans le piment apporté par bogues et effets de bords pouvant survenir dans les applications !

Et oui, ce qui est obligatoirement vrai un jour, peut finalement ne pas l'être le lendemain pour une raison qu'il sera difficile de trouver, et qui provoquera un report de planning. Quel développeur n'a pas pesté sur un code qui marchait très bien, et qui ne plus fonctionne sans avoir été modifié ...

L'arme absolue en la matière n'existe pas, mais il est possible dans des applications sensibles d'adopter une programmation défensive. Elle consiste à compléter les traitements de tests supplémentaires, vérifiant ce qui normalement n'est pas à vérifier, car n'arrive jamais. Ces tests sont les assertions.

En W-Langage, la fonction "dbgAssertion()"vous permettra de mettre en place ces tests supplémentaires. Les assertions seront actives durant l'exécution en mode test sur le poste de développement. Il sera ainsi possible de détecter une éventuelle anomalie, insoupçonnée lors de la conception. Typiquement, les tests seront placés dans tous les traitements qui vont recevoir des paramètres, afin de vérifier leur valeur.

Voici une méthode de programmation permettant d'activer les assertions dans l'application en production. Cela permet d'effectuer des tests complémentaires, une fois l'application compilée, et diffusée. Il suffit d'ajouter une ligne de code unique dans le projet, et de lancer l'exécutable avec une ligne de commande :

// Initialisation du projet, activation des assertions
// si la ligne de commande contient ASSERT
dbgActiveAssertion(Position(LigneCommande(), "ASSERT", 1, sansCasse))

La mise en place d'une programmation défensive a un coût en temps réel lors de l'écriture du code. En revanche elle permet un gain de temps significatif dans les phases de mises au point.

Aucun commentaire: