You are on page 1of 7

Annual Reviews in Control xxx (2003) xxx–xxx

Review
Programming languages for use in safety-related applications
Wolfgang A. Halang a,∗ , Janusz Zalewski b
a Fernuniversität, Faculty of Electrical and Computer Engineering, D-58084 Hagen, Germany
b Florida Gulf Coast University, Computer Science Program, Fort Myers, FL 33928, USA

Abstract

Programmable electronic systems are being used in almost all application sectors to perform non-safety and increasingly to perform safety
functions as well. Although software-based solutions are usually superior to hardwired ones for reasons of efficiency and flexibility, there is
a certain reluctance of the certification authorities when it comes to licensing computer-based systems which are classified as safety critical.
Despite many attempts to overcome problems of software safety (IEC 61508, IEC 880, VDE 0801, IDS 00-55, RTCA/DO-178), up to now
neither precise guidelines supporting the software development process are available, nor are there serious efforts being made to develop
programming languages dedicated to the implementation of safety critical functions. To improve this unsatisfactory situation, i.e. to meet
both economic and safety requirements, it is necessary to design appropriate language concepts with consequent regard to safety aspects.
Accordingly, four subsets of a real time language suitable for the implementation of safety-related systems are proposed, whose definitions
fulfil the respective requirements of the four safety integrity levels.
© 2003 Elsevier Ltd. All rights reserved.

Keywords: Safety-related systems; Safety requirements; Safety integrity levels; Real time programming languages; PEARL; Verification

1. Introduction methods and guidelines belonging to different application


fields and, among others, having the principal intention to
Computer-based solutions are permanently gaining sig- define requirements for programming languages for use in
nificance in almost all application fields, not least because safety-related systems (DIN, 1995; IEC, 1986, 1998; RTCA,
of the rapid progress in microelectronics enabling cheap and 1992; MOD, 1991). The guidelines agree on the following
flexible implementations. Although it is quite natural that general requirements:
industry tends to benefit from these economic advantages,
there is, however, a type of system designated as safety re- • programming languages should be fully and unambigu-
lated for which this trend does not prevail. The reason for this ously defined or shall possess a formally defined syntax,
is to be found in the growing awareness of safety hazards, respectively,
and as a consequence of the demand for highly dependable • be user and problem oriented,
systems. The latter holds true especially if malfunctions of • be of a high level with preference to safety oriented stan-
the concerned systems may result in disastrous accidents, as dardised subsets,
it is characteristic for automation systems. Software-based • enable structured programming, restricting branches and
solutions are still considered to be less trustworthy than con- loops, and avoiding jumps and computed branches,
ventional hardwired components, which is justified by the • should support simple and uniform addressing techniques,
longer tradition of hardware and, therefore, many years of and
experience in the development of strategies to cope with • strong typing, i.e. enforce explicit declaration, initialisa-
corresponding failures. Actually, evaluating software with tion and type conversions,
respect to dependability or safety aspects is a task which • but not comprise dynamic variables or other dynamic ob-
has been neglected for a long time. However, owing to var- jects,
ious efforts during recent years, there exists a number of • language structures should be modular, interfaces between
modules should be simple, uniform and fully defined, and
∗ Corresponding author. Tel.: +49-2331-987-372;
• procedures should be simply structured, having a mini-
fax: +49-2331-987-375.
mum number of parameters, only; communication should
E-mail addresses: wolfgang.halang@fernuni-hagen.de (W.A. Halang), exclusively be permitted via parameters; recursive proce-
zalewski@fgcu.edu (J. Zalewski). dure calls should be not allowed.

1367-5788/03/$ – see front matter © 2003 Elsevier Ltd. All rights reserved.
doi:10.1016/S1367-5788(03)00005-1
2 W.A. Halang, J. Zalewski / Annual Reviews in Control xxx (2003) xxx–xxx

