Bouvier Zappa 2005 Pfe

download Bouvier Zappa 2005 Pfe

of 50

Transcript of Bouvier Zappa 2005 Pfe

  • 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