Projets

Les activités de recherche et de développement de l'équipe Analyse de systèmes distribués (ASYD) du CRIM couvrent les cinq thèmes suivants :


Analyse des systèmes distribués basée sur des patrons  Retour vers le haut

L'équipe a développé un ensemble d'approches basées sur la technologie des patrons (largement adoptée dans le monde du développement logiciel), afin de réduire le coût et la complexité de ces activités dans les systèmes distribués. De plus, elle a élaboré des bibliothèques de patrons de propriétés et d'erreurs prédéfinies applicables à plusieurs domaines :

Analyse automatisée des traces des systèmes distribués

L'équipe développe une approche et un ensemble d'outils pour l'analyse des systèmes distribués à partir de leurs traces d'exécution (logfiles). Une trace collectée est utilisée pour produire un modèle formel, qui est ensuite vérifié à l'aide de propriétés définies par les utilisateurs. Ces propriétés spécifient les exigences fonctionnelles et non fonctionnelles de l'application analysée.

La collaboration sur ce sujet avec la firme Siemens AG (qui se poursuit depuis 2001) a résulté principalement en un jeu d'outils. Ceux-ci incluent plusieurs modules de modélisation et d'analyse capables de traiter des traces provenant de différents types de systèmes (tels que les réseaux de télécommunications GSM et UMTS et les systèmes de contrôle de trafic des trains), une bibliothèque de spécification à base de patrons de propriétés (80 patrons largement utilisés dans le domaine), ainsi que l'interface utilisateur graphique.

Vérification des applications Web

Le but de ce projet de recherche interne est d'automatiser la vérification de propriétés dans les applications Web. Un prototype de vérification a été implémenté, dans lequel le butinage d'une application Web permet de représenter celle-ci en un modèle, exprimé sous forme d'automates, et vérifiée par le vérificateur formel (model-checker) Spin à l'aide de propriétés définies par l'utilisateur. Le prototype est équipé d'une interface graphique avancée qui facilite la spécification des propriétés.

Analyse statique des applications multithread Java

Ce projet, réalisé en collaboration avec SAP, vise à découvrir les sources de bogues dans des applications multithread Java à partir du seul code source de ces applications. L'équipe a documenté 38 patrons de bogues (aussi appelés antipatrons) typiques pouvant être présents dans le code source d'une application. Elle a aussi proposé une classification de ces antipatrons et des modules de détection pour identifier plusieurs d'entre eux.

Analyse dynamique des applications multithread Java

Il est difficile de détecter la totalité des bogues découlant de l'utilisation de plusieurs threads au sein d'une même application à l'aide de la seule analyse statique. Dans ce projet interne, l'équipe a conçu une technique d'analyse dynamique, basée sur le développement d'observateurs représentés sous forme d'automates et sur l'utilisation de méthodes de vérification formelle (model-checking).


Méthodologies de test à base de modèles  Retour vers le haut

Les méthodologies à base de modèles permettent l'automatisation, l'amélioration et la réduction du coût des activités de test. Les modèles utilisés sont en général des représentations partielles et abstraites des fonctionnalités, comportements, architectures et données du système testé. L'équipe utilise également des modèles de tests et de fautes afin d'améliorer la qualité de l'activité de test. Cette recherche inclut les axes suivants :

Adaptation automatique de tests pour des applications d’affaires changeantes

Les logiciels sont continuellement modifiés au cours de leur cycle de vie. C’est particulièrement le cas des applications de gestion d'affaires, en constante évolution, afin de répondre aux exigences variables et aux changements structurels des entités commerciales auxquelles elles se destinent. Les phases du cycle de développement logiciel les plus touchées par de telles modifications sont le test et la validation. Il s'agit là de deux tâches complexes, particulièrement dans le cas des applications larges et complexes.

En collaboration avec SAP, l'équipe s’est penchée sur le problème de l'amélioration des processus de test, en prenant en considération les changements subis par une application. Elle développe une approche à base de modèles et un outil prototype pour la détection des changements et l'adaptation automatisée des tests aux applications changeantes.

Vérification à base de modèles des tests des systèmes distribués

La qualité des tests est cruciale pour les systèmes complexes que sont les systèmes distribués. Pourtant, les tests dédiés à ces systèmes sont dans la plupart des cas développés manuellement. Ils peuvent donc contenir fautes et incohérences, spécialement en l'absence de toute spécification formelle du système testé. En collaboration avec Siemens AG, les chercheurs élaborent des méthodes à base de modèles et développent des outils prototypes pour l'automatisation des activités de vérification des tests.

Génération de tests pour les systèmes distribués

En collaboration avec France Télécom R&D, l'équipe a étudié la génération automatique de tests à partir des spécifications des systèmes distribués en utilisant des techniques de vérification formelle (model-checking).

L'approche proposée de génération de tests est basée sur la modélisation d'un système distribué par un système de machines à états finis étendues communicantes (CEFSM). Ce modèle général combine à la fois le flux de commande et les données. Il permet de traiter la couverture du modèle d'un système en termes de spécification et de fautes.

Test à base de modèles

