6.1. Pourquoi faire une programmation modulaire ?
Ce qui coûte le plus cher en informatique, c'est le développement de logiciel,
pas le matériel. En effet, développer un logiciel demande du temps, de la main d'oeuvre qualifiée, et
n'est pas facile (il y a toujours des erreurs). De plus, les logiciels développés sont souvent spécifiques
à un type de problème donné. Pour chaque problème, il faut tout refaire.
Ce n'est pas un très bon bilan. Pour éviter tous ces inconvénients, une branche
de l'informatique a été développée : le génie logiciel. Le génie logiciel
donne les grands principes à appliquer lors de la réalisation d'un programme, de la conception
à la distribution, et sur toute la durée de vie du projet. Ce sujet dépasse largement le cadre
de ce cours, aussi je ne parlerais que de l'aspect codage seul, c'est-à-dire ce qui concerne le C/C++.
Au niveau du codage, le plus important est la programmation modulaire. Les idées
qui en sont à la base sont les suivantes :
diviser le travail en plusieurs équipes ;
créer des morceaux de programme indépendants de la problématique
globale, donc réutilisables pour d'autres logiciels ;
supprimer les risques d'erreurs qu'on avait en reprogrammant
ces morceaux à chaque fois.
Je tiens à préciser que les principes de la programmation modulaire ne
s'appliquent pas qu'aux programmes développés par des équipes de programmeurs. Ils s'appliquent aussi
aux programmeurs individuels. En effet il est plus facile de décomposer un problème en ses éléments,
forcément plus simples, que de le traiter dans sa totalité (dixit Descartes).
Pour parvenir à ce but, il est indispensable de pouvoir découper un programme
en sous-programmes indépendants, ou presque indépendants. Pour que chacun puisse travailler sur sa partie
de programme, il faut que ces morceaux de programme soient dans des fichiers séparés.
Pour pouvoir vérifier ces morceaux de programme, il faut que les compilateurs
puissent les compiler indépendamment, sans avoir les autres fichiers du programme. Ainsi, le développement
de chaque fichier peut se faire relativement indépendamment de celui des autres. Cependant, cette division
du travail implique des opérations assez complexes pour générer l'exécutable.