Unfortunately, these guidelines are restricted to the descrip- tical reasons we are mostly interested in languages already
tion of shortcomings or desirable features with respect to used on an industrial scale, rather than creating new ones
existing languages. They are often rather imprecise, thus with improved features, such as in Schlichting and Thomas
not offering substantial support during system development. (1995). General issues have been studied in several papers
Actually, no new language has been developed on the ba- by Cullyer, Goodenough, and Wichmann (1991), Wichmann
sis of these standards, nor have the mentioned guidelines so (1992, 1994) and in an report of the US Nuclear Regulatory
far motivated the re-design of existing languages for use in Commission NRC (Hecht et al. , 1996). They point to sev-
safety-related applications. Consequently, even though the eral important issues and questions to be asked when choos-
process of verification is inevitable for any code segment ing a language for programming this kind of systems. The
implementing a safety-related function, no progress based catalogue of issues includes:
on the cited standards is evident or is to be expected.
Indeed, because verification is the main prerequisite to • formally defined syntax,
enable the certification of larger software-based solutions, • block structure,
only serious improvements aiming to support the process • strong typing,
of program verification will be a step in the right direction. • wild jumps,
The importance of this becomes even more evident when we • memory overwrites (e.g. due to unchecked array bounds),
consider the fact that for practicability reasons the workload • memory exhaustion (e.g. due to memory leaks),
involved in verifying safety-related software has to be re- • dangling pointers,
stricted to a reasonable limit. The present state of the art im- • a model of integer and floating point arithmetic which
plies, for example, that formal methods only apply for such is safe to deal with problems such as integer overflows
verification processes when the code sequences are quite and the approximate nature of floating point arithmetic
short. (causing rounding errors, etc.),
Summing up, up to now approaches aimed at im- • variable initialisation,
provements in the field of software safety obviously • potential assignments in Boolean expressions,
have not yielded results which enhance the confidence in • exception handling,
software-based solutions. The certification authorities are, • separate compilation (with type checking across modules),
therefore, still reluctant to license exclusively software and
based safety-related systems and, consequently, system • temporal predictability, addressing such problems as the
designers often prefer to employ conventional hardwired difficulty to determine the execution time of while loops.
solutions despite their manifest disadvantages with respect
One of the languages most commonly used in safety-
to the mentioned economic aspects.
related applications and, therefore, the most often evaluated
In an attempt to remedy this unsatisfactory situation,
one in this respect is C. It has been studied by several authors,
in this paper we introduce several programming language
including Hatton (1995) and Lindner (1998). In addition to
concepts which we think stand a better chance of enhanc-
the general issues listed above, a number of difficulties with
ing trustworthiness and dependability of software based
C have been pointed out:
safety-related systems. After reviewing the state of the art
in programming languages for safety-related systems, we • very weak typing,
discuss some inherent characteristics of software, focusing • severe problems with dynamic memory allocation and
particularly on the differences with respect to the nature pointer arithmetic,
of software and hardware failures. Then, we present a ba- • logical expressions are defined, but a logical data type is
sic principle which is decisive in the development of new not,
language concepts for safety-related programming. The fol- • potential ambiguities in if conditions,
lowing section defines four increasingly restricted subsets • increment/decrement operators, etc.
of the real time programming language PEARL 90 (DIN,
1998), recommended for use in safety-related applications, As a result, at least one industry (automotive in Great
and classifies these subsets according to their suitability Britain) produced a set of guidelines to standardise the use
with reference to the four discrete levels of increasing safety of C in safety-related applications, known as MISRA C
integrity requirements (SIL 1, . . . , SIL 4) introduced in the (1998). This document includes over a hundred recommen-
international standard IEC 61508-1 (IEC, 1998). dations, named rules, that describe desirable and undesir-
able uses of various C constructs. For instance, one of the
rules in the operators category reads as follows:
2. Programming languages and safety
Rule 35 (required). Assignment operators shall not be used
in expressions returning Boolean variables.
There has been a number of studies in recent years, re-
garding the features of programming languages suitable or Ada is another language often used on an industrial scale
unsuitable for programming safety critical systems. For prac- in safety-related systems, mostly in military applications. A
W.A. Halang, J. Zalewski / Annual Reviews in Control xxx (2003) xxx–xxx 3

