8/12/2019 Bouvier Zappa 2005 Pfe
1/50
E COLE P OLYTECHNIQUE
DE M ONTR EAL
D EPARTEMENT DE G ENIE INFORMATIQUE
Projet de Fin d etudesRapport nal
Rapport de projet de n d etudes soumis
comme condition partielle ` a lobtention du
dipl ome de baccalaur eat en ing enierie.
Pr esent e par: S IMON B OUVIER -Z APPA
Matricule: 1161843
Directeur de projet: P ROFESSEUR M ICHEL DAGENAIS
Entreprise: G enie informatique, Ecole Polytechnique de Montr eal
Date: 17 avril 2005
8/12/2019 Bouvier Zappa 2005 Pfe
2/50
Resum e
Ce pr esent rapport fait etat du travail effectu e sur le module de ltrage du Linux Trace
Toolkit Viewer ( Lttv ). Ces realisations ont eut lieu durant la session dhiver 2005
comme projet de n d etudes au baccalaur eat en g enie informatique ` a l Ecole Poly-
technique de Montr eal.
8/12/2019 Bouvier Zappa 2005 Pfe
3/50
Table des mati eres
1 Introduction 1
2 Probl ematique 3
2.1 Mise en contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.1.1 Travaux ant erieurs . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Travail `a accomplir . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Int erets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Difcultes escomptees . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.1 S eparation du probl` eme . . . . . . . . . . . . . . . . . . . . 5
2.4.2 D enition de lexpression de ltrage . . . . . . . . . . . . . . 6
2.4.3 Larbre de recherche . . . . . . . . . . . . . . . . . . . . . . 7
3 M ethodologie 8
3.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.1 Requis de lapplication . . . . . . . . . . . . . . . . . . . . . 8
3.1.2 Langage dimplantation . . . . . . . . . . . . . . . . . . . . 9
3.1.3 Analyse generale du probl`eme . . . . . . . . . . . . . . . . . 9
3.1.4 Analyse de lexpression de ltrage . . . . . . . . . . . . . . . 11
3.1.5 Analyse de la structure de larbre . . . . . . . . . . . . . . . 13
i
8/12/2019 Bouvier Zappa 2005 Pfe
4/50
TABLE DES MATI ERES ii
3.2 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.1 Etapes de conception . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 Implantation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.1 Pr ecompilation du ltre . . . . . . . . . . . . . . . . . . . . 23
3.3.2 Parcours du ltre . . . . . . . . . . . . . . . . . . . . . . . . 24
4 R esultats 27
4.1 Entr ees du programme . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.1 Utilisation du module ltre textuel . . . . . . . . . . . . . . . 27
4.1.2 Utilisation du module ltre graphique . . . . . . . . . . . . . 28
4.2 Sortie du programme . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5 Discussion 33
5.1 Port ee du travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2 Analyse des m ethodes exploit ees . . . . . . . . . . . . . . . . . . . . 33
5.2.1 Analyse de la performance . . . . . . . . . . . . . . . . . . . 33
5.3 Recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3.1 Optimisation eventuelles . . . . . . . . . . . . . . . . . . . . 35
6 Glossaire 38
A Annexes 41
8/12/2019 Bouvier Zappa 2005 Pfe
5/50
Table des gures
3.1 Mod ele MVC du ltre . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Repr esentation dune expression de ltre en arbre n-aire . . . . . . . 14
3.3 Repr esentation dune expression de ltre en arbre binaire . . . . . . . 15
3.4 Repr esentation dune expression avec parenth` eses . . . . . . . . . . . 15
3.5 Diagramme de classes du module noyau . . . . . . . . . . . . . . . . 18
3.6 Diagramme de s equence du module textuel . . . . . . . . . . . . . . 20
3.7 Diagramme de classes du module graphique . . . . . . . . . . . . . . 21
3.8 Diagramme de s equence du module graphique . . . . . . . . . . . . . 22
4.1 D ependance des modules textuels . . . . . . . . . . . . . . . . . . . 28
4.2 Module ltre graphique . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Exemple darbre de ltrage . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 Exemple de parcours darbre de ltrage . . . . . . . . . . . . . . . . 31
5.1 Evolution du temps de construction de larbre binaire . . . . . . . . . 35
iii
8/12/2019 Bouvier Zappa 2005 Pfe
6/50
Liste des tableaux
3.1 Op erateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Champs de ltrage . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Op erateurs mathematique . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4 Heuristiques de larbre de ltrage . . . . . . . . . . . . . . . . . . . . 16
3.5 Widgets de FilterViewerData . . . . . . . . . . . . . . . . . . . . . . 21
3.6 Widgets de FilterViewerData . . . . . . . . . . . . . . . . . . . . . . 22
4.1 Exemple detat des traces . . . . . . . . . . . . . . . . . . . . . . . . 30
iv
8/12/2019 Bouvier Zappa 2005 Pfe
7/50
Liste des Algorithmes
1 Precompilation du ltre . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 Parcours du ltre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
v
8/12/2019 Bouvier Zappa 2005 Pfe
8/50
Listes des symboles et
abr eviations
Ltt Linux Trace Toolkit
Lttv Linux Trace Toolkit Viewer
vi
8/12/2019 Bouvier Zappa 2005 Pfe
9/50
LISTES DES SYMBOLES ET ABR EVIATIONS vii
Remerciements
Michel Dagenais, pour mavoir donn e la chance de travailler sur un projet den-
vergure comme Lttv.
Mathieu Desnoyers, pour son aide et ses conseils tout au long du projet.
8/12/2019 Bouvier Zappa 2005 Pfe
10/50
Chapitre 1
Introduction
Dans le cadre dune etude approfondie du syst` eme dexploitation, il est primordialde proc eder a une analyse des processus de m eme que leur ordonnancement au sein du
noyau. Ainsi, pour les syst` emes dexploitations Linux, le Linux Trace Toolkit a depuis
plusieurs annees maintenant fourni une s erie dapplications permettant de g enerer des
traces dexecution du syst`eme dexploitation puis de proc eder a leur analyse. le Linux
Trace Toolkit ( ou ltt ) a ete d eveloppe a lorigine par Opersys.
La ou le Linux Trace Toolkit poss` ede des failles, le Linux Trace Toolkit Viewer
prend la rel`eve. Cette application est d eveloppee au laboratoire de Conception et Ana-
lyse de Syst`emes Informatiques ( ou CASI ) de l Ecole Polytechnique. Le Linux Trace
Toolkit Viewer ( ou Lttv ) est une application totalement modulaire permettant aux usa-
gers de faire lanalyse de traces dex ecution tout en y rajoutant leurs propres modules
personnalises.
Lespace en m emoire que peut prendre une trace dex ecution sur Lttv dependra
de plusieurs facteurs. Entres autres, le temps denregistrement de la trace aura une
1
8/12/2019 Bouvier Zappa 2005 Pfe
11/50
CHAPITRE 1. INTRODUCTION 2
cons equence proportionnelle sur la taille de celle-ci. De m eme, le nombre de pro-
cessus ordonnanc es aura un effet direct sur lenregistrement. An de donner ` a lusa-
ger un meilleur contr ole de ce quil veut analyser et afcher, il est possible dajouter
un module de ltre au programme qui permettra ` a lusager de choisir par expression
conditionnelle quels elements de trace il d esire conserver. Le chapitre 2 propose une
denition compl` ete du probl`eme a r esoudre et des principales difcult es du projet.
Limplantation dun module ltre au programme actuel n ecessite a la base une
precompilationdun arbre de ltrage qui sera parcouru lors de lex ecution pour d eterminer
quels elements de traces doivent etre ltr es.
An dinclure un module de ltrage au programme Lttv, il est necessaire dajoutertrois nouveaux modules au programme. Un module noyau servira ` a construire et par-
courir larbre de recherche. Un module textuel servira dinterface de base ` a lusager.
Enn, un module graphique servira dinterface plus evolu ee. Le chapitre 3 fournit les
details dimplantation de ces modules au sein du projet.
Gr ace a un d eveloppement modulaire reli e aux fonctionnalit es de base du pro-
gramme Lttv, il est possible de proc eder a un ltrage selon les sp ecications de lutili-
sateur. Le chapitre 4 donne des informations suppl ementairesquant aux fonctionnalit es
ajout ees aux differents modules utilisateurs ainsi quau module noyau.
Enn, de multiples am eliorations pourront encore etre apportees au programme
ainsi qu a la gestion des ltres. En effet, ce projet napportera que la premi` ere phase de
ltrage operationnelle au programme Lttv. Ainsi, le chapitre 5 apportera des sugges-
tions dameliorations possibles qui peuvent etre apportees aux modules de ltrage.
8/12/2019 Bouvier Zappa 2005 Pfe
12/50
Chapitre 2
Probl ematique
2.1 Mise en contexte
2.1.1 Travaux ant erieurs
Le Linux Trace Toolkit Viewer a fait lobjet de plusieurs travaux durant les derni` eres
ann ees. Cest aujourdhuiun projet imposant et aux fonctionnalit es diverses qui ne peut
etre malheureusement d ecrit en quelques lignes. Il est possible toutefois de r esumer les
principaux points qui permettent ` a Lttv de se diff erencier de son pr edecesseur Ltt .
La suite dapplication Ltt donne a lutilisateur la possibilit e de voir et analyser lor-
donnancement des divers processus dans le noyau au cours dune trace pr eenregistree.
Toutefois, il convient de dire que cette suite dapplication reste limit ee quant au contr ole
visuel des traces et lajout de fonctionnalit es nouvelles.
Ainsi, Lttv permet a lutilisateur un contr ole statistique des processus beaucoup
plus pousse. La ou Ltt ne donne que les processus actifs, Lttv afche l etat m eme du
processus actif. De m eme, Lttv permet lafchage des statistiques et des ev enements de
3
8/12/2019 Bouvier Zappa 2005 Pfe
13/50
CHAPITRE 2. PROBL EMATIQUE 4
chaque processus.
Aussi, il convient de savoir que Lttv est un programme hautement modulaire et qui
donne la possibilit e a un utilisateur tierce de programmer lui-m eme de nouvelles fonc-
tionnalites pour le programme sans interf erer avec le noyau de celui-ci.
Par ailleurs, chaque module est compil e en tant que librairie dynamique ( *.so pour
Linux ). Au d emarrage du programme, lutilisateur peut ais ement inclure `a m eme lap-
plication les librairies souhait ees en utilisant la ligne de commande, ou par lutilisation
de linterface graphique de Lttv.
2.1.2 Travail a accomplir
La nalit e de ce projet est dajouter au programme Lttv deja existant une fonction-
nalit e de ltrage des traces dex ecution. Cette nouvelle fonctionnalit e a donc pour but
domettre en sortie du programme certains processus, traces ou ev enements speci es
prealablement par lutilisateur.
2.2 Objectifs
Le ltrage des traces dex ecution demande limplantation de fonctionnalit es a trois
niveaux :
Implantation dun module ltre au niveau noyau
Implantation dun module utilisateur textuel
Implantation dun module utilisateur graphique
Lapplication doit donner la possibilit e a lutilisateur de sp ecier ses options de
ltrages par voie textuelle ou par utilisation de linterface graphique. Cette expres-
sion de ltrage devra par la suite etre trait ee par le module noyau qui proc` edera a une
8/12/2019 Bouvier Zappa 2005 Pfe
14/50
8/12/2019 Bouvier Zappa 2005 Pfe
15/50
CHAPITRE 2. PROBL EMATIQUE 6
Le module noyau se veut etre le centre de limplantation du ltrage de lapplica-
tion. Ainsi, les modules graphiques et textuels d ependront enti` erement du noyau pour
assurer leur propre fonctionnement.
Pour assurer un avancement du probl` eme, il sera necessaire de commencer lim-
plantation du ltre noyau d` es le debut. Par ailleurs, le noyau ` a lui tout seul constitue un
goulot d etranglement pour le projet. En effet, cette section de lapplication demandera
une analyse logicielle pouss ee et une implantation tout aussi critique. Une analyse en
bonne et due forme de la structure du noyau sera fournie au chapitre 3.
Enn, mentionnons aussi que linterfacage avec lusager pourra se faire plus tardet nest pas un reel souci dimplantation. En effet, le module graphique et le module
textuel ne feront que faire appel au module noyau pour envoyer ` a celui-ci lexpression
de ltrage necessaire `a la construction de larbre.
2.4.2 D enition de lexpression de ltrage
Pour permettre ` a lutilisateur de sp ecier quels elements de trace il d esire ltrer, il
est dabord necessaire de formuler une expression de ltrage textuelle. Celle-ci devra
respecter les crit` eres suivants :
1. Etre comprehensible pour lutilisateur du programme
2. Tenir compte des crit` eres de ltrage du programme Lttv
3. Poss eder une structure simple qui peut etre analyse par lapplication
De meme, il convient de formuler une expression qui laisse la possibilit e a lusager
de fournir plusieurs commandes de ltrages vari ees tout en gardant sa simplicit e duti-
lisation.
8/12/2019 Bouvier Zappa 2005 Pfe
16/50
CHAPITRE 2. PROBL EMATIQUE 7
Nous analyserons plus en profondeur les d etails de lexpression de ltrage ` a la
section 3.1.4 du chapitre 3.
2.4.3 Larbre de recherche
Larbre de ltrage est ` a la base de lintegration du ltre au sein du programme Lttv.
Ainsi, il represente de ce fait le plus grand probl` eme a surmonter dans ce projet. Il
convient donc de bien d enir la structure que devra prendre cet arbre pour se confor-
mer aux requetesde ltrage de lutilisateur et interagir avec les elements du programme
deja existants.
La probl ematique de larbre se divise en deux volets distincts, soit la construction
de larbre et le parcours de celui-ci. Pour ne pas handicaper les performances de lap-
plication, il sera n ecessaire de proc eder a une pr ecompilation de larbre de recherche
avant le lancement des traces.
Une analyse preliminaire de la structure de larbre et ses composantes est effectu ee
a la section 3.1.5 du chapitre 3.
8/12/2019 Bouvier Zappa 2005 Pfe
17/50
Chapitre 3
M ethodologie
3.1 Analyse
3.1.1 Requis de lapplication
An de mieux cerner les modules ` a implanter au sein du programme Lttv, voici les
fonctionnalit es principales que devra r ealiser le ltre dans lapplication
Requis fonctionnels
Developpement du module textuel
Ajout doptions ` a la ligne de commande pour entr ee des expressions de ltrage
Dependance avec les autres modules textuels
Developpement du module graphique
Conception dune interface graphique permettant ` a lusager dajouter des ex-
pressions de ltrage
Par menus delants
Par entr ee textuelle
Envoi de lexpression de ltrage au noyau
8
8/12/2019 Bouvier Zappa 2005 Pfe
18/50
CHAPITRE 3. M ETHODOLOGIE 9
Dependance avec les autres modules graphiques
Developpement du module noyau
Analyse de lexpression de ltrage
Construction de larbre de ltrage
Parcours de larbre de ltrage
Requis non-fonctionnels
Souci de performance
Construction de larbre ( module noyau )
Parcours de larbre ( module noyau )
3.1.2 Langage dimplantation
Pour satisfaire ` a limplantation d eja existante du Linux Trace Toolkit Viewer , il est
pref erable dutiliser le m eme langage dimplantation. Ainsi, les modules de ltrage
sont cod es en Langage C. Outre une n ecessit e de compatibilit e, ce choix repose aussi
sur des soucis de performances que fourni un langage de plus bas niveau tel que le C.
De m eme, Lttv fait aussi utilisation du Gimp Toolkit ou GTK [5] pour son interface
graphique. Ainsi, le module graphique de ltrage d ependra aussi de ces librairies. Fi-
nalement, il convient de mentionner lutilisation etendue de la librairie GLib [4] partout
dans le projet. En effet, cette librairie red enit plusieurs structures utiles propres au
C++ pour une utilisation en C.
3.1.3 Analyse g en erale du probl eme
An de bien cerner le probl` eme dans son ensemble, il convient de proc eder a une
analyse g en erale de limplantation par rapport au reste du programme Lttv. Ainsi, il est
possible de comparer les diff erents modules de ltrage selon une architecture Mod ele-
8/12/2019 Bouvier Zappa 2005 Pfe
19/50
CHAPITRE 3. M ETHODOLOGIE 10
Vue-Contr ole telle que pr esent ee a la gure 3.1.
Contr ole Modele Vue
Entr ee texte
Entr ee graphique
Filtre noyau
Text dump
Gui Events
Gui controlow
Gui statistics
F IG . 3.1 Mod ele MVC du ltre
Ainsi, le module noyau de ltrage doit repr esenter le centre de lapplication. Cest
ce module qui sera appel e par les autres pour acc eder aux fonctions de cr eations, mise
a jour, parcours et destruction du ltre.
Par ailleurs, les modules de ltrage textuel et graphique repr esentent le contr ole
de lapplication. Il sagit donc dinterfaces avec lusager lui permettant de sp ecier le
ltre a utiliser.
Enn, les modules graphiques gui controlow , gui events et gui statistics utiliseront
linformation des ltres an de modier leur afchage. De m eme, le module textuel text
dump utilisera le ltre an de produire un afchage ` a la console. Ces quatre derniers
modules ont deja ete implantes lors de travaux ant erieurs sur le Linux Trace Toolkit
8/12/2019 Bouvier Zappa 2005 Pfe
20/50
CHAPITRE 3. M ETHODOLOGIE 11
Viewer . Toutefois, des appels suppl ementaires devront etre ajoutes a ces modules pour
integrer les nouvelles fonctionnalit es du ltre.
3.1.4 Analyse de lexpression de ltrage
La prochaine etape dans lanalyse du probl` eme consiste `a formuler une expression
de ltrage. Cette expression sera par la suite utilis ee dans la construction de larbre de
recherche. Ainsi, bien que lexpression en soit ne constitue quun interm ediaire entre
lusager et lapplication noyau, une structure forte de cette commande permettra une
analyse simpli ee de celle-ci par la suite. De m eme, lexpression doit etre en mesure
de survivre `a une evolution eventuelle des options de ltrage dans les modications
eventuelles de Lttv ou meme du noyau Linux.
Ainsi, a la base, nous denirons une option de ltrage comme suit :
[Champs] [Op erateur] [Valeur]
Cette chane de caract` eres sera appelee une expression simple. Il sagit du plus
bas atome dans lexpression de ltrage. En effet, lexpression est form ee de plusieurs
expressions simples diff erentes. Celles-ci sont li ees entre-elles par des op erateurs lo-
giques. Le tableau 3.1 r esume les operateurs utilis es dans une expression.
Op erateur Encodage Niveau de liaisonET & 2 expressions simplesOU | 2 expressions simplesOU EXCLUSIF 2 expressions simplesNON ! 1 expression simple
TAB . 3.1 Op erateurs logiques
Pour en revenir `a lexpression simple, attardons-nous ` a la denition du champs
( eld ) de loption de ltrage. Ce champs fait le lien avec la structure des ev en ements
8/12/2019 Bouvier Zappa 2005 Pfe
21/50
8/12/2019 Bouvier Zappa 2005 Pfe
22/50
CHAPITRE 3. M ETHODOLOGIE 13
Op erateur Encodage Valeurs de comparaisonsEgal = Quark, LttTime, IntegerInegal ! = Quark, LttTime, IntegerPlus grand > LttTime, IntegerPlus grand ou egal > = LttTime, IntegerPlus petit < LttTime, Integer
Plus petit ou egal < = LttTime, Integer
TAB . 3.3 Op erateurs mathematique
repr esenterons la chane de caract` ere comme un Quark 3 et les valeurs temporelles sous
forme de LttTime 4 .
Finalement, mentionnons aussi que lusager ` a la possibilite de rafner lexpression
presente sil le desire. Ainsi, il est possible de combiner des sous-expressions en utili-
sant des parenth` eses. La sous-expression ainsi exprim ee sera evalu ee individuellement
des autres expressions simples.
3.1.5 Analyse de la structure de larbre
Construction de larbre
A laide de lexpression de ltrage maintenant d enie, il est possible de construire
un arbre de ltrage qui constituera par la suite la structureofcielle du ltrage. Or, pour
assurer un parcours efcace de cet arbre lors de lex ecution, il convient de choisir unestructure darbre simple, mais efcace.
Dans un premier temps, rappelons la forme que prendra larbre par rapport ` a lex-
pression de ltrage. Ainsi, on suppose lexpression suivante :
f ( x) = A( x)& B( x)&C ( x)& D( x)3 Un quark est une association integer-string4 Structure compos ee de deux champs integer sp eciant les secondes et nanosecondes
8/12/2019 Bouvier Zappa 2005 Pfe
23/50
CHAPITRE 3. M ETHODOLOGIE 14
Dans cette expression, A(x), B(x), C(x) et D(x) repr esententdes expressions simples.
Comme speci e auparavant, chaque expression simple est s epar e par un op erateur lo-
gique, dans ce cas, un ET binaire. Dans un arbre, une expression simple est repr esent ee
par une feuille. Lop erateur logique quant ` a lui, prend la forme dun noeud. Ainsi, il est
possible de repr esenter l equation prec edente par larbre n-aire repr esent e a la gure
3.2.
AND
A B C D
F IG . 3.2 Repr esentation dune expression de ltre en arbre n-aire
Avec cette structure darbre, il est toutefois impossible de connatre ` a lavance le
nombre denfants de chaque noeud [7]. Son implantation demanderait donc la cr eation
dun vecteur des diff erents enfants.
An de r egulariser la structure de larbre, il est possible dutiliser un arbre plus
simple. Ainsi, pour les besoins de cette application, nous pencherons pour larbre bi-
naire. Larbre binaire est une structure dimplantation simple qui poss` ede au plus deux
noeuds [7][2][1]. De m eme, cette structure peut facilement etre implante dans un es-
pace m emoire continu [7], ce qui peut aider ` a limiter les deplacements en m emoire.
La forme de larbre est beaucoup plus intuitive que celle de larbre binaire. En
effet, il est possible de remarquer que les enfants directs dun noeud op erateur sont
directement les expressions simples qui sont ses voisins physiques dans lexpression
initiale. La gure 3.3 repr esente larbre binaire pour l equation analys eepr ecedemment
8/12/2019 Bouvier Zappa 2005 Pfe
24/50
CHAPITRE 3. M ETHODOLOGIE 15
AND
A AND
B AND
C D
F IG . 3.3 Repr esentation dune expression de ltre en arbre binaire
Lexpression analys ee demeure encorerelativement simple. Comme sp eci epr ec edemment,
il est possible de former des sous-expressions en utilisant les parenth` eses. Cette mesure
aura cependant un effet direct sur la structure de larbre. Prenons par exemple lexpres-
sion suivante :
f ( x) = ( A( x)& B( x))&(C ( x)& D( x))
Il est possible de repr esenter cette nouvelle expression par larbre de la gure 3.4.
AND
AND AND
A B C D
F IG . 3.4 Repr esentation dune expression avec parenth` eses
8/12/2019 Bouvier Zappa 2005 Pfe
25/50
CHAPITRE 3. M ETHODOLOGIE 16
Enn, il est possible de remarquer que les op erateurs logiques ET, OU et OU
EXCLUSIF formeronttoujoursdeux enfants dans larbre. Or, lop erateur NON consti-
tue lexception ` a cette r egle et nadmet quun seul enfant.
Parcours de larbre
Une fois larbre de ltrage construit, il sera n ecessaire den effectuer le parcours.
Cette etape de ltrage devient cruciale par son emplacement dans la s equence dex ecution
du programme. En effet, le ltre devra etre appele pour chaque ev enement de la trace
en ex ecution. Il est donc imp eratif sous ces conditions de fournir le r esultat de ltrage
le plus rapidement possible.
Sous cette optique, larbre binaire garantit un parcours simple et rapide de larbre.Or, il est possible dam eliorer le rendement de parcours en utilisant des heuristiques
si cela est possible. Puisque les expressions de ltrage utilisent des op erateurs bi-
naires pour separer chaque noeud, il peut parfois etre inutile devaluer le resultat dune
branche si la precedente a deja fourni un r esultat qui donne une r eponse nale. Le ta-
bleau 3.4 represente les differentes heuristiques admissibles par la structure de larbre.
Op erateur de liaison R esultat de la branche de gauche R esultat nalOU VRAI VRAIET FAUX FAUX
TAB . 3.4 Heuristiques de larbre de ltrage
Nous verrons plus loin ` a la section 3.3.2 comment ces heuristiques seront im-
plant ees au programme.
3.2 Conception
La conception est la derni` ere etape avant de passer ` a limplantation du ltre. Dans
cette section, nous analyserons la mod elisation UML du ltre et des modules avec les-
8/12/2019 Bouvier Zappa 2005 Pfe
26/50
CHAPITRE 3. M ETHODOLOGIE 17
quels il interagit.
Bien entendu, il convient de se rappeler que Lttv est implante en langage C, qui nest
pas a proprement dit orient e objet. Toutefois, la philosophie dimplantation g enerale du
programme Lttv et celle de limplantation des ltres suit une structure de conception
hautement orient e objet et permet donc une analyse UML sommaire.
3.2.1 Etapes de conception
Etape 1 : Filtre au niveau noyau
La conception du ltre au niveau noyau se r esume a la structure de larbre de l-
trage et des classes desquelles il d epend. Ainsi, la gure 3.5 repr esente les differentes
classes du syst`eme et leurs inter relations.
Le ltre noyau est ofciellement compos e de trois classes, soit la classe LttvFilter ,
LttvFilterTree et LttvSimpleExpression .
La classe LttvFilter est le siege du ltre dans lapplication. Cest cet objet qui
repr esentera le ltre cr ee et transmis au reste de lapplication. cette classe contient
un objet de la classe LttvFilterTree et la chane dexpression telle quenvoy e a lorigine
par lusager pour reconstitution eventuelle.
La classe LttvFilterTree represente larbre de ltrage cr ee a partir de lexpression de
ltrage. Cette classe repr esente limplantation dun arbre binaire. Le noeud de larbre
est identie grace a lattribut node . Celui-ci prend comme valeur un op erateur logique
qui lie les deux noeuds enfants entre eux. Ensuite, un noeud enfant dans larbre est
identie a partir dun objet union TreeNode . Cet objet peut prendre soit etre une ex-
pression simple LttvSimpleExpression ou un sous-arbre LttvFilterTree .
8/12/2019 Bouvier Zappa 2005 Pfe
27/50
CHAPITRE 3. M ETHODOLOGIE 18
F IG . 3.5 Diagramme de classes du module noyau
Enn, la classe LttvSimpleExpression repr esenteles feuilles de larbre binaire. Chaque
expression simple est constitu e des attributs eld , offset , op et value . En premier lieu,
lattribut eld est le num ero de champ de ltrage. Lattribut op est un pointeur vers
une des fonctions de comparaison des valeurs de ltrage. Lattribut value est un objet
union LttvFieldValue qui repr esente la valeur de comparaison du ltrage encod e dans
le format appropri e. Enn lattribut offset sera eventuellement utilis e pour retracer ef-
8/12/2019 Bouvier Zappa 2005 Pfe
28/50
CHAPITRE 3. M ETHODOLOGIE 19
cacement les champs de ltrage dynamiques qui nont malheureusement pas pu etre
implantes au cours de ce projet.
Etape 2 : Module ltre textuel
Le module ltre textuel repr esente bien la partie la plus ais ee du projet `a conce-
voir. En effet, ce module na aucune structure logicielle ` a proprement parler. Toutefois,
il convient de mentionner les diverses interactions que ce module devra entreprendre
avec les autres modules textuels ainsi que le noyau. La gure 3.6 afche le diagramme
de sequence qui caract erise la situation.
Ainsi, en premier lieu, le module ltre textuel envoie la chane de ltrage au module
batchAnalysis qui soccupera de la cr eation et sauvegarde du ltre. Par la suite, lorsdune demande de ltrage, le module textDump recup erera le ltre de batchAnalysis et
proc edera au ltrage par un appel au module noyau.
8/12/2019 Bouvier Zappa 2005 Pfe
29/50
CHAPITRE 3. M ETHODOLOGIE 20
F IG . 3.6 Diagramme de s equence du module textuel
Etape 3 : Module ltre graphique
Le module ltre graphique demande une conception l egerement plus pointue que
le ltre textuel. En effet, bien que la sortie des deux modules soit identique, le module
graphique demande une conception dinterface. Ainsi, le module graphique peut etre
repr esent e par le diagramme de classe de la gure 3.7.
Ce diagramme nest compos e que de deux classes, soit les classes FilterViewerData
et FilterViewerDataLine .
8/12/2019 Bouvier Zappa 2005 Pfe
30/50
CHAPITRE 3. M ETHODOLOGIE 21
F IG . 3.7 Diagramme de classes du module graphique
La classe FilterViewerData contient toute linformation propre au module gra-
phique. Ainsi, on y retrouve les diff erents widgets qui composent linterface. Pour plus
dinformations, le tableau 3.5 sp ecie lutilite des principaux widgets.
Widget Repr esentationf main box Conteneur principal du module graphiquef expression eld Champ dentr ee de lexpression textuellef process button Bouton denvoi du ltref add button Ajout de sous-expression au ltref logical op junction box Op erateur de liaison de sous-expressions
TAB . 3.5 Widgets de FilterViewerData
La classe FilterViewerDataLine represente les expressions simples que lusager
pourra choisir parmi les botes de choix. Des objets de cette classe sont ajout es dans
un vecteur delements de la classe FilterViewerData pour conserver linformation de
chaque expression simple ajout ee par lusager. La gure 3.6 sp ecie lutilite des wid-
gets pour cette classe.
A partir de cette interface, il est maintenant possible de formuler une expression de
8/12/2019 Bouvier Zappa 2005 Pfe
31/50
CHAPITRE 3. M ETHODOLOGIE 22
Widget Repr esentationf not op box Inverseur de lexpression simplef eld box Champ de ltragef math op box Operateur mathematiquef value eld Valeur de comparaisonf logical op box Operateur de liaison de lexpression simple suivante
TAB . 3.6 Widgets de FilterViewerData
ltrage qui sera envoy e au ltre noyau. On peut maintenant analyser linteraction entre
le module graphique et les autres modules par un diagramme de s equence represent e a
la gure 3.8.
F IG . 3.8 Diagramme de s equence du module graphique
8/12/2019 Bouvier Zappa 2005 Pfe
32/50
CHAPITRE 3. M ETHODOLOGIE 23
Une fois lexpression de ltrage lanc ee par lutilisateur, le module graphique cr ee
lui-m eme larbre de ltrage et puis enregistre le ltre sur la fen etre LttvWindow corres-
pondante. Lorsque les modules graphiques requerront un quelconque ltrage, ceux-ci
pourront recup erer le ltre par un appel ` a cette m eme fen etre LttvWindow .
3.2.2 Documentation
An de laisser un code clair et lisible au d eveloppeur futur, une bonne documen-
tation est de mise dans tout projet. Ainsi, ce projet mettra en oeuvre la syntaxe de
documentation Doxygen [6] pour construire une r eference g en erale de lAPI. Doxygen
permet de generer une documentation dans plusieurs formats diff erents ( html, rtf, man
pages ) et constitue donc un support standard sur toute plate forme. Il est possible de
voir une partie de la documentation Doxygen gen eree pour les modules de ltre en
annexes.
3.3 Implantation
Pour linter et de ce projet, la description de limplantation se limitera aux fonc-
tionnalites du module noyau qui demeure le plus important. Celui-ci se s epare en deux
sections quon pourrait d ecrire comme suit : pr ecompilation du ltre et parcours du
ltre .
3.3.1 Pr ecompilation du ltre
La pr ecompilation du ltre a lieu avant lanalyse des traces. Il sagit de la conver-
sion de lexpression de ltrage textuelle en arbre de ltrage. Pour des raisons de perfor-
mance, lanalyse de lexpression de ltrage et la construction de larbre se font simul-
tanement. Lordre de complexit e de cet algorithme est donc directement proportionnel
a la longueur de lexpression de ltrage.
8/12/2019 Bouvier Zappa 2005 Pfe
33/50
8/12/2019 Bouvier Zappa 2005 Pfe
34/50
CHAPITRE 3. M ETHODOLOGIE 25
Alg. 1 Precompilation du ltre1: lter est lobjet ltre2: expression est lexpression de ltrage3: tree est larbre de ltrage principal4: subtree est un tampon pour un sous-arbre5: tree stack represente la pile de tous les sous-arbres6: p nesting est la variable de contr ole des sous-expressions7: not est la variable de contr ole des inversions8: p nesting 09: pour i 0 jusqu a taille de lexpression
10: si expression [i] = & ou | ou alors11: si operateur NON sp eci e alors12: Concat ener un sous-arbre NON ` a larbre courant13: non FALSE 14:
15: si subtree existe alors16: Creer un nouveau sous-arbre t 17: Assigner loperateur logique ` a larbre t 18: Concat ener subtree `a la branche gauche du nouvel arbre t 19: Concat ener t a la branche droite de larbre courant20: sinon21: Creer lexpression simple22: Creer un nouveau sous-arbre t 23: Assigner loperateur logique ` a larbre t 24: Ajouter lexpression simple ` a la branche gauche du nouvel arbre t 25: Concat ener t a la branche droite de larbre courant26:
27: sinon si expression [i] = ! alors28: not TRUE 29: sinon si expression [i] = ( ou [ ou { alors30: p nesting p nesting + 131:
Creer un nouveau sous-arbre32: Empiler ce sous-arbre sur la pile tree stack 33: sinon si expression [i] = ) ou ] ou } alors34: p nesting p nesting 135: si operateur NON sp eci e alors36: Concat ener un sous-arbre NON ` a larbre courant37: not FALSE 38:
39: si subtree existe alors40: Concat ener subtree a la branche droite de larbre courant41: Depiler la pile tree stack sur lobjet subtree42: sinon43: Creer lexpression simple
44: Ajouter lexpression simple ` a la branche droite de larbre courant45: Concat ener t a la branche droite de larbre courant46: Depiler la pile tree stack sur lobjet subtree47:
48: sinon si expression [i] = > ou > = ou = ou ! = ou < ou < = alors49: Enregistrer le champ dans lexpression simple50: Assigner la fonction propre ` a lop erateur pour lexpression simple51: sinon52: Concat ener expression [i] au tampon dexpression53:
54:
55: Enregistrer la derni` ere expression simple ` a lextr eme droite de larbre
8/12/2019 Bouvier Zappa 2005 Pfe
35/50
CHAPITRE 3. M ETHODOLOGIE 26
Alg. 2 Parcours du ltre1: lresult est le resultat de la branche gauche2: lresult est le resultat de la branche droite3: t est larbre courant4: lresult FALSE 5: rresult FALSE 6: si le ls gauche de t est une feuille alors7: lresult
resultat du ltre
8: sinon si le ls gauche de t est un noeud alors9: lresult parcours de la branche gauche de larbre
10:11: si operateur de t est un ou et lresult est vrai alors12: retourner TRUE13:
14: si operateur de t est un et et lresult est faux alors15: retourner FAUX
16:17: si le ls droit de t est une feuille alors18: rresult resultat du ltre19: sinon si le ls droit de t est un noeud alors
20: rresult parcours de la branche droite de larbre
21:22: retourner loperation entre rresult et lresult
8/12/2019 Bouvier Zappa 2005 Pfe
36/50
8/12/2019 Bouvier Zappa 2005 Pfe
37/50
CHAPITRE 4. R ESULTATS 28
textFilter
textDump
batchAnalysis
Depend de
Depend de
F IG . 4.1 Dependance des modules textuels
expression,-e
Entr ee dune expression ` a la ligne de commande. Cette commande est utilis ee pour
des expressions de ltrage courtes
lename,-f
Entr ee dune expression contenue dans un chier local. Cette commande peut etre
utile lorsque lutilisateur requiert un ltrage pointu des traces dex ecution.
Par ailleurs, il est important de savoir que les expressions fournies simultan ement
seront par la suite concat enees en une seule expression ind ependante. Lop erateur de
liaison qui fait le pas entre les sous-expressions est le ET logique.
4.1.2 Utilisation du module ltre graphique
Un modulede ltrage graphiquea ete implante au sein du programme Lttv conformement
aux sp ecications du projet. Ainsi, il est possible de voir un apercu de ce module en
8/12/2019 Bouvier Zappa 2005 Pfe
38/50
CHAPITRE 4. R ESULTATS 29
interaction avec le module guicontrolow a la gure 4.2
F IG . 4.2 Module ltre graphique
1 Cet icone sert a actionner le module de ltre
2
Ce champ represente lexpression de ltrage textuelle qui sera en-
voyee au ltre noyau. Cette expression peut etre modiee directe-
ment, ou par lajout de nouvelles sous-expressions par les botes de
choix ( 5).
3
Ce bouton permet ` a lusager denvoyer lexpression du champ de l-
trage au ltre noyau. Le ltre construira par la suite larbre ` a partir de
cette expression.
8/12/2019 Bouvier Zappa 2005 Pfe
39/50
CHAPITRE 4. R ESULTATS 30
4
Ce bouton permet ` a lusager de rajouter les diff erentes options de
ltrage speci es dans les botes de choix au champ de ltrage. Si
une expression est d eja presente dans ce champ, la nouvelle sous-
expression sera concat en e par un op erateur logique choisi.
5
Ces botes de choix permettent ` a lusager de former des expressions
de ltrage. Chaque ligne repr esente une expression simple constitu ee
dans lordre du champ de ltrage ( voir gure 3.2 pour plus de d etails
), dun op erateur mathematique, dune valeur et de lop erateur liant
cette expression ` a la prochaine si il y a lieu.
4.2 Sortie du programme
Pour bien illustrer les r esultats possibles du ltrage, nous proc ederons a lexemplesimple dun ltrage dun evenement en analysant son parcours ` a travers larbre de
ltrage. Ainsi, nous poserons l etat repr esent e par le tableau 4.1
Champ de ltrage Valeurevent.name irqevent.category unknownevent.time 2000.00event.tsc 50trace.name toto
TAB . 4.1 Exemple detat des traces
Il est donc possible avec le module de ltrage textuel ou graphique de sp ecier les
regles pr ecises de ltrage pour cet ev enement. Pour les besoins de notre exemple, nous
poserons lexpression de ltrage f = ( event . time > 200& trace . name = toto )&(event . tsc 160 trace . name = toto event . tsc < 80 event . name = irq
F IG . 4.3 Exemple darbre de ltrage
Gr ace a lalgorithme de parcours, le parcours de larbre sera all eg e des branches
que lheuristique jugera non n ecessaire. En effet, comme lexplique d eja la section
3.1.5 du chapitre 3, lheuristique utilis ee pour proceder a lelagage de larbre de re-
cherche se base sur les propri etes de base des operateurs logiques ET et OU et
renvoie toujours la bonne r eponse.
Ainsi, pour notre exemple, larbre r esultant du parcours est illustr e a la gure 4.4
AND
AND OR
event . time > 160 trace . name = toto event . tsc < 80 event . name = irq
1 1 1
1 1
1
F IG . 4.4 Exemple de parcours darbre de ltrage
Apr es parcours de cet arbre, le ltre conserve l element de la trace en cours dana-
8/12/2019 Bouvier Zappa 2005 Pfe
41/50
CHAPITRE 4. R ESULTATS 32
lyse. Comme on peut le voir, lalgorithme de parcours de larbre a coup e la branche a
lextr eme droite. En effet, le test effectu e sur la troisi`eme branche de deuxi` eme niveau
( event . tsc < 100 ) a satisfait le condition de ltrage. De plus, comme lop erateur lo-
gique liant les deux branches entre elles est un OU logique, l evaluation du membre
de droite ne changera pas le r esultat du ltrage nal. Il a donc ete jug e plus utile a
lapplication de ne pas faire l evaluation de cette branche.
L elagage implant e pour le parcours de larbre binaire permettra eventuellement ` a
lapplication de ltrage de sauver beaucoup de temps d evaluation. En effet, la proba-
bilit e de proc eder a un elagage dans larbre de ltrage est directement proportionnelle
a la taille de celui-ci.
8/12/2019 Bouvier Zappa 2005 Pfe
42/50
Chapitre 5
Discussion
5.1 Port ee du travail
Limplantation des ltres demeure essentielle pour rendre le projet Lttv accessible
au grand public. Ainsi, les ltres permettront lanalyse de traces plus complexes en
permettant de cibler uniquement les elements dont on fait lanalyse.
Par ailleurs, une grande attention a ete port ee sur la construction de larbre de l-
trage de m eme que son parcours. De cette facon, le ltre noyau constitue une entit e
distincte quil est possible de prendre pour base dans limplantation future des fonc-
tionnalites secondaires du ltre.
5.2 Analyse des m ethodes exploit ees
5.2.1 Analyse de la performance
Le souci de performance est au coeur de limplantation du Linux Trace Toolkit Vie-
wer . Par ailleurs, il est important de rappeler que le moteur principal du ltrage se situe
33
8/12/2019 Bouvier Zappa 2005 Pfe
43/50
CHAPITRE 5. DISCUSSION 34
au noyau m eme de lapplication et se doit de respecter un standard doptimalit e par
rapport au reste du noyau.
Nous verrons dans les sections suivantes les performances du module noyau test e
en simulation pour diff erentes expressions de ltrage.
Construction de larbre
Comme il a deja ete mentionne a la section 3.3.1 du chapitre 3, lanalyse de lex-
pression de ltrage et la construction de larbre binaire se font simultan ement. Cela
a donc pour effet de limiter les manipulations qui sont effectu ees sur lexpression de
ltrage et sur le temps de construction de larbre. De m eme, la complexit e de cet al-
gorithme dependra directement de la longueur de la chane de caract` ere qui formelexpression.
Une analyse de complexit e de lalgorithme d emontrera qui celui-ci suit une asymp-
tote polynomiale dordre t (n)O(n2 ). Pour ns danalyse exp erimentale, la gure 5.1
repr esente l evolution du temps de construction selon la longueur de chane de ca-
ract ere.
Ainsi, pour cette analyse exp erimentale, l evolution du temps de calcul suit l equation
t (n) = 7 10 7 n2 + 2 10 4 n + 0 . 0896
Il convient de se souvenir que ces r esultats experimentaux proviennent dune ana-
lyse du cas moyen de complexit e de la construction de larbre binaire. En effet, une
expression de ltrage peut etre constitue de nombreux elements qui modient la com-
plexit e nale de lalgorithme.
8/12/2019 Bouvier Zappa 2005 Pfe
44/50
8/12/2019 Bouvier Zappa 2005 Pfe
45/50
CHAPITRE 5. DISCUSSION 36
Larbre binaire
Larbre binaire construit par le module de ltre noyau est un arbre dont le ni-
veau d epend indirectement du nombre dexpressions simples. En effet, il est difcile
devaluer a sa construction le niveau quempruntera larbre de ltrage, cela d u auxmultiples sous-arbres qui se m eleront a la structure nale. Par ailleurs, larbre binaire
de ltrage nest pas un arbre complet, ni parfait[7] ni ne pourra eventuellement etre
transforme comme tel.
Parailleurs, il serait toutefoispossiblede proc eder a une optimisationpost-construction
de larbre pour equilibrer les expressions et sous-arbres en d eplacant les expressions fa-
vorisant un elagage des branches au d ebut du parcours.
De m eme, les expressions NON font place ` a une optimisation possible. En effet,
il est possible de simplier une expression simple ou sous-expression pr eced e dun
operateur logique NON. Ainsi, en appliquant la loi de Murphy , il serait possible de
simplier lexpression f ( x) = !( A( x) < a& B( x) = b) par f ( x) = A( x) a | B( x) = b. Il
sagit dune optimisation dun noeud dans larbre de ltrage.
Module graphique
Comme toujours pour une interfacegraphique, de nombreuses am eliorationspeuvent
etre amenees pour la rendre plus facile dutilisation. Dans le cadre de ce projet, une in-
terface sommaire a pu etre d eveloppee et permet `a lusager de specier a laide de
bote de choix les diff erentes options de ltrage quil d esire utiliser. Cette interface est
simple de compr ehension et dutilisation et permet de produire des expressions de l-
trage complexes.
Toutefois, il est possible daller toujours plus loin dans l elaboration dexpressions
8/12/2019 Bouvier Zappa 2005 Pfe
46/50
CHAPITRE 5. DISCUSSION 37
de ltrage. Ainsi, il serait possible de d evelopper une interface permettant ` a lusager de
specier a m eme un arbre binaire graphique les options de ltrage quil d esire utiliser.
Sauvegarde des donn ees
Par la suite, il pourrait aussi etre int eressant de developper un syst` eme de sauve-
garde des expressions de ltrage utilis ees dans linterface graphique et dans le module
textuel. En effet, le ltrage de traces peut parfois devenir complexe avec certaines sub-
tilit es quil deviendra ereintant de reinscrire `a chaque test.
Ainsi, la sauvegarde de lexpression pourrait prendre une structure beaucoup plus
modulairequunesimple chane de caract` eres. Pour ce faire, une structure XML devien-dra int eressante pour conserver la structure intrins` eque de larbre binaire. Lexemple
suivant d emontre un exemple dutilisation possible dune telle structure pour lexpres-
sion state . pid > 0|(event . time > 100 . 00& event . time < 900 . 00)
state.pid>0
event.time>100.00event.time
8/12/2019 Bouvier Zappa 2005 Pfe
47/50
Chapitre 6
Glossaire
FiltreSuivant sa denition intrins` eque, un ltre a pour fonction de conserver le bon grain,
tout en empechant le mauvais grain de passer. Implant e sous Lttv, le ltre recevra en
entr ee des evenements et traces du programme et devra d ecider, selon lexpression de
ltrage, sil laisse passer ou non l element en cours danalyse.
Expression simple
Une expression simple ou simple expression dans le programmeconstitue une com-
mande de ltrage ind ependante. Une expression simple r efere a un element pr ecis de
Lttv pour lequel on specie une valeur qui devra etre respectee lors du ltrage de cet
element.
voir sections 2.4.2 et 3.1.4.
Expression
Une expression est un ensemble dune ou plusieurs expressions simples diff erentes
38
8/12/2019 Bouvier Zappa 2005 Pfe
48/50
CHAPITRE 6. GLOSSAIRE 39
separ ees entre elles par un op erateur logique. Lop erateur peut prendre la forme dun
et logique, dun ou logique ou dun ou exclusif. Un element sera en mesure de
passer un ltrage, si et seulement sil respecte la condition formul ee sous forme dex-
pression de ltrage.
voir sections 2.4.2 et 3.1.4.
Arbre de ltrage
Larbre de ltrage utilis e pour les besoins de Lttv est un arbre de recherche bi-
naire. Chaque noeud interm ediaire dans larbre correspond ` a un op erateur logique qui
effectue une liaison entre deux autres noeuds. Les feuilles de larbre, quant ` a elles,
repr esentent une expression simple dont l evaluation est effectu ee lors du parcours delarbre.
voir sections 2.4.3, 3.1.5, 3.2.1 et 3.3.
8/12/2019 Bouvier Zappa 2005 Pfe
49/50
Bibliographie
[1] Gilles Brassard & Paul Bratley. Fundamentals of Algorithmics . Algorithmique.
Prentice Hall, 1996.
[2] Michel Dagenais. Aspects algorithmiques du g enie informatique, notes de cours .
Algorithmique. 2004.
[3] H.M. Deitel & P.J. Deitel. Comment programmer en C++ . Programmation. Pren-
tice Hall, 2001.
[4] http ://developer.gnome.org/doc/API/2.0/glib/index.html. GLib-2.0 API . Docu-
mentation. 2005.
[5] http ://developer.gnome.org/doc/API/2.0/gtk/index.html. GTK-2.0 API . Documen-
tation. 2005.
[6] http ://www.doxygen.org. Doxygen Manual . Documentation. 2005.
[7] Martine Bellache & Robert Lagani` ere. Algorithmes et programmation a objets .
Programmation. Presses Polytechnique, 1998.
40
8/12/2019 Bouvier Zappa 2005 Pfe
50/50
Annexe A
Annexes
Les pages suivantes pr esenteront la documentation Doxygen sous format HTMLgener e pour le pr esent projet. De plus, une version electronique de cette documentation
est fournie avec le rapport.
41