1. Titre

Construction d'une plate-forme pour les algorithmes de manipulation
de treillis de Galois.

2. Responsable

Petko Valtchev

3. Contexte

La théorie des treillis de Galois ont largement démontré son potentiel comme
cadre formel pour la résolution d'un grand nombre de problèmes
pratiques ayant trait à la constitution d'abstractions au-dessus
d'un ensemble d'entités concrètes.
Par exemple, les treillis ont été appliqués avec succès à
la résolution d'un problème classique du génie logiciel OO,
qui est la réorganisation (refactoring) d'une
hiérarchie de classes existante. Celle-ci vise les définition d'un ensemble
hiérarchisé de classes abstraites maximalement factorisées
à partir d'une collection de classes instanciables.

Malgré l'intérêt grandissant que portent aux treillis de Galois
les communautés scientifique et industrielle, le nombre d'outils
dédiés à la manipulation de treillis, c'est-à-dire à la construction,
la visualisation, le maintient par rapport à l'évolution des données initiales,
etc., est négligeable. Cela est à expliquer par la complexité structurelle
du treillis qui résulte même d'un jeux de données de taille modeste,
qui pose des défis réels pour les mécanismes de stockage et l'exploration.

Pendant les dernières années, plusieurs algorithmes de construction
et de maintient de treillis ont été développés sous ma direction.
Même si une certain cohésion architecturale a été imposé, ceux-ci restent
néanmoins des systèmes logiciels indépendants, ce qui empêche les
études comparatives, ainsi que leur application conjointe.

L'objectif de ce stage serait de concevoir et développer une application
unique qui regroupe l'ensemble des algorithmes développés
(disponibles sous forme d'applications Java).

4. Travail demandé

Les étudiants seront mis dans le contexte d'un projet réel
de développement logiciel
avec la conduite de toutes les phases du cycle de vie
(acquisition des besoins, analyse, conception, codage, tests, etc.)

Les tâches à accomplir incluent le
rassemblement et la complétion des algorithmes déjà produits (code en Java).
Le code rassemblé sera soumis à une homogénéisation dans les rares cas où
cela avérerait nécessaire. Des aspects d'optimisation du code récupéré
(du point de vue de l'implémentation) pourraient être examinés aussi.
L'accent sera mis sur la conception d'une architecture commune capable
de supporter l'exécution de chacun des algorithmes, ainsi que le
développement du code d'interface entre les composants de cette
architecture (qui seront donnés).
Une interface graphique ergonomique qui devrait permettre la manipulation des
algorithmes, des données et des résultats (à l'exception de la visualisation qui
fera l'objet d'un autre projet) et une documentation détaillée
de l'ensemble du code produit seront également demandées.

5. Environnement de travail

Modélisation à l'aide du CASE tool Rose de Rational.
Programmation en Java (J2EE), utilisation des APIs Swings et, possiblement, JDBC.
Utilisation d'un environnement de programmation intégré, JBuilder.
Je fournirai les documentations nécessaires sur les APIs et Rose.
Équipe de 2-3 étudiants.

6. Contact

Adressez-vous à Petko Valtchev <valtchev@iro.umontreal.ca> pour plus d'information.