Liste des projets 2007-2008


M2 I2L

Participez au développement du projet communautaire SSHProxy.org - Jean-François Taltavull - Wallix

Etudiants : Maxime Decaix et Bertrand Radenne et Julien Heyman et Xavier Coulon

Encadrant universitaire : Jean-Christophe Soulié

Mots-clés

  • SSH, sécurité, proxy, LDAP, radius

Présentation du projet

sshproxy est un serveur de proximité pour contrôler les connexions sécurisées par le protocole SSH2. Son rôle est de faire l'intermédiaire entre un utilisateur client et un serveur SSH sur lequel désire se connecter cet utilisateur sans lui communiquer les mots de passe du serveur. sshproxy permet, par une gestion centralisée des jetons d'authentification des sites de gérer les droits d'accès à ces sites grâce à des règles de contrôle d'accès (ACL : Access Control List) simples, puissantes et extensibles. sshproxy permet la traçabilité des actions menées sur le serveur SSH cible. sshproxy est virtuellement extensible à tout type de base de données, tant pour la partie client, qui peut être connectée à un serveur d'authentification (Radius, SecurID, LDAP), que pour les parties serveurs distants et base de règles ACL. En un point unique il est possible de gérez les accès et les moyens d’accès d'un ensemble de serveurs. sshproxy est développé dans le modèle open-source, dont le point d'entrée est http://www.wallix.org/sshproxy/. Le code source est versionné avec git, et le développement s'effectue presque exclusivement en Python. Les contributions sont acceptées via des patches envoyés par mail à l'auteur ou à la mailing-list.

Les fonctionnalités déjà existantes sont les suivantes:

  • Protocole SSH2 supporté (shell et exécution directe)
  • Scp en download et upload
  • Mots de passe et clés chiffrés dans la base de données
  • Moteur d'ACL puissant et simple à mettre en œuvre
  • Grande granularité du système d'ACL
  • Bases de données clients/ACL/Sites séparées et indépendantes
  • Backends supportés : fichiers et MySQL

Objectif

L'objectif dans les mois à venir est d'étendre et/ou améliorer sshproxy dans les domaines suivants:

  • Implémentation de modules d'authentification LDAP, radius, PAM, SecurID
  • Implémentation du port-forwarding, tunneling
  • Implémentation du sous-protocole sftp
  • Optimisation du parser d'ACL
  • Amélioration du système de logging
  • Finalisation de l'API et du système de plugins

Langages et technologies

  • Python, bash, SQL, LDAP, radius...
  • La connaissance précise du protocole SSH2 n'est pas obligatoire.

Informatique de Gestion - Jean Noel de Galzain - Wallix

Etudiants : Robert Codron et Guillaume Agnieray

Encadrant universitaire : ???

Mots-clés

  • GLPI, Request Tracker, SVN, analyse fonctionnelle des souhaits

utilisateurs, qualité, fiabilité, WAN

Contexte

Avec l'équipe Exploitations & Services managés de Wallix, développement de modules spécifiques autour des outils de gestion de parc, du back office d'exploitation et de supervision. La gestion de parc technique, base de connaissance, gestion documentaire, outil de ticketing...

Présentation

Après une phase d'étude fonctionnelle des utilisateurs de la comptabilité et de l'exploitation, spécifications et développement de pluggins (GLPI, Request Tracker, Zabbix).

Méthode

Les développements se feront en Php, perl, python (connaissance mysql indispensables).

Outils et techniques

  • Python
  • Perl
  • Php
  • ssh

Evaluation du moteur de recherche Xapian pour usage dans la bibliothèque itools - J. David Ibanez - Itaapy

Etudiants : Charles-Hubert Moindron

Encadrant universitaire : ???

Mots-clés : Moteur de recherche, Xapian, C++, Python, itools

Contexte

Parmi les fonctionnalités offertes par la bibliothèque itools, il y a un moteur d'indexation et de recherche, nommé itools.catalog ; écrit entièrement dans le langage Python, ce moteur de recherche est utilisé notamment par le CMS de itools (itools.cms).

Dans le but d'améliorer toujours la performance du moteur de recherche, la communauté du projet itools considère l'option d'utiliser la bibliothèque Xapian ; écrite en C++ et disposant d'une interface de programmation en Python, cette bibliothèque offre un moteur d'indexation et de recherche mûr et très performant.


Objectifs

L'étudiant doit réaliser une nouvelle version de itools.catalog qui repose sur la bibliothèque Xapian. L'ensemble de itools, et notamment le CMS, doit être pleinement fonctionnel avec cette nouvelle version.

Enfin l'étudiant devra mesurer les gains en performance par rapport à l'ancienne version.

Méthode

  • L'étudiant fera une branche privée (avec git) de la branche stable de itools. Ce sera dans cette branche où l'étudiant réalisera la tâche décrite.
  • L'étudiant fera un miroir de sa branche sur un serveur public, où le progrès de la tâche pourra être suivi.
  • Les discussions techniques concernant le projet se feront sur la liste de diffusion du projet itools (en anglais), et seront donc publiques.

Langages et technologies

  • Python, C++, itools, Xapian, git

Références

Spécifier et implémenter un nouveau langage XML pour générer fichiers PDF - Henry Obein - Itaapy

Etudiants : Fabrice Decroix et Yannick Martel

Encadrant universitaire : ???

Mots-clés

  • XML, CSS, PDF, RML, Python, itools

Contexte

Le langage RML (Reportlab Markup Language) est un langage XML conçu pour produire des fichiers PDF (formulaires, reportes, graphiques, etc.). Mais l'implémentation de référence du langage est un logiciel propriétaire.

La bibliothèque ``itools`` fournit une alternative en logiciel libre (GPL). Pour cela elle implémente un sous-ensemble du langage RML tels qu'il est définit dans la documentation publique. Or cette documentation correspond à une version ancienne du langage. De plus, le langage RML est complexe et pas très claire, dit autrement : on peut faire mieux.

Pour ces raisons la communauté du projet ``itools`` cherche à développer un nouveau langage XML moderne et simple permettant produire de fichiers au format PDF.

Objectifs

Spécifier un nouveau langage XML pour produire des fichiers en format PDF, avec un contrôle fin de l'affichage sur la page; un langage approprié pour produire par exemple des formulaires ou des rapports. Et implémenter le langage spécifié dans le paquet ``itools.pdf``.

Le langage doit être aussi proche que possible de HTML dans le nommage des valises et attributs. On considérera fortement l'option de définir le style des éléments et contrôler l'affichage sur la page avec un langage du genre CSS (Le choix de cette option impliquera l'implémentation d'un parser CSS, ou trouver un parser existant).

La spécification se fera à l'aide d'un Wiki.

Langages et technologies

  • Python, XML, CSS, PDF, RML, itools, reportlab

Références

Développer une boutique en ligne (e-commerce) pour le CMS de itools - Nicolas Deram - Itaapy

Etudiants : Sylvain Taverne

Encadrant universitaire : ???

Mots-clés

  • Web, CMS, e-commerce, Python, itools

Contexte

La bibliothèque ``itools``, écrite en Python, inclut un *Système de Gestion de Contenu* (CMS, pour le sigle en anglais). Ce CMS dispose de plusieurs modules de haut niveau, tel un Wiki ou un Tracker.

La communauté de ``itools`` souhaite enrichir la surface fonctionnelle avec un nouveau module de haut niveau : une boutique en ligne.

Objectifs

Développer une boutique en ligne (Shop), pour commerce électronique, dans le paquet ``itools.cms``.

Cette boutique aura comme définition fonctionnelle, au moins :

  • Catalogue de produits.
  • Panier.
  • Personnalisation des produits choisis.
  • Paiement en ligne.

L'exécution de ce projet se divisera en plusieurs étapes :

  • Définition précise de la surface fonctionnelle, en s'inspirant d'outils similaires.
  • Définition des interfaces utilisateur en respectant les lignes de ``itools.cms``
  • Définition de l'architecture du module.
  • Implémentation par étapes de la spécification : on démarre par le sous-ensemble fonctionnel le plus petit, on continue de façon itérative en rajoutant de nouvelles fonctionnalités jusqu'à compléter la surface spécifiée.

La phase de spécification (1, 2, 3) se fera à l'aide d'un Wiki.

Langages et technologies

  • Python, (X)HTML, CSS, itools, CMS, e-commerce

Références


Projets OpenWengo - Dave Neary - OpenWengo

Etudiants : Moctar NDong

Encadrant universitaire : ???

Mots-clés

  • voIP

Contexte

La société wengo développe un téléphone logiciel open source en GPL (le projet "openwengo"). Ce téléphone est compatible avec le protocole SIP qui est le protocole standard retenu par de nombreuses entreprise pour faire de la voix sur IP.

Présentation du projet

1. Develop a GTK+ interface for the WengoPhone, based on either CoIP Manager or phapi 2, in Python or C++, to target the Maemo or OpenMoko development platforms.

