ProjetsStages

Voici la liste des projets et stages proposés pour l'année universitaire 2008-2009.

= Projets =

Intégration de tests unitaires dans une interface graphique - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Mots-clés


 * Tests unitaires
 * Interfaces graphiques

Présentation du projet

La projet VLE (Virtual Laboratory Environment) est une plate-forme de modélisation et de simulation développée à l'INRA de Toulouse, au Cirad et à l'université du Littoral. Cette plate-forme s'est dotée, depuis la fin d'un précédent stage de M1-I2L, d'une interface graphique qui permet aux modélisateurs et utilisateurs d'utiliser VLE de manière plus souple : gvle.

Depuis le début du développement de VLE, nous employons des méthodes agiles où l'emploi de tests unitaires est très important pour assurer une fonctionnalité maximale de la plate-forme. Cependant, l'interface graphique gvle, nouvellement développée, ne bénéficie d'aucun test unitaire. Dans ce projet, nous nous proposons d'ajouter un ensemble de tests unitaires de l'interface graphiques à l'aide d'outils spécifiques.

Ce projet est susceptible d'être suivi d'un stage rémunéré au sein de l'INRA. Le stage pourra être effectué à Toulouse ou à Calais sous les encadrements de Éric Ramat, Gauthier Quesnel et Patrick Chabrier avec pour sujet le développement de GVLE.

Objectif

L'objectif de ce projet est de proposer un ensemble de test unitaires afin de tester les possibilités de l'interface graphiques.
 * Rechercher un programme qui permet de tester les interfaces graphiques sous GNU/Linux et/ou Windows.
 * Intégrer ce programme au sein des outils de tests unitaires déjà employés : CMake.
 * Montrer la viabilité du système en découvrant des bogues et autres failles.

Langages et technologies


 * C++ - CMake - Gtkmm
 * Méthodes agiles

Placement automatique de noeuds dans un graphe - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Mots-clés


 * Manipulation de graphes
 * Placement automatiques
 * Interface graphique

Présentation du projet

L'interface graphique GVLE, dont une partie est représentée sur les captures d'écrans suivantes, permet de représenter des graphes de modèles. Ces modèles sont de deux types : les modèles atomiques (les feuilles de l'arbre) et les modèles couplés (les noeuds de l'arbre). GVLE représente la hiérarchie de modèles couplés dans une fenêtre (image de gauche), et les modèles couplés avec seulement un niveau de sous-modèles (image de droite). Nous nous intéressons dans ce projet, uniquement à la représentation graphique d'un modèle couplé et non de sa hiérarchie.

Le placement des modèles d'un modèle couplé est aujourd'hui défini par l'utilisateur et avec des moyens très limités (de simples déplacements de boîte). Ainsi, comme le présente la figure de droite, les connexions entre les modèles se croisent et peuvent être difficiles à placer lorsque le modèle couplé possède beaucoup de sous-modèles.



L'objectif de ce stage est de proposer un ensemble d'algorithmes, à introduire dans la bibliothèque vlegraph, afin de proposer un placement automatique de modèles d'un modèle couplé sur une zone de dessin CairoSurface le tout en proposant une nouvelle visualisation des objets, de simple cercles pour les modèles atomiques ou couplé, et des flèches pour les connexions entre modèles.



Ce projet est susceptible d'être suivi d'un stage rémunéré au sein de l'INRA. Le stage pourra être effectué à Toulouse ou à Calais sous les encadrements de Éric Ramat, Gauthier Quesnel et Patrick Chabrier avec pour sujet le développement de GVLE.

Objectif


 * Comprendre le fonctionnement des 5 classes de la bibliothèque vlegraph.
 * Implémenter une méthode de placement automatique : par ex. les algorithmes à ressorts.
 * Implémenter une représentation graphique Cairo d'un modèle couplé.
 * Rendre interactive la représentation graphique de modèles couplés (les modèles et les connexions doivent pouvoir être créées, modifiées et/ou supprimées).
 * Remplacer la vue de la GVLE par celle nouvellement développée.

Langages et technologies


 * C++ - CMake - Gtkmm - Cairomm
 * Méthodes de graphes
 * Algorithmes à ressorts

Gestion des bibliothèques Gtk avec CMake - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Mots-clés


 * Scripts CMake
 * Détection de bibliothèques multi-plateforme

