Statecharts: A visual formalism for complex systems
Science of Computer Programming
Synchronous programming with events and relations: the SIGNAL language and its semantics
Science of Computer Programming
The type and effect discipline
Information and Computation
Objective ML: an effective object-oriented extension to ML
Theory and Practice of Object Systems - Third workshop on foundations of object-oriented languages (FOOL 3)
Formal Methods in System Design - Special issue on The First Federated Logic Conference (FLOC'96), part II
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
Mode-automata: a new domain-specific construct for the development of safe critical systems
Science of Computer Programming - Special issure on formal methods for industrial critical systems (FMICS 2000)
A conservative extension of synchronous data-flow with state machines
Proceedings of the 5th ACM international conference on Embedded software
Translating discrete-time simulink to lustre
ACM Transactions on Embedded Computing Systems (TECS)
Mixing signals and modes in synchronous data-flow systems
EMSOFT '06 Proceedings of the 6th ACM & IEEE International conference on Embedded software
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Proceedings of the Conference on Design, Automation and Test in Europe
Hi-index | 0.00 |
This paper addresses the problem of designing and implementing complex control systems for real-time embedded software. Typical applications involve different control laws corresponding to different phases or modes, e.g., take-off, full flight and landing in a fly-by-wire control system. On one hand, existing methods such as the combination of Simulink/Stateflow provide powerful but unsafe mechanisms by means of imperative updates of shared variables. On the other hand, synchronous languages and tools such as Esterel or SCADE/Lustre are too restrictive and forbid to fully separate the specification of modes from their actual instantiation with a particular control automaton. In this paper, we introduce a conservative extension of a synchronous data-flow language close to Lustre, in order to be able to define systems with modes in a more modular way, while insuring the absence of data-races. We show that such a system can be viewed as an object where modes are methods acting on a shared memory. The object is associated to a scheduling policy which specifies the ways methods can be called to build a valid synchronous reaction. We show that the verification of the proper use of an object reduces to a type inference problem using row types introduced by Wand, Rémy and Vouillon. We define the semantics of the extended synchronous language and the type system. The proposed extension has been implemented and we illustrate its use through several examples.