Technical Excellence Initiative

NASA Study on Flight Software Complexity

Complex software is used to depict the flowfield around the Space Shuttle Launch Vehicle

NASA uses computational fluid dynamics software for solving complex flow problems. This image resulted from computing the flowfield around the Space Shuttle Launch Vehicle — to study the air loads acting on the vehicle due to several design changes and the potential impacts from any debris that might be shed during a Shuttle ascent. Image Credit: NASA

In 2007 the NASA Office of Chief Engineer commissioned a multi-Center study of the growth in flight software size and complexity in NASA space missions. The study was motivated by problems attributed to flight software in a variety of missions — in pre-launch activities and mission operations — and concerns that such problems were growing with the expanding role of flight software.

While advances in computer hardware have readily accommodated this expansion by providing faster processors and increased memory, it is believed that software engineering and management approaches have not kept pace. Problems with flight software have serious technical, operations, and management implications for space flight missions.

The study was chartered to bring forth technical and managerial strategies to address risks associated with the growth in size and complexity of flight software in NASA's space missions. The study addresses many motivating questions, such as:
  • How big is flight software and how fast is it growing?
  • What are the causes of growth?
  • Is there unnecessary growth and how can it be curtailed?
  • Why is fault protection software so difficult?
  • When growth is necessary, what are effective strategies for dealing with it?
  • How can we ensure adequate testing of complex flight systems?
The study was directed to examine four areas of special interest:
  • Provide a clear exposé of the growth in NASA flight software size and complexity. Describe long-term trends, how the trade space has changed, root causes, problems encountered, benefits gained, and lessons learned.
  • How can unnecessary growth in complexity be curtailed? How can necessary growth in complexity be better engineered and managed? Are there effective strategies to make smart trades in selecting and rejecting requirements for inclusion in flight software to keep systems lean? When growth in complexity and software size are necessary, what are the successful strategies for effectively dealing with it?
  • Fault protection logic accounts for a sizable portion of flight system software — Are there techniques that effectively manage the complexity of fault protection systems?
  • Investigate the challenge of testing complex logic for appropriate safety and fault protection provisions. Recent mission delays and the loss of a key spacecraft have been attributed to inadequate testing of complex flight software systems. How can this situation be prevented in the future?
+ Download the NASA Study on Flight Software Complexity (PDF)