set of guidelines published by ISO/IEC (2000) is a result • formal semantics and standardisation,
of joint work of international experts. It evaluates language • good understanding by programmers,
features according to their suitability for safety-related sys- • support for embedded applications,
tems, by rating them according to certain criteria. In fact, • concurrency and parallelism,
the only criterion to categorise features that way is whether • functional predictability,
they facilitate the cost effective application of a required • temporal predictability,
verification technique. • analysability of resource usage,
The document is structured into 14 sections, following • certification of translators, and
the Ada Reference Manual, from types with static attributes • run-time support and environment,
to distribution. For each group of features, this document
includes an evaluation table and a few paragraphs of text and a similar number of desired requirements. After rating
containing constructive guidance on the use of the des- each feature, the authors concluded that Java, in its current
ignated features. Overall, it is not very restrictive, except form, is not appropriate as a whole for the development of
for tasking, which follows the so-called Ravenscar profile high integrity systems that require rigour and predictability
(Burns, Dobbings, & Vardanega, 2003), and distribution, of language, compilation systems, and tools.
which excludes the remote call interface and partition com-
munication subsystems. The Ravenscar profile relies on
confining the tasking model to features that can be imple- 3. Causes and nature of software failures
mented using fixed priority scheduling, either pre-emptive
or non-pre-emptive, and, thus, leads to: Although always implemented with the latest technology,
the architecture of digital computers has remained essen-
• the ability to analyse the behaviour of each task by tech- tially unchanged since the times of Konrad Zuse and John
niques appropriate for sequential code, and von Neumann in the 1940s. The prevailing architectural
• simplicity of verifying each task’s system-wide timing model matches the technical possibilities of that time. In
behaviour, once its temporal attributes (period, deadline, other words, while the technology with which hardware is
priority, etc.) are known. built and the capabilities of hardware have tremendously ad-
Another subset of Ada, defined specifically for safety-related vanced within the last 60 years, all high level programming
systems and known as the SPADE Ada Kernel SPARK languages developed so far, and presently in use, reflect to
(Carré & Garnsworthy, 1990), is much more restrictive. Its different extents the way programs are executed by von Neu-
main characteristics include: mann machines, allowing maximum flexibility at the price
of facilitating errors and being unsafe. As a consequence of
• disallowing the use of tasks, exceptions, and generic units, this and due to the inflationary increase in the demand for
• restricting penetration of packages to items specifically functionality, the complexity of software is exploding expo-
imported from other packages, nentially. This, in turn, leads to error-prone software devel-
• avoiding overloading as far as possible and not allowing opment and results in a lack of software dependability.
the use clauses, type aliasing, and anonymous types, In society, there is a growing concern for safety and en-
• disallowing default values in record declarations and de- vironmental hazards, and an increasing demand for depend-
fault subprogram parameters, able technical systems which prevent loss of human lives
• eliminating direct jumps, and environmental disasters. To enable a flexible adaptation
• simplifying unconstrained array assignments, of system functions to new needs and to enhance the pro-
• simplifying scope and visibility rules and disallowing de- ductivity of system development processes, computer-based
clare statements, and systems are increasingly being applied for both control and
• requiring that all constraints be determinable statically. automation functions under real time constraints. These sys-
More details can be found in a recently published book tems have the special property of hardware and software
(Barnes, 2003). being closely coupled to form complex mixed technology
Widespread use of newer technologies, promulgated due systems such as manufacturing, process or traffic control
to the use of the language Java, requires putting attention systems.
to its suitability for safety-related applications. Respective When analysing malfunctions of computer based safety-
issues have been studied recently (Kwon, Wellings, & King, related systems, it can be observed that often the reasons
2002). They structured safety-related issues into multiple are not to be found in random hardware failures, i.e. failures
mandatory requirements, as follows: occurring at random times or resulting from a variety of
degradation mechanisms in the hardware. Rather, they re-
• strong typing rules, sult from special system states during operation, which had
• side effects in expressions, operator precedence, and initial not been considered in the specification or implementation
values, phases of the software. Naturally, programs are immate-
• modularity and structures, rial and, consequently, do not degrade in a similar way
4 W.A. Halang, J. Zalewski / Annual Reviews in Control xxx (2003) xxx–xxx

