493 research outputs found

    Conception et implémentation d'un langage de programmation concurrente modulaire

    Get PDF
    Shared-memory concurrency is a classic concurrency model which, among other things, makes it possible to take advantage of multicore processors that are now widespread in personal computers. Concurrent programs are prone to deadlocks which are notoriously hard to predict and debug. Programs using mutexes, a very popular synchronization mechanism, are no exception. In this thesis we studied deadlock avoidance methods with the aim of making programming with mutexes easier. We first studied a method that uses a static analysis by means of a type and effect system, then a variation on this method in a dynamically typed language. We developed more the second method. It mixes deadlock prevention and avoidance to provide an easy-to-use and expressive deadlock-free locking function. We implemented it as a Hop (dialect of Scheme) library. This lead us to develop a starvation-free algorithm to simultaneously acquire an arbitrary number of mutexes, and to identify the concept of asymptotic deadlock. While doing so, we also developped an optimization of exceptions(finally blocks). Our performance tests seem to show that using our library has negligible impact on theperformance of real-life applications. Most of our work could be applied to other structured programming languages such as Java.La programmation concurrente à mémoire partagée est un modèle classique de concurrence qui permet notamment de tirer parti des processeurs multicoeurs aujourd'hui très répandus dans les ordinateurs personnels. Les programmes concurrents sont sujets au problème des interblocages, notoirement difficiles à prévoir et à éliminer, en particulier dans le cas de l'utilisation du mécanisme de synchronisation très populaire que sont les mutex. Dans cette thèse nous avons travaillé à rendre plus aisée la programmation avec des mutex en étudiant des méthodes d'évitement des interblocages. Nous avons d'abord étudié une méthode utilisant une analyse statique par un système de types et d'effets, puis une variante de cette méthode dans un langage à typage dynamique. La seconde méthode est celle que nous avons le plus développée. Elle combine prévention et évitement des interblocages pour fournir une fonction de verrouillage sans interblocages expressive et utilisable. Nous l'avons implémentée sous forme d'une bibliothèque Hop (dialecte de Scheme). Ce faisant, nous avons développé un algorithme sans famine pour l'acquisition simultanée d'un nombre arbitraire de mutex, et identifié le concept d'interblocage asymptotique. Nous avons également été amenés à proposer une optimisation des exceptions (blocs finally). Nos tests de performances semblent indiquer un impact négligeable de l'utilisation de notre bibliothèque sur des applications concurrentes réelles. La majeure partie de notre recherche pourrait être appliquée à d'autres langages de programmation structurée tels que Java

    Vérification formelle de diagrammes UML : une approche basée sur la logique de réécriture

    Get PDF

    Renforcement formel et automatique de politiques de sécurité dans des applications Android par réécriture

    Get PDF
    Autant les applications Android ont réussi à positionner Android parmi les systèmes d'exploitation les plus utilisés, autant elles ont facilité aux créateurs de maliciels de s'introduire et de compromettre ses appareils. Une longue liste de menaces causées par les applications téléchargées vise l'intégrité du système et la vie privée de ses utilisateurs. Malgré l'évolution incessante du système Android pour améliorer son mécanisme de sécurité, le niveau de sophistication des logiciels malveillants a augmenté et s'adapte continuellement avec les nouvelles mesures. L'une des principales faiblesses menaçant la sécurité de ce système est le manque abyssal d'outils et d'environnements permettant la spécification et la vérification formelle des comportements des applications avant que les dommages ne soient causés. À cet égard, les méthodes formelles semblent être le moyen le plus naturel et le plus sûr pour une spécification et une vérification rigoureuses et non ambiguës de telles applications. Notre objectif principal est de développer un cadre formel pour le renforcement de politiques de sécurité dans les applications Android. L'idée est d'établir une synergie entre le paradigme orienté aspect et les méthodes formelles. L'approche consiste à réécrire le programme de l'application en ajoutant des tests de sécurité à certains points soigneusement sélectionnés pour garantir le respect de la politique de sécurité. La version réécrite du programme préserve tous les bons comportements de la version originale qui sont conformes à la politique de sécurité et agit contre les mauvais.As much as they have positioned Android among the most widely used operating systems, Android applications have helped malware creators to break in and infect its devices. A long list of threats caused by downloaded applications targets the integrity of the system and the privacy of its users. While the Android system is constantly evolving to improve its security mechanism, the malware's sophistication level is skyrocketing and continuously adapting with the new measures. One of the main weaknesses threatening smartphone security is the abysmal lack of tools and environments that allow formal specification and verification of application behaviors before damage is done. In this regard, formal methods seem to be the most natural and secure way for rigorous and unambiguous specification and verification of such applications. Our ultimate goal is to formally enforce security policies on Android applications. The main idea is to establish a synergy between the aspect-oriented paradigm and formal methods such as the program rewriting technique. The approach consists of rewriting the application program by adding security tests at certain carefully selected points to ensure that the security policy is respected. The rewritten version of the program preserves all the good behaviors of the original one that comply with the security policy and acts against the bad ones

    Spécification et substitution de services OSGi

    Get PDF
    Software Oriented Architecture is one of the more popular and currently used architectural models. One of the essentials properties offered by this model is the loose binding between services. This property allows to indepently develop and deploy building blocks of an application. This leads to a hight mobility of the execution environment, where services can appear and disappear without a prior notivication. This paradigm brings several advantages in software designing and developpement, but there is ab big deal whis is to guaratee that applications built on top services will continue to run properly, even if the environnement is dynamic. In our work, we are interessed by one of the major problems of services communication which is services substitution. This problem is even more complex when services used are statefull. Besides, the substitution process include a look up mechanism of a compatible service, to replace the disappeared one. We work on OSGi platform and we propose an approach of services specification, in order to improve the finding of the best service for the substitution. Our contributions are then, on the first hand to provide an API based on proxies use to manage services substitutions in OSGi. On the second hand, we propose an approach of services specification based on a combined use of interface automata and CCS, to help finding the best service for the substitution.Les architectures orientées services constituent l'un des principaux modèles architecturaux couramment utilisés aujourd'hui. La propriété essentielle de ces architectures est le faible couplage entre les services. Cela permet de développer et de déployer les briques de base des applications de manière indépendante. Ceci conduit à une grande mobilité de l'environnement d'exécution où les services peuvent apparaître et disparaître à tout moment. Cependant, cette indépendance des services soulève de nombreux défis, dont l'un des principaux est de pouvoir donner le maximum de garanties sur le fait qu'une application utilisant les services développés par ailleurs s'exécutera comme prévu par ses concepteurs. Dans le cadre du présent travail, nous nous intéressons à l'une des principales raisons des problèmes de communication dans les environnements à services, qui est la substitution des services. Ce problème de substitution est encore plus complexe lorsque les services possèdent un état interne (statefull). Par ailleurs, le mécanisme de substitution implique la recherche d'un service compatible pour remplacer le disparu. Nous proposons donc un mécanisme permettant de fournir une spécification comportementale avec les services, de façon à ce qu'on puisse trouver le meilleur service possible pour la substitution. Nous travaillons sur la plate-forme OSGi qui implémente une architecture orientée services, et où aucun mécanisme de substitution n'est proposé par défaut. Notre contribution, d'une part, est une API basée sur l'utilisation des proxy, pour permettre de gérer la substitution des services sous OSGi. D'autre part, nous proposons une approche de spécification des comportements des services OSGi basée sur les automates interfaces et sur le CCS (algèbre de processus). D'un point de vue pratique, nous avons développé un cas d'étude sur OSGi, sur lequel nous avons illustré notre approche de spécification de services. Nous avons aussi implémenté une partie de notre API que nous avons testé à l'aide de quelques tests unitaires

    Conception basée modèle des systèmes temps réel et distribués

    Get PDF
    Les systèmes temps réel et distribués posent des problèmes complexes en termes de conception d'architecture et de description de comportements. De par leur criticité en vies humaines et leurs coûts de prototypage, ces systèmes ont motivé le développement d'une activité de recherche sur les langages de modélisation formelle et les techniques de validation basées modèle qui contribuent à la détection au plus tôt des erreurs de conception. Néanmoins, les langages formels ont eu un succès plus que limité dans l'industrie. L'arrivée du langage UML (Unified Modeling Language) a ouvert de nouveaux horizons pour l'intégration de langages de modélisation formelle dans une méthodologie de conception susceptible d'être mieux acceptée par les praticiens du domaine. En s'appuyant sur une expérience antérieure de la technique de description formelle Estelle et des extensions temporelles des réseaux de Petri, notre activité de recherche sur les cinq dernières années a débouché sur la production d'un profil UML nommé TURTLE (Timed UML and RT-LOTOS Environment). TURTLE surpasse UML 2.0 par ses extensions aux diagrammes d'analyse et de conception UML, sa sémantique formelle exprimée en RT-LOTOS, et ses outils de support (éditeur de diagrammes et outil de validation formelle combinant simulation et vérification basée sur une analyse d'accessibilité). La méthodologie TURTLE trouve son champ d'application naturel dans la conception de systèmes temps réel et la validation d'architectures de communication en particulier. L'approche proposée a été appliquée avec succès à des systèmes satellitaires et des protocoles d'authentification

    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

    Langage de programmation pour les simulations géoréférencées à base d'agents

    Get PDF
    Lors des dix dernières années, les technologies basées sur les agents logiciels ont été appliquées dans plusieurs domaines tels que les jeux vidéo, les films où évoluent des personnages animés, en réalité virtuelle, dans le développement d’interfaces où sont fournis des agents « assistants », dans les applications Web éducatives utilisant des personnages virtuels, pour ne nommer que ceux-là. Dans plusieurs de ces domaines, les simulations à base d’agents nécessitent l’intégration de données géographiques. Celles-ci intègrent une dimension spatiale et permettent la simulation de divers phénomènes complexes tels que ceux qui sont liés aux dynamiques urbaines. Ce qui a mené à un nouveau domaine de recherche : les simulations géoréférencées à base d’agents (ou SGBA). Certaines plateformes logicielles développées pour les SGBA permettent à l’aide de différentes techniques, la spécification et l’implantation de simulations à base d’agents. Par contre, les comportements des agents qui peuvent y être spécifiés sont encore très limités, ce qui est insuffisant pour le développement de simulations géoréférencées de phénomènes sociaux. Dans ce type de simulations, les agents doivent agir de façon autonome et posséder des capacités d’appréhension de l’espace et de prise de décisions en rapport avec l’environnement géographique dans lequel ils évoluent. Pour posséder de telles caractéristiques, nous considérons que ces agents doivent au minimum posséder un mécanisme de perception autonome et individuel (de l’espace physique, des autres objets et agents), en plus d’être proactifs et posséder des comportements autonomes prenant en compte de leur connaissance du monde dans lequel ils évoluent (leur environnement virtuel). La spécification de ce type d’agents est une tâche très difficile et, à notre connaissance, aucun environnement de développement actuel n’offre de langage de programmation permettant de créer ce type d’agents. Dans le contexte du projet PLAMAGS (Programming LAnguage for MultiAgent GeoSimulations), nous avons développé un nouveau langage de programmation orienté-agent, une démarche de conception appliquée et un environnement de développement permettant la création et l’exécution rapide et simple de simulations géoréférencées à base d’agents. Les principales contributions du projet PLAMAGS sont : - Un langage de programmation descriptif, procédural et orienté-objet complet et utilisable à toutes les étapes du processus de développement et totalement dédié aux SGBA. Ce qui permet d’éliminer l’étape de transition et de transposition du modèle théorique en langage de programmation et ainsi éviter toutes les difficultés qui y sont rattachées. - Une démarche de conception appliquée où les étapes de modélisation, conception, implémentation, exécution et validation sont fusionnées et intégrées à chaque étape de la démarche. - Un modèle comportemental puissant (pour les agents), intuitif, modulaire, extensible et flexible permettant un développement itératif incrémental à l’aide d’abstractions prenant la forme de décompositions (sous-comportements). - Un modèle d’interactions spatialisées clairement défini et directement intégré dans les primitives du langage de programmation.In the last decade, technologies based on software agents have been used in many domains such as video games, movies containing animated characters, virtual reality, in visual interfaces development where “wizards” are supplied and in educative Web applications using virtual characters, just to name a few. In many of these domains, agent-based simulations require the integration of geographic data. These add a spatial dimension and allow the simulation of many complex phenomena such as those included in urban dynamics. This has spawned a new research field: Multi-Agent- Geo-Simulation (MAGS for short). Some of the frameworks developed for MAGS use many different techniques to specify and implement tagent-based simulations. However, the agents’ behaviors that can be specified are usually very limited and are insufficient for the development of geo-referenced simulation of social phenomena. In this type of simulation, the agents must act autonomously and have the ability to perceive the environment in which they evolve, and then take decision based on these perceptions. To benefit from such characteristics, we consider that these agents must minimally have a perception mechanism that is autonomous and unique to each agent which need as well as to be proactive and have autonomous behavior in relation to their virtual environment. The specification of this type of agent is a difficult task and, to the best of our knowledge, none of the existing development environment offers a language able to fulfill it. In the context of the PLAMAGS (Programming LAnguage for Multi-Agent Geo-Simulations) Project, we developed a new agent-oriented programming language, an applied design methodology and an integrated development environment that allow a quick and simple design and execution cycle of agent-based geo-referenced simulations. The main contributions of this work are as follows: - A full-fledged descriptive programming language, procedural and object-oriented that is usable at every stage of the development cycle and that is dedicated to MAGS. This language eliminates the transition and transposition from the theoretical model to the programming language and thus avoids all the difficulties inherent to such a transposition task. - An applied development methodology where the modeling, design and implementation, execution and validation steps are merged and integrated throughout the development cycle. - A behavioral model that is powerful (agent wise), intuitive, modular, extensible and flexible and thus allows a sequential and iterative development using abstractions based on decomposition (sub-behaviors). - A spatialized interaction model that is clearly defined and directly integrated in the primitives of the programming language

    Intégration des fautes dans un modèle de programmation pour réseaux mobiles

    Get PDF
    Nous proposons un langage de spécification dont le support d'exécution sont des périphériques mobiles utilisant un environnement pervasif à base de réseaux mobiles ad-hoc. Nous décrivons les problématiques de communication de groupe et de détection de fautes pour ce contexte où les canaux de communication ne peuvent pas être supposés fiables. Cette approche permet de traiter la mobilité des périphériques comme une question de tolérance aux faute

    CAMERA-DREAM : Une étude du Web de données dans le contexte d'un projet universitaire

    Get PDF
    International audienceL'enseignement dispensé dans le cadre du Master Génie Informatique et Logiciel de l'Université de Rouen inclut un projet de grande envergure qui mo-bilise chaque année tous les étudiants de la promotion. En 2012-2013, ce projet intitulé CAMERA-DREAM visait à constituer une base de connaissance consacrée au cinéma et publiable sur le Web en accès ouvert. Pour exploiter le contenu de cette base, une application de filtrage collaboratif devait être développée afin de permettre à un internaute de sélectionner des films répondant à ses goûts et à ses attentes. Pour atteindre ces différents objectifs, la modélisation d'une ontologie du cinéma et la définition d'un algorithme de calcul de distance sémantique consti-tuaient des prérequis
    • …
    corecore