Section: Research Program
Components and Contracts
Component-based construction has long been advocated as a key approach to the “correct-by-construction” design of complex embedded systems [56]. Witness component-based toolsets such as UC Berkeley's Ptolemy [43], Verimag's BIP [31], or the modular architecture frameworks used, for instance, in the automotive industry (AUTOSAR) [23]. For building large, complex systems, a key feature of component-based construction is the ability to associate with components a set of contracts, which can be understood as rich behavioral types that can be composed and verified to guarantee a component assemblage will meet desired properties. The goal in this theme is to study the formal foundations of the component-based construction of embedded systems, to develop component and contract theories dealing with real-time, reliability and fault-tolerance aspects of components, and to develop proof-assistant-based tools for the computer-aided design and verification of component-based systems.
Formal models for component-based design are an active area of research (see e.g., [24], [25]). However, we are still missing a comprehensive formal model and its associated behavioral theory able to deal at the same time with different forms of composition, dynamic component structures, and quantitative constraints (such as timing, fault-tolerance, or energy consumption). Notions of contracts and interface theories have been proposed to support modular and compositional design of correct-by-construction embedded systems (see e.g., [34], [35] and the references therein), but having a comprehensive theory of contracts that deals with all the above aspects is still an open question [62]. In particular, it is not clear how to accomodate different forms of composition, reliability and fault-tolerance aspects, or to deal with evolving component structures in a theory of contracts.
Dealing in the same component theory with heterogeneous forms of composition, different quantitative aspects, and dynamic configurations, requires to consider together the three elements that comprise a component model: behavior, structure and types. Behavior refers to behavioral (interaction and execution) models that characterize the behavior of components and component assemblages (e.g., transition systems and their multiple variants – timed, stochastic, etc.). Structure refers to the organization of component assemblages or configurations, and the composition operators they involve. Types refer to properties or contracts that can be attached to components and component interfaces to facilitate separate development and ensure the correctness of component configurations with respect to certain properties. Taking into account dynamicity requires to establish an explicit link between behavior and structure, as well as to consider higher-order systems, both of which have a direct impact on types.
We plan to develop our component theory by progressing on two fronts: component calculi, and semantical framework. The work on typed component calculi aims to elicit process calculi that capture the main insights of component-based design and programming and that can serve as a bridge towards actual architecture description and programming language developments. The work on the semantical framework should, in the longer term, provide abstract mathematical models for the more operational and linguistic analysis afforded by component calculi. Our work on component theory will find its application in the development of a Coq -based toolchain for the certified design and construction of dependable embedded systems, which constitutes our third main objective for this axis.