I have an N800 which I can donate to the project, and Nokia have provided lots of developer infrastructure (cross compiler developer kits, VM sandboxes, etc) to get started.

2. Video codecs - provide or source a GPL implementation of H261, H264 or MPEG4, and integrate the codec into the WengoPhone. Objective: seamless video call interoperability with another video phone (Ekiga)

3. Audio codecs

a) Speex - Speex is a free codec (in the sense of both unencumbered by patents, and with a free software reference implementation). The WengoPhone currently includes partial support for Speex, due to some problems with the Wengo platform. Ensure that the Speex codec is available to users of other SIP platforms. Success will be two WengoPhones or a WengoPhone and another softphone using the Speex codec via a free software SIP platform (OpenSER, Asterisk)

b) Unfree codecs - G729, G723.1, G728

The objective of this project would be twofold.

First, to implement fron scratch an ITU standard codec starting from the standard specification, using only free software (LGPL compatible) building blocks, and provide a GPL implementation of these codecs. Second, perhaps more importantly, to explore and expose the impact of patents (in particular the ITU's patent policy) on interoperability in telecommunications and on free software. The interactions between patents and copyright are poorly understood by many professionals and students in this area, and I think that study is worthwhile. In addition, a GPL implementation of these codecs being available would be a hugely worthwhile pursuit, independent of any patent licencing issues.

Méthode

Le projet permettra de s'insérer au sein d'un véritable projet open source et d'utiliser les mêmes outils que les membres de la communauté (SVN, Trac, Tickets, IRC, mailing list,..)

Références

Firebird : tests Assurance Qualité - Philippe Makowski et Pavel Cisar - IBPhoenix

Etudiants : Benoit Sanier et Henri Bouityvoubou

Encadrant universitaire : ???

Mots clés

Firebird, test qualité, python, SGBD et Subversion

Contexte

Le projet Firebird (SGBD libre sous licence IDPL) en plus du travail de relecture et audit du code utilise qmtest pour effectuer une batterie de tests avant la livraison de toute nouvelle version

Objectifs

Travailler avec la Q/A team de Firebird afin de créer des nouveaux tests, vérifier les bugs fermés par les developpeurs, ajouter des nouveaux tests, améliorer les outils Python utilisés par la Q/A team.

Langages et technologies

  • Python,
  • qmtest
  • Firebird
  • Subversion

Références

Narval - plate-forme d'agents intelligents - Nicolas Chauvat - Logilab

Etudiants : Bruno Monsterleet

Encadrant universitaire : ???

Mots-clés

  • Python avancé, intelligence artificielle, rdf, foaf, instant-messaging, bot, etc.

Contexte

Narval est une plate-forme d'agents intelligents, écrite entièrement en Python, dont le développement a débuté il y a six ans. Un langage dédié permet de décrire les enchaînements d'actions de ces agents, les actions étant codées en Python.

Présentation du projet

Après une prise en main du logiciel au cours de laquelle des corrections et des petites améliorations pourront être apportées pour se familiariser avec le code, vous travaillerez plus particulièrement sur les fonctionnalités de conversation et de messagerie instantanée.

Logilab a publié une bibliothèque d'actions pour Narval. Vous serez encouragés à proposer de nouvelles idées d'application et à créer de nouveau scénarios d'utilisation puis à développer les commandes manquantes pour les réaliser.

Méthode

Les développements se feront en Python et seront suivis avec mercurial. Vous devrez vous intégrer dans la communauté en suivant le modèle de développement : liste de discussion, outil de suivi de tickets, soumission de patchs, documentation... Votre contribution sera incluse dans narval et distribuée avec les prochaines versions.

Outils et techniques

  • Python
  • intelligence artificielle
  • messagerie instantanée (jabber, irc, etc.)
  • RDF, FOAF, OWL, etc.
  • simulation de conversation (bot)

Références

Génie logiciel et Python - Sylvain Thénault - Logilab

Etudiants : Ezechiel Marcellin et Laurent Bertaud

Encadrant : Mourad Bouneffa

Mots-clés

  • Python avancé, UML, analyse et génération de code, qualité

Contexte

Plusieurs outils, écrits entièrement en Python, permettent de garantir la qualité du code et de l'analyser : pylint, pyreverse, gaphor, etc. Ces outils seraient encore plus profitables et efficaces s'ils étaient mieux intégrés entre eux.

Présentation du projet

Après une prise en main des logiciels au cours de laquelle des corrections et des petites améliorations pourront être apportées pour se familiariser avec le code de pylint, pyreverse et gaphor, vous travaillerez plus particulièrement sur l'intégration de ces trois outils.

Le but est de pouvoir profiter de la représentation graphique (UML) de gaphor pour mieux comprendre du code Python existant, de générer du code à partir de cette représentation graphique, de faire apparaître les problèmes de conception signalés par pylint dans les diagrammes, etc.

Méthode

Les développements se feront en Python et seront suivis avec mercurial. Vous devrez vous intégrer dans la communauté en suivant le modèle de développement : liste de discussion, outil de suivi de tickets, soumission de patchs, documentation, tests automatiques... Votre contribution sera incluse dans les logiciels cités et distribuée avec les prochaines versions.

Outils et techniques

  • Python
  • Gtk
  • UML

Références

VLE et GVLE : distribution de plugins de simulation et interface de modélisation - Gauthier Quesnel - INRA

Etudiants : Marc Maurice et David Bambouché et Geoffroy Weisenhorn

Encadrant universitaire : E. Ramat

Mots-clés

  • Application distribuée, XML/RPC, cairo/gtk

Présentation du projet

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Un modèle peut être décomposé en sous-modèles. Ces sous-modèles respectent un framework basé sur le formalisme DEVS (Discrete EVent Specification). Dans la version actuelle de VLE, une API en C++ est disponible pour la construction de modèle de simulation. D'autre part, un outil appelé GVLE permet de spécifier graphiquement les modèles. Cet outil est basé principalement sur la représentation de graphes.

Objectifs

  • développer une version distribuée de VLE où les sous-modèles peuvent être localisés sur des machines différentes ; une première étude a été réalisée en s'appuyant sur XML/RPC, il faudrait peut être explorer une approche plus simple et sans librairie supplémentaire (les sockets + un protocole spécifique) ;
  • améliorer la représentation des graphes DEVS à l'aide de Cairo. Le graphe doit se placer automatiquement ;
  • développer un wrapper C++ pour Fortran de la classe Dynamics (classe de base des modèles DEVS), il existe déjà des wrappers C++ pour Python et Java en utilisant Swig.

Langages et API

  • C++ et XML
  • Cairomm et Gtkmm

Projman - planification automatique de projets - Alexandre Fayolle - Logilab

Etudiants : Benjamin Carpentier et Anthony Maes et Jeremy Orange

Encadrant universitaire : ???

Mots-clés

Python avancé, logiciel de gestion de projet, programmation par contrainte, recherche opérationnelle, intelligence artificielle, graphes

Contexte

Le logiciel Projman, écrit entièrement en Python, est utilisé pour planifier et suivre des projets. Il comporte un module de planification automatique, qui ordonne les tâches et détermine leurs dates de début et de fin, en respectant les contraintes de précédence, les contraintes d'utilisation des ressources, etc.

Présentation du projet

Après une prise en main du logiciel au cours de laquelle des corrections et des petites améliorations pourront être apportées pour se familiariser avec le code, vous travaillerez plus particulièrement sur les fonctionnalités de planification automatique.

Logilab a publié un module de programmation par contrainte. Il existe des modules de programmation linéaire. Il existe des méthodes dans la littérature de recherche opérationnelle. Vous chercherez à mettre en oeuvre la ou les meilleures méthodes permettant de planifier correctement et rapidement des projets.

Méthode

Les développements se feront en Python et seront suivis avec mercurial. Vous devrez vous intégrer dans la communauté en suivant le modèle de développement : liste de discussion, outil de suivi de tickets, soumission de patchs, documentation, tests automatiques... Votre contribution sera incluse dans projman et distribuée avec les prochaines versions.

Outils et techniques

  • Python (éventuellement C si nécessaire)
  • programmation par contrainte, programmation linéaire, algorithmique

Références


SAC pour Secure Access Checker - Sebastien Tricaud - INL

Etudiants : ???

Encadrant universitaire : ???

Mots clés

Intrusion - Sécurité - Protocoles - Réseau - Python

Contexte

INL soutient et développe des logiciels libres de sécurité informatique. Le logiciel phare etant Nufw, un pare-feu authentifiant.

Le besoin de securite dans les entreprise est vital et la négligeance compromet la veritable securite des installations.

Certains services offrent des accès dits sécurisés, tandis que d'autres ne le sont pas. Le point commun entre les deux sont généralement le mot de passe qui reste le plus souvent identique. Cela rend caduque les accès sécurisés.

Objectifs

Répondre au besoin de sécurité des entreprises en s'assurant que les accès qui ne sont pas sécurisés n'aient pas les mêmes types d'authentification que ceux qui le sont.

Cela s'integrera a de la détection d'intrusion et offrira un mécanisme de corrélation pour offrir a d'autres composants une meilleure connaissances des vulnérabilités exploitables d'un réseau.

Le but du projet sera d'arriver à utiliser les outils existants afin de permettre de détecter et prévenir les intrusions sur le réseau à cause de mots de passes pouvant facilement être récupérés.

Langages et technologies

  • Python
  • Linux, Windows, Reseau, Wireshark, Dsniff, Hydra

Références

  • www.inl.fr
  • www.prelude-ids.org

Alternative à reStructuredText - Hervé Cauwelier - Itaapy

Etudiants : ???

Encadrant universitaire : ???

Mots-clés

  • Python, gestion électronique de documents, langages formels, OpenDocument, PDF

Contexte

L'un des logiciels les plus populaires dans le monde Python est *docutils* qui fournit une implémentation du format de document reStructuredText (reST).

ReST fait partie de ces syntaxes pour écrire un document avec mise en forme en n'utilisant que des conventions d'écriture (à l'inverse de XML et LaTeX).

Mais l'implémentation de docutils est problématique sur de nombreux points, qui nous empêchent entre autres de l'exploiter pleinement en chinois, de l'intégrer à un moteur de wiki et de produire des sorties PDF et OpenDocument Text.

Nous avons réalisé une implémentation pour les éléments "inline" : italique, gras, lien, ancre, note de bas de page... ; cette implémentation est basée sur un automate.

Nous souhaitons étendre l'implémentation aux éléments "block" sur la base d'un *parser* qui implémente une grammaire formelle.

Objectifs

A partir des spécifications du langage (documentation et DTD), vous écrirez la grammaire formelle d'un élément avant de l'implémenter.

Dans un souci de simplification, les éléments à implémenter sont limités au sous-ensemble le plus utilisé : titre, paragraphe, liste à puces et numérotée, bloc préformaté.

Une fois l'arbre documentaire généré, on peut produire des sorties HTML et LaTeX. Il faut implémenter la sortie PDF du sous-ensemble ci-dessus. Les meilleurs d'entre vous commenceront la sortie OpenDocument Text.

Ce moteur est à intégrer dans la bibliothèque itools. Il faut donc entrer dans la communauté, communiquer sur la mailing-list, et proposer des patchs avec tests unitaires et documentation.


Langages et technologies

  • Python, itools, docutils, Reportlab, DTD, langages formels.

Références

Améliorer le parser XML de itools (écrit en C) - J. David Ibanez - Itaapy

Etudiants : ???

Encadrant universitaire : ???

Mots-clés

  • XML, HTML, parser, C, Python, itools

Contexte

Le paquet Python ``itools.xml`` inclut un parser XML écrit entièrement dans le langage C. Il est performant et offre un interface de programmation très pratique.

D'autre part, le paquet ``itools.html`` inclut à son tour un parser HTML qui offre un API compatible avec celui de XML, mais qui est implémenté en Python, et qui repose sur le module ``HTMLParser`` de la bibliothèque standard.

La communauté du projet ``itools`` souhaite réécrire le parser HTML en C, en faisant parti commun avec le parser XML. On souhaite aussi améliorer le parser C sur différents aspects.

Objectifs

Voici la liste de tâches à réaliser, en ordre :

  • Aujourd'hui le parser XML utilise quelques structures de données Python en interne (listes, dictionnaires). Le premier objectif est de remplacer ces structures de données par de versions en C ; si possible en utilisant une bibliothèque externe, sinon par une implémentation propre.
  • Intégrer le parser HTML dans le parser XML. Cette tâche demande au préalable un *refactoring* du code, qui sépare nettement les différents niveaux d'analyse.
  • Implémenter les aspects du standard manquants : y compris les déclarations d'éléments, attributs, entités et notations.

L'objectif n'est pas de tout faire, mais que ce qui est fait ait un niveau de finition qui permette son inclusion dans la bibliothèque.

Il faudra couper ces tâches en sous-tâches plus petites, et les implémenter à un niveau de qualité pour inclusion dans la bibliothèque avant de démarrer la sous-tâche suivante.

Langages et technologies

  • Python, C, XML, HTML

Références

M2 ISIDIS

Transformation de l'éditeur STOrM en éditeur collaboratif grâce au framework ECF - Arnaud Lewandowski et Grégory Bourguin

Etudiants : Anthony Clerbout et Thomas Pilon

Sujet

L'outil STOrM (Simple Task-Oriented Modeler) est un outil développé dans le cadre d'un projet de recherche et qui tend à articuler le processus de développement autour de l'utilisation des modèles de tâches. Cet outil vise à favoriser la collaboration entre Ergonomes et Informaticiens, pour développer des applications qui répondent le mieux possible aux attentes et besoins des utilisateurs. L'outil STOrM, basé sur Eclipse, permet déjà la création de modèles de tâches, et la génération automatique de certaines parties de code.

L'objectif du projet et de rendre cet outil collaboratif, pour permettre aux différents acteurs impliqués de travailler simultanément sur le même modèle. Pour y parvenir, il faudra tout d'abord se familiariser avec l'ECF (Eclipse Communication Framework), un framework destiné à faciliter le développement d'outils et d'applications collaboratifs basés sur la plate-forme Eclipse. Ensuite, il s'agira d'étendre STOrM pour exploiter les fonctionnalités de l'ECF et ainsi permettre l'édition collaborative de modèles de tâches.

Références

Développement d'un plugin de benchmarking - Laurent Deruelle

Etudiants : ???

Sujet

L'objectif de ce projet est de développer un système de benchmarking et de tests unitaires sur des sites Web (basés sur les techno J2EE, Python, ...) afin d'évaluer la robustesse et la fiabilité des composants du site Web. Les tests et le benchmarking s'exécuteront depuis votre outil à distance depuis un poste ou en cluster pour éprouver un site web avec une charge importante. Les testeurs doivent être capables de spécifier des chemins critiques pour tester et effectuer leur benchmark. Chaque requête de benchmark ou de tests devra récupérer un resultat (contenu de page, valeur du test, ...) pour ensuite établir des statistiques.

Lorsque le site Web sera hébergé sur une serveur d'applications, un mode spécifique pourra être utilisé pour exécuter les tests dans le conteneur et récupérer l'information directement depuis l'outil.

Il sera nécessaire de se baser sur les outils Open Source JMeter et la famille des JUnit.

Développement d'un plugin d'instrumentation intra-conteneur - Laurent Deruelle

Etudiants : ???

Sujet

L'objectif de ce projet est de développer un système d'instrumentation afin de collecter des métriques de performances directement au sein des conteneurs des serveurs d'applications. Lorsqu'une application J2EE s'exécute en mode normal ou en mode cluster, le plugin doit être capable de récupérer diverses métriques qualitatives relatives à un composant précis puis de les envoyer dans un environnement Eclipse ou sous forme d'un fichier XML.

Il sera nécessaire d'utiliser les outils Jboss, tomcat, jonas et notre Eclipse favori!

Conception, gestion et évaluation de la qualité des applications distribuées - Henri Basson

Etudiants : ???

Sujet

L’assurance la qualité des applications distribuées a pour objectif principal de répondre aux exigences, à la fois, architecturales, fonctionnelles, comportementales et qualitatives, des clients et des utilisateurs . Ces exigences peuvent être exprimées par généralement des critères qualitatifs de haut niveau à satisfaire tels que la l'évolutivité, la réutilisabilité, la fiabilité, la sécurité de fonctionnement, etc. Des modèles existent déjà pour exprimer les liens qui existent entre ces facteurs de haut niveau et des mesures sur le logiciel. Ces mesures sont obtenues de façon automatique et peuvent concerner la structure du logiciel (mesures statiques) ou son comportement (mesures dynamiques).

C’est le cadre de l’aide à la décision de l’assurance qualité des applications distribuées, ce sujet a pour objectif de concevoir et développer une arborescence, permettant à l’expert de l’application distribuée en cours d’instancier ses caractéristiques qualitative. Puis, en réalisant une batterie des métriques sur les composants de fournir un bilan estimé de conformité de chaque caractéristique qualitative par rapport aux seuils tolérés de cette caractéristique.

Utilisation de moteur des règles JBOSS pour l'inférence des connaissances dans le cadre d'analyse d'impact des modifications - Henri Basson

Etudiants : ???

Sujet

L'évolution des applications distribuées de composants constituants, de leurs instances, est un processus difficile à mener pour la pérennité de Systèmes d'Information évolutifs.

Dans ce cadre, l’analyse de l'impact des modifications d’un composant sur le reste de l’application est une activité critique pour une bonne gestion de l’évolution. Pour y parvenir plusieurs approches ont été élaborées. Celle qui semble être la moins lourde à réaliser s’appuie sur une approche intégrée de modélisation des applications distribuées. Elle consiste ensuite à appliquer une approche à base des règles permettant d’inférer les chemins de propagation des modifications et d’aider au contrôle de l’évolution.

Les données représentatives de l’application constituent une base des faits sur laquelle s’appuie un moteur d’inférence constitué des règles JBOSS et dont le finalité est d’aboutir à une analyse précise et exhaustive de l’impact de modifications envisagées.

Analyseur des sites Web multi-langages - Henri Basson

Etudiants : Khalil Maziad et Mohamad Abbas

Sujet

Dans tous les secteurs d’activités, on assiste de nos jours, à une prolifération, sans précédent, de l’utilisation et du développement d’applications web multi-langages. Ces applications sont souvent réalisées par des composants , codés dans différents langages.

La population des composants constituant ces appliactions est souvent importante en nombre, leur gestion nécessite alors une observation détaillée de l’ensemble, du rôle individuel de chaque composant, de sa localisation et de ses dépendances vis-à-vis des autres composants de l’application.

Ce sujet, déjà réalisé en partie, a pour objectif d’aider à la compréhension de ces applications en offrant un large éventail de connaissances sur les composants.

Extension des fonctions d'interface de l'outil STOrM - Grégory Bourguin et Arnaud Lewandowski

Etudiants : Jonathan Strobbe et Julien Ruffin

Sujet

L'outil STOrM (Simple Task-Oriented Modeler) est un outil développé dans le cadre d'un projet de recherche et qui tend à articuler le processus de développement autour de l'utilisation des modèles de tâches. Cet outil vise à favoriser la collaboration entre Ergonomes et Informaticiens, pour développer des applications qui répondent le mieux possible aux attentes et besoins des utilisateurs. L'outil STOrM, basé sur Eclipse, permet déjà la création de modèles de tâches, et la génération automatique de certaines parties de code.

Le but du projet est de parfaire les fonctions d'interfaces du prototype. L'idée est d'étudier les moyens d'interaction présents, de les critiquer et de les étendre. Cet outil étant destiné à diverses plateformes (Mac, Windows, Linux), il faudra aussi être attentif à ce que le prototype présente un comportement cohérent sur l'ensemble de ces supports. Un ordinateur portable de type Macintosh pourra éventuellement être prêté pour les tests.

Développement d'un outil de Forum en tant que plugin Eclipse - Grégory Bourguin et Arnaud Lewandowski

Etudiants : Florence Blocklet et Céline Tulak

Sujet

Le but du projet est de développer les parties cliente et serveur d'un outil distribué de gestion de Forum (tel qu'on en trouve classiquement sur le Web). La particularité est de créer ici une interface cliente adaptée à la Plateforme open source Eclipse, c.a.d. sous la forme d'un plugin. Le serveur sera développé dans la technologie de votre choix (réfléchi). L'objectif final est d'intégrer ce plugin à la plateforme CooLDev, un environnement coopératif de développement de logiciels développé au sein du LIL.

Développement d'un outil de News en tant que plugin Eclipse - Grégory Bourguin et Arnaud Lewandowski

Etudiants : Julien Coquelaere et Jean-Michel Bernard

Sujet

Le but du projet est de développer les parties cliente et serveur d'un outil distribué de gestion de News (tel qu'on en trouve classiquement sur le Web). La particularité est de créer ici une interface cliente adaptée à la Plateforme open source Eclipse, c.a.d. sous la forme d'un plugin. Le serveur sera développé dans la technologie de votre choix (réfléchi). L'objectif final est d'intégrer ce plugin à la plateforme CooLDev, un environnement coopératif de développement de logiciels développé au sein du LIL.

