Mike Feldman asked > Is the flight-deck instrument panel in a 777 a GUI?
Is it a real-time embedded system?
Asking about complicated systems, the best answer is probably that
there is a separable user interface and several embedded systems in a 777.
One of the reasons for the user interface to be separable in any complex
system is that the user interface is the most common place for
failures to occur. That is where the dynamic allocation of variable
length objects takes place (pictures and character strings). That is
where the hanging pointers and memory leaks occur.
One of the biggest mistakes is to build a complex system with a gui and
tightly couple that gui to the real-time embedded systems that it controls.
If you did that in the pilot station in an airplane, and then the flight-deck
instrument panel gui got a memory leakage error which blocked the
icons from functioning, then the plane could crash.
This principle was taught in the 1950s in FORTRAN classes: completely
separate all backend and all I/O functions from the user conversation
part of the program. And have emergency plan B interfaces available when
the gui runs off the end of a hanging pointer and therefore hangs the mouse.
I have heard that non-DOS users experience these mouse hangs occasionally.
My Ada DOS development environment has produced tens of thousands of lines
of working code, and has NEVER hung a mouse. Of course, there is no
mouse on my DOS Pentium II at home where this work was done!
If Microsoft Word can hang the mouse, with 3.6 gazillion users and 7.0
kilo-releases, and 4.2 jillion dollars in software maintenance,
how much more so must we be careful to NEVER let a gui control a
realtime embedded system, except through loosly coupled command streams
emulatable by at least one other user interface completely independent
of the gui.