[SystemSafety] Safety and programming languages
Daniel Kästner
kaestner at absint.com
Thu Mar 17 09:26:20 CET 2022
"Undecidable" means that there is no algorithm which can give a precise
yes/no answer in every possible case. It does not mean you cannot prove the
property. If you have a sound analyzer which does not report uninitialized
variable accesses there are none. Unless there is a failure in the tool -
which is why safety norms require tool qualification. In a sense, the
purpose of a tool like Astrée is to check Rule 1.3. without false negatives.
Best regards,
Daniel.
---
Dr.-Ing. Daniel
Kaestner --------------------------------------------------------------------
AbsInt Angewandte Informatik GmbH Email: kaestner at AbsInt.com
Science Park 1 Tel:
+49-681-3836028
66123 Saarbruecken Fax:
+49-681-3836020
GERMANY
<http://www.absint.com/> http://www.AbsInt.com
----------------------------------------------------------------------------------------------------
Geschaeftsfuehrung: Dr.-Ing. Christian Ferdinand
Eingetragen im Handelsregister des Amtsgerichts Saarbruecken, HRB 11234
Von: systemsafety <systemsafety-bounces at lists.techfak.uni-bielefeld.de> Im
Auftrag von Roderick Chapman
Gesendet: Mittwoch, 16. März 2022 14:22
An: systemsafety at lists.techfak.uni-bielefeld.de
Betreff: Re: [SystemSafety] Safety and programming languages
On 16/03/2022 12:56, David Ward wrote:
Specifically
* “System” is there because some guidelines can’t be checked at the
software unit (or equivalent) level alone e.g. the one about recursions
* “Undecidable” is there because compliance to some guidelines cannot
be demonstrated through static analysis alone and other methods are needed.
I've applied a more pragmatic interpretation of those terms in the context
of MISRA.
To me...
"System" means "this rule can't be checked on a single-translation unit, so
it requires whole program analysis, which will be slow, and you'll only get
really reliable results when you've finished the program, which is a bit
late..."
"Undecideable" means "This rule is tough to check, so there will some
mixture of false negatives and false positives. Exactly what you get depends
on the whim of your chosen tool vendor..."
I also can't help noticing that all the _really_ important rules in MISRA
are "System" and "Undecideable" - for example rules 1.3, 9.1, 13.2, 17.5 and
17.8 from MISRA 2012. Admitting false negatives for 1.3 ("don't have
undefined behaviour") is particularly nasty, since any missed UB effectively
undermines everything else.
SPARK and Rust both take a very different approach.
- Rod
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.techfak.uni-bielefeld.de/pipermail/systemsafety/attachments/20220317/0d2edc76/attachment.html>
More information about the systemsafety
mailing list