Echange et compactage de structures pointées entre Java et C/C++ pour le calcul haute performance sur GPU NVidia - Denis Robilliard et Virginie Marion

Etudiants : ???

Sujet pour 2 binômes

Sujet

Les dernières cartes graphiques NVidia présentent de hautes performances de calcul en parallèle (jusqu'à 500 GigaFlops pour la 8800GTX) et peuvent être utilisées pour des calculs non graphiques. Dans le cadre d'un programme de calcul haute performance, ce projet consiste à réaliser un transfert de données préparées par un programme Java vers la carte graphique qui se programme dans une variante du langage C (langage CUDA).

Les données à transférer sont des tableaux contenant des objets "complexes", c'est à dire qui contiennent eux même d'autres objets. On sait qu'en Java les objets (de type non primitif) contenus dans un tableau sont allouées en mémoire sur le tas : ils sont donc rangés a priori de manière non contigüe et sont accédés par des pointeurs (cachés). Par conséquent les données du programme Java sont éparpillées et on souhaite les regrouper en un bloc compact pour pouvoir les charger sur la carte graphique, ce qui implique aussi de les transférer à un programme composé de modules en C/C++.


La réalisation du projet pourra s'appuyer sur les technologies suivantes :

  • le transfert se fera en JNI;
  • le compactage pourra se faire :
    • soit en Java par sérialisation avant de transférer à C++. Si on choisit cette solution, une des difficultés à attendre sera d'interpréter correctement en C++ le flux d'objets sérialisés ;
    • soit en transférant les tableaux tels quels vers C++, où l'on maîtrise alors la totalité du processus d'allocation.

Dans l'idéal, les deux solutions pourraient être testées pour retenir celle qui offre la meilleure performance en vitesse d'exécution. Selon le degré d'avancement du projet, une partie optionnelle consisterait à réaliser le décodage des données transférées en utilisant les capacités de calcul parallèle de la carte graphique.

Développement d'un gestionnaire d'enchères pour eBay sous Eclipse - Arnaud Lewandowski

Etudiants : Stevens Ranson Olivier Vanneste et Shu Bin

Sujet

Le but du projet est, dans un premier temps, d'analyser et de se familiariser avec l'API développée et proposée par eBay pour la gestion des enchères, eBay étant un site Web de ventes aux enchères mondialement utilisé.

Dans un deuxième temps, il s'agit de réaliser un gestionnaire d'enchères, sous la forme de plug-in(s) intégrable(s) à la plate-forme Eclipse. Le client développé devra notamment permettre de mettre en vente de nouveaux objets, d'assurer le suivi des objets déjà en vente ainsi que des objets (in)vendus.


Références

Modèle de rendu de peau humaine - C. Renaud

Attention, ce sujet peut être un sujet de recherche

Etudiants : ???

Sujet

Le rendu (la visualisation) réaliste de peau humaine et, plus généralement, de tissus humains, reste un problème ouvert en synthèse d'images, en particulier lorsque ce modèle doit être utilisé dans le cadre d'applications temps réel (jeux vidéo, simulateurs médicaux, ...). L'objectif de ce projet est d'étudier les modèles existants puis d'en effectuer une implémentation logicielle afin de pouvoir les comparer. Le projet se découpera donc en 2 phases :

  • une étude bibliographique qui consistera en l'étude de quelques papiers recherche traitant du sujet ;
  • une implémentation de certaines méthodes soit sur processeur général, soit sur processeur graphique (GPU), à partir des propositions faites dans les papiers.

Ce sujet pourrait se poursuivre par un mémoire de master recherche postant sur la modélisation de tissus humains internes (entre autres : tissus conjonctifs)

Passage au multithreading d'une application de synthèse d'images - C. Renaud

Etudiants : ???

Sujet

Dans le cadre de leurs recherches dans le domaine de la synthèse di'mages, les membres du projet OASIS ont développé une plateforme de simulation d'éclairage nommée IGLOO. Du fait de la banalisation actuelle des processeurs multi-coeurs, il serait souhaitable que cette plateforme puisse utiliser l'ensemble des coeurs présents sur une machine afin d'accélérer les temps de génération d'une image. Le projet proposé consiste donc à étudier le mode de fonctionnement principal de la plateforme, de proposer une découpage en taches parallélisables puis à implémenter la version multithreads de ce découpage.


RobotCup - Jean-Christophe Soulié

Etudiants : Michaël Decorte et Jean Sorrant

Sujet

Le concept de robots jouant au football a été introduit pour la première fois au Japon en 1993, sous le nom de Robot J-League. Le nom de Robocup est apparu en automne 1993 lorsque quelques chercheurs américains se sont intéressés au projet. Après une étude de faisabilité sur deux ans, en août 1995, un avis fut publié afin d'introduire la première conférence internationale ainsi que les premiers matchs de football. Depuis le lancement de cette compétition, SONY a joué un rôle important en supportant activement cette initiative.

En juillet 1997, la première conférence officielle, ainsi que les premiers matchs ont été organisés à Nagoya, au Japon. Cet événement fut un énorme succès. Les organisateurs décidèrent de reconduire cet événement chaque année. Paris, Stockholm, Melbourne et Seattle ont été sélectionnés successivement. Aujourd'hui, 3000 chercheurs venant de plus de 35 pays différents participent à cette compétition. En juin 2002, la 6ème Robocup s'est déroulée à Fukuoka, Japon en collaboration avec Busan, Corée, en même temps que la Coupe du Monde de Football 2002. Le nombre de spectateurs subit une explosion avec plus de 100.000 visiteurs.

Juin 2004 fut un grand mois pour Lisbonne. Outre la coupe d'Europe de football, la capitale portugaise a accueilli la Robocup 2004, qui s’est déroulée du 27 juin au 5 juillet.

Robocup est une initiative internationale de recherche et d'éducation. Son but est d'encourager la recherche en robotique et intelligence artificielle. En fournissant un problème standard, de nombreuses innovations et technologies sont expérimentées.

L'objectif final du projet Robocup est qu'en l'an 2050, soit développée une équipe tout à fait autonome de robots humanoïdes qui pourront vaincre l'équipe humaine championne du monde en titre. Depuis le début, le football a été choisi comme unique domaine dans cet objectif, les compétitions entre robots actuelles se répartissent en 3 groupes : Robocup Soccer, Robocup Junior, et Robocup Rescue.

Robocup Soccer est divisée en plusieurs ligues, l'une d'entre elles est la "ligue des robots quadrupèdes" où figurent les robots AIBO de SONY. Mais l'objectif qui se cache derrière ce défi est des plus sérieux. Les équipes sont dirigées par des universités et des institutions parmi les plus prestigieuses du monde. Celles-ci utilisent AIBO comme un support pratique et évolué de recherche et de développement en robotique.

Le sujet du projet de synthèse est en lui-même assez simple puisqu’il consiste à réaliser une API cliente codée en JAVA. Le but de cette API est de simplifier la gestion des envoies et réceptions des messages vers le serveur pour que l’utilisateur puisse se concentrer sur l’intelligence artificielle à développer. Ainsi cette API servirait notamment aux cours et TPs d’intelligence artificielle donnés en GMI.

L’API doit en outre respecter quelques règles :

  • Être facile d’accès : Cela paraît logique pour une API mais il faut qu’il y ait des méthodes complètes et bien décrites pour que l’utilisateur sache quoi utiliser rapidement.
  • Avoir une conception modulaire : Le projet Robocup est un projet qui évolue au cours du temps avec plus ou moins d’importance. L’API devra donc être modifiée en conséquence. Pour éviter de réécrire trop de classes il faut utiliser différents patterns et une conception modulaire pour qu’il n’y ait que de nouvelles classes à créer et très peu à modifier.
  • Être commenté : Pour que l’API soit facilement comprise, accessible et modifiable le code doit être commenté judicieusement. Une java doc doit également être créée.
  • Être libre de son action : Il faut que l’utilisateur puissent accéder et redéfinir des composants qui l’intéresse. En effet l’API cliente va créer une structure plus ou moins fixe pour recevoir et transmettre les messages. Il ne faut pas que cette structure soit trop « étouffante » et qu’elle laisse des libertés d’héritages.

Langage

  • Java ou C++

Liens

Implémentation d'algorithmes de Text Mining - M. Bouneffa et C. Fonlupt

Etudiants :

  • Degryck Vincent et Oliveri Michael
  • Jean Bottein et David Ledein

Sujet

Le Text Mining est une technique consistant à extraire de la connaissance à partir de textes. Cette technique à l'instar de la fouille de données ou data mining fait partie des processus utilisés généralement dans les domaines du business intelligence, du web sémantique ou de la bio informatique. Le laboratoire d'Informatique du littoral est engagé dans un projet avec l'université du Kent dans le domaine de la bio informatique. Dans ce contexte une des tâches à développer est l'indexation automatique de documents scientifiques. A savoir, élaborer un algorithme de text mining permettant de trouver de façon automatique les documents qui traitent de certaines molécules, etc. Nous avons déjà implanté un tel algorithme en utilisant une technique de programmation génétique. Dans ce projet, nous voulons utiliser des techniques classiques mais implantées utilisant un véritable SGBD et avec une interface accessible par le Web.

  • Dans un premier temps le binôme se familiarise avec les algotithmes de data mining et de text mining.
  • Par la suite, on choisira les outils à utiliser (langage Java et probablement la bibliothèque Weka et le SGBD Oracle)
  • Une implémentation de l'algorithme sera alors réalisé puis complété par une interface web.

Conception d’interfaces conviviales pour l’aide à la compréhension des applications distribuées - H. Basson

Attention, c'est un sujet de recherche

Sujet

La maîtrise du développement et du déploiement des applications distribuées requiert une bonne connaissance et un savoir faire de la manière dont ces applications doivent être déployées à travers le réseau. Les diagrammes de conception semi-graphiques tels que ceux introduits par UML, etc. permettent d'avoir une vision plus ou moins précise sur l'architecture de ces applications. Cependant, la conception et l’implémentation d'interfaces capables de mieux visualiser différentes descriptions (architecturales, structurelles, qualitatives) des logiciels distribuées assistant la gestion de l'évolution est une tâche critique pour la productivité du développement, l’évolution et de l'assurance qualité des logiciels. Dans ce cadre, il s'agit de proposer de faire l’état de l’art puis la conception d’interface conviviale rendant moins difficile les tâches souvent fastidieuses de la maintenance. Ces interfaces doivent, en s’appuyant sur les connaissances descriptives des logiciels, d’aider à leur compréhension à travers différentes représentations d’aide à la décision sur l’évolution des logiciels. Dans un premier temps, le stagiaire effectue d’abord une étude synthétisant l’état de l’art du domaine, ensuite il procède à identifier les représentations majeures, jugées pertinentes, pour une meilleure compréhension du logiciel. Ces représentations seront conçues pour être fournies graduellement, selon des requêtes émises, par l’utilisateur selon ses besoins en connaissance du logiciel pour l’évolution en cours. Par la suite, le travail consistera à décrire via un graphe les différentes possibilités du contenu de l’interface conviviale pour l’aide à la compréhension des applications.

M1 I2L

Editeur de modèles pour GVLE - Gauthier Quesnel et Eric Ramat

Etudiants : Danièle Vanbaelinghem et Clément Reynoudt

Mot clés

IDE, C++ et GTKmm

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Objectifs

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS et sont disponibles en mode distribué par git/cogito. Toute la documentation est disponible sur le site web du VLE.

Un module de l'application, nommé GVLE, a pour rôle de définir de construire les modèles. Pour construire un modèle, on peut être amené à écrire du code en C/C++, Java ou Python. L'objectif de ce projet est donc de poursuivre un travail commencé, il y a deux ans, sur l'intégration d'un éditeur de code dans GVLE. Cet éditeur de code doit permet de modifier le code d'un modèle de manière adaptée, de compiler et d'installer le modèle.

Liens

Couplage VLE et GRASS - Jean-Christophe Soulié et Eric Ramat

Etudiants : Thomas Nouret et Benoit Parmentier

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Présentation

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Un modèle peut être décomposé en sous-modèles. Ces sous-modèles respectent un framework basé sur le formalisme DEVS (Discrete EVent Specification). Dans la version actuelle de VLE, une API en C++ est disponible pour la construction de modèle de simulation.

GRASS est un Système d'Information Géographique libre. Un système d’Information Géographique est un outil informatique permettant de représenter et d’analyser toutes les choses qui existent sur terre ainsi que tous les événements qui s’y produisent. Les SIG offrent toutes les possibilités des bases de données (telles que requêtes et analyses statistiques) et ce, au travers d’une visualisation unique et d’analyse géographique propres aux cartes. Ces capacités spécifiques font du SIG un outil unique, accessible à un public très large et s’adressant à une très grande variété d’applications.

Objectifs

Etudier le couplage entre VLE et GRASS. Pour ce faire plusieurs pistes peuvent exister : directement entre C++ et GRASS via les bibliothèques de GRASS ou en passant par SWIG. Un port SWIG/Phyton est à l'état de prototype et il faudra étudier afin d'en évaluer la faisabilité

Outils

  • C++, Python, SWIG

Développement des paquets Debian, Ubuntu, RedHat et Gentoo de l'envrionnement VLE - G. Quesnel - Inra de Toulouse

Etudiants : Cedric Fabianski et Cyril Lepagnot

Encadrant universitaire : E. Ramat

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Mots-clés

  • paquetage Linux, scripting

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Objectif

L'objectif de ce projet est de proposer des scripts d'automatisation de création des paquets pour différentes distributions de Linux (Debian, Ubuntu, Redhat et Gentoo).

Outils

  • cmake
  • dpkg, dpkg-buildpackage, rpm; ... tous les outils nécessaires à la génération de paquets sous les différents distributions.

Optimisation de code - G. Quesnel - Inra de Toulouse

Etudiants : Grégory Wisniewski

Encadrant universitaire : E. Ramat

Mots-clés

  • C++, test unitaire, optimisation de code

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Objectif

L'objectif de ce projet est de :

  • "traquer" les failles de VLE : non libération de mémoire, algorithme sous optimimal, ... ;
  • étudier la performance et identifier le code responsable du plus gros temps d'excécution ;
  • écrire des tests unitaires pour vérifier la validité du code par rapport aux spécifications fonctionnelles.

Langages et technologies

  • C++, STL et Boost
  • Valgrind
  • gprof et oprofile

Références

Plugin de visualisation d'animation 2D pour le Virtual Laboratory Environment - Raphaël Duboz - Institut de recherche pour le Développement

Etudiants : Aurélien Ansel

Encadrant universitaire : E. Ramat

Mots-clés

  • Visualisation, C++, XML, Cairo

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Contexte

Le Virtual Laboratory Environment (VLE) est une bibliothèque de modélisation et simulation de systèmes dynamiques. Un modèle du déplacement de grands oiseaux migrateurs (les albatros) a été développé en utilisant VLE. Ce modèle génère des données géoréférencées de concentration de proies ainsi que les positions successives des oiseaux au court du temps. Afin de suivre en continu l'évolution de ces oiseaux sur une carte, il est nécessaire de disposer d'un outil de visualisation du déplacement des individus en cours de simulation.

Objectif

L'objectif de ce projet est de développer un plugin de visualisation de champs dynamiques 2D auxquels se superposent de façon synchrone des trajectoires continues d'objets. Ce plugin sera développé pour fonctionner dans le cadre de la plateforme VLE et sera testé à partir des sorties du modèle d'albatros. Une version Web serait la bienvenue.

Langages et technologies

  • C++, Glibmm, Gtkmm, XML, Cairo

Références

Scolaritenet - Eric Ramat - LIL/ULCO

Etudiants : Frédéric Glasset et Hervé Poulain

Mots-clés

  • Application Web, PHP/Ajax, aspect communautaire

Environnement de travail

Linux/Debian, CVS ou git/cogito, vim (pour les puristes) ou emacs.

Contexte

Depuis six ans, nous développons une application de gestion d'une scolarité d'une université. Cette application est développée autour d’un serveur Web et d’une base de données SQL (MySQL, par exemple). Les sources sont disponibles via un serveur CVS (gestion des versions) sur http://adullact.net/projects/scolaritenet/, une version de démonstration est disponible sur http://scolaritenet.free.fr et vos emplois du temps sont réalisés grâce à cet outil.

Les fonctions assurées par la dernière version sont les suivantes :

  • Gestion sécurisée des accès via des sessions
  • Différents modes de travail (administrateur, gestionnaire, professeur, étudiant …)
  • Gestion des utilisateurs, des enseignants, des étudiants, des promotions, des groupes, des enseignements, des calendriers de vacances et jours fériés …
  • Planification des enseignements (différents modes) et gestion des modifications
  • Consultation des emplois du temps via Internet
  • Construction automatique de documents administratifs pour les enseignants
  • ...

Objectifs

  • Installation : créér une procédure d'installation. Certains éléments doivent être paramétrable.
  • Groupe virtuel : je pense qu'il faut gére les groupes virtuels comme des dépendances entre les diplômes ou options ou groupes. La table dépendance indiquerait que si quelque chose est planifié pour un groupe alors les groupes dépendants de ce dernier doivent subir la même chose. Je pense que ça simplifie les choses.
  • Affichage des emplois du temps : les infos affichées dans les créneaux horaires devraient être spécialisée ... à revoir en fonction du type de login.
  • réécriture du script de placement des enseignements dans la semaine à l'aide de Ajax.
  • intégration de feuilles de styles
  • refonte le site de démonstration et créer un site communautaire

Langages et technologies

M1 ISIDIS

Conception et implémentation d’outil C# de reconnaissance de voix - Henri Basson

Etudiants : Dany Trabolsy - Hassan Soueidan

Sujet

Ce projet a pour objectif de concevoir te d’implémenter un outil de reconnaissance de voix en captant le son, l’analyser et le traduire en mots.

Ce sujet traite d’interface homme machine dont les moyens sont en phase avec les récentes évolutions technologiques. Dans ce sujet on examine les algorithmes de reconnaissance de voix, pour procéder à des choix à tester sur des sons prononcés de langage naturel.

Conception et implémentation d’outils de cartographie d’applications Java - Henri Basson

Etudiants : Kherbouche Mohammed Oussama et Mokrane Brahim

Sujet

De nos jours, Les applications logicielles sont de plus en plus croissantes en taille et en complexité, les travaux d’évolution et de maintenance de ces applications absorbent plus de 75% de l’effort global des développeurs des applications (selon toutes les sources reconnues du domaine). Or cette évolution nécessite des descriptions multiples facilitant la compréhension et l’analyse de ces applications. En partant de travaux menés par un binôme de Master I de l’année dernière (elles sont à présent en Master II) , ce projet vise l’enrichissement des descriptions déjà réalisées. En tirant profit de l’analyse effectuée du sujet, le travail de cette année vise la création de multiples nouvelles fonctionnalités pertinentes pour les tâches d’évolution d’application JAVA.

Analyseur des sites Web multi-langages - Henri Basson

Etudiants : ???

Sujet

Dans tous les secteurs d’activités, on assiste de nos jours, à une prolifération, sans précédent, de l’utilisation et du développement d’applications web multi-langages. Ces applications sont souvent réalisées par des composants , codés dans différents langages.

La population des composants constituant ces appliactions est souvent importante en nombre, leur gestion nécessite alors une observation détaillée de l’ensemble, du rôle individuel de chaque composant, de sa localisation et de ses dépendances vis-à-vis des autres composants de l’application.

Ce sujet, déjà réalisé en partie, a pour objectif d’aider à la compréhension de ces applications en offrant un large éventail de connaissances sur les composants

Extension des fonctions d'interface de l'outil STOrM - Grégory Bourguin et Arnaud Lewandowski

Etudiants : ???

Sujet

L'outil STOrM (Simple Task-Oriented Modeler) est un outil développé dans le cadre d'un projet de recherche et qui tend à articuler le processus de développement autour de l'utilisation des modèles de tâches. Cet outil vise à favoriser la collaboration entre Ergonomes et Informaticiens, pour développer des applications qui répondent le mieux possible aux attentes et besoins des utilisateurs. L'outil STOrM, basé sur Eclipse, permet déjà la création de modèles de tâches, et la génération automatique de certaines parties de code.

Le but du projet est de parfaire les fonctions d'interfaces du prototype. L'idée est d'étudier les moyens d'interaction présents, de les critiquer et de les étendre. Cet outil étant destiné à diverses plateformes (Mac, Windows, Linux), il faudra aussi être attentif à ce que le prototype présente un comportement cohérent sur l'ensemble de ces supports. Un ordinateur portable de type Macintosh pourra éventuellement être prêté pour les tests.

Développement d'un plugin de benchmarking - Laurent Deruelle

Etudiants : Rocchia Jérémy et Foulon Thibaut et Deboom Christopher

Sujet

L'objectif de ce projet est de développer un système de benchmarking et de tests unitaires sur des sites Web (basés sur les techno J2EE, Python, ...) afin d'évaluer la robustesse et la fiabilité des composants du site Web. Les tests et le benchmarking s'exécuteront depuis votre outil à distance depuis un poste ou en cluster pour éprouver un site web avec une charge importante. Les testeurs doivent être capables de spécifier des chemins critiques pour tester et effectuer leur benchmark. Chaque requête de benchmark ou de tests devra récupérer un resultat (contenu de page, valeur du test, ...) pour ensuite établir des statistiques.

Lorsque le site Web sera hébergé sur une serveur d'applications, un mode spécifique pourra être utilisé pour exécuter les tests dans le conteneur et récupérer l'information directement depuis l'outil.

Il sera nécessaire de se baser sur les outils Open Source JMeter et la famille des JUnit.

Amélioration d'un algorithme d'apprentissage automatique : le crossover contextuel en programmation génétique - Cyril Fonlupt et Denis Robilliard

Etudiants : Cadart et Marina Herbaut

Sujet

La "Programmation Génétique" (PG) est une technique d'apprentissage automatique où l'on simule le phénomène naturel d'évolution des espèces, les espèces étant ici des solutions plus ou moins bonnes au problème que l'on doit résoudre. Le projet consiste à implanter une variante de l'algorithme classique de PG : le crossover contextuel. Cet algorithme classique est fourni par une librairie écrite en Java : il s'agit de comprendre avec l'aide des encadrants comment s'organise le noyau principal de cette librairie pour y insérer la variante demandée. La suite du projet consistera à des mesures de performance (benchmarks) de cette variante sur les problèmes-tests fournis dans la librairie.

Amélioration d'un algorithme d'apprentissage automatique : le code impératif linéaire en programmation génétique - Cyril Fonlupt et Denis Robilliard

Etudiant : Thomas Vanlerberghe

Sujet

La "Programmation Génétique" (PG) est une technique d'apprentissage automatique où l'on simule le phénomène naturel d'évolution des espèces, les espèces étant ici des solutions plus ou moins bonnes au problème que l'on doit résoudre. Le projet consiste à implanter une variante de l'algorithme classique de PG : l'utilisation de code impératif linéaire, à la place des traditionnels arbres LISP. Cet algorithme classique est fourni par une librairie écrite en Java : il s'agit de comprendre avec l'aide des encadrants comment s'organise le noyau principal de cette librairie pour y insérer la variante demandée. La suite du projet consistera à des mesures de performance (benchmarks) de cette variante sur les problèmes-tests fournis dans la librairie.

Transformation de l'éditeur STOrM en éditeur collaboratif grâce au framework ECF - Arnaud Lewandowski et Grégory Bourguin

Etudiants : ???

Sujet

L'outil STOrM (Simple Task-Oriented Modeler) est un outil développé dans le cadre d'un projet de recherche et qui tend à articuler le processus de développement autour de l'utilisation des modèles de tâches. Cet outil vise à favoriser la collaboration entre Ergonomes et Informaticiens, pour développer des applications qui répondent le mieux possible aux attentes et besoins des utilisateurs. L'outil STOrM, basé sur Eclipse, permet déjà la création de modèles de tâches, et la génération automatique de certaines parties de code.

L'objectif du projet et de rendre cet outil collaboratif, pour permettre aux différents acteurs impliqués de travailler simultanément sur le même modèle. Pour y parvenir, il faudra tout d'abord se familiariser avec l'ECF (Eclipse Communication Framework), un framework destiné à faciliter le développement d'outils et d'applications collaboratifs basés sur la plate-forme Eclipse. Ensuite, il s'agira d'étendre STOrM pour exploiter les fonctionnalités de l'ECF et ainsi permettre l'édition collaborative de modèles de tâches.

Références

Étude du framework ECF et réalisation d'un Pong à 2 ou 4 joueurs - Arnaud Lewandowski

Etudiants : Luca ANTONINI et Clément VISSEQ

Sujet

ECF (Eclipse Communication Framework) est un framework destiné à faciliter le développement d'outils et d'applications collaboratifs basés sur la plate-forme Eclipse. L'objectif du projet consiste, dans un premier temps, à se familiariser avec ce framework, ainsi que sur celui d'Eclipse. Dans un deuxième temps, il s'agit de développer un jeu de Pong (à 2 ou 4 joueurs) basé sur le framework ECF et intégrable à Eclipse sous forme de plug-in.

Références

RoboWar - Jean-Christophe Soulié

Etudiants : Céline Dupont

Sujet

Robo War est une arène où entre deux et six robots s'affrontent. L'arène est une grille carrée numérotés de 0 à 300 et les robots sont pilotés par des codes de type assembleur qui sont à développer; le but étant de créer le code le plus compact et efficace que possible, car tous les robots exécutent le même nombre d'instructions par seconde (une instruction chacun par chronon, l'unité de temps).

