Safer language subsets: an overview and a case history, MISRA C

Abstract This paper gives an overview of safer language subsets in general and considers one widely-used one, MISRA C, in particular. The rationale, specification, implementation and enforcement of a safer language subset each introduce particular problems which has led to their inconsistent take-up over the years even in applications which may be safety-related and definitely need subset restrictions. Each of these areas will be discussed illustrating practical problems which may be encountered with standards in general before focussing on the widely used MISRA C standard [MISRA C guidelines (1998)]. The approach taken is necessarily empirical and where it is able quotes measurements. The real objective of this paper is to produce an empirically based taxonomy of programming language subset rules to bring all these issues together and promote the concept that a safer subset must be based on measurement principles however crudely they are practised currently in software development. The concept of signal to noise ratio of a programming standard is also introduced.