comp.lang.ada
 help / color / mirror / Atom feed
From: tranngocduong@gmail.com
Subject: Re: Boeing 737 and 737 MAX software
Date: Thu, 18 Apr 2019 09:21:51 -0700 (PDT)
Date: 2019-04-18T09:21:51-07:00	[thread overview]
Message-ID: <70d7f427-ddce-4ec0-aba3-99edab0780bc@googlegroups.com> (raw)
In-Reply-To: <ghrifuFssqbU1@mid.individual.net>

On Thursday, April 18, 2019 at 10:13:05 PM UTC+7, Niklas Holsti wrote:

> The descriptions of the MCAS system that I have seen say quite clearly 
> that it used only one of the two AoA sensors mounted on the aircraft 
> (and that this single-sensor design is unacceptable for a flight-control 
> system that ended up with this level of authority and criticality).
> 
> I have not seen any statement about other standard SW that would be able 
> to flag an AoA sensor as faulty. There was an optional addition that 
> could do it, not mounted on the planes that crashed. The whole MCAS 
> system was an add-on and perhaps for that reason not well integrated 
> with the rest of the flight SW (this is speculation on my part).
> 
The optional "AoA disagree" indicator is just a surface issue. I've seen a couple of analysis stating that it is really not very helpful. To my limited knowledge, AoA is a critical parameter that is used by many flight control algorithms, not just the MCAS. The real issue is thus the failure to detect an unreliable sensor. If the failure was a "feature, not bug", the entire flight software (and its certificate) would be questioned.

> > a) Ada was used but programmers have chosen a wrong (too relaxed)
> > subtype, or other language was used and programmers failed to code
> > whatever equivalent to raising and handling a CONSTRAINT_ERROR.
> > Simply: software bug.
> >
> > b) Contrary to general belief, the software was not programmed with
> > multiple redundant computation. Simply: process failure.
> >
> > I chose to believe a).
> 
>  From the descriptions I have read, it is clear (to me) that (b) was the 
> case, at least that MCAS used a single AoA sensor and there was no 
> cross-check against the other AoA sensor or other sensors or 
> computations. Moreover, the descriptions of the planned correction to 
> the 737 MAX focus on using both AoA sensors and warning the pilots if 
> they disagree, which is coherent with (b) but not with (a).
> 
If b) was the case, not only the software, but the entire process would be questioned. A bug would take weeks or months to fix. A software would take years to re-engineer. A process would take decades to develop. Would Boeing as a company risk its very existence by comiting such a big mistake? I don't think so.

> On the issue of Ada subtypes, it seems to me that if the SW 
> specification, design and coding considers sensor faults (as it of 
> course should), the normal approach for such critical SW is _not_ to use 
> strongly constrained subtypes and rely on Constraint_Error handling. The 
> normal approach is to add explicit and specific range checks and 
> sensor/computation cross-checks. That would be much easier to specify 
> and test, and would also make it much easier to identify the faulty 
> sensor(s) and to handle such situations properly.
> 
> -- 
> Niklas Holsti
> Tidorum Ltd

I know. SPARK and ParaSail do not allow exceptions for a reason. But because the MCAS was [mistakenly] classified as a non-critical component, programmers may choose to use less formal/rigorous methodology, which give rise for constraints and exceptions if Ada was selected.

  reply	other threads:[~2019-04-18 16:21 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-05 21:16 Boeing 737 and 737 MAX software Paul Rubin
2019-04-06  1:16 ` Jere
2019-04-06 19:05   ` Paul Rubin
2019-04-18 22:04   ` Paul Rubin
2019-04-19  9:13     ` tranngocduong
2019-04-06 17:30 ` Dennis Lee Bieber
2019-04-06 18:45   ` Niklas Holsti
2019-06-28 23:45   ` Paul Rubin
2019-06-29  2:52     ` Dennis Lee Bieber
2019-06-29  3:38       ` Paul Rubin
2019-06-29 16:29         ` Dennis Lee Bieber
2019-08-07  6:06     ` robin.vowels
2019-11-08  1:12   ` Paul Rubin
2019-11-08 15:32     ` Dennis Lee Bieber
2019-11-18 11:16     ` robin.vowels
2019-11-18 15:32       ` Optikos
2019-04-12  7:46 ` tranngocduong
2019-04-12 22:15   ` Dennis Lee Bieber
2019-04-17 17:27   ` Maciej Sobczak
2019-04-18  9:45     ` tranngocduong
2019-04-18 12:44       ` Maciej Sobczak
2019-04-18 13:53         ` tranngocduong
2019-04-18 15:13           ` Niklas Holsti
2019-04-18 16:21             ` tranngocduong [this message]
2019-04-18 18:20               ` Niklas Holsti
2019-04-20  0:29                 ` tranngocduong
2019-04-18 20:36               ` Randy Brukardt
2019-04-18 20:51                 ` Paul Rubin
2019-04-18 20:20             ` Paul Rubin
2019-04-18 16:39           ` Dennis Lee Bieber
2019-04-19  2:39             ` Dennis Lee Bieber
2019-04-22 19:36             ` Norman Worth
2019-04-28 18:27               ` russ lyttle
2019-04-18 13:50   ` Simon Wright
2019-04-18 15:07     ` tranngocduong
2019-05-05 14:29 ` robin.vowels
2019-05-06 13:54   ` robin.vowels
2019-05-06 15:12     ` Dennis Lee Bieber
2019-08-07  5:51   ` robin.vowels
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox