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.