to hardware components. Software failures, which must enable verifiability of software, we have chosen simplic-
be classified as systematic, are due to errors, mistakes or ity as an appropriate, fundamental and particularly human
omissions in any development life cycle phase. Systematic oriented design concept. The ease with which simple sys-
failures include (IEC, 1998): tems are understood and their clear and distinct behaviour
when executed is a pre-condition to achieve social consen-
• failures due to errors in the safety requirements specifica-
sus which constitutes the essence of verification. The fact
tion, and
that everybody understands an item under consideration im-
• failures due to errors in the design, implementation, etc.
mediately as intended increases the trustworthiness of the
of software.
result. Thus, simplicity is a fundamental feature to increase
Thus, provision against these types of failures should al- the confidence in computer-based systems.
ready have been taken into account in the early phases of If varied pragmatic interpretation is possible or required
system development. due to vagueness or ambiguity of expression, an interpreted
Software has to be valid and correct. The latter means item is not simple. This leads to confusion as, unless specif-
that software has to fulfil a given problem specification, ically prevented, people seldom interpret the same thing in
i.e. it must exclude systematic failures based on program the same way. Conversely, we can conclude that an item of
design, coding, or the use of software tools. Correctness consideration is simple, if its meaning can be taken literally
of software cannot be achieved by testing, reviews, audits, as given and requires no extra cognitive processing effort to
inspections, walkthroughs or other heuristic methods, be- arrive at. Applied to software, a program may be regarded
cause these inherently lack the rigour necessary to be able as simple if it can be verified in a mechanised way. Such a
to detect all errors contained in a program. And, since by mechanised software verification is a complete test, because
definition, correct software meets its specification, estab- it would not require intellectual understanding and can be
lishing software correctness alone is not sufficient. When a carried out by a computer.
program does not behave as expected, often its very specifi- Irrespective of the fact that in reality strict causality is
cation is incorrect, incomplete or inconsistent. Thus, it and often questionable, people usually think in terms of actions
the resulting software cannot be valid. Consequently, to pro- or events and their results, which they tend to perceive as
duce proper software-based systems it is essential to invest causes and effects. Therefore, cause–effect tables or decision
high validation efforts already in the specification phase. tables appear to be highly appropriate as a form of software
Unfortunately, at this stage there are no usability checklists representation oriented at human cognition. This is further
or measures for assessing whether a specification is valid. substantiated by the property that tables are visual means. If
such diagrams of causes and effects are simple and follow
accepted ergonomic standards, everybody will develop the
4. Fostering safety by simplicity same mental model of the operations of the formulated soft-
ware. This cannot be guaranteed if text or words are used for
Although sometimes supported by computerised tools, the programming since people tend to use their idiosyncratic ex-
proof of a program’s correctness depends for its success on perience to interpret them. Hence, visualisation is a conditio
human cognizance. In order to minimise the cognitive ef- sine qua non of interface design supporting shared under-
fort necessary to produce it, and to maximise its trustwor- standing across a varied user population. As they have finite
thiness, it is essential to employ user oriented programming size, cause–effect tables also lend themselves to a complete
concepts. By their very nature, programming languages are test. Because of their more accurate fit to human cognition
human–computer interfaces par excellence. This property is and because the results of complete tests are absolutely sure,
seldom recognised, possibly due to the programmers’ famil- programs thus verified may be permitted to be employed in
iarity with the von Neumann architecture and their acquired automation systems which have to meet the requirements of
comfort with machine oriented interfaces. Object oriented Safety Integrity Level 4.
and visual higher level programming languages have been
developed in parallel with, and reflecting the need for, graph-
ical user interfaces for a wider population of end users. How- 5. Safety integrity levels and inherently safe languages
ever, in order to support the process of system verification
as far as possible, we need to go a step further and develop a Guided by the principle of simplicity, but relaxing the re-
new brand of “subject oriented” rather than “object oriented” quirements gradually, we now define a sequence of program-
programming languages to ensure that programming and ming language subsets for implementing software that has
non-programming system developers and certification licen- to fulfil the demands of Safety Integrity Level 4 through 1.
sors can be given a common ground at the interface.
The assertion that a program is apparently free of soft- 5.1. PEARL 90
ware faults is the major prerequisite for granting a safety
licence by authorised certification institutions. Since every- The textual language PEARL 90 (DIN, 1998) is one of the
body grasps a simple thing instantly and as intended, to very few genuine high level real time languages. Owing to
W.A. Halang, J. Zalewski / Annual Reviews in Control xxx (2003) xxx–xxx 5

