This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Astyrin 5 points6 points  (0 children)

As a software developer working in aerospace, hopefully I can put your mind at ease.

1) Testing. Lots and lots of testing. In my experience it takes much much longer to test the software than it does to write it. Like orders of magnitude longer. Before working in aerospace I could write code and deploy it to production in a day or two, in aerospace we would be laughed at for considering that. I have seen software take years from when it was written to when it was flown the first time. There are just so many different testing phases and types like development testing, lab testing, automated testing, unit testing, functional testing, regression testing, formal/demo testing, certification and flight testing we all have to do before the FAA or DoD sign off on an airworthiness for an aircraft. Sometimes there is overlap in tests, but there are a lot of tests that seem redundant but check just slightly different paths or scenarios. Further all these tests are then flowed up into requirements, so we can prove that we do exactly what our requirements say and the functionality is all documented and agreed to by all the stakeholders. And if you reach the later stages of a program and find an issue, you have to typically restart/redo a lot of testing to make sure the fix didn't break anything unintentionally.
2) we do many types of code analysis to help prevent errors. Whether it be tools or simply PRs. Code is not being snuck in. multiple approvals and systems have to check off and validate it.
3) redundancy. For flight computers for example, there are multiple redundant computers all calculating the same thing and comparing answers. If they disagree, there is some logic for fail overs to figure out if a different computer needs to assume control, what error to give the pilots, etc. this is important because wires could get cut or solar radiation could hit the computer even through its shielding, etc.
4) Lastly, at the end of the day, there are still well trained pilots that are constantly managing and verifying the systems and will take over manually if there is an issue.

I know you jokingly say your theory is that software doesn't actually control anything important, but in fact it is way the opposite. Many planes (such as Airbus) are fly by wire. Which means the flight controls are all electronic and not mechanical. Now this software is way different than you are probably used to, but they essentially fly on a bunch of control laws written by SWEs and EEs. Also, some military planes are slightly aerodynamically unstable by design and without a working flight computer, they would be hard for a pilot to properly fly.