Chacun des robots possède une jauge d'énergie qui est utilisé pour toutes les actions: changement de direction, tire... Elle se recharge de 2 unités par tour pour un maximum de 100 ; elle peut-être négative. Mais aussi une jauge de dommage, initialisé à 100, qui indique le nombre de dégâts qu’il peut encore subir. Elle ne peut pas être rechargé mais il existe un bouclier qui absorbe une certaine quantité de dégâts, selon l’énergie dépensé lors de sa création. Celui-ci se décharge progressivement de 0,5 unités par chronon.

Chaque bot peut aussi accéder à des informations de son environnement, donné par le système par l’intermédiaire de registres en lecture. Il existe aussi des registres en écriture ou lecture/écriture, car c’est aussi par là que le bot interagi avec son environnement.

Après l'initialisation (déclaration de la vitesse initiale, préparation des interruptions... ), chaque bot exécute ses instructions parallèlement aux autres robots jusqu'à la fin du round, ou jusqu'à ce qu'il soit éliminé.

  • Un robot subit des dégâts s'il se fait touché par un projectile, s'il touche un mur ou s'il rentre en collision avec un autre robot.
  • Si un robot a sa jauge de dégâts qui tombe à zéro, le robot est éliminé.
  • Si un robot a sa jauge d'énergie qui tombe à zéro, il ne peut plus effectuer d'actions, ni bouger jusqu'à ce que sa jauge se recharge au dessus de 0.
  • Certaines actions (changer de direction, tirer un projectile...) ont un coup associé en énergie, et d'autres non (discuter sur le channe d'équipe, viser, faire des calculs...).
  • Toutes les actions prennent au moins un chronon (sauf jouer un son, changer d'icône...).
  • Un robot marque 1 point par frag et 1 point s'il survie.
  • Il est possible de donner une limite en chronons aux rounds.
  • Dans le mode tournoi, un robot rencontre tous ses adversaires une fois, et le classement à lieu sur la somme des scores obtenus.

Le RoboTalk utilise des opérations élémentaires, des instructions de registre et de pile, des interruptions qui sont levées dans leur ordre d'apparition, ainsi que des registres spécifiques permettant l’échange d’informations entre le système et le bot. Il est basé sur la notation Polonaise inversée.

  • opérations arithmétiques classiques : +, -, *, /, cos, sin, mod...
  • instructions de branchement et de test : if, ife, jump, call…
  • instructions de registre et de pile : store, duplicate, drop...
  • interruptions : setint, setparam, inton…
  • registres : aim (angle de visée, en lecture/écriture), speedx (vitesse sur l’axe des X, en lecture/écriture), fire (puissance du tire, en écriture), collision (détection de collision, en lecture)…

Une première version a déjà été réalisée par des étudiants de m1, l'année dernière. Le but de ce projet est, dans un premier temps, de réaliser une analyse critique de la première version et, dans un deuxième temps, en fonction des conclusions, soit reprendre le projet, soit ajouter un certain nombre de fonctionnalités.

Langage

  • Java ou C++

L3 Informatique

Module de Forum Flash/PHP/MySql - Grégory Bourguin

Etudiants : Jordy Dusautoir et Freddy Duvent

Sujet

Il s’agit d’intégrer les 3 technologies pour créer un client de forum en Flash, connecté à un serveur PHP/MySql pour le partage et la persistance des messages.

Import/export des modèles STOrM vers CTTE - Arnaud Lewandowski

Etudiants : Vincent PRIEUR et Vincent SAJOT

Sujet

Nous développons et utilisons dans le cadre de projets de recherche, un outil basé sur Eclipse, STOrM, pour réaliser des modèles de tâches. Cet outil sauvegarde et charge les modèles dans un format XML que nous avons défini selon nos besoins.

Le but est de faciliter l'interopérabilité entre cet outil, et un autre outil de modélisation plus ancien mais toujours utilisé dans la communauté de chercheurs, à savoir CTTE. Mais cet outil utilise un autre formalisme de notation, et sauvegarde les modèles en XML également, mais suivant son formalisme.

Le but est donc d'écrire une sorte de "traducteur" qui permettra d'exporter des modèles STOrM vers CTTE, et inversement, d'importer dans STOrM des modèles créés avec CTTE.

Il s'agit donc de développement en Java, et de manipulation/ transformation XML.

Développement d'un gestionnaire d'enchères pour eBay en Java/Swing - Arnaud Lewandowski

Etudiants : Max Devulder et Nicolas Deroo

Sujet

Le but du projet est, dans un premier temps, d'analyser et de se familiariser avec l'API développée et proposée par eBay pour la gestion des enchères, eBay étant un site Web de ventes aux enchères mondialement utilisé.

Dans un deuxième temps, il s'agit de réaliser un gestionnaire d'enchères en Java/Swing qui soit donc multi plate-formes. Le client développé devra notamment permettre de mettre en vente de nouveaux objets, d'assurer le suivi des objets déjà en vente ainsi que des objets (in)vendus.

Liens

Développement de sites Web - Henri Basson

Etudiants : Vandenbussche Lise, Pruvost Aurore et Finot Gaétane.

Sujet

  • covoiturage universitaire donc limités aux étudiants, enseignants, ou personnel des toutes les académies ;

Un gestionnaire de références bibliographiques en PHP - Grégory Bourguin

Etudiants : Duwiquet gaetan - Cyril Marcq - Aurélie Pruvost - Daniel Salomé

Sujet

Une bonne partie du travail des chercheurs étant de rédiger des articles s'appuyant sur les travaux existants dans leur domaine, les citations sous forme de référence bibliographiques ont une grande importance dans toute publication. Les mêmes références peuvent être citées dans plusieurs papiers et elles doivent souvent être mises en forme dans des styles qui diffèrent d'un éditeur à l'autre.

Le sujet de ce projet est de créer un gestionnaire de références, sous forme de BD MySQL avec une interface de type formulaire PHP. L'outil pourra entre autres permettre de stocker/éditer/supprimer des références, de retrouver des références sur divers critères et de mettre en forme le résultat d'une recherche en fonction d'un style particulier (et éventuellement d'un format de fichier).