Présentation du projet

Le projet VLE a fait le choix en 2007 d'abandonner les autotools du projet GNU pour le programme CMake pour la gestion de la compilation. Ce changement a été énormément profitable à l'ensemble du projet pour simplifier la génération des versions Windows de VLE ainsi que d'augmenter la rapidité de compilation.

VLE utilise les normes de codage des projets GNU et plus particulièrement les scripts pkgconfig qui permettent de simplifier énormément la gestions des dépendances entre bibliothèques et de fournir à l'utilisateur la liste des paramètres de compilation. Par exemple : homer@brulle ~ $ pkg-config --cflags gtk+-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1

homer@brulle ~ $ pkg-config --libs gtk+-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

L'utilisateur, pour compiler un fichier peut ainsi simplifier ses lignes de compilation : $ gcc -c fichier.c `pkg-config --cflags gtk+-2.0` $ gcc -o exe fichier.o `pkg-config --libs gtk+-2.0`

Le fichier fournissant ces informations et les liens de dépendances est : homer@brulle ~ $ cat /usr/lib/pkgconfig/gtk+-2.0.pc prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include target=x11 gtk_binary_version=2.10.0 gtk_host=i486-pc-linux-gnu Name: GTK+ Description: GIMP Tool Kit (${target} target) Version: 2.12.9 Requires: gdk-${target}-2.0 atk cairo Libs: -L${libdir} -lgtk-${target}-2.0 Cflags: -I${includedir}/gtk-2.0

Le projet CMake fournit également un script d'utilisation du programme pkgconfig (/usr/share/cmake-2.6/Modules/FindPkgConfig.cmake). Cependant, celui-ci n'est pas suffisant pour une gestion correcte de la norme de CMake 2.6 et est très difficile à utiliser sous Windows.

Pour ce stage, nous proposons d'écrire un ensemble de scripts CMake pour les différentes bibliothèques utilisées par VLE : Gtkmm, libxml++ et Cairomm. Ces scripts doivent suivre la ligne de conduite de CMake et être multi-plateforme.

Objectif


 * Comprendre le fonctionnement des scripts CMake
 * Implémenter le scripts de détection de la libxml++ en ce basant sur le script FindLibXml2.cmake et de la même façon, un script pour chaque bibliothèques C puis C++ :
 * Glib, Gobject, GIO, Pango, ATK, GdkPuixbuf, GDK, GTK et Cairo
 * Glibmm, Gdkmm, Gtkmm et Cairomm
 * Tester l'ensemble de ces scripts sur différentes distributions Linux et Windows.
 * Proposer l'ensemble des scripts aux administrateurs du projet.
 * Création d'un script FindVLE.cmake

Langages et technologies


 * Scripts CMake
 * Linux / Windows

Plate-forme Web pour la gestion des plans d'expériences de VLE et Mexico - [mailto:ramat@lil.univ-littoral.fr Eric Ramat] - INRA/LIL/ULCO
Mots-clés


 * développement Web
 * exécution sur cluster

Présentation du projet

VLE est aujourd'hui disponible sous forme d'un exécutable modulaire pour la simulation de modèles à base d'événements discrets. Il s'accompagne aussi d'outils d'interface comme gvle ou eov pour la construction de modèles, l'exécution d'expériences simples et de visualisation temps-réel des simulations. Ces outils sont plutôt orientés mono-postes mais si la visualisation temps-réel peut être déportée par rapport au noeud d'exécution de la simulation.

Dans ce projet, on se propose de construire, à partir d'un cluster de 8 serveurs SUN V20Z bi-processeurs et d'un serveur bi-processeur, un "petit" serveur de démonstration de vle en mode cluster. Ce serveur doit aussi embarquer un dépôt de modèles vle et des interfaces de gestion des expériences.

Objectif

