Génie logiciel
Nos professeurs sont actifs dans plusieurs volets du génie logiciel, en allant de la définition-même de la discipline, jusqu’au développement d’outils de programmation. Nous passons en revue les différents thèmes :
- Définition de la discipline (projet SWEBOK, http://www.swebok.org) : Bien que le terme « génie logiciel » soit en usage depuis la fin des années 60, le « génie logiciel », en tant que discipline de génie est encore en émergence. Qui dit « génie » dit certaines attentes, y compris une science mûre, un processus de résolution de problèmes efficace, reproductible, et mesurable, et des outils de « production » prédictibles et performants. La pratique de développement de logiciels a certainement besoin d’une telle discipline, et on se doit de définir un ensemble de compétences que doivent détenir des « ingénieurs du logiciel ». La IEEE Computer Society (http://www.ieee.org) et l’ACM (Association for Computing Machinery, http://www.acm.org) ont confié à Alain Abran, Robert Dupuis (alors deux professeurs du département), Pierre Bourque (alors directeur adjoint du LRGL), et James Moore (Mitre Corp., USA), l’identification et la définition du corpus de connaissances (body of knowledge) nécessaire à l’acquisition de ces compétences. Les professeurs Abran et Dupuis ont mis en place un processus de consultation sans précédent, faisant intervenir des centaines d’experts en génie logiciel à travers le monde. En plus de l’effort d’édition, plusieurs professeurs ont contribué à la définition de « domaines de connaissances », dont Philippe Gabrini, Louis Martin, et Guy Tremblay. L’essentiel de ces activités a été mené dans le cadre du laboratoire LRGL (http://www.lrgl.uqam.ca).
- Gestion du logiciel : Le développement de logiciels, en tant qu’activité de production, doit être géré et mesuré. Or, c’est une activité complexe, assez mal comprise, et onéreuse. Beaucoup d’encre continue de couler sur les modèles, outils, et pratiques de gestion de projets de développement et de maintenance de logiciels. Nos chercheurs (Hadj Benyahia, Ghislain Lévesque) sont actifs sont les domaines de, 1) gestion de projets, et 2) estimation de la taille fonctionnelle des logiciels dès les premières phases du développement, et 3) étude de l’impact économique des technologies de l’information sur la productivité.
- Analyse et conception de logiciels : L’analyse et la conception de logiciels demeurent un art long à maîtriser et difficile à transmettre. Certaines de ces difficultés sont dues à la difficulté d’identifier les exigences d’un système logiciel, d’autres sont dues à la complexité de la transformation des exigences en spécifications, voire même en des réalisations informatiques concrètes. Ghislain Lévesque s’intéresse à la problématique de l’analyse orientée objets et du développement et de la gestion des exigences du logiciel. Guy Tremblay s’intéresse à la problématique de la spécification formelle et de la vérification des logiciels. Aziz Salah s’intéresse à la synthèse de spécifications comportementales de systèmes à partir de scénarios d’exécution. Tho-Hau Nguyen s’intéresse à l’analyse orientée objet de systèmes d’information. Robert Godin s’intéresse à l’application de méthodes de formation de concepts pour la synthèse de hiérarchies de classes. Hafedh Mili s’intéresse à la programmation par vues, et plus généralement, à la modélisation et conception par rôles fonctionnels d’applications distribuées orientées-objet. Louis Martin s’intéresse à la conception d’applications clients serveur en Java. Hafedh Mili s’intéresse au développement d’applications par instantiation de patrons génériques dans le contexte de l’architecture Model Driven Architecture du OMG.
- Métrologie de logiciels et maintenance : Selon Pasteur, « une science a l’age de ses instruments de mesure ». À défaut de garantir que les logiciels produits seront de bonne qualité, par construction, nous pouvons mesurer le résultat a-postériori pour évaluer sa qualité, et si besoin est, de le corriger. Une difficulté majeure pour le cas du logiciel est de déterminer quoi mesurer : le lien entre qualité (et autres propriétés désirables) et ce qui peut être mesuré lui-même fait l’objet de recherches intenses. Nos chercheurs (Mounir Boukadoum, Robert Godin, et Hakim Lounis) oeuvrent dans ce domaine prometteur, avec des applications à la prédiction de qualité et à la maintenance de logiciels.
- Environnements de développement : les environnements de développement jouent un rôle important dans le développement de logiciels. Bien que la plupart des « outils CASE » existants offrent peu de fonctionnalités au-delà du dessin, nous ne devons pas abandonner l’ambition—voire même rêve—que ces environnements jouent un rôle actif dans les phases créatives du développement. Ceci ne veut pas forcément dire de la programmation automatique ou intelligente, mais tout en laissant l’initiative (et l’intelligence) au développeur, ces outils peuvent fournir des fonctionnalités précieuses, dont le calcul de métriques, la configuration assistée d’application OO distribuées, le dépistage de composants réutilisables, l’aide à la conception et à la maintenance (e.g. refactorisation), etc. Les professeurs Gagnon, Godin, Lounis, Mili, et Salah, oeuvrent dans différentes problématiques reliées aux outils.