its clear concepts and its modular, block oriented structure, integrity level, and that the compiler can help to verify if
PEARL 90 is especially suitable for industrial process con- the programs respect certain safety requirements. The use of
trol applications and is also increasingly used in academia language subsets to implement safety critical systems also
for teaching purposes. Its algorithmic part has approximately allows to mix code of different levels of safety integrity,
the same facilities as Pascal. Additionally, PEARL 90 pro- which enables a seamless connection between safety critical
vides the data types clock an duration and the following and uncritical parts of a system.
statements for task scheduling and control:
5.3. Table PEARL
• activate for task activation,
• terminate for task termination, The subset Table PEARL defined below consists of only
• suspend for temporary blocking of a task, one executable statement allowing the formulation of the
• continue for releasing a suspended task, rules which constitute cause–effect tables. As was already
• resume for the combination of suspend and continue, and pointed out in Section 4, software represented in this form
• prevent for annihilation of all scheduled future activations can be verified with the highest certainty. Therefore, it is
of a task. licensable for applications having to meet Safety Integrity
The above statements are coupled to time related or event Level 4. For the formal definition of this and the other sub-
driven scheduling conditions. The synchronisation mecha- sets we use an extension of the classical Backus Naur form
nism and the protection of shared data in the language are (EBNF), brackets [ ] to denote optional syntactical expres-
based upon a concept of generalised semaphores. Exception sions, as well as the symbols ∗ and + to denote repetition of
handling is founded on internal signals in an unstructured the correspondingly marked expressions at least zero times
manner. PEARL 90 defines a generic input/output concept in or once, respectively.
the form of so-called DATIONs (DATa staTIONs), which
Table PEARL
serve the specification of device topology, data access, con-
trol information etc. module ::= MODULE [var-decl;]∗
[rule;]∗ MODEND;
5.2. Enhancing safety var-decl ::= DCL name : type;
rule ::= IF bool-expression
In the following sections, we offer four nested subsets of THEN variable := expression
PEARL aimed at enhancing the safety of real time control FIN
software, and to be viewed as potential candidates for con-
sideration in this domain. These subsets are associated with 5.4. Verifiable PEARL
the safety integrity levels as follows:
The derivative Verifiable PEARL defined in the follow-
SIL PEARL subset ing table comprises just those language constructs which
are necessary to program in a textual form the intercon-
SIL 1 HI-PEARL nection patterns of Function Block Diagrams, as defined in
SIL 2 Safe PEARL IEC 61131-3 (IEC, 1992); in other words, parameter pass-
SIL 3 Verifiable PEARL ing and procedure invocation. Corresponding programs are
SIL 4 Table PEARL rather easy to verify with rigorous methods of high trust-
worthiness (Halang, Frigeri, Lichtenecker, Steinmann, &
Although the subsets are traditional procedural languages, Wendland, 1998). Hence, they can be certified for Safety
they are simple and subject oriented. Oriented at the ab- Integrity Level 3.
solutely necessary, they comprise the simplest and most
well understood language constructs, only. The four PEARL Verifiable PEARL
90 subsets are becoming progressively restrictive towards
higher safety integrity levels. The assignment of the subsets module ::= MODULE [(name)]
to the different safety integrity levels results from the sim- [problem] MODEND;
plicity and clarity of the verification methods available for problem ::= PROBLEM [proc-spec]∗
the programming paradigms on which the single languages [var-decl]∗ proc-stmt+;
are based. As outlined above, the simplicity of the software proc-spec ::= SPC name : PROC lst-of-par
verification process directly correlates to the trustworthiness return-type; [GLOBAL];
of computerised systems. Basically, the language subsets var-decl ::= DCL name : type;
differ in some “unsafe” language features that are gradually proc-stmt ::= proc-name lst-of-par;
prohibited. The main advantage of this approach is that one lst-of-par ::= (par [,par]∗ )
does not have to learn a different language for each safety par ::= const|var-name
6 W.A. Halang, J. Zalewski / Annual Reviews in Control xxx (2003) xxx–xxx

5.5. Safe PEARL


