943 research outputs found

    Test de modèles formels en B : cadre théorique et critères de couverture

    Get PDF
    Les travaux présentés dans ce mémoire définissent un cadre théorique pour le test de logiciels développés selon la méthode formelle B. Les tests visent à révéler les fautes dues à une mauvaise compréhension ou à une mauvaise modélisation d’un besoin fonctionnel, et complètent ainsi les preuves effectuées pendant le développement formel. Un développement B peut être vu comme une série d’étapes durant lesquelles des modèles de plus en plus concrets de l’application sont construits, le code final pouvant être considéré comme une version compilée du modèle le plus concret. Le cadre théorique de test que nous avons défini est un cadre unifié, indépendant du fait que les résultats de test soient obtenus de l’animation des modèles ou de l’exécution du code. Ce cadre est explicitement lié à la notion du raffinement des modèles B : pour une entrée de test, l’acceptation des résultats fournis par un modèle implique l’acceptation des résultats fournis par les raffinements corrects de celui-ci. Nous définissons ensuite une approche d’analyse structurelle des modèles B. En poursuivant le cadre unifié, notre objectif est de définir des stratégies de couverture qui soient applicables à la fois à un modèle abstrait et à un modèle concret. Ceci a nécessité d’unifier pour les modèles B deux catégories de critères : • critères de couverture des spécifications orientées modèle basés sur la couverture des prédicats avant/après ; • critères classiques de couverture structurelle des programmes basés sur la couverture du graphe de contrôle. A partir de cette unification, nous avons défini un ensemble de critères, ordonnés selon la relation d’inclusion, qui complètent les critères existants. ABSTRACT : The work presented in this dissertation concerns the definition of a theoretical framework for testing software developed within the B formal method. The test aims to reveal specification faults due to a misunderstanding or a misrepresentation of a functional requirement, and thus complement the proofs performed during the formal development process. The B development process can be seen as a series of steps during which successively more concrete models of the system are constructed, the final code being considered as a compiled version of the most concrete model. The theoretical framework that we have defined is a unified framework, independent of the fact that the results are obtained by animation of models or by execution of the final code. The framework is explicitly related to the notion of refinement of B models: for a given test input, the acceptance of the results of a given model implies the acceptance of the results of its correct refinements. We then define an approach to structural analysis of B models. Following the unified framework, our aim is to define coverage strategies applicable to abstract models as well as to concrete ones. This has required the unification of two categories of criteria for B models: • coverage criteria defined for model oriented specifications based on the coverage of before-after predicates; • classical structural coverage criteria of programs based on the coverage of control flow graphs. From this unification, we have defined a set of criteria, ordered according to the inclusion relation, that complete the existing hierarchy of criteria

    Extensions parallèles pour le langage Nit

    Get PDF
    Grâce à la miniaturisation et à l'arrivée des processeurs multicœurs dans les ordinateurs personnels, la programmation parallèle ne semble plus être réservée aux groupes restreints d'utilisateurs ayant accès à des superordinateurs ou à des grappes de calculs. De plus, avec la tendance actuelle d'augmenter constamment le nombre de cœurs des processeurs, le besoin de développer des applications pouvant s'exécuter correctement sur l'ensemble des unités de traitement disponibles est un enjeu déterminant. Sous de telles conditions, tout langage de programmation récent devrait être doté de mécanismes permettant la génération et l'exploitation de calculs parallèles. Dans le présent mémoire, nous explorons la possibilité d'intégrer des extensions parallèles à un langage orienté objet récent qui, au départ, ne possédait aucun support pour la programmation parallèle. Le langage utilisé est Nit, un langage développé conjointement à l'UQAM et au LIRMM (Montpellier, France). Nit est un langage moderne orienté objet dont la mise en œuvre utilise de nouvelles techniques de compilation, à la fine pointe de la recherche sur les langages orientés objet. À ce langage de base séquentiel, nous avons ajouté un module, appelé NitSpace, qui permet d'échanger de l'information entre des processus qui s'exécutent en parallèle. Ce module est fondé sur le modèle Linda proposé par Carriero et Gelernter (2). Le modèle Linda propose de partager, entre les processus, un espace de tuples par l'intermédiaire duquel les divers processus échangent de l'information, et ce à l'aide de quatre opérations principales : out, in, rd et eval. À ces quatre opérations s'ajoutent aussi deux variantes non bloquantes des opérations de lecture : inp et rdp. Ces diverses opérations permettent l'ajout, l'extraction et la lecture dans un espace partagé de tuples. Un avantage du modèle Linda est sa simplicité, mais en permettant malgré tout la définition des structures de données plus complexes telles que sémaphores, barrières de synchronisation, sacs de tâches, tableaux distribués, flux de données, etc. Le modèle Linda, défini au départ dans le contexte du langage C, a par la suite été intégré à d'autres langages, qui ont introduit des variantes au modèle original. Quelques-unes de ces variantes seront présentées, en présentant les implémentations qui ont été réalisées dans les langages Ruby, Python, Scala et Java. Nous avons choisi de présenter ces langages car, tout comme Nit, il s'agit de langages orientés objets. Les caractéristiques de ces différentes mises en œuvre du modèle Linda ont aussi influencé le choix de conception et de réalisation de notre module NitSpace. L'implémentation de ce module fut réalisée en trois couches que l'on présentera en détail. La majeure partie représentant la couche de bas niveau fut réalisée en C. À celle-ci s'ajoute une couche médiane qui permet de relier la couche C à la couche Nit. Finalement, la couche supérieure, écrite entièrement en Nit, représente l'API qui permet à un programme Nit de générer des calculs parallèles.\ud ______________________________________________________________________________ \ud MOTS-CLÉS DE L’AUTEUR : Nit, NitSpace, programmation parallèle, Linda, espace de tuples

    Renforcement formel et automatique de politiques de sécurité dans la composition des services Web

    Get PDF
    L'orchestration des services Web décrite par le Web Service-Business Process Execution Language (WS-BPEL), fait désormais partie intégrante du Web moderne, comme le cloud computing, le Big Data, l'Internet des objets (IoT) et les réseaux sociaux. En effet, elle est au centre de nombreux systèmes d'information liés à une variété de domaines tels que le commerce électronique, les institutions financières et les systèmes de santé, etc. où des données sensibles sont partagées, ce qui pose d'importants problèmes de sécurité. WS- BPEL appelé aussi BPEL, est le langage standard pour construire des services Web complexes d'une manière pratique. Cependant, BPEL n'est pas rigoureusement défini comme un langage formel entrainant ainsi des problèmes d'ambiguïté et de confusion lors de sa compréhension. Par ailleurs, sans fondement formel, il ne serait pas possible de fournir des preuves garantissant le bon fonctionnement de services. Cette thèse adresse la formalisation de BPEL et présente une approche formelle basée sur la réécriture de programmes permettant d'appliquer des politiques de sécurité au niveau de ce langage. Plus précisément, étant donné une composition de services Web spécifiée en BPEL et une politique de sécurité décrite dans une logique temporelle comme LTL, notre approche vise à générer une nouvelle version de service Web qui respecte cette politique de sécurité. La nouvelle version du service se comporte exactement comme l'originale excepté quand la politique est sur le point d'être violée. Dans ce cas le processus pourrait accomplir d'autres actions ou tout simplement être arrêté. La formalisation de BPEL a été aussi traduite dans l'environnement K-Framework, ce qui ouvre la porte à l'utilisation de ses nombreux outils formels incluant un évaluateur de modèles pour l'analyse de services Web.The Web services orchestration approach described by the Web Service-Business Process Execution Language (WS-BPEL), is now an integral part of the modern Web, such as cloud computing, Big Data, the Internet of Things (IoT) and social networks. Indeed, it is at the center of many information systems related to a variety of domains such as e-commerce, financial institutions and healthcare systems, etc. where sensitive data is shared, which creates significant security issues. WS-BPEL, also called BPEL, is the standard language for building complex Web services in a practical way. However, BPEL is not rigorously defined as a formal language thus leading to problems of ambiguity and confusion when understanding it. Moreover, without a formal basis, it would not be possible to provide any proof guaranteeing the proper functioning of services. This thesis addresses the formalization of BPEL and presents a formal approach based on the rewriting of programs allowing the enforcement of security policies on this language. More precisely, given a composition of Web services specified in BPEL and a security policy described in a temporal logic like LTL, our approach aims to generate a new version of the Web service which respects the given security policy. The new version of the service behaves exactly like the original one except when the policy is about to be violated. In this case the process could take other actions or simply be stopped. The formalization of BPEL has also been translated into the K-Framework environment, which opens the door to the use of its many formal tools including a model checker for the analysis of Web services

    Les deux formes de la thèse de Church-Turing et l’épistémologie du calcul

    Get PDF
    La thèse de Church-Turing stipule que toute fonction calculable est calculable par une machine de Turing. En distinguant, à la suite de nombreux auteurs, une forme algorithmique de la thèse de Church-Turing portant sur les fonctions calculables par un algorithme d’une forme empirique de cette même thèse, portant sur les fonctions calculables par une machine, il devient possible de poser une nouvelle question : les limites empiriques du calcul sont-elles identiques aux limites des algorithmes ? Ou existe-t-il un moyen empirique d’effectuer un calcul qu’aucun algorithme ne permet d’effectuer ? Je montrerai ici la pertinence philosophique de cette question. Elle interroge la capacité de processus symboliques comme les calculs à simuler certains processus empiriques. Elle permet également d’étudier le statut épistémologique des calculs réalisés par des machines. S’il existait une fonction calculable par une machine sans être calculable par un algorithme, il existerait un problème mathématique qui serait soluble par un dispositif empirique, sans être soluble par aucune méthode mathématique a priori.Church-Turing’s thesis states that every computable function is computable by a Turing machine. By distinguishing, like many authors in the recent literature, between an algorithmic form of Church-Turing’s thesis on the functions computable by an algorithm, and an empirical form of the same on the functions computable by a machine, it becomes possible to ask a new question: Are the limits of empirical calculation identical to the limits of the algorithms? Or is there a way to empirically perform a calculation no algorithm can perform? I will show the philosophical relevance of this ques­tion. It questions the ability of symbolic processes as calculations to simulate certain empirical processes. It is also essential to the epistemological status of calculations performed by machines. If there were a function computable by a machine without being computable by an algorithm, there would be a mathematical problem, which would be solvable by an empirical device, but would be unsolvable by any a priori mathematical method

    Application du concept des transactions pour la modélisation et la simulation multicoeur des systèmes sur puce

    Full text link
    Avec la complexité croissante des systèmes sur puce, de nouveaux défis ne cessent d’émerger dans la conception de ces systèmes en matière de vérification formelle et de synthèse de haut niveau. Plusieurs travaux autour de SystemC, considéré comme la norme pour la conception au niveau système, sont en cours afin de relever ces nouveaux défis. Cependant, à cause du modèle de concurrence complexe de SystemC, relever ces défis reste toujours une tâche difficile. Ainsi, nous pensons qu’il est primordial de partir sur de meilleures bases en utilisant un modèle de concurrence plus efficace. Par conséquent, dans cette thèse, nous étudions une méthodologie de conception qui offre une meilleure abstraction pour modéliser des composants parallèles en se basant sur le concept de transaction. Nous montrons comment, grâce au raisonnement simple que procure le concept de transaction, il devient plus facile d’appliquer la vérification formelle, le raffinement incrémental et la synthèse de haut niveau. Dans le but d’évaluer l’efficacité de cette méthodologie, nous avons fixé l’objectif d’optimiser la vitesse de simulation d’un modèle transactionnel en profitant d’une machine multicoeur. Nous présentons ainsi l’environnement de modélisation et de simulation parallèle que nous avons développé. Nous étudions différentes stratégies d’ordonnancement en matière de parallélisme et de surcoût de synchronisation. Une expérimentation faite sur un modèle du transmetteur Wi-Fi 802.11a a permis d’atteindre une accélération d’environ 1.8 en utilisant deux threads. Avec 8 threads, bien que la charge de travail des différentes transactions n’était pas importante, nous avons pu atteindre une accélération d’environ 4.6, ce qui est un résultat très prometteur.With the increasing complexity of SoCs, new challenges continue to emerge in the design of these systems in terms of formal verification and high-level synthesis. Several research efforts around SystemC, considered the de facto standard for system-level design, are underway to meet these new challenges. However, because of the complex concurrency model of SystemC, these challenges remain difficult tasks. Thus, we believe it is important to continue on a better footing by using a more effective concurrency model. Therefore, in this thesis, we study a design methodology that provides a better abstraction for modeling parallel components based on the concept of transaction. We show how, through simple reasoning about transactions, it becomes easier to apply formal verification, incremental refinement and high-level synthesis. In order to evaluate the effectiveness of this methodology, we set the goal to optimize the simulation speed of a transactional model by taking advantage of a multicore machine. We present a modeling and parallel simulation environment that we developed. We study different scheduling strategies in terms of parallelism and synchronization overhead. An experiment made on a Wi-Fi 802.11a transmitter model achieved a speed up of about 1.8 using two threads. With 8 threads, although the workload of individual transactions was not significant, we could reach a speed up equal to 4.6 which is a very promising result

    Répartition automatique des tâches parallèles : application dans la simulation de réseaux électriques en temps réel

    Get PDF
    Répartition automatique des tâches parallèles pour la simulation en temps réel -- Modélisation et analyse du problème de la répartition des tâches -- Méthode heuristique de répartition des tâches temps réel -- Heuristiques de répartition et performances de la méthode

    Programmation sûre de plates-formes embarquées de type multi/pluri-cœurs

    Get PDF
    The purpose of this document is to describe an overview of my work on the topic of "programming mutli/many-core COTS in the context of aeronautics" and to propose future research work.L’objectif de ce document est de décrire une synthèse des travaux que j’ai menés autour du thème de "la programmation sûre de plates-formes embarquées" et de proposer des perspectives de recherche pour les années à venir

    Méthodes formelles de haut niveau pour la conception de systèmes électroniques fiables

    Full text link
    Thèse numérisée par la Direction des bibliothèques de l'Université de Montréal

    Langage contrôlé pour la spécification des règles métier dans le contexte de la modélisation des systèmes d'information

    Get PDF
    Our thesis focuses on controlled natural languages (CNL) for software engineering. It aims at facilitating the adoption of the business rule approach (BRA) by companies by creating a CNL in order to help business experts in the specification of their business rules. Our solution will allow reducing the semantic gap between business experts and system experts to meet not only the need for mutual understanding between them but also to achieve an automatic transfer of the description of business rules to information systems (IS). The CNL that we have created will also ensure the consistency and the traceability of these rules together with their implementationNotre thèse s’inscrit dans le cadre des langages contrôlés pour le génie logiciel. Elle a pour but de faciliter l’adoption de l’approche par règles métier (ARM) par les entreprises en créant un langage contrôlé en vue d’aider à la spécification des règles métier par les experts métier. Notre solution va permettre de réduire la distance sémantique entre les experts métier et les experts système afin de répondre non seulement au besoin d’intercompréhension entre ces derniers mais aussi pour réaliser un transfert automatique de la description des règles métier vers les systèmes d’information (SI). Ce langage contrôlé que nous avons créé permettra d’assurer en plus la consistance et la traçabilité de ces règles avec leur implantatio
    • …
    corecore