13 research outputs found

    SPaCIFY: a Formal Model-Driven Engineering for Spacecraft On-Board Software

    Get PDF
    International audienceThe aim of this article is to present a model- driven approach proposed by the SPaCIFY project for spacecraft on-board software development. This ap- proach is based on a formal globally asynchronous lo- cally synchronous language called Synoptic, and on a set of transformations allowing code generation and model verification

    Behavioural Properties and Dynamic Software Update for Concurrent Programs, Thesis Progress Report

    No full text
    Correctly developing multi-threaded programs is notoriously difficult, and getting total coverage using traditional testing paradigms, to guarantee the program is correct, is often infeasible. We expand on previous work to provide various tools, namely a generalisation of session typing and an extension of policy automata to multi-threaded code, with which to verify multi-threaded code. Additionally, most programs are not written once and then left; maintaining and updating software is an essential part of the software development cycle. Dynamic software update (DSU) “is a technique by which a running program can be updated with new code and data without interrupting its execution” [45] and uses code analyses to ensure given safety properties are maintained across update boundaries. We present techniques for verifying if a modification can be applied to a running program whilst maintaining the desired behavioural properties, which may be those the program had before or some new properties

    Micro Virtual Machines: A Solid Foundation for Managed Language Implementation

    Get PDF
    Today new programming languages proliferate, but many of them suffer from poor performance and inscrutable semantics. We assert that the root of many of the performance and semantic problems of today's languages is that language implementation is extremely difficult. This thesis addresses the fundamental challenges of efficiently developing high-level managed languages. Modern high-level languages provide abstractions over execution, memory management and concurrency. It requires enormous intellectual capability and engineering effort to properly manage these concerns. Lacking such resources, developers usually choose naive implementation approaches in the early stages of language design, a strategy which too often has long-term consequences, hindering the future development of the language. Existing language development platforms have failed to provide the right level of abstraction, and forced implementers to reinvent low-level mechanisms in order to obtain performance. My thesis is that the introduction of micro virtual machines will allow the development of higher-quality, high-performance managed languages. The first contribution of this thesis is the design of Mu, with the specification of Mu as the main outcome. Mu is the first micro virtual machine, a robust, performant, and light-weight abstraction over just three concerns: execution, concurrency and garbage collection. Such a foundation attacks three of the most fundamental and challenging issues that face existing language designs and implementations, leaving the language implementers free to focus on the higher levels of their language design. The second contribution is an in-depth analysis of on-stack replacement and its efficient implementation. This low-level mechanism underpins run-time feedback-directed optimisation, which is key to the efficient implementation of dynamic languages. The third contribution is demonstrating the viability of Mu through RPython, a real-world non-trivial language implementation. We also did some preliminary research of GHC as a Mu client. We have created the Mu specification and its reference implementation, both of which are open-source. We show that that Mu's on-stack replacement API can gracefully support dynamic languages such as JavaScript, and it is implementable on concrete hardware. Our RPython client has been able to translate and execute non-trivial RPython programs, and can run the RPySOM interpreter and the core of the PyPy interpreter. With micro virtual machines providing a low-level substrate, language developers now have the option to build their next language on a micro virtual machine. We believe that the quality of programming languages will be improved as a result

    Du génie logiciel pour déployer, gérer et reconfigurer les logiciels

    Get PDF
    As a discipline, software engineering embraces various schools of thought, yet remains consistent with respect to its objective. It aims at providing means for effective and inexpensive production of software by contributing mathematical frameworks, methods and tools. Consequently, we witness some automation in software production process that, as of today, allows producing astronomical amounts of lines of code daily. This rapidly and massively produced software is required for all computer equipment that has invaded our daily life in various forms of other devices (PC, tablet, phone, refrigerator, car, etc.). In this world of large software consumption, it is somewhat surprising that the management of software, after its production, remains dominated by manual practices like searching in lists, downloading units and manual installations. In this context, I organized my research activities such that they aim at providing mathematical frameworks, methods and tools to deploy, distribute or update massive amounts of software since 2001, the year of my PhD defense. These research activities were mainly conducted in Brest at the CS department of Telecom Bretagne as part of the PASS team of IRISA. This document puts into perspective my various scientific contributions, undertaken projects, endeavors in training research students and efforts invested as a teacher. My scientific contributions can be divided into five parts: mathematical models and algorithms for dependency management in software deployment; software component models; processes and tools for massive software deployment; dynamic update of programs at runtime; languages for the design and implementation of software development processes. All these works complement each other, thus making it possible to imagine the proposition of methods and tools for large-scale software deployment.Le gĂ©nie logiciel est une discipline constituĂ©e de nombreux courants mais cohĂ©rente par l'objectif affichĂ©. Il s'agit d'aider Ă  la production, de maniĂšre efficace et peu coĂ»teuse, de logiciels en offrant des cadres mathĂ©matiques, des mĂ©thodes et des outils. Ainsi, on a pu assister Ă  une certaine industrialisation du processus de production de logiciel qui permet aujourd'hui de produire, chaque jour, des quantitĂ©s astronomiques de logiciel. Ce logiciel produit rapidement et en grande quantitĂ© est nĂ©cessaire pour tous les Ă©quipements informatiques qui ont envahi notre quotidien (ordinateur, tablette, tĂ©lĂ©phone, rĂ©frigĂ©rateur, voiture, ...). Dans ce monde de grande consommation du logiciel, il est cependant surprenant de constater que la gestion des logiciels aprĂšs leur production est restĂ© dominĂ© par des pratiques manuelles de recherche dans des listes, de tĂ©lĂ©chargement unitaire et d'installation manuelle. C'est dans ce cadre que j'ai dĂ©veloppĂ© une activitĂ© de recherche visant Ă  fournir des cadres mathĂ©matiques, des mĂ©thodes et des outils pour dĂ©ployer, diffuser ou mettre Ă  jour massivement les logiciels depuis 2001 annĂ©e de ma soutenance de thĂšse. Ces activitĂ©s de recherche ont Ă©tĂ© conduites principalement Ă  Brest au sein du dĂ©partement informatique de TĂ©lĂ©com Bretagne dans le cadre de l'Ă©quipe PASS de l'IRISA. Mon Habilitation Ă  Diriger des Recherches est l'occasion de remettre en perspective mes diffĂ©rentes contributions scientifiques, les Ă©tudiants formĂ©s Ă  la recherche, les projets rĂ©alisĂ©s ainsi que mon investissement en tant qu'enseignant. Les contributions scientifiques peuvent ĂȘtre classĂ©es en cinq parties : - des modĂšles mathĂ©matiques et les algorithmes associĂ©s pour la gestion des dĂ©pendances de logiciels lors de leur dĂ©ploiement ; - les modĂšles de composants logiciels ; - les processus et outils pour le dĂ©ploiement de logiciel massif ; - la mise Ă  jour de programmes sans interrompre leur exĂ©cution ; - des langages pour la conception et la rĂ©alisation de processus de dĂ©veloppement logiciel. Tous ces travaux qui se nourrissent et se complĂštent permettent d'imaginer la proposition de mĂ©thodes et outils pour passer Ă  l'Ă©chelle dans la gestion du dĂ©ploiement des logiciels

    Plates-formes et mises Ă  jour dynamiques configurables

    Get PDF
    Dynamic software updating allows applications to be modified without interrupting the services it provides. Because today's systems rely heavily on software and its availability, such a possibility is an important issue. Many mechanisms with diverse needs and properties enable dynamic updates. They are used by platforms targeting specific types of applications and/or updates. While the specialization of these platforms make the development of dynamic updates easier, it can cause the platform to be ill suited in the case of unforeseen updates. A solution is to select and combine best-suited mechanisms for each update in order to guarantee a best compatibility of platforms with the different kinds of applications and updates. The three contributions detailed in this thesis follow this objective: - Studying platforms and identify generic models for platforms and updates - Studying the needs and properties of mechanisms as well as their capacity to be combined - Develop configurable platforms allowing the selection of best-suited mechanisms for each update. Theses contributions open leads towards a new generation of platforms and towards new uses of dynamic updates. The third contribution lead to the development of Pymoult, a configurable platform for Python programs. Pymoult provides several mechanisms through a high-level API suited to the conception of dynamic updates.La mise Ă  jour dynamique des logiciels permet de modifier ces derniers sans interrompre les services qu'ils fournissent. C'est un enjeu important Ă  une Ă©poque oĂč les logiciels sont omniprĂ©sents et oĂč leur indisponibilitĂ© peut ĂȘtre coĂ»teuse (service commercial) ou mĂȘme dangereuse (systĂšme de sĂ©curitĂ©). De nombreux mĂ©canismes aux propriĂ©tĂ©s et besoins variĂ©s permettent d'atteindre cet objectif. Ces mĂ©canismes sont employĂ©s par des plates-formes dĂ©diĂ©es Ă  des types de logiciel et/ou de mises Ă  jour spĂ©cifiques. En se spĂ©cialisant, ces plates-formes facilitent l'Ă©criture de mises Ă  jour dynamiques mais peuvent ĂȘtre mal adaptĂ©es Ă  l'application de certaines modifications imprĂ©vues. Il convient alors de sĂ©lectionner et combiner les mĂ©canismes les mieux adaptĂ©s Ă  chaque mise Ă  jour afin d'assurer une meilleure compatibilitĂ© des plates-formes avec les diffĂ©rents logiciels et mises Ă  jour. C'est autour de cet objectif que s'organisent les contributions de ce manuscrit: - Étudier les plates-formes et identifier des modĂšles gĂ©nĂ©riques de plate-forme et de mise Ă  jour - Étudier les besoins et les propriĂ©tĂ©s des mĂ©canismes de mise Ă  jour ainsi que leurs capacitĂ©s Ă  ĂȘtre combinĂ©s. - DĂ©velopper des plates-formes configurables permettant de sĂ©lectionner les mĂ©canismes les mieux adaptĂ©s pour chaque mise Ă  jour. Les rĂ©sultats obtenus ouvrent des pistes vers une nouvelle gĂ©nĂ©ration de plates-formes ainsi que vers de nouvelles utilisations de la mise Ă  jour dynamique. Le troisiĂšme axe a menĂ© au dĂ©veloppement de Pymoult, plate-forme configurable pour programmes Python. Cette plate-forme fournit de nombreux mĂ©canismes au travers d'une API de haut niveau adaptĂ©e Ă  la conception de mises Ă  jour dynamiques

    Proceedings of the 18th Irish Conference on Artificial Intelligence and Cognitive Science

    Get PDF
    These proceedings contain the papers that were accepted for publication at AICS-2007, the 18th Annual Conference on Artificial Intelligence and Cognitive Science, which was held in the Technological University Dublin; Dublin, Ireland; on the 29th to the 31st August 2007. AICS is the annual conference of the Artificial Intelligence Association of Ireland (AIAI)

    Inference Belief and Interpretation in Science

    Get PDF
    This monograph explores the deeply cognitive roots of human scientific quest. The process of making scientific inferences is continuous with the day-to-day inferential activity of individuals, and is predominantly inductive in nature. Inductive inference, which is fallible, exploratory, and open-ended, is of essential relevance in our incessant efforts at making sense of a complex and uncertain world around us, and covers a vast range of cognitive activities, among which scientific exploration constitutes the pinnacle. Inductive inference has a personal aspect to it, being rooted in the cognitive unconscious of individuals, which has recently been found to be of paramount importance in a wide range of complex cognitive processes. One other major aspect of the process of inference making, including the making of scientific inferences, is the role of a vast web of beliefs lodged in the human mind, as also of a huge repertoire of heuristics, that constitute an important component of ‘unconscious intelligence’. Finally, human cognitive activity is dependent in a large measure on emotions and affects that operate mostly at an unconscious level. Of special importance in scientific inferential activity is the process of hypothesis making, which is examined in this book, along with the above aspects of inductive inference, at considerable depth. The book focuses on the inadequacy of the viewpoint of naive realism in understanding the context-dependence of scientific theories, where a cumulative progress towards an ultimate truth about Nature appears to be too simplistic a generalization. It poses a critique to the commonly perceived image of science where it is seen as the last word in logic and objectivity, the latter in the double sense of being independent of individual psychological propensities and, at the same time, approaching a correct understanding of the workings of a mind-independent nature. Adopting the naturalist point of view, it examines the essential tension between the cognitive endeavors of individuals and scientific communities, immersed in belief systems and cultures, on the one hand, and the engagement with a mind-independent reality on the other. In the end, science emerges as an interpretation of nature, which is perceived by us only contextually, as successively emerging cross-sections of a limited scope and extent. Successive waves of theory building in science appear as episodic and kaleidoscopic changes in perspective as certain in-built borders are crossed, rather than as a cumulative progress towards some ultimate truth. Based on current literature, I aim to set up, in the form of a plausible hypothesis, a framework for understanding the mechanisms underlying inductive inference in general and abduction in particular
    corecore