L'objectif principal de ce projet de recherche financé par le CRSNG est de contribuer au développement de nouvelles méthodes et technologies à base de modèles pour tester les systèmes distribués. Ce faisant, il faut également tenir compte des caractéristiques fondamentales comme le parallélisme, le non-déterminisme et les communications asynchrones.


Sécurité des logiciels  Retour vers le haut

L'équipe a conçu des systèmes destinés à assurer la sécurité des réseaux informatiques ainsi que de leurs utilisateurs. Ses travaux concernent trois aspects : 

  • La vérification formelle de la sécurité des logiciels
  • La conception de systèmes de détection et de prévention d'intrusion
  • La protection personnelle des utilisateurs

Vérification de contrôle d'accès à base de rôles dans les processus d'affaires

En collaboration avec SAP, l'équipe a développé une approche formelle pour la validation des systèmes de gestion de droits d'accès à base de rôles. Une machine à états finis étendue (EFSM) est utilisée pour représenter les processus d'affaires (définis comme des flux de travail) ainsi que les règles de contrôle d'accès associées. Le vérificateur formel (model-checker) Spin est utilisé pour tester une variété de propriétés (concernant, par exemple, la séparation des devoirs).

Système multi-agent distribué sécuritaire

Dans le cadre de collaborations avec les entreprises SecureOps et ReactSys, l'équipe a développé des approches pour la conception d'architectures distribuées permettant la détection des attaques ainsi que leur prévention en temps réel. Ces architectures sont basées sur un modèle d'agents coopératifs non mobiles capables d'inférer les intentions des intrus potentiels.

Filtrage basé sur le contenu des accès WWW

En collaboration avec FokusMedia, l'équipe a étudié des modèles de filtrage des accès au World Wide Web, afin d'empêcher les utilisateurs d'accéder à certains sites Web. Elle a aussi proposé une nouvelle architecture transparente reposant sur l'utilisation du service DNS combinée avec un filtrage des pages par leur contenu.


Développement de systèmes informatiques distribués intelligents  Retour vers le haut

L'équipe étudie et conçoit des systèmes de calcul distribué intelligents, des systèmes pour la planification automatique de contingences et des systèmes de gestion des emplois du temps. Les avenues de recherche explorées sont reliées aux systèmes multi-agents, aux réseaux pair-à-pair et à l'intelligence artificielle.

Plateforme pour applications en ligne distribuées

En collaboration avec TEC, l’équipe conçoit une plateforme logicielle de distribution de logiciels. Deux aspects sont pris en considération : 

  1. L'hôte du logiciel distribué est protégé contre les malveillances possibles du logiciel.
  2. Le logiciel s'exécute dans un environnement protégé garantissant l'intégrité de son code et sa non-redistribution si celle-ci n'est pas expressément autorisée.

L'utilisation des logiciels distribués à travers la plateforme est mesurée, à des fins par exemple de facturation à l'usage.

Planification automatique

Dans ce projet en collaboration avec Recherche et développement pour la défense Canada (RDDC), l'équipe étudie les systèmes de planification de contingences. La performance et les limites des systèmes existants sont étudiées et une approche alternative basée sur des méthodes formelles est proposée.

Emplois du temps

Soutenu par la Commission scolaire de Laval et effectué en collaboration avec l’équipe Développement et technologies Internet du CRIM, ce projet concerne la production automatique d'emplois du temps pour les écoles secondaires du Québec. La génération d'emplois du temps prend en compte les particularités des écoles (nombre d'étudiants, taille de l'école, etc.), cours, préférences des professeurs, choix des étudiants, ainsi qu'un ensemble complémentaire d'exigences globales.


Analyse statique de logiciels  Retour vers le haut

L'analyse statique de logiciels repose principalement sur la disponibilité du code source. Elle permet ainsi d'analyser un logiciel à l'extérieur de son environnement d'exécution.

Inspection et diagnostic de programmes par analyse du code source

Valider la qualité de la conception et de l'implémentation d'un logiciel nécessite des moyens spécialisés capables de faciliter l'analyse du code source du logiciel. Une telle analyse permet la détection des défauts tels que la violation des normes de conception et des conventions de codage.

D'autres types de détection plus spécifiques peuvent être réalisés sous forme de mise en application d'heuristiques de qualité largement adoptées par la communauté de développement logiciel.

Enfin, différentes métriques peuvent également être construites, afin de fournir une évaluation quantitative de la qualité du code source.

Détection des problèmes reliés à la migration dans les applications Java

Dans ce projet réalisé avec SAP, l'équipe a étudié les effets de la migration de la version 1.4 à la version 1.5 de Java. Elle a établi la liste des problèmes posés par cette migration. Les problèmes identifiés ont été regroupés en catégories et des détecteurs capables de signaler la présence de ces problèmes dans le code ont été développés.

Les chercheurs ont offert une liste de recommandations et de conseils permettant aux développeurs d'éviter ces problèmes à l'avenir.

 
boite_recherche_g

Recherche

boite_recherche_d

CONTACT

Alexandre Petrenko, Ph.D.

Directeur de l'équipe Analyse de systèmes distribués et chercheur principal

514 840-1290

Alexandre Petrenko, Ph.D.