L'objectif est de proposer une interface Web pour la définition et l'exécution de plans d'expériences. Il se découpe en plusieurs sous-projets :
 * le cluster :
 * recherche d'une distribution adéquate pour le clustering et installation sur le cluster
 * installation du noeud root et déploiement de l'architecture Web
 * les plans d'expériences :
 * étude de la solution de développement Web (Python) :
 * pour le framework Web : Pylons (le livre)
 * pour la persistance : SQLAchemy et SQLite (un livre)
 * pour les templates : Mako
 * pour l'AJAX : jQuery (communauté française)
 * pour l'URL dispatching : Routes
 * les paquets debian : python2.5, python-pylons, python-authkit, python-sqlalchemy, sqlite3, python-mako, libjs-jquery et python-routes (plusieurs paquets s'installent lors de l'installation du paquet python-pylons)
 * développement des scripts de définition d'un plan d'expériences simple (au sens VLE)
 * développement de scripts de définition de plan d'expériences complexes (au sens Mexico)
 * l'interface utilisateur :
 * gestion des accès (voir AuthKit de Pylons)
 * gestion des plans (archivage)
 * gestion des modèles (dépôt de modèles VLE - ssh via des comptes sur le serveur)
 * l'exécution sur le cluster :
 * exécution des plans sur le cluster
 * visualisation de la progression de l'exécution des plans
 * reporting d'exécution des plans
 * tracé de courbes de résultats avec matplotlib et SciPy à partir des sorties de simulations
 * courbes 2D (sortie, temps)
 * grilles (avec choix de la date de l'état à visualiser)
 * possibilité d'animation ???

Architecture du service Web pour VLE

Voici le cahier des charges fonctionnel de l'architecture du service Web de VLE.

Langages et technologies


 * Python - Pylons
 * Linux/clustering
 * bases de données

Plate-forme de tests unitaires pour VLE - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Mots-clés


 * Tests unitaires
 * Virtualisation

Présentation du projet

Les tests unitaires sont très importants dans le développement de logiciel informatique et plus particulièrement avec les méthode agiles. La plate-forme VLE dispose de tests unitaires mais ces tests ne sont exécutés que sur les machines des développeurs, bien souvent, du x86 sous Debian GNU/Linux ou Microsoft Windows XP. Les programmes CMake (générateurs de Makefiles) et CDash (analyseur de résultats de tests unitaires) permettent de mettre en place un outil efficace pour la gestion de tests unitaires depuis de multiples OS, compilateurs, saveurs de noyaux etc. Par exemple, la page suivantes est un exemple d'analyses des sorties de CDash depuis les tests unitaires de CMake.

Pour ce projet nous nous proposons de développer un ensemble de scripts, programmes et autres infrastructures logicielles afin de pouvoir lancer les tests unitaires de VLE depuis plusieurs sources (OS, compilateurs etc.). Pour cela, un ensemble de machines virtuelles lancées pour exécutées les tests unitaires doit être mis en place.

Objectif


 * Étudier les logiciels CMake et CDash.
 * Ajouter les scripts CMake à VLE pour prendre en compte les tests unitaires.
 * Utiliser des outils de virtualisation, de chroot etc. pour mettre en place un ensemble d'OS de tests :
 * Dans un premier temps : Debian GNU/Linux x86, Freebsd x86 et Windows XP.
 * Dans un second temps : Linux sur : x86-64, PPC etc.
 * Proposer un structure pour intégrer ces tests pour n'importe quel type de logiciel.

Langages et technologies


 * CMake, chroot, kvm, qemu, Xen.
 * Debian, FreeBSD, MacOS, Windows etc.

Gestion de la documentation du projet VLE avec Doxygen - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] et [mailto:eric.ramat@toulouse.inra.fr Eric Ramat] - INRA/LIL/ULCO
Mots-clés


 * génération automatique de documentations
 * multiformats

Présentation du projet

Le projet VLE (Virtual Laboratory Environment) est une plate-forme de modélisation et de simulation développée à l'INRA de Toulouse, au Cirad et à l'université du Littoral. Dans le cadre de ce projet, nous avons mis en place une stratégie de documentation du code basée sur Doxygen. Aujourd'hui, nous en avons une utilisation classique : génération d'une documentation de l'API C++ de VLE sous forme de pages Web. Cette documentation est générée automatiquement toutes les nuits. On aimerait maintenant aller plus loin et intégrer dans la documentation des tutoriels, des exemples, ... afin de générer diverses formes de documentation (de type Reference guide, de type Getting Started, de type livre, ...) et sous divers formats (html, latex, ...).

Objectif


 * étude des possibilités de doxygen
 * rédaction des directives de rédaction de la documentation
 * création des templates pour les différentes formes de documentation
 * mise en place de la génération automatique

Langages et technologies


 * Doxygen
 * Bournel Shell (sh)