4th International Conference on Computer Integrated Manufacturing CIP’2007 03-04 November 2007 Vérification formelle des modèles UML temps-réel A. Bouamari, M. Mostefai Laboratoire d'Automatique de Sétif a.bouamari@arn.dz, mostefai@univ-setif.dz Résumé- Le model-checking est une technique de vérification formelle très puissante mais ses mécanismes de spécification déployés sont souvent étroits et difficiles à manipuler. Les modèles utilisés sont très complexes et nécessitent généralement des compétences spécialisées dans les énoncés formels. Pour universaliser l’utilisation du langage de modélisation unifié dans le développement des systèmes temps-réel, une technique de vérification des propriétés temporelles sur des statecharts UML est proposée dans cet article. Le système est modélisé par des diagrammes état-transition et les propriétés à vérifier sont exprimées en langage naturel selon des patterns de spécification temps-réel. Les statecharts sont ensuite convertis en automates temporisés et les expressions de propriétés en formules TCTL équivalentes. Ces structures sont analysées par le model-checker Kronos et les résultats d’analyse sont retournés sous forme de notes sur les diagrammes UML sources. I. INTRODUCTION Les systèmes temps-réel sont souvent complexes et critiques, et nécessitent un développement rigoureux pour affirmer leur correction fonctionnelle et temporelle [1]. Les techniques dites du model-checking constituent dans ce contexte un très important outil permettant la vérification formelle et automatique d’une large classe de systèmes. En fait, les méthodes de spécification formelles permettent la représentation des systèmes avec précision et donc disposer des procédures permettant une vérification automatique par model- checker des propriétés requises. Cependant, les modèles issus des énoncés formels déployés sont souvent alambiquées et parfois même inexploitables si le nombre d’états est relativement important. D’autre part, les spécifications qui offrent des mécanismes de modélisation avancés (hiérarchie, historique, synchronisation, etc.) notamment les statecharts (Harel [9] et UML 2.0 [19]) manquent souvent de fondements formels nécessaires pour accomplir une vérification exhaustive et complète de leurs modèles. Dans la littérature, différentes techniques ont été proposées pour adapter les statecharts UML au contexte de vérification par model-checking des systèmes temps-réel [4]. Ces approches utilisent des restrictions sur l'utilisation de ces diagrammes (seul un sous-ensemble des éléments de modélisation des statecharts est utilisé). Le modèle est ensuite transformé en une configuration de modèles abstraits analysable directement par le model-checker. Au cours de cette translation, tous les détails qui ne sont pas supportés par le model-checker utilisé sont éliminés (hiérarchie…) tout en maintenant la même sémantique opérationnelle du modèle. D'autres techniques de model-checking des modèles UML temps-réel focalisent plutôt sur l'expression des propriétés à vérifier et utilisent une extension temporelle du langage d'expression des contraintes OCL ou un sous ensemble structuré du langage naturel (l'anglais par exemple) afin de simplifier la spécification des propriétés à vérifier pour des systèmes état-transition. Dans ce contexte, et pour combiner les avantages du langage de modélisation unifié et des model-checkers, nous présentons une approche permettant la spécification et la vérification automatique des modèles UML temps-réel. Le système et ses propriétés sont complètement spécifiés par des statecharts UML annotés avec des expressions du langage naturel. Les modèles sont ensuite convertis de manière transparente en structures accessibles directement par le model-checker. II. MODEL-CHECKING Le model-checking [3] repose sur la modélisation formelle du système par système de transitions étiquetées (automates temporisés, RdP, etc.) et la spécification des propriétés à vérifier par des formules logique (logique temporelle par exemple). L'algorithme de model-checking combine alors le modèle et la formule pour calculer l'ensemble des états accessibles. La propriété est vérifiée s'il y au moins un chemin qui relie l'état initial à l'ensemble des états qui vérifient cette formule. Les model-checkers les plus utilisés dans le contexte temps-réel sont Uppaal [15] et Kronos [20]. Les deux outils utilisent des structures d’automates temporisés pour la modélisation du système et la logique TCTL pour l'expression des propriétés. Uppaal est très efficace au niveau modélisation et dispose d'un simulateur et d'une interface graphique très performante. Mais l'outil ne permet malheureusement que des formes de synchronisation binaire et ne vérifie qu'une classe restreinte de propriétés d'atteignabilité. Par contre, Kronos admet la vérification d'une large classe de propriétés (atteignabilité, sûreté et vivacité) sur des modèles temporisés et combine plusieurs techniques d’analyses (forward analysis, backward analysis et on-the-fly). L'outil dispose également d’un algorithme de model-checking symbolique ce qui permet de résoudre partiellement le problème d'explosion du nombre d'états [10]. Kronos est cependant destiné aux utilisateurs spécialistes dans les énoncés