DrWSpahny

NASAs view on how to handle embedded real-time software complexity

A study from 2007 still valid

NASAs study from 2007 [1]

In 2009, after having suffered from various challenges on robustness of flight control systems, NASA started an investigation to study “the factors that have led to the accelerating growth in flight software size and complexity”.

14 years later embedded real-time software are omnipresent in a wide range of industries far beyond space. New software and development approaches have been brought in to help engineers not just “rocket scientist” to address the challenge. But principles are still the same, and even today difficult to fulfill. NASAs report is summarizing well, what to consider, and how to master increase in (over)complexity.

It utilises a very practical definition of complexity “how hard something is to understand or verify.”. Which summarizes nicely the human and technology aspect, as “to understand”, “to verify” can always mean two things the teams needs more help and guidance, or the system is per se complex. Maybe too complex for the team or its size to handle.

It provides a workable approach for distinguishing “complexity from essential functionality, which comes from vetted requirements and is therefore unavoidable, and incidental complexity” that needs to be reduced.

Recommendations on team development, uncoordinated local decisions, trade(off) analysis, requirements management, good software architecture, doing workarounds versus fixing, fault management software, working on platforms, using components off the shelve, addressing residual errors are as fresh as of today as they were 15 years ago, and have to be seen under cultural aspects, not just technological ones.

From nasa2007? :

Some of the recommendations summarized above are common sense but aren’t common practice. We identified four cultural reasons for the current state.

Over the years, I have seen very similar issues arise in the networking industry. I think it applies to real-time software activities in general. The size of the team may change the way you approach it, but it does not take away the challenge. The success of initially small private space startups tackling even higher complexity shows us the importance of managing (over)complexity to achieve success.

References

[1]
D. Dvorak, “NASA study on flight software complexity,” AIAA Infotech at Aerospace Conference and Exhibit and AIAA Unmanned...Unlimited Conference, Apr. 2009, doi: 10.2514/6.2009-1882.