• Aucun résultat trouvé

3.7 Propriétés du modèle

5.1.1 Model Checking

5.1.3 Test . . . 91 5.2 Vérification formelle de la conformité OSEK/VDX . . . 92

5.2.1 Cas de test . . . 93 5.2.2 Séquence de test . . . 93 5.2.3 Suite de test . . . 94 5.2.4 Exemple . . . 94 5.3 Vérification formelle de la conformité OSEK/VDX à partir d’observateurs géné- riques . . . 97

5.3.1 Présentation de l’approche . . . 97 5.3.2 Observateurs . . . 98 5.3.3 Étude de cas . . . 102 5.4 Conclusion . . . 105

D

ans ce chapitre, nous présentons tout d’abord quelques techniques de vérification de sys- tèmes informatiques telles que le model checking, l’analyse statique et le test formel. Ensuite, nous présentons deux approches permettant de déterminer la conformité de systèmes d’exploi- tation OSEK/VDX à partir de leurs modèles formels.

Dans la première approche, la suite de test issue de la spécification OSEK/VDX est traduite en des automates finis étendus qui sont composés au modèle du système d’exploitation afin de tester son comportement. La conformité du système d’exploitation est ainsi déterminée à partir de son modèle. Pour cette approche, il faut à chaque fois concevoir une nouvelle suite de test adaptée au système d’exploitation configuré car les services fournis par le système d’exploitation peuvent varier d’une configuration à une autre et une suite de test est liée aux services du système d’exploitation. Cela exige en effet plus d’efforts et de temps pour la détermination de la conformité OSEK/VDX en utilisant cette approche.

Pour cela, nous présentons une seconde approche qui permet une traduction des cas de tests en observateurs en utilisant des automates finis étendus. Les modèles d’observateurs obtenus sont composés au modèle du système complet (système d’exploitation + application) afin d’observer le comportement du système d’exploitation et de déterminer sa conformité en fonction de la spécification OSEK/VDX.

Suite à une configuration, un système d’exploitation fournit un certain nombre de services nécessaires à l’application. Par conséquent, les cas de tests issus de la spécification OSEK/VDX ne sont pas tous utiles à vérifier. Seuls ceux qui sont liés aux services fournis par le système

90 Vérifications formelles

d’exploitation configuré sont nécessaires à vérifier. Cette approche a ainsi l’avantage de permettre une sélection automatique des cas de tests applicables au système d’exploitation configuré.

De plus, les observateurs étant génériques, ils sont utilisés pour toutes configurations. Cette approche facilite alors la vérification de la conformité d’un système d’exploitation à partir de son modèle en fonction de la spécification OSEK/VDX.

5.1

Les techniques de vérification formelle

5.1.1 Model Checking

Introduit par les travaux de Clarke et Emerson [CE82] puis de Queille et Sifakis [QS82], la vérification de modèles ou model checking dans la littérature anglaise est une technique per- mettant de vérifier automatiquement si le modèle d’un système satisfait bien un ensemble de propriétés.

Les modèles sont la plupart du temps exprimés par des automates à états finis qui consistent en un nombre fini d’états et de transitions où les états contiennent les informations relatives aux valeurs actuelles des variables du système (eg. Compteur de programmes) et les transitions décrivent la manière dont le système évolue d’un état à un autre. La figure 5.1 présente le principe du model checking.

Exigences Implémentation du système Abstraction

Spécifications des propriétés Formalisation Modèle du système Model Checker Propriété satisfaite Propriété non satisfaite

Figure 5.1 – Processus du model checking

Pour réaliser un model checking, dans un premier temps, le système réel est modélisé. En- suite, l’ensemble des exigences ou des propriétés souhaitées sont formalisées dans un langage de spécification de propriétés comme le LTL (Linear Temporal Logic) [Pnu77] ou encore le CTL

(Computation Tree Logic) [CES86]. Les propriétés spécifiées formellement sont par la suite vé-

rifiées sur le modèle dans le but de savoir si elles sont bien satisfaites ou non.

Le modèle du système décrit comment le système réel se comporte tandis que les propriétés traduisent la manière dont le système doit se comporter.

Le model checking permet la vérification de plusieurs types de propriétés telles que :

— Les propriétés fonctionnelles : le système fait-il correctement ce qu’il est supposé faire ? — Les propriétés d’accessibilité : est-il possible que le système atteigne un certain état ? — Les propriétés de sûreté : quelque chose de mauvais ne se produira jamais.

— Les propriétés de vivacité : quelque chose de bon se produira immanquablement. — Les propriétés d’équité : sous certaines conditions, un événement se produira infiniment

Les techniques de vérification formelle 91

— Les propriétés d’absence de blocage : le système ne se retrouve jamais dans un état dans lequel il n’a plus la possibilité d’avancer.

— Les propriétés temporelles : Le système agira-t-il à temps ?

Plusieurs outils de model checking ont été mis en œuvre parmi lesquels nous pouvons citer UP-

PAAL [BLL+95] pour la vérification de systèmes décrits par des automates temporisés, ROMEO

[GLM+05] pour la vérification de systèmes modélisés à partir de réseaux de Petri temporels et

Spin [Hol04] utilisé pour la vérification de systèmes modélisés à partir d’automates finis.

En ce qui concerne la vérification de systèmes d’exploitation, [Cho11] applique le model

checking sur le système d’exploitation Trampoline. Le code du noyau de Trampoline est converti

automatiquement en PROMELA qui est le langage de modélisation supporté par l’outil Spin. En revanche, les auteurs ne modélisent pas entièrement le système d’exploitation. Ils se focalisent sur un certain nombre de fonctions leur permettant de vérifier quelques propriétés de sûreté sur Trampoline. [BPSV94] utilise les automates temporisés pour la modélisation et la vérification du système d’exploitation PATHOS.

Concernant les applications temps réel, [WH08] propose une approche de vérification d’ap- plications OSEK/VDX en utilisant le model checking. Les auteurs décrivent le modèle de l’ap- plication OSEK/VDX puis une partie du système d’exploitation OSEK/VDX en utilisant des automates temporisés. Ils effectuent ensuite la vérification de propriétés temporelles spécifiées en langage TCTL(Temporal Computation Tree Logic) grâce à l’outil UPPAAL. En se basant sur un ordonnancement non-préemptif, ils sont en mesure de vérifier le pire temps d’exécution des tâches de l’application.

Documents relatifs