Rétro-ingénierie de modèles comportementaux par

Transcription

Rétro-ingénierie de modèles comportementaux par
Rétro-ingénierie de modèles comportementaux par
apprentissage automatique
Encadrants : Nicolas Baskiotis, Sylvain Lamprier, équipe MALIRE, LIP6, UPMC.
Thématique : Apprentissage automatique statistique.
Les modèles de spécication de scénarios comme les diagrammes de séquence représentent un moyen très utile pour la compréhension d'un système ainsi que pour le test logiciel :
ils présentent les cycles d'interactions du système et de l'utilisateur de manière à modéliser
le comportement du système. Quand ces diagrammes sont absents ou obsolètes, la rétroingénierie est utilisée pour extraire (semi-)automatiquement ce genre de modèles. Elle peut
être réalisée statiquement en analysant le code source du système ou dynamiquement par
l'exécution du système et l'analyse des traces d'exécution obtenues. En ce qui concerne les
systèmes orientés objet, l'analyse dynamique est privilégié, plus adaptée aux mécanismes
d'héritage, de liaison dynamique et de polymorphisme.
Les algorithmes actuels de rétro-ingénierie s'inspirent fortement des techniques d'inférence grammaticale issue de l'apprentissage automatique. Ces techniques permettent en
particulier d'apprendre une grammaire régulière cible à partir d'un ensemble de séquences.
Pour cela, un arbre des préxes est d'abord construit, puis une procédure de généralisation de l'automate est appliquée itérativement par fusion successive d'états compatibles.
La généralisation est contrôlée en principe par des séquences qui n'appartiennent pas au
langage cible.
Dans le cadre de la rétro-ingénierie, le processus d'apprentissage se déroule en trois
étapes : collection des traces, inférence de l'automate représentant ces traces, puis traduction de l'automate en diagramme de séquence. Cependant, des séquences pouvant contrôler
la généralisation ne sont pas disponibles dans ce contexte (elles représenteraient des exécutions non possibles du système). Ainsi, an d'obtenir des diagrammes précis, il est nécessaire que l'algorithme interagisse avec un expert an de le questionner sur la possibilité ou
non de scénarios engendrés à partir de l'automate en cours d'induction. Ces algorithmes
présentent le désavantage de n'être que semi-automatique et fastidieux.
Une autre solution est d'utiliser des heuristiques sur les états qu'on s'autorise à fusionner (par exemple, algorithme de type k-tail : que deux états aient le même futur à un
horizon xé). En l'état actuel, ces algorithmes produisent des automates beaucoup trop spéciques, ayant des centaines d'états, là où l'automate cible n'en possède qu'une dizaine. Les
diagrammes ainsi produits sont peu lisibles, complexes et donc peu utiles. Nous proposons
dans ce stage d'étudier des techniques issues de l'apprentissage automatique statistique
an d'améliorer l'inférence des diagrammes de séquence.
L'idée principale que nous souhaitons développer consiste à considérer des fusions
bruitées d'états : plutôt que de considérer une inférence exacte de l'automate, soumise
à un contrôle strict de généralisation par séquence, nous proposons de privilégier une inférence statistique, guidée par les fusions les plus probables. Deux pistes prometteuses
pourront être explorées lors du stage. La première, inspirée de l'inférence de modèles de
markov caché, consiste à apprendre les probabilités de transitions séquence par séquence,
puis d'élaguer les transitions peu prometteuses. La seconde, inspirée de la recherche de motifs fréquents, consiste à fusionner les états par blocs de manière hiérarchique en fonction
d'un critère de granularité reétant le degré de bruit ou d'approximation autorisé.
1