Safe PEARL
Only in very rare cases all features of high level pro- |conditional
gramming languages are necessary to formulate the func- |for-loop
tionalities required in control engineering. Therefore, in assignment ::= variable := expression
the following table we define an inherently safe language conditional ::= IF bool-expression
subset restricted to those executable statements which are THEN statement-seq
really necessary and, thus, indispensable, viz., procedure [ELSE statement-seq] FIN
calls, assignments, conditional selections, and loops with for-loop ::= FOR variable
bounded numbers of iterations. The correctness of programs [FROM constant]
formulated with this subset can be proven with adequate [BY constant]
tool support by, for instance, higher order logic, which is a TO constant
typified variant of Church’s higher predicate logic. There- REPEAT statement-seq END
fore, this subset qualifies for usage under the conditions
of Safety Integrity Level 2. The attribute READ within the
declaration of an interface variable ensures that other mod-
ules are only permitted to read the declared variable but not 6. HI-PEARL
to write it. Variables, procedures and types are just names
within this language subset. Expressions contain the usual The subset H(igh)I(ntegrity)-PEARL defined in Halang
Boolean and arithmetical operations. and Stoyenko (1993) preserves the obvious advantages
of the original language, but is much more suitable for
implementing safety-related software, especially with re-
Safe PEARL spect to schedulability, since it is verifiable with respect
to its functionality and timeliness. As a consequence,
module ::= MODULE [(name)]
HI-PEARL constitutes a programming language feasible
[mod-extension];
for implementing systems classified as safety related on
[itrfc-spec]∗
SIL 1.
[system-part]
For formulating critical regions, the structured LOCK
problem-part
mechanism, with a time-out clause, is introduced and the
MODEND;
concept of semaphores is removed. The time-out clause en-
mod-extension ::= EXTEND (name [,name]+)
sures that the waiting time before entering a critical re-
itrfc-spec ::= INTERFACE (name)
gion is limited. In case that the lock cannot be carried
itrfc-decl∗ ;
through before this time limit is exceeded, an alternative
itrfc-decl ::= itrfc-var-decl
action takes place. The mentioned time-out clause and the
|itrfc-proc-decl
lock’s execution time limit enable the determination of an
itrfc-var-decl ::= SPC name : type READ;
upper time execution limit for each lock statement at com-
itrfc-proc-decl ::= SPC name : PROC
pile time. To ensure that no synchronisation or input/output
lst-of-par return-type;
operation takes arbitrarily long—in case multiple processes
system-part ::= SYSTEM;
claim a shared resource—shared objects may only be ref-
name : name;
erenced within the framework of a LOCK statement. To
problem-part ::= PROBLEM;
prevent the formation of arbitrarily long cascades of ex-
[declarations]+
ceptions and interrupts, with each exception specification a
declarations ::= var-decl
constant value is associated, bounding the number of oc-
|proc-decl
currences and the time for handling the exception within
var-decl ::= DCL name : type;
one single activation of the process provoking it. The mini-
proc-decl ::= name : PROC
mum time period between two interrupt signals on one line
lst-of-par return-type;
equivalent to the maximum frequency of the interrupt sig-
body
nal has to be stated in the interrupt’s specification. To dis-
END;
able iterations that prohibit an analysis of schedulability
lst-of-par ::= (par-decl[, par-decl]∗ )
of programs and, hence, lead to undeterministic behaviour
par-decl ::= name : type
WHILE and REPEAT loops are removed. Instead, iter-
body ::= [var-decl]+
ation statements have to explicitly specify their execution
[statement-seq]
times and the maximum number of repetitions. The GOTO
statement-seq ::= [statement;]∗
statement which is unsuitable for structured programming
statement ::= (statement-seq)
as well as directly or indirectly recursive procedure calls are
|assignment
banned.
W.A. Halang, J. Zalewski / Annual Reviews in Control xxx (2003) xxx–xxx 7

7. Conclusion References

