Méthodologie et environnement de développement orientés objets de l'analyse mathématique la

Français
133 pages
Obtenez un accès à la bibliothèque pour le consulter en ligne
En savoir plus

Description

Méthodologie et environnement de développement orientés objets : de l'analyse mathématique à la programmation S. Labbé, J. Laminie, V. Louvet Laboratoire de Mathématique, Analyse Numérique et EDP. Université Paris Sud, Orsay 6 janvier 2009 Version 1.1

  • environnement de travail

  • modèle d'analyse

  • définition du problème

  • bibliothèques de passages de messages

  • spécification du besoin relatif

  • module view

  • construction informatique du problème elliptique

  • paquetage variable

  • analyse mathématique


Sujets

Informations

Publié par
Publié le 01 janvier 2009
Nombre de lectures 48
Langue Français
Poids de l'ouvrage 1 Mo
Signaler un problème

Méthodologie et environnement de développement
orientés objets : de l’analyse mathématique à la
programmation
S. Labbé, J. Laminie, V. Louvet
Laboratoire de Mathématique, Analyse Numérique et EDP.
Université Paris Sud, Orsay
6 janvier 2009
Version 1.1iiTable des matières
Avertissement ix
Introduction 1
I De l’analyse mathématique à la conception 3
1 Philosophie et motivations 5
1.1 Environnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 La recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.2 L’enseignement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3 L’environnement informatique . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.4 En conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Objetifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Méthodologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Analyse mathématique 11
2.1 Cadre théorique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Conception préliminaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 détaillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Conception détaillée du paquetage Problème . . . . . . . . . . . . . . . . . 18
2.4.2 du Opérateur . . . . . . . . . . . . . . . . . 19
2.4.3 détaillée du paquetage Variable . . . . . . . . . . . . . . . . . 22
2.4.4 Conception du Domaine . . . . . . . . . . . . . . . . . . 22
2.4.5 détaillée de la hiérarchie Discrétisation . . . . . . . . . . . . 23
2.4.6 de lahie Stockage . . . . . . . . . . . . . . . . 24
2.4.7 Conception détaillée des classes utilitaires . . . . . . . . . . . . . . . . . . . 24
3 Environnement 27
3.1 Expression du besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Etude préliminaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.1 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.2 Acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.3 Interactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.4 Diagramme de contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Conceptualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1 UC niveau tâche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.2 UC niveau fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.3 Diagramme de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.4 Spécification du besoin relatif à l’interface graphique . . . . . . . . . . . . . 33
iii3.4 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1 Analyse du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.2 applicative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.3 Modèle d’analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.1 Architecture logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.2 Architecture matérielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.6 Conception préliminaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.6.1 Module User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.6.2 Module Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.6.3 Module Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.6.4 Module View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.6.5 Module Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7 Conception détaillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7.1 Conception détaillée du sous-système serveur de données . . . . . . . . . . . 50
3.7.2 du code de calcul . . . . . . . . . . . . . 54
3.7.3 détaillée du utilisateur final . . . . . . . . . . . . . 54
3.8 Implémentation et tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.8.1 Choix techniques pour l’implémentation . . . . . . . . . . . . . . . . . . . . 55
3.8.2 Modèle d’implémentation : diagramme de composants . . . . . . . . . . . . 56
3.8.3 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.9 Itération du processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.9.1 Scénarii secondaires des cas d’utilisation . . . . . . . . . . . . . . . . . . . . 60
3.9.2 Nouvelles fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
II De la conception à la programmation 61
4 Application 63
4.1 Discrétisation par éléments finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2 par différences finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.1 Définition du problème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.2 Le paquetage Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.3 Le paquetage Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.3.4 Le Operateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.3.5 Le paquetage Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.3.6 La classe Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3.7 Eléments finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3.8 Différences finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.3.9 La classe Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.3.10 Construction informatique du problème elliptique . . . . . . . . . . . . . . . 76
5 Environnement de travail 79
5.1 Démarrage du serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.1.1 Services CORBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.1.2 Serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.2 Instrumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.2.1 Langages disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.2.2 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.2.3 Initialisations, finalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.2.4 Sortie standart : Cout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.2.5 Profiling du code : Flow trace . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.2.6 Instrumentation d’un fichier source . . . . . . . . . . . . . . . . . . . . . . . 86
iv5.3 Exploitation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.1 Démarrage de l’interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.2 Fenêtre principale d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.3 F de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.4 Fenêtre des données utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.5 F des calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.6 Fenêtre d’une exécution particulière . . . . . . . . . . . . . . . . . . . . . . 91
5.3.7 F d’un flux particulier . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.3.8 Fenêtre de documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6 Documentation 97
6.1 Niveau de documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.2 Structuration de la documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.2.1 Structure de l’entête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.2.2 du corps du programme . . . . . . . . . . . . . . . . . . . . . . . 98
6.3 Utilisation du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.3.1 Mode en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.3.2 Mode graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.4.1 Exemple en fortran 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.4.2 en C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Bibliographie 107
Annexes 107
A Etat de l’art 107
A.1 Les critères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
A.2 Logiciels et Bibliothèques Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
A.2.1 elsA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
A.2.2 FreeFEM++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
A.2.3 Mélina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
A.2.4 Overture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
A.3 Logiciels et Bibliothèques NON Objets . . . . . . . . . . . . . . . . . . . . . . . . . 108
A.3.1 Les bibliothéques d’algèbre linéaire . . . . . . . . . . . . . . . . . . . . . . . 109
A.3.2 Les autres bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
A.4 Les classes objets pour la gestion des tableaux . . . . . . . . . . . . . . . . . . . . . 110
A.4.1 Le standard de C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
A.4.2 Le de JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
A.4.3 TNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
A.4.4 A++/P++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
A.5 Les mailleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
A.6 Les bibliothèques d’outils parallèles . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
A.6.1 Bibliothèques de synchronisation . . . . . . . . . . . . . . . . . . . . . . . . 111
A.6.2 Les bibliothèques de passages de messages . . . . . . . . . . . . . . . . . . . 112
B Notations UML 113
B.1 Paquetages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
B.2 Classes et Visibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
B.3 Associations et cardinalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
B.4 Généralisation et héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
B.5 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
vC CORBA : mécanismes de fonctionnement 117
C.1 Concepts et notions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
C.2 Fonctionnement du bus d’objets répartis et du processus d’invocation des requêtes 121
C.3 Utilisation des services CORBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
C.3.1 Le service de Nommage (Naming Service) . . . . . . . . . . . . . . . . . . . 122
C.3.2 Le des Evènements (Event . . . . . . . . . . . . . . . . . . 123
viTable des figures
2.2 Diagramme de séquence global représentant la résolution d’un problème
mathématique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 de collaboration global de la résolution. . . . . . . . . . . . . . . . . . 15
2.4 Diagramme de séquence global représentant la résolution d’un problème
mathématique au niveau des opérateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Modèle d’analyse du problème mathématique. . . . . . . . . . . . . . . . . . . . . . 17
2.5 Diagramme de classes du paquetage Problème . . . . . . . . . . . . . . . . . . . . . 20
2.6 de du Opérateur. . . . . . . . . . . . . . . . . . . . . 21
2.7 de classes du paquetage Variable. . . . . . . . . . . . . . . . . . . . . 22
2.8 Diagramme de classes du Domaine. . . . . . . . . . . . . . . . . . . . . . 23
2.9 de de la hiérarchie Discrétisation. . . . . . . . . . . . . . . . 24
2.10 de classes de lahie Stockage. . . . . . . . . . . . . . . . . . . . 24
2.11 Diagramme de composants illustrant les communications entres les classes
mathématiques et les classes utilitaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1 Environnement de travail global. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Diagramme de contexte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 des cas d’utilisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 U.M.L. du besoin IHM. . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.6 Diagramme de séquence du cas d’utilisation 4. . . . . . . . . . . . . . . . . . . . . . 35
3.5 des classes issues de l’analyse du domaine. . . . . . . . . . . . . . . . . 36
3.7 de séquence du cas 5. . . . . . . . . . . . . . . . . . . . . . 37
3.8 Diagramme de du cas d’utilisation 6. . . . . . . . . . . . . . . . . . . . . . 37
3.9 de séquence du cas d’utilisation 2. . . . . . . . . . . . . . . . . . . . . . 38
3.10 de du cas 3. . . . . . . . . . . . . . . . . . . . . . 38
3.11 Diagramme de classes du modèle d’analyse. . . . . . . . . . . . . . . . . . . . . . . 39
3.12 Modèle d’analyse projeté sur une architecture de type 3 tiers. . . . . . . . . . . . . 40
3.13 Schéma de l’architecture physique. . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.14 Diagramme de déploiement sur l’architecture. . . . . . . . . . . . . . . . . . . . . . 43
3.15 U.M.L. du sous-système User. . . . . . . . . . . . . . . . . . . . . . . . 44
3.16 du sous-système Data. . . . . . . . . . . . . . . . . . . . . . . . 45
3.17 Diagramme U.M.L. du Execution. . . . . . . . . . . . . . . . . . . . . 46
3.18 des classes générales de vue et de gestion. . . . . . . . . . . . . 46
3.19 U.M.L. des graphiques liées à l’objet utilisateur. . . . . . . . . 47
3.20 Diagramme des classes liées aux pages jaunes des exécutions. . 47
3.21 U.M.L. des graphiques liées à une exécution. . . . . . . . . . . 48
3.22 des classes liées aux données. . . . . . . . . . . . . 49
3.23 Diagramme U.M.L. des classes issues de la conception de la partie instrumentation
du code de calcul. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.24 des classes Corba du serveur. . . . . . . . . . . . . . . . . . . . . . . . 51
3.25 Diagramme des interfaces IDL des objets communiquants. . . . . . . . . . . . . . . 52
3.26 des in IDL des fabriques d’objets communiquants. . . . . . . . 52
3.27 Gestion des contextes de nom relatifs aux données et exécutions. . . . . . . . . . . 53
vii3.28 Gestion du contexte de nom racine. . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.29 Classes Corba du client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.30 Diagramme des classes de gestion d’évènements. . . . . . . . . . . . . . . . . . . . 54
3.31 de composants des entités relatives aux objets distribués. . . . . . . . . 56
3.32 de composants relatif à la base de données utilisateurs. . . . . . . . . . 57
3.33 Diagramme de composants aux programmes clients. . . . . . . . . . . . . . . 57
3.34 de composants relatif aux librairies extérieures. . . . . . . . . . . . . . 58
3.35 de composants à l’exécutable du serveur. . . . . . . . . . . . . . 58
3.36 Diagramme de composants relatif aux exécutables des codes de calcul. . . . . . . . 58
3.37 de composants à l’exécution de l’interface graphiquel. . . . . . . 59
4.1 Classe Problem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2 Discret_Problem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.3 Classe Algebric_Problem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.4 DiscreteDomain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.5 Hiérarchie de la classe Method relative aux éléments finis. . . . . . . . . . . . . . . 73
4.6hie de lae aux différences finies. . . . . . . . . . . . . . 74
4.7 Hiérarchie de la classe Storage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.1 Fenêtre d’accueil et de connexion de l’interface graphique. . . . . . . . . . . . . . . 90
5.2 F donnant les informations de l’utilisateur connecté et des calculs accessibles
par l’interface graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3 Fenêtre donnant les d’un calcul particulier accessible par l’interface
graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.4 Fenêtre donnant les informations de flux issus d’un calcul accessible par l’interface
graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.5 Fenêtre permettant la visualisation textuelle d’un flux par l’interface graphique. . . 92
5.6 F pt le choix des données pour la visualisation graphique d’un flux
via l’interface graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.7 Fenêtre permettant la visualisation graphique (courbe 2D) d’un flux via l’interface
graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.8 Fenêtre permettant la de la documentation d’un code via l’interface
graphique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.1 Fenêtre permettant le choix du fichier pour la génération de la documentation . . . 100
6.2 Visualisation de la documentation générée pour le code source en fortran 90 : 1ère
partie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.3 de la documentation générée pour le code source en fortran 90 : 2ème
partie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.4 Visualisation de la documentation générée pour le code source en C++ : 1ère partie 105
6.5 de la do pour le code en C++ : 2ème106
B.1 Modélisation UML d’un paquetage. . . . . . . . . . . . . . . . . . . . . . . . . . . 114
B.2 Mo UML d’une classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
B.3 Modélisation UML d’une association entre classes. . . . . . . . . . . . . . . . . . . 115
B.4 Mo UML d’une agrégation et d’une composition. . . . . . . . . . . . . . 116
B.5 Modélisation UML d’une relation de généralisation. . . . . . . . . . . . . . . . . . 116
C.1 Constitution de l’OMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
C.2 Processus d’invocation des requêtes. . . . . . . . . . . . . . . . . . . . . . . . . . . 121
viiiAvertissement
Ce document est une première version du projet MOOCS (Méthodologie Orientée Objet pour
le Calcul Scientifique). Il est naturellement destiné à évoluer. Des mises à jour seront régulièrement
disponibles sur le site http ://www.math.u-psud.fr/˜gtoocs.
ixx