Programming Languages for Safety-Critical Systems

  • Eugene Zouev


In previous chapters, we introduced the three main processes required to implement generalized algorithm of fault tolerance (GAFT), namely—testing and checking, second recovery preparation, and third and finally recovery and recovery monitoring. We described what every of these steps incorporates, gave possible solutions, and analyzed them. In the Chap.  7, we introduced syndrome for testing and checking; here we introduce programming language models for the two other mentioned processes. What we now want to do is to synthesize the introduced concepts into system software tools—programming languages and their compilers. We will discuss possible project solutions related to the overall architecture of software tools and introduce the major components of the architecture.


Safety-critical systems Programming languages Generalized algorithm of fault tolerance 


  1. 1.
    Wirth N (2008) Oberon-07 language report. Technical report, ETH ZurichGoogle Scholar
  2. 2.
    Schagaev I (2008) Reliability of malfunction tolerance. In: International multi-conference on computer science and information technology, IMCSIT 2008, pp 733–737Google Scholar
  3. 3.
    Castano V, Schagaev I (2015) Resilient computer system design. Springer, New York. ISBN 978-3-319-15069-7Google Scholar
  4. 4.
  5. 5.
    Kaegi-Trachsel T, Gutknecht J (2008) Minos—the design and implementation of an embedded real-time operating system with a perspective of fault tolerance. In: International multi-conference on IMCSIT 2008, pp 649–656, 20–22Google Scholar
  6. 6.
    Schagaev I (1986) Algorithms of computation recovery. Autom Remote Control 7:26–36Google Scholar
  7. 7.
    Schagaev I (1987) Algorithms for restoring a computing process. Autom Remote Control 48:530–538Google Scholar
  8. 8.
    Schagaev I (1989) Instructions retry in microprocessor recovery algorithms. In: IMEKO FTSD symposiumGoogle Scholar
  9. 9.
    Schagaev I (1989) Yet another approach to classification of redundancy. In: Proceedings of FTSD Prague, Czeschoslovakia, pp 485–490Google Scholar
  10. 10.
    Bläser L (2007) A component language for pointer-free concurrent programming and its application to simulation. Dissertattion, ETH No. 17480Google Scholar
  11. 11.
    Bläser L (2006) A component language for structured parallel programming. In: Joint modular languages conference (JMLC) 2006, Oxford, UK. Lecture Notes in Computer Science 4228, September 2006. SpringerGoogle Scholar
  12. 12.
    Schagaev I, Sogomonyan E (1988) Hardware and software for fault-tolerant computing systems. Automation remote control 49:129–151zbMATHGoogle Scholar
  13. 13.
    Blaeser L, Minkman S, Schagaev I Evolving systems 12.
  14. 14.
    Reali P (2004) Active Oberon language report. Technical report, ETH ZurichGoogle Scholar
  15. 15.
    Mossenbock Wirth N (1991) The programming language Oberon-2. Technical report, Johannes Kepler Universitat LinzGoogle Scholar
  16. 16.
    Wirth N, Gutknecht J (1992) Project Oberon: the design of an operating system and compiler. Wesley, New YorkGoogle Scholar
  17. 17.
    Johannes M (2002) The active object system—design and multiprocessor implementation. ETH Zurich, ZurichGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2020

Authors and Affiliations

  • Eugene Zouev
    • 1
  1. 1.Department of InformaticsTechnopolisInnopolis, KazanRussia

Personalised recommendations