Re: [SystemSafety] Degraded software performance [diverged from Fault, Failure and Reliability Again]

From: DREW Rae < >
Date: Thu, 5 Mar 2015 09:41:02 +0000

Your argument has suddenly jumped from "software is deterministic" to "one particular piece of software, after a huge amount of work, was shown to be deterministic". Don't you see that you've provided a direct counter-argument to your own original position? And you still have to deal with the fact that "deterministic" is not the same thing as "has known behaviour". "Deterministic" is a specific case of conditional probability. Unless you also know the environment and the inputs to be fixed, it's just playing games with words. And your subtle jump from claiming that "the software is determinstic" to "the software, and the system" is exactly why this sort of thinking leads to gaps in assurance between the software and the system. Formal verification of the software says very little about whether the system is deterministic.

Depending on what you define software as, saying that software doesn't fail is either true, but not meaningful, or meaningful, but not true.

My safety podcast:
My mobile (from October 6th): 0450 161 361

On 5 March 2015 at 09:21, Nick Tudor <njt_at_xxxxxx

> Hi Drew
> So the software in each case executes completely deterministically; the
> computers are not identical.
> Following on from this and to respond to an earlier input by Peter
> regarding the paper by Kevin Driscoll. I didn't attend SAFECOMP 2003, but
> I did see him present "Beware the Byzantine Generals" at a DASC conference
> probably in 2002. This was an attempt to question the safety of the flight
> control software developed by the then Ferranti chaps at Rochester in
> Kent. NB Honeywell were very annoyed at not getting the contract and were
> trying to lobby to get the 787 contract - which they eventually did, but
> not because of the reasons discussed here. I was in a position at the time
> where I was also working on software for the Eurofighter which included
> aspects of the FCS and hence had access to the same team. I was allowed to
> see the private material between them and the CAA/FAA as part of the
> certification process which addressed the issues raised subsequently by
> Kevin. This is turn addresses the 'fun' outlined by you (NB I think we
> have a common path in our education - could be wrong...).
> The Eurofighter FCS is based upon 4 independently operating computers with
> voter logic; you may wish to think of them as threads and, guess what, they
> too given the same inputs have different outputs, but are clocked by their
> own internal systems. Not only was the software intensely verified by the
> manufacturers, but was independently verified by the team I joined in 2003
> using formal techniques based upon Z. We also looked at the timing aspects
> based upon CSP. There are published talks, not necessarily papers, on the
> outcome. The software would not have been certified if we had not done the
> independent work which showed that the software and the system was
> deterministic.
> My case is rested.
> Nick Tudor
> Tudor Associates Ltd
> Mobile: +44(0)7412 074654
> *77 Barnards Green Road*
> *Malvern*
> *Worcestershire*
> *WR14 3LR*
> *Company No. 07642673*
> *VAT No:116495996*
> * <>*
> On 4 March 2015 at 21:19, DREW Rae <d.rae_at_xxxxxx >
>> Nick,
>> You can't have learned software at a very fun school if they didn't teach
>> you how to write programs that give different outputs for the same set of
>> inputs without using a random number generator.
>> Here's one:
>> 1. Write a multi-threaded function without proper exclusion or alternate
>> protection against thread interference
>> 2. Put it inside a loop with a voter function outside which returns the
>> most common returned value from the original function
>> 3. Compile the executable, and run it on a lab full of "identical"
>> computers
>> 4. Watch as each computer _consistently_ returns the same value, but the
>> values aren't the same between the identical computers. Record which
>> computer returns which value.
>> 5. Turn the computers off, and wait 24 hours
>> 6. Turn the computers on again, and observe that the set of computers
>> returning each value has changed
>> The point is not that every part of the context is in fact an "input"
>> into the performance of the software. The point is that the probability
>> you're talking about is the _conditional_ probability of a particular
>> output given a particular context. That conditional probability is useless
>> for any practical purpose. What is relevant is the _actual_ probability
>> distribution. By the time you've stripped the software away from everything
>> that causes variability in the output, you've ignored most of the computer
>> system. The small remnant that you're calling "software" is of interest to
>> the sort of computer scientist who never actually writes or runs software.
>> (That sort of computer science is a legitimate field of mathematics, but
>> like most mathematics there's a long lead time between current work and
>> relevance to practical engineering).
>> Drew
>> My safety podcast:
>> My mobile (from October 6th): 0450 161 361
>> On 4 March 2015 at 18:23, Nick Tudor <njt_at_xxxxxx >>
>>> Hi Drew
>>> This is thread is getting hard to follow- let alone on a phone on a
>>> train in the middle of rural England so I apologise if I misinterpreted
>>> some of your intent. You can now tick off 'apology '[image: πŸ˜€]
>>> You make some good points but the nub of this argument is whether one
>>> can attribute a reliability to software as a component in a system and if
>>> so how? I and others have yet to see any argument to support this belief.
>>> To follow on from that and to address one of your points, if it is
>>> stated that inputs affect the outputs I would of course agree. What the
>>> effect is will be entirely deterministic and have no random element; at
>>> least this is what I learned at school. The probability of an error in the
>>> software causing a system fault is therefore either zero (it wasn't
>>> triggered by the inputs) or one (it was triggered and will ALWAYS do the
>>> same thing with the same inputs).
>>> Cheers
>>> On Wednesday, 4 March 2015, DREW Rae <d.rae_at_xxxxxx >>>
>>>> Nick,
>>>> I think you've reversed the point I was making, and then disagreed with
>>>> the opposite of what I was saying. What I really should have done is used
>>>> "computer system reliability" and refused to buy into the hardware/software
>>>> demarkation issue.
>>>> I disagree with claiming software rates for software regardless of
>>>> whether they are carefully concocted statistical estimates, or "software
>>>> doesn't fail". BOTH rely on making some arbitrary distinction between what
>>>> is software, and what is hardware. Whoever makes that distinction,
>>>> where-ever they make it, has an obligation to state clear assumptions about
>>>> the other side of the distinction, and have grounds for believing those
>>>> assumptions to be realistic.
>>>> You want to say that each of my failure modes for software "is a
>>>> hardware issue". Fine. But you don't want to make claims for software
>>>> reliability either. If you're not going to make a claim for reliability,
>>>> any distinction between software and hardware you want to create is fine by
>>>> me. Anyone who wants to claim either hardware or software reliability
>>>> though, and also wants to make a distinction between "software issues" and
>>>> "hardware issues", needs to consider both sides of the distinction.
>>>> If someone wants to say "the processor that the software runs on is not
>>>> software", then their standard needs to specifically address how they'll
>>>> make sure that your software requirements consider the aging of the
>>>> processor. If they want to say that changes in the input profile for the
>>>> software are not a software issue, then they need to go back to software
>>>> engineering school, because there's no universe in which a changed pattern
>>>> of inputs does not change the probability of an incorrect output.
>>>> On the plus side, if you'll let me characterise your message as a
>>>> strawman (instead of an honest misinterpretation of intent, which I'm sure
>>>> it was) I can complete my mailing list fallacy bingo card. We've already
>>>> had arguments from antiquity, argument from authority, "is" equals "ought",
>>>> equivocation, false equivalence, and not understanding the difference
>>>> between false and falsifiable. I don't think we've had anyone blatantly
>>>> misrepresent anyone else's position though.
>>>> Drew
>>>> My safety podcast:
>>>> My mobile (from October 6th): 0450 161 361
>>>> On 4 March 2015 at 16:25, Nick Tudor <njt_at_xxxxxx >>>>
>>>>> In line responses Andrew:
>>>>> On Wednesday, 4 March 2015, DREW Rae <d.rae_at_xxxxxx >>>>>
>>>>>> Michael,
>>>>>> I need to give more than one example, because the point is general,
>>>>>> rather than specific to the individual causes. In each case the cumulative
>>>>>> probability of software failure increases over time.
>>>>> >>if you can determine the wear out mechanism for software I would
>>>>> agree, but you can't, so I don't.
>>>>> 1) Damage to the instruction set
>>>>>> e.g. the physical record of the instructions on a storage medium
>>>>>> changes
>>>>>> very specific e.g. bit flip on a magnetic storage device holding the
>>>>>> executable files
>>>>>> >>this is a hardware issue.
>>>>>> 2) Increased unreliability of the physical execution environment
>>>>>> e.g. an increased rate of processor errors
>>>>>> very specific e.g. dust accumulates on part of the processor card,
>>>>>> making it run hot and produce calculation errors
>>>>>> >> this too is hardware.
>>>>>> 3) Increased unreliability of input hardware
>>>>>> e.g. software is required to detect and respond correctly to an
>>>>>> increased rate and variety of sensor failure combinations
>>>>>> Note: This is the one that challenges "but we're running the software
>>>>>> in exactly the same hardware environment". Hardware environments change as
>>>>>> they get older.
>>>>>> >>ditto
>>>>>> 4) Software accumulates information during runtime
>>>>>> e.g. a count of elapsed time
>>>>>> e.g. increasing volume of stored data
>>>>>> e.g. memory leak
>>>>>> >>bad requirements or/and bad verification.
>>>>>> NB1: In all of these cases I've heard arguments "that's not the
>>>>>> software, that's X". Those arguments are only relevant if you can control
>>>>>> for X when collecting data for software reliability calculation. Software
>>>>>> without an execution environment is a design. It "never fails" in the way
>>>>>> that _no_ design fails. When it does fail, it is subject to the same
>>>>>> degredation over time as any physical implementation
>>>>> >> there is no such thing as software reliability so don't use maths
>>>>> (or rather statistics and claim they are maths) inappropriately.
>>>>>> NB2: I'm not claiming that failure due to physical degredation is
>>>>>> significant compared to failure due to errors in the original instructions.
>>>>>> I'm saying that we don't know, and that not knowing becomes a big issue
>>>>>> once we've tested to the point of not finding errors in the original
>>>>>> instructions. At that point, absent evidence to the contrary, we should be
>>>>>> assuming that physical degredation is signficant.
>>>>>> >>. No one (I hope) denies that hardware effects may influence
>>>>>> software calculations. Still doesn't mean that the maths, er Statistics are
>>>>>> the right tool for the job.
>>>>>> Drew
>>>>>> On 4 March 2015 at 12:27, Michael J. Pont <M.Pont_at_xxxxxx >>>>>>
>>>>>>> Drew,
>>>>>>> β€œThe underlying point holds, that software _can_ exhibit degraded
>>>>>>> performance over time.”
>>>>>>> Can you please give me a simple example of what you mean by this.
>>>>>>> Thanks,
>>>>>>> Michael.
>>>>>>> _______________________________________________
>>>>>>> The System Safety Mailing List
>>>>>>> systemsafety_at_xxxxxx >>>>>>>
>>>>> --
>>>>> Nick Tudor
>>>>> Tudor Associates Ltd
>>>>> Mobile: +44(0)7412 074654
>>>>> *77 Barnards Green Road*
>>>>> *Malvern*
>>>>> *Worcestershire*
>>>>> *WR14 3LR*
>>>>> *Company No. 07642673*
>>>>> *VAT No:116495996*
>>>>> *
>>>>> <>*
>>> --
>>> Nick Tudor
>>> Tudor Associates Ltd
>>> Mobile: +44(0)7412 074654
>>> *77 Barnards Green Road*
>>> *Malvern*
>>> *Worcestershire*
>>> *WR14 3LR*
>>> *Company No. 07642673*
>>> *VAT No:116495996*
>>> *
>>> <>*

The System Safety Mailing List
systemsafety_at_xxxxxx Received on Thu Mar 05 2015 - 10:41:34 CET

This archive was generated by hypermail 2.3.0 : Tue Jun 04 2019 - 21:17:07 CEST