2
Compléments sur la modularité des programmes en langage C / Eric Bachard Mai 2004 Modularité des programmes en langage C N.B. : ceci est la première version de ce document. Malgré la relecture, il reste probablement des erreurs. Merci de m'en faire part, afin de pouvoir les corriger. Merci d'avance. Eric Bachard Mai 2004 Bibliographie (la lecture de ces ouvrages est vivement conseillée) : [1] Méthodologie de programmation en langage C (3ème édition) , Jean Pierre Braquelaire, Editions Dunod, Paris, 2000. ISBN : 2 10 004782 5 [2] Le langage C, Norme ANSI (2ème édition), Brian W. Kernighan, Denis M. Ritchie , éditions Dunod, Paris, 2000. ISBN : 2 10 005116 4 [3] Programmation en C, Byron S. Gottfried (2ème édition), Série Schaum, éditions Mc GrawHill, Paris, 1997. ISBN : 2-7042-1289-9 Introduction Un programme informatique écrit en langage C, pour être bien conçu, doit être modulaire. C'est un gage de qualité, de portabilité, de professionnalisme, et de bien d'autres choses encore. Le but principal de ce document est de justifier, par la description des principes de base, l'intérêt de la programmation modulaire. Définitions : Modularité : pour être considéré comme modulaire, un programme informatique écrit en langage C doit être éclaté en composants appelé modules, chaque module respectant au mieux chacun des 5 objectifs suivants: Lisibilité : concerne la facilité avec laquelle la personne lisant le code source comprend le comportement et la mise en oeuvre de celui-ci. En résumé : les astuces permettant d'écrire toujours moins de choses sont à éviter. Un code clair et bien commenté est toujours plus lisible qu'un code concis et sans commentaires. Trop commenter n'est pas bon non plus, et seule l'expérience permet de commenter avec précision. Maintenabilité : ce critère est celui qui permet de mesurer la fcilité à détecter des erreurs et à pouvoir les corriger sans en introduire de nouvelles dans le reste de l'application. Portabilité : un logiciel de qualité doit être écrit de telle manière que son utilisation sur d'autres plateformes (Systèmes d'exploitation et/ou Architecture) ne pose pas de problème. Ce point concerne surtout le choix des bibliothèques de fonctions utilisées (API) et le respect de règles élémentaires dans l'organisation du programme. Un programme portable est généralement bien écrit. Extensibilité : La dépendance entre modules doit être réduite au strict minimum. Cet objectif mesure à quel point chaque partie du programme est indépendante des autres, et peut être modifiée (ajout de foonctionnalités, par exemple) sans engendrer de difficulté(s) dans les autres parties, ni de dysfonctionnement de l'application dans son ensemble. La réutilisabilité : un module bien écrit doit pouvoir être réutilisé (après une légère modification, éventuellement) dans un autre programme. Même longtemps après avoir été écrit. Comportement indéfini d'un programme Un comportement indéfini (encore appelé Undefined Behaviour ou UB) est un bug grave. Il signifie que le comportement du programme est imprévisible et que tout peut arriver, y compris, et c'est ça qui rend ce bug très dangereux, un comportement d'apparence conforme. Il n'existe pas de moyen automatique de détecter tous les UB d'un programme. Seul un contrôle visuel fait par une personne chevronnée permet de détecter un tel bug. Page 1/2

Modularité des programmes en langage C - …eric.bachard.free.fr/UTBM_LO20_A07/Documentation/... · Compléments sur la modularité des programmes en langage C / Eric Bachard Mai

Embed Size (px)

Citation preview

Page 1: Modularité des programmes en langage C - …eric.bachard.free.fr/UTBM_LO20_A07/Documentation/... · Compléments sur la modularité des programmes en langage C / Eric Bachard Mai

Compléments sur la modularité des programmes en langage C / Eric Bachard Mai 2004

Modularité des programmes en langage C

N.B. : ceci est la première version de ce document. Malgré la relecture, il reste probablement des erreurs. Merci de m'en faire part, afin de pouvoir les corriger. Merci d'avance.

Eric Bachard Mai 2004

Bibliographie (la lecture de ces ouvrages est vivement conseillée) :

[1] Méthodologie de programmation en langage C (3ème édition) , Jean Pierre Braquelaire, Editions Dunod, Paris, 2000. ISBN : 2 10 004782 5

[2] Le langage C, Norme ANSI (2ème édition), Brian W. Kernighan, Denis M. Ritchie , éditions Dunod, Paris, 2000. ISBN : 2 10 005116 4

[3] Programmation en C, Byron S. Gottfried (2ème édition), Série Schaum, éditions Mc GrawHill, Paris, 1997. ISBN : 2-7042-1289-9

IntroductionUn programme informatique écrit en langage C, pour être bien conçu, doit être modulaire. C'est un gage de qualité, de portabilité, de professionnalisme, et de bien d'autres choses encore.Le but principal de ce document est de justifier, par la description des principes de base, l'intérêt de la programmation modulaire.

Définitions :

Modularité : pour être considéré comme modulaire, un programme informatique écrit en langage C doit être éclaté en composants appelé modules, chaque module respectant au mieux chacun des 5 objectifs suivants:

– Lisibilité : concerne la facilité avec laquelle la personne lisant le code source comprend le comportement et la mise en oeuvre de celui-ci. En résumé : les astuces permettant d'écrire toujours moins de choses sont à éviter. Un code clair et bien commenté est toujours plus lisible qu'un code concis et sans commentaires. Trop commenter n'est pas bon non plus, et seule l'expérience permet de commenter avec précision.

– Maintenabilité : ce critère est celui qui permet de mesurer la fcilité à détecter des erreurs et à pouvoir les corriger sans en introduire de nouvelles dans le reste de l'application.

– Portabilité : un logiciel de qualité doit être écrit de telle manière que son utilisation sur d'autres plateformes (Systèmes d'exploitation et/ou Architecture) ne pose pas de problème. Ce point concerne surtout le choix des bibliothèques de fonctions utilisées (API) et le respect de règles élémentaires dans l'organisation du programme. Un programme portable est généralement bien écrit.

– Extensibilité : La dépendance entre modules doit être réduite au strict minimum. Cet objectif mesure à quel point chaque partie du programme est indépendante des autres, et peut être modifiée (ajout de foonctionnalités, par exemple) sans engendrer de difficulté(s) dans les autres parties, ni de dysfonctionnement de l'application dans son ensemble.

– La réutilisabilité : un module bien écrit doit pouvoir être réutilisé (après une légère modification, éventuellement) dans un autre programme. Même longtemps après avoir été écrit.

Comportement indéfini d'un programmeUn comportement indéfini (encore appelé Undefined Behaviour ou UB) est un bug grave. Il signifie que le comportement du programme est imprévisible et que tout peut arriver, y compris, et c'est ça qui rend ce bug très dangereux, un comportement d'apparence conforme. Il n'existe pas de moyen automatique de détecter tous les UB d'un programme. Seul un contrôle visuel fait par une personne chevronnée permet de détecter un tel bug.

Page 1/2

Page 2: Modularité des programmes en langage C - …eric.bachard.free.fr/UTBM_LO20_A07/Documentation/... · Compléments sur la modularité des programmes en langage C / Eric Bachard Mai

Compléments sur la modularité des programmes en langage C / Eric Bachard Mai 2004

FonctionUne fonction est une séquence d'instructions dans un bloc nommé. Une fonction est constituée de la séquence suivante :

• Un type (ou le mot clé void). • Un identificateur (le nom de la fonction, ici main). • Une parenthèse ouvrante (. • Une liste de paramètres ou une liste vide (dans ce cas, on écrit void). • Une parenthèse fermante ). • Une accolade ouvrante {. • Une liste d'instructions terminée par un point virgule ;, ou rien. • Une accolade fermante }.

L'utilisateur peut créer ses propres fonctions. Une fonction peut appeler une autre fonction. Généralement, un fonction réalisera une opération bien précise. L'organisation hiérarchique des fonctions permet un raffinement en partant du niveau le plus élévé (main()) en en allant au niveau le plus élémentaire (atomique). On gardera cependant en tête que la multiplication des niveaux introduit une augmentation de la taille du code et du temps de traitement. Une fonction ne peut être appelée qu'à partir d'une autre fonction.

N.B. : ces 2 parties, comportement indéfini et fonctions, sont repris de l'excellent site :

http://mapage.noos.fr/emdel/index.htm

Page 2/2