Un outil Visual Basic Application de Mise en forme de références bibliographiques - Grégory Bourguin

Etudiants : Florent Delaliaux et Grégory Dubois Et Zunquin Jérôme

Sujet

Une bonne partie du travail des chercheurs étant de rédiger des articles s'appuyant sur les travaux existants dans leur domaine, les citations sous forme de références bibliographiques ont une grande importance dans toute publication. Si les mêmes références peuvent être citées dans plusieurs papiers, elles doivent souvent être mises en forme dans des styles qui diffèrent d'un éditeur à l'autre.

Le sujet de ce projet est donc de créer un outil en VBA qui permettra, à partir d'une liste de références non mises en forme sous Excel, de générer un format particulier à destination de Word.

Génération automatique des fiches de service Enseignant à partir de fichiers iCalendar - Arnaud Lewandowski

Etudiants : Aurélien Werner et Guillaume Ansel

Sujet

À l'issue de chaque semestre, les enseignants sont tenus de remplir des "fiches de service" récapitulant les heures de cours, de TD, et de TP qu'ils ont effectuées. Le format de ces fiches est imposé par l'administration du fait du logiciel de centralisation utilisé. Néanmoins, ce "remplissage" est très fastidieux. L'objectif du projet est d'automatiser ce "remplissage".

