Summary: | La vérification à l'exécution est une technique prometteuse pour améliorer la sûreté des systèmes complexes. Ces systèmes peuvent être instrumentés afin qu'ils produisent des traces d'exécution permettant d'observer leur utilisation dans des conditions réelles. Un défi important est de fournir aux ingénieurs logiciel un langage formel simple adapté à l'expression des exigences les plus importantes. Dans cette thèse, nous nous intéressons à la vérification de dispositifs médicaux. Nous avons effectué l'analyse approfondie d'un dispositif médical utilisé mondialement afin d'identifier les exigences les plus importantes, ainsi que la nature précise des traces d'exécution qu'il produit. À partir de cette analyse, nous proposons ParTraP, un langage défini formellement et dédié à la spécification de propriétés sur des traces finies. Il a été conçu pour être accessible à des ingénieurs logiciels non qualifiés en méthodes formelles grâce à sa simplicité et son style déclaratif. Le langage étend les patrons de spécification initialement proposé par Dwyer et. al. avec des opérateurs paramétriques et temps-réel, des portées emboîtable, et des quantificateurs de premier ordre. Nous proposons également une technique de mesure de couverture pour ParTraP, et que le niveau de couverture d'une propriété temporelle permet de mieux la comprendre, ainsi que le jeu de traces sur lequel elle est évaluée. Finalement, nous décrivons l'implémentation d'un environnement de développement intégré pour ParTraP, qui est disponible sous une licence libre. === Runtime verification is a promising technique to improve the safety of complex systems. These systems can be instrumented to produce execution traces enabling us to observe their usage in the field. A significant challenge is to provide software engineers with a simple formal language adapted to the expression of their most important requirements. In this thesis, we focus on the verification of medical devices. We performed a thorough analysis of a worldwide-used medical device in order to identify those requirements, as well as the precise nature of its execution traces. In the light of this study, we propose ParTraP, a formally defined language dedicated to property specification for finite traces. It is designed to be accessible to software engineers with no training in formal methods thanks to its simplicity and declarative style. The language extends the specification patterns originally proposed by Dwyer et al. with parametrized constructs, nested scopes, real-time and first-order quantification. We also propose a coverage measurement technique for ParTraP, and we show that coverage information provides insights on a corpus of traces as well as a deeper understanding of temporal properties. Finally, we describe the implementation of an Integrated Development Environment for ParTraP, which is available under a free and open-source license.
|