|
|
|
|
|
by tjr
5348 days ago
|
|
I've worked on avionics flight management systems. We had reams of system requirements, multi-person code reviews for every line of code in the product, formal verification runs, system integration testing, field testing... The compilers used were qualified for our use. All libraries used were qualified. All operating system components used in the product were qualified. Internal tools that automated any part of the process were qualified. I'm not sure what your criteria is for "mathematical" verification, but I see this sort of work as software engineering. |
|
The other hurdle is that you need the same rigor from your hardware designers. Just as structural engineers must rely on the rigor of steel manufacturers, we are held hostage by hardware manufacturers. Frankly the entire industry needs a wake up call.
As for formal verification, it is the mathematical proof (in the pure sense) that a program behaves exactly as speced -- the specification must also be formally verified for consistency. Currently this is only possible on relatively small programs, with the largest being several compiler back-ends being verified.
Here's a paper on what it took to formally verify the seL4 micro-kernel: http://www.sigops.org/sosp/sosp09/papers/klein-sosp09.pdf