Le format "iCalendar" ou "iCal" est un format standard pour les échanges de données de calendrier. Ce format est implémenté/supporté par de nombreux logiciels, comme iCal d'Apple, Lotus Notes, KOrganizer, Mozilla Calendar, Ximian Evolution, Windows Calendar et via une extension, Microsoft Outlook.

Pour peu que les enseignants utilisent un de ces logiciels pour "noter" et se rappeler leurs différentes interventions, toutes les informations nécessaires au "remplissage" des fiches (promotion concernée, type de cours, matière, date, etc.) se trouvent dans le fichier iCal géré par ledit logiciel.

Le travail consiste donc à créer un script ou programme qui permettra, à partir d'un tel fichier iCal, de générer automatiquement les fiches de service correctement remplies.

Références

Apprentissage automatique et calcul haute performance sur GPU NVidia (1) - Denis Robilliard et Virginie Marion

Etudiants : Thorez et Biscaras

Sujet

Les dernières cartes graphiques NVidia présentent de hautes performances de calcul en parallèle (jusqu'à 330 GigaFlops pour la 8800GTX) et peuvent être utilisées pour des calculs non graphiques comme l'apprentissage automatique. Ces cartes se programment dans une variante du langage C/C++ qui s'appelle CUDA.

L'objectif du projet est de programmer un algorithme d'apprentissage automatique basé sur la programmation génétique. Le projet s'articulera selon les phases suivantes :

  • programmation d'un algorithme génétique d'après une documentation en français;
  • portage de cet algorithme sur le processeur graphique parallèle (GPU);
  • extension de l'algorithme pour gérer des suites simples d'instructions exécutables d'après des exemples de code et une documentation en anglais : on obtient alors un algorithme simple de programmation génétique;
  • mesures de performance.

Apprentissage automatique et calcul haute performance sur GPU NVidia (2) - Denis Robilliard et Virginie Marion

Etudiants : Smith et Gauthier

Sujet

Les dernières cartes graphiques NVidia présentent de hautes performances de calcul en parallèle (jusqu'à 330 GigaFlops pour la 8800GTX) et peuvent être utilisées pour des calculs non graphiques comme l'apprentissage automatique. Ces cartes se programment dans une variante du langage C/C++ qui s'appelle CUDA.

L'objectif du projet est de programmer une partie d'un algorithme d'apprentissage automatique basé sur la programmation génétique. Le projet s'articulera selon les phases suivantes, qui devront prendre en compte le parallélisme de calcul :

  • codage d'une population d'arbres LISP en CUDA en co-opération avec le binôme Magnier - Vasseur ;
  • algorithme de crossover entre ces arbres respectant la sémantique usuelle;
  • traduction des arbres en programmes utilisant la notation postfixée;
  • intégration dans la plate-forme développée par le binôme Thorez - Biscaras
  • mesures de performance.

Apprentissage automatique et calcul haute performance sur GPU NVidia (3) - Denis Robilliard et Virginie Marion

Etudiants : Magnier et Vasseur

Sujet

Les dernières cartes graphiques NVidia présentent de hautes performances de calcul en parallèle (jusqu'à 330 GigaFlops pour la 8800GTX) et peuvent être utilisées pour des calculs non graphiques comme l'apprentissage automatique. Ces cartes se programment dans une variante du langage C/C++ qui s'appelle CUDA.

L'objectif du projet est de programmer une partie d'un algorithme d'apprentissage automatique basé sur la programmation génétique. Le projet s'articulera selon les phases suivantes, qui devront prendre en compte le parallélisme de calcul :

  • codage d'une population d'arbres LISP en CUDA en co-opération avec le binôme Smith - Gauthier;
  • algorithme de mutation entre ces arbres respectant la sémantique usuelle;
  • interprétation des arbres en conservant la notation préfixée;
  • intégration dans la plate-forme développée par le binôme Thorez - Biscaras
  • mesures de performance.

ScolariteNet : développement de fonctionnalités complémentaires - Eric Ramat

Etudiants : Rémi Tylski et Pierre Lambert et Nicolas Ghier et Matthieu Maillard

Mots-clés

  • Technologies Web, bases de données, interface Web dynamique

Contexte

Depuis six ans, nous développons une application de gestion d'une scolarité d'une université. Cette application est développée autour d’un serveur Web et d’une base de données SQL (MySQL, par exemple). Les sources sont disponibles via un serveur CVS (gestion des versions) sur http://adullact.net/projects/scolaritenet/, une version de démonstration est disponible sur http://scolaritenet.free.fr et vos emplois du temps sont réalisés grâce à cet outil.

Les fonctions assurées par la dernière version sont les suivantes :

  • Gestion sécurisée des accès via des sessions
  • Différents modes de travail (administrateur, gestionnaire, professeur, étudiant …)
  • Gestion des utilisateurs, des enseignants, des étudiants, des promotions, des groupes, des enseignements, des calendriers de vacances et jours fériés …
  • Planification des enseignements (différents modes) et gestion des modifications
  • Consultation des emplois du temps via Internet
  • Construction automatique de documents administratifs pour les enseignants

Objectifs

  • Installation : créér une procédure d'installation. Certains éléments doivent être paramétrable.
  • Directeur de département :
    • valider les scripts actuels
  • Salle :
    • permettre aux enseignants d'indiquer quel type de salle ou quelles salles il aimerait ou qu'ils doivent avoir pour leur enseignement
    • valider l'affichage des emplois du temps par salle
    • planifier autre chose qu'un cours dans une salle
  • Enseignant :
    • une page "Mon profil" avec possibilité de modifier tout sauf nom et prénom
    • la validation de la fin de son service
    • la déclaration (ou la validation) de l'encadrement de projets et stages
    • exportation vers iCal
  • Affichage des emplois du temps : les infos affichées dans les créneaux horaires devraient être spécialisée ... à revoir en fonction du type de login.
  • Documents PDF : Génération des certains documents en pdf : guide des études, trombinoscopes, fiche de service, ...

Langages

  • HTML, JavaScript, PHP et SQL

EOV : développement d'un plugin de visualisation 3D - Eric Ramat

Etudiants : Dumont Sébastien et France Matthieu

Mots-clés

  • développement graphique 3D

Environnement de travail

Linux/Debian, git/cogito pour le versionning de code, vim (pour les puristes) ou emacs.

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuelle qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr). Afin de visualiser les sorties des simulations, un deuxième projet est né, eov (Eyes Of VLE). Ce projet propose déjà des plugins de visualiser (courbes, automates cellulaires, ...).

Objectifs

Le but de ce projet est :

  • d'étudier deux bibliothèques : Cairo et OpenGL ;
  • développer un plugin de visualisation de trajectoires 3D de particules (des poissons, par exemple) avec possibilité :
    • de zoom
    • définition de couleurs
    • de forme de tracé de trajectoires

Outils

  • Cairo : une API 2D
  • OpenGL : une API 3D
  • C/C++
  • GTKmm

AVLE : intégration d'outils statistiques - Eric Ramat

Etudiants : ???

Mots-clés

  • statistiques, script R

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuelle qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Objectifs

Le moteur de simulation de VLE gère une quantité très importante de données et nous avons besoin d'analyser, de représenter, ... ces données. Pour un applicatif complémentaire de VLE a été développé : avle. Un première version a été développé en Python/GTK et a été migré l'année dernière en C++/GTK. Cet outil est principalement basé sur un logiciel open-source de traitement de données nommé R.

Le projet a pour objectif  :

  • étudier les méthodes statistiques tels que ajustements, ACP, ...
  • augmenter les modes de représentation et les méthodes statistiques
    • écrire des scripts R
    • intégrer ces représentations dans avle

Langages

  • R et C/C++

Mise en place d'un outil de gestion et de suivi financier de projets de recherche - Jean-Christophe Soulié

Etudiants : ???

Sujet