Despite the existence of standards like IEC 61508-1 or Barnes, J. (2003). High Integrity Software: The SPARK approach to safety
and security. Boston: Addison-Wesley.
DIN V VDE 0801, software-based systems are still con-
Burns, A., Dobbings, B. J., & Vardanega, T. (2003). Guide for the
sidered to be less trustworthy than conventional hardwired use of Ada Ravenscar Profile in high integrity systems. Report
components, which is justified in part by the longer tradition YCS-2003-348. Department of Computer Science, University of York.
of hardware engineering and many years of experience in Carré, B., & Garnsworthy, J. (1990). SPARK—an annotated Ada subset
the development of strategies for coping with corresponding for safety-critical applications. In: Proceedings of the 1990 TRI-Ada
conference (pp. 392–402).
failures. This situation is due to
Cullyer, W. J. Goodenough, S. J. Wichmann, B. A. (1991). The choice
of computer languages for use in safety-critical systems. Software
• the standards being unclear about the characteris- Engineering Journal, 6(2), 51–58.
tics of environments for safety critical programming, DIN V VDE 0801. (1995). Grundsätze für Rechner in Systemen mit
and Sicherheitsaufgaben. Berlin: Beuth Verlag.
DIN 66 253-2. (1998). Programmiersprache PEARL 90. Berlin: Beuth
• no programming language (and related programming en-
Verlag.
vironment) based on these guidelines being available. Halang, W. A., Frigeri, A. H., Lichtenecker, R., Steinmann U., & Wend-
land, K. (1998). Methodenlehre sicherheitsgerichteter Echtzeitpro-
To overcome this situation, a dedicated subset of PEARL grammierung. Schriftenreihe der Bundesanstalt für Arbeitsschutz und
90 has been proposed for each of the four safety integrity Arbeitsmedizin—Forschung—Fb 813. Bremerhaven, Verlag für neue
Wissenschaft.
levels defined in IEC 61508-1, following the principle of
Halang, W. A. Stoyenko, A. D. (1993). Extending Pearl for industrial
simplicity: the more safety critical a system is, the more real-time applications. IEEE Software, 10(4), 65–74.
simple the related control software needs to be. Accord- Hatton, L. (1995). Safer C: Developing software for high-integrity and
ingly, on the highest Safety Integrity Level (SIL 4) the safety-critical systems. London: McGraw-Hill.
safety/integrity of a “software” system can be verified just Hecht, H., et al. (1996). Review guidelines on software languages for
use in nuclear power plant safety systems. Report NUREG/CR-6463.
by looking at a Cause Effect Table, i.e. without employ-
Washington, DC: Nuclear Regulatory Commission.
ing formal proofs. Control software for SIL 3 systems can IEC 880. (1986). Software for computers in safety systems of nuclear
be graphically constructed, based on already proven func- power stations. Geneva: International Electrotechnical Commission.
tion blocks. This will simplify the process of software de- IEC 61131-3. (1992). Programmable controllers. Part 3: Programming
velopment as compared to textual languages and still keep languages. Geneva: International Electrotechnical Commission.
IEC 61508-1. (1998). Functional safety of electrical/electronic/program-
the task of safety proofs relatively easy. Programs writ-
mable electronic systems:generic aspects—Part 1: General require-
ten in the subset for SIL 2 have the main advantage of ments. Geneva: International Electrotechnical Commission.
being formally verifiable. Finally, the subset HI-PEARL ISO/IEC. (2000). Guide for the use of the Ada programming language in
for the lowest Safety Integrity Level (SIL 1) can be eas- high integrity systems. Technical Report ISO/IEC TR 15924, Geneva.
ily analysed for schedulability, which is assured by elimi- Kwon, J., Wellings, A., & King, S. (2002). Assessment of the Java
programming language for use in high integrity systems. Report
nating some “unsafe” language constructs such as GOTO,
YCS-2002-341. Department of Computer Science, University of York.
WHILE and REPEAT. Although they are not as simple as Lindner, A. (1998). ANSI-C in safety critical applications: Lessons learned
the subset for SIL 2, HI-PEARL programs are verifiable as from software evaluation. In: W. Ehrenberger (Ed. ), Proceedings
well. of SAFECOMP’98. Lecture notes in computer science 1516 (pp.
However, much more important than the technical details 209–217). Berlin–Heidelberg–New York: Springer-Verlag.
Motor Industry Software Reliability Association (MISRA). (1998). Guide-
mentioned above is the realisation of the important rôle
lines for the use of the C language in vehicle based software. Nuneaton,
the human component plays in the process of engineer- Warwickshire.
ing safe computerised systems, which can and will lead British Ministry of Defence (MOD). (1991). Interim Defence Standard
to future research. In this paper we have drawn attention 00-55: The procurement of safety critical software in defence equip-
to the fact that programming languages are best perceived ment.
RTCA/DO-178B. (1992). Software considerations in airborne systems and
as human–computer interfaces which are subject to er-
equipment certification (www. rtca. org)
gonomic principles that need to be followed in design of Schlichting, R. D. Thomas, V. T. (1995). Programming language support
end user interfaces. We suggested, therefore, that higher for writing fault-tolerant distributed software. IEEE Transactions on
level programming languages ought to be “subject” (i.e. Computers, 44(2), 203–212.
human user) rather than “object” (i.e. system) oriented. We Wichmann, B. A. (1992). Requirements for programming languages
in safety and security software standards. Computer Standards and
have identified simplicity as a fundamental design princi-
Interfaces, 14, 433–441.
ple for programming languages, fostering human cognitive Wichmann, B. A. (1994). Contribution of standard programming lan-
performance and, thus, safety. guages to software quality. Software Engineering Journal, 9(1), 3–12.

You might also like