Groupe APARU
Francoise Balmas et Harald Wertz
Salle A184
fb@ai.univ-paris8.fr / hw @ai.univ-paris8.fr


Propositions de sujets de Maîtrises


Observation dynamique de programmes

Le but de ce projet est de définir et implémenter des techniques permettant d'observer les programmes pendant leur exécution. Détecter les accès mémoire, les connexions réseau, ou encore les opérations de lecture-écriture montrent comment un programme se comporte pendant une exécution particulière, ceci permettant de compléter les analyses que l'on peut faire en étudiant les sources du programme.


Evaluation d'outils d'aide à la compréhension de programmes

De nombreux outils permettent de faciliter la tâche de compréhension de programmes : cross- références, navigation dans les sources, analyses des dépendances de valeurs, représentations graphiques ou encore détection de modules sont autant de techniques à la disposition du programmeur.
Le but de ce projet est d'appliquer un sous-ensemble de ces outils à un échantillon de programmes de manière à évaluer et comparer leurs performances.


Manipulation et visualisation de graphes

L'utilisation de graphes pour représenter des informations sur les programmes est chose courante. Malheureusement, dès qu'un programme dépasse quelques dizaines de lignes, l'ensemble d'informations à représenter est tellement grand que le graphe ne peut être visualisé sur un écran. La solution retenue consiste généralement a remplacer un groupe de noeuds par un seul et à simplifier les arcs en conséquence.
Le but de ce projet est d'implémenter de manière efficace les opérations sur les graphes nécessaires à la manipulation de groupes de noeuds.


Compréhension de programmes

Ce projet vise à étudier la notion même de compréhension de programmes. En effet, si tout programmeur est capable de comprendre des programmes, nous sommes incapables de définir de manière précise ce que comprendre un programme veut dire.

Un bon point de départ pour ce projet est d'observer comment des programmeurs, soi-même ou d'autres, s'y prennent pour comprendre un programme : quelles informations cherchent-ils ? comment les organisent-ils ? quelle(s) représentation(s) se forment-ils du programme ? etc.

Un aboutissement possible de ce projet serait de définir une ou plusieurs formes de représentations qui, si elles étaient construites automatiquement, de toute évidence aideraient à la compréhension du programme, ainsi que d'implémenter un prototype de construction (semi-)automatique de celles-ci. Par la suite, ce projet pourrait déboucher sur un projet de recherche en 3ème cycle.


Construction d'une base d'informations pour programmes C

Lorsqu'un programmeur entreprend de développer, modifier ou debugger un programme, il doit nécéssairement rechercher des informations à l'intérieur des fichiers, des définitions de fonctions, des déclarations, etc. Il passe donc une bonne partie de son temps à naviguer, plus ou moins efficacement, à l'intérieur du programme.

L'objectif de ce projet est d'implémenter un système capable de construire une base d'informations sur un programme, ainsi que d'offrir une interface de navigation et/ou interrogation facilitant effectivement la tâche des programmeurs.

Ce projet s'appuiera sur un outil d'analyse de programmes C existant qui permettra d'extraire aisément des informations d'un programme. Il s'agira ensuite de proposer une structure de base de données ainsi qu'une interface adéquates.


Analyse de programmes binaires

Karine Mordal et Karim Bennai travaillent cette année sur ce sujet.

L'objectif de ce projet est d'étudier s'il est possible de comprendre un programme dont on ne dispose que de l'exécutable (binaire). En effet, il existe des techniques, ainsi que des outils, permettant de comprendre un programme source (C par exemple). Par ailleurs, il existe des systèmes, appelés décompilateurs, qui sont capables de transformer un binaire en un programme C.

La question qui se pose est alors celle de la qualité du programme décompilé : est-il intelligible pour un programmeur ou seulement pour un compilateur (donc une machine) ?

Ce projet démarrera par l'analyse de différents décompilateurs. Il pourra ensuite évoluer vers l'amélioration de l'un de ces décompilateurs, la mise au point de stratégies de compréhension de programmes binaires, ou encore la construction d'outils de compréhension spécifiques. Par la suite, ce projet pourrait déboucher sur un projet de recherche en 3ème cycle.


Techniques de migration de logiciels (H. Wertz)

Description à venir ...



Juin 2001