6 CHAPITRE 1. INTRODUCTIONentre le mo<strong>de</strong> du simple affichage, le mo<strong>de</strong> <strong>de</strong> réglage <strong>de</strong> l’heure (Time set), le mo<strong>de</strong> <strong>de</strong>réglage <strong>de</strong> l’alarme (Alarm set) et le mo<strong>de</strong> chronomètre (Stopwatch).ALARM / DISPLAYBUTTON_DECODERAMMo<strong>de</strong>_Selectalarm_setmo<strong>de</strong>displaymo<strong>de</strong>ALM DUAL TMR CHRDISPLAYBUTTONStime_setmo<strong><strong>de</strong>s</strong>topwatchmo<strong>de</strong>STOPWATCHTIME_SETALARM_SETFig. 1.1 – La montre à quartz.Dans cette application, les modules Time set, Alarm set et Stopwatch sont lancés en parallèlemais leurs comportements sont largement exclusifs en ce qui concerne leur réaction auxévénements d’entrée, c’est à dire aux boutons et en ce qui concerne l’affichage. En effet, lesboutons ne permettent <strong>de</strong> contrôler qu’un seul module à la fois et l’affichage varie selon le mo<strong><strong>de</strong>s</strong>électionné. L’analyse Breadth First Search basique d’un tel programme ne tire aucun avantagedu fait que tous ces sous-modules sont exclusifs et calcule l’espace <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> sur leprogramme tout entier.L’analyse <strong>de</strong> ce programme pourrait être divisée en quatre partie : La première permettant <strong>de</strong>calculer les états <strong>atteignables</strong> pour le mo<strong>de</strong> d’affichage <strong>de</strong> l’heure et les trois autres permettant<strong>de</strong> calculer les états <strong>atteignables</strong> dans les modules Time set puis Alarm set et enfin Stopwatch.Ainsi, la recherche <strong><strong>de</strong>s</strong> états <strong>de</strong> chaque mo<strong>de</strong> pourrait être réalisée indépendamment<strong><strong>de</strong>s</strong> trois autres mo<strong><strong>de</strong>s</strong>. Le gain en espace d’une telle approche est évi<strong>de</strong>nt puisque l’analyse duprogramme original peut alors être assimilée à l’analyse <strong>de</strong> quatre <strong>programmes</strong>, tous <strong>de</strong> tailleinférieur au programme original. Dans chacune <strong>de</strong> ces quatre phases, <strong><strong>de</strong>s</strong> fonctions <strong>de</strong> transitionslocales sont utilisées à la place d’une seule fonction <strong>de</strong> transition globale.1.4 Travaux reliésUtiliser la structure algorithmique <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong> afin <strong>de</strong> gui<strong>de</strong>r la constructionsymbolique et exhaustive <strong>de</strong> l’espace d’états <strong>atteignables</strong> est une idée simple et claire qui n’ajamais été expérimentée à notre connaissance. D’autres travaux en rapport avec les nôtres utilisent<strong><strong>de</strong>s</strong> techniques Depth First Search pour la recherche explicite d’états <strong>atteignables</strong> afind’i<strong>de</strong>ntifier un squelette <strong>de</strong> configurations initiales “en avance”. Une fois ces configurations calculées,<strong><strong>de</strong>s</strong> métho<strong><strong>de</strong>s</strong> symboliques Breadth First Search sont appliquées [66] en utilisant unerelation <strong>de</strong> transition partitionnée. Le but <strong>de</strong> ces travaux est plus d’ordonnancer le processus <strong>de</strong>génération <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> que <strong>de</strong> minimiser la représentation <strong>de</strong> la relation <strong>de</strong> transition.D’autres travaux présentés dans [2] exploitent la structure hiérarchique <strong>de</strong> <strong>programmes</strong> asynchronesafin d’optimiser le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong>. Ces travaux reposent entre autre sur
1.4. TRAVAUX RELIÉS 7l’hypothèse d’un opérateur parallèle asynchrone. Cette hypothèse ne permet malheureusementpas d’appliquer ces résultats au cas d’<strong>Esterel</strong> où l’exécution <strong>de</strong> tâches en parallèle est synchrone.Certains travaux visent à optimiser le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> afin <strong>de</strong> converger le plusrapi<strong>de</strong>ment possible vers les états directement concernés par une propriété donnée [13, 79]. Lebut est <strong>de</strong> déterminer le plus rapi<strong>de</strong>ment possible si cette propriété n’est pas vérifiée par leprogramme analysé.Autour du vérificateur formel Murϕ [32, 45], <strong>de</strong> nombreux travaux visant à améliorer le calcul <strong><strong>de</strong>s</strong>états <strong>atteignables</strong> ont été menés. L’idée d’utiliser <strong><strong>de</strong>s</strong> dépendances fonctionnelles entre les variablesdu <strong>programmes</strong> a été introduite dans [46, 47] et améliorée dans [48]. La métho<strong>de</strong> consisteà définir la valeur <strong>de</strong> certaines variables en fonctions d’autres variables indépendantes. Dès lors,le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> peut être réalisé à partir <strong><strong>de</strong>s</strong> variables indépendantes seulement.Dans [49], la métho<strong>de</strong> consiste à exploiter les symétries dans la <strong><strong>de</strong>s</strong>cription <strong><strong>de</strong>s</strong> <strong>programmes</strong>.L’introduction d’un type particulier permet au programmeur <strong>de</strong> définir <strong><strong>de</strong>s</strong> équivalences entreles états du programme. Par la suite, lors <strong>de</strong> l’analyse du programme, il suffit d’explorer un seulétat par classe d’équivalence. Cette métho<strong>de</strong> permet <strong>de</strong> réduire la taille <strong><strong>de</strong>s</strong> BDDs utilisés parle vérificateur Murϕ.Certaines étu<strong><strong>de</strong>s</strong> visent à approcher le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong>. Dans [69] Ravi et Somenzicalculent une sous-approximation <strong>de</strong> l’espace <strong><strong>de</strong>s</strong> états <strong>atteignables</strong>. La <strong>de</strong>nsité d’un BDDse mesure en divisant le nombre d’états encodés par le nombre <strong>de</strong> noeuds <strong>de</strong> ce BDD. A chaqueétape <strong>de</strong> calcul, lorsque les BDDs atteignent une taille trop importante, les branches les moins<strong>de</strong>nses sont supprimées. Ceci permet d’obtenir <strong><strong>de</strong>s</strong> BDDs plus petits en conservant un maximumd’états <strong>atteignables</strong>. D’autres travaux s’appuient sur une surapproximation du calcul <strong><strong>de</strong>s</strong>états <strong>atteignables</strong> [37, 38, 63]. L’intérêt <strong>de</strong> ces métho<strong><strong>de</strong>s</strong> est <strong>de</strong> garantir certaines propriétés <strong><strong>de</strong>s</strong><strong>programmes</strong>. Si tous les états calculés vérifient ces propriétés alors tous les états <strong>atteignables</strong>aussi. Dans le cas contraire, une analyse plus fine est nécessaire pour déterminer si les états quiinvali<strong>de</strong>nt ces propriétés sont réellement <strong>atteignables</strong>.Le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> à base <strong>de</strong> BDDs a également été adapté pour permettrel’analyse <strong>de</strong> <strong>programmes</strong> C. Dans [33], Edwards et al. ont réalisé l’analyse <strong>de</strong> petits <strong>programmes</strong>même si le passage à l’échelle <strong>de</strong>meure incertain. Dans [8, 9], Ball et Rajamani présententun vérificateur capable d’analyser <strong><strong>de</strong>s</strong> <strong>programmes</strong> C booléens. Alors que le calcul <strong><strong>de</strong>s</strong> états<strong>atteignables</strong> s’effectue sur <strong><strong>de</strong>s</strong> <strong>programmes</strong> finis, ce vérificateur autorise <strong><strong>de</strong>s</strong> appels <strong>de</strong> fonctionrécursifs et non bornés.Les travaux les plus proches techniquement sont ceux <strong>de</strong> Yannis Bres. La thèse [17] présente<strong><strong>de</strong>s</strong> métho<strong><strong>de</strong>s</strong> d’abstraction permettant <strong>de</strong> simplifier le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong>. Plus précisément,ces techniques visent à remplacer certaines variables d’états par <strong>de</strong> simples variablesd’entrée ou bien à utiliser une logique <strong>de</strong> Scott trivaluée. Ceci permet <strong>de</strong> supprimer <strong><strong>de</strong>s</strong> blocsentiers <strong>de</strong> programme lors <strong>de</strong> son analyse. Cette métho<strong>de</strong> conduit à une surapproximation <strong>de</strong>l’espace <strong><strong>de</strong>s</strong> états <strong>atteignables</strong>, mais grâce à cela, Yannis Bres à réussi à vali<strong>de</strong>r un certainnombre <strong>de</strong> propriétés. Concrètement, ces travaux et les nôtres ont été intégrés au sein d’unmême logiciel.