Présentation de SpecForge
SpecForge est une plateforme conçue pour rédiger et analyser des spécifications formelles. Elle utilise le langage Lilo, un langage de spécification temporelle basé sur des expressions, conçu pour les systèmes hybrides.
Fonctionnement de Lilo
Lilo dispose de types primitifs tels que Bool, Int, Float et String, ainsi que d'opérateurs standard pour les opérations arithmétiques, les comparaisons et les opérations logiques. Il inclut également des opérateurs temporels tels que always, eventually, past et historically, qui peuvent être qualifiés avec des intervalles de temps.
always φ :- φ est vrai à tous les futurs temps
eventually φ :- φ est vrai à un certain futur temps
past φ :- φ était vrai à un certain temps passé
historically φ :- φ était vrai à tous les temps passés
Les spécifications Lilo sont organisées en systèmes qui regroupent des signaux, des paramètres, des types et des définitions. Un exemple de système de contrôle de température illustre ces concepts.
Analyse avec l'extension VSCode
L'extension VSCode de SpecForge fournit des fonctionnalités telles que la coloration syntaxique, la vérification de types, les avertissements, la satisfiabilité des spécifications, etc. Elle permet d'analyser les spécifications écrites en Lilo et offre diverses capacités d'analyse, notamment le monitoring, l'exemplification, la falsification et l'exportation.
spec temperature_in_bounds = in_bounds(temperature, min_temperature, max_temperature)
spec always_in_bounds = always temperature_in_bounds
Ces analyses peuvent être effectuées directement dans VSCode ou à l'aide d'un notebook Jupyter en utilisant le SDK Python. L'analyse de monitoring vérifie si le comportement enregistré du système satisfait les spécifications, tandis que l'exemplification génère des exemples de traces qui démontrent un comportement valide.
Limites et perspectives
SpecForge offre une approche puissante pour la rédaction et l'analyse de spécifications formelles. Cependant, la qualité des spécifications et la disponibilité de modèles pour les systèmes étudiés sont cruciales pour une analyse efficace. Les utilisateurs doivent comprendre les limites de Lilo et de SpecForge pour maximiser leur utilisation.