Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: Partie II: Normes d'utilisation et de Sup.: Généralités Préc.: Structures de Données Index Table des matières


1.7 Modules - Algorithmes - Utilitaires

       

Il convient de dissocier l'aspect externe (ou fonctionnel) et l'aspect interne d'un module.

1.7.1 Aspect externe d'un module

Les équations d'un problème mettent en jeu des opérateurs mathématiques. Un module est la réalisation informatique d'un tel opérateur. Il est matérialisé par un sous-programme, qui lit une ou plusieurs Structures de Données d'Entrée (SDE) et crée une ou plusieurs Structures de Données de Sortie (SDS) (figure 1.4).

 
Figure 1.4: Aspect externe d'un module 

1.7.2 Aspect interne d'un module

 

Lors du développement d'un module, quelques principes doivent être respectés (figure 1.5) :

 
Figure 1.5: Aspect interne d'un module 

Séparation des algorithmes et des utilitaires

En règle générale, un module appelle des utilitaires de gestion des SD et des tableaux dynamiques, ainsi que des algorithmes (indépendants de ces utilitaires). En aucun cas, un algorithme ne doit appeler un utilitaire. L'appel des utilitaires est réservé aux modules.

Le respect de ce principe a l'avantage de rendre les modules plus fiables et plus lisibles. En outre, le sous-programme qui matérialise un algorithme manipule des tableaux Fortran classiques, ce qui facilite la programmation et permet de l'utiliser comme un sous-programme traditionnel.

Combinaison d'opérateurs

Il arrive qu'un opérateur mathématique s'exprime comme la combinaison d'opérateurs plus élémentaires. Il convient alors de programmer autant de modules.

Par exemple, l'opérateur ``résolution par la méthode de Cholesky d'un système linéaire dont la matrice est stockée sous forme profil'' se décompose en une série d'opérateurs :

1. Construction des pointeurs de la matrice profil.

2. Assemblage de la matrice profil.

3. Prise en compte des conditions aux limites.

4. Factorisation.

5. Descente-remontée.

Lors de la programmation, une décomposition en autant de modules est respectée (1. PREPAC, 2. ASSMUA, 3. CLIMPC, 4. CHOLPC, 5. DRCHPC). Ceci répond à un souci de modularité et permet une grande souplesse d'utilisation : par exemple, dans le cas de la résolution d'un système itératif avec une matrice constante, les opérateurs 1 à 4 sont utilisés une seule fois et l'opérateur 5 autant de fois qu'il y a d'itérations.

Absence de données

Un module ne doit pas demander de données à l'utilisateur. En effet, il doit pouvoir être utilisé dans différents contextes, et en particulier dans une boucle d'itérations. Il serait alors particulièrement pénible de fournir autant de données qu'il y a d'appels. La solution préconisée est l'emploi de processeurs de niveau supérieurs aux modules (section 1.2). Le processeur lit une fois pour toutes les données de l'utilisateur dans des tableaux, qui sont ensuite passés en paramètre aux modules.

Lisibilité des programmes

Les quelques règles qui suivent ont pour but de rendre aisée la lecture des programmes, et non de contraindre l'utilisateur ! Cet objectif demande un minimum de standardisation.


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: Partie II: Normes d'utilisation et de Sup.: Généralités Préc.: Structures de Données Index Table des matières