NASA Study on Flight Software Complexity
Total Page:16
File Type:pdf, Size:1020Kb
Final Report NASA Study on Flight Software Complexity Commissioned by the NASA Office of Chief Engineer Technical Excellence Program Adam West, Program Manager “The demand for complex hardware/software systems has increased more rapidly than the ability to design, implement, test, and maintain them. … It is the integrating potential of software that has allowed designers to contemplate more ambitious systems encompassing a broader and more multidisciplinary scope, and it is the growth in utilization of software components that is largely responsible for the high overall complexity of many system designs.” Michael Lyu Handbook of Software Reliability Engineering, 1996 “While technology can change quickly, getting your people to change takes a great deal longer. That is why the people- intensive job of developing software has had essentially the same problems for over 40 years. It is also why, unless you do something, the situation won’t improve by itself. In fact, current trends suggest that your future products will use more software and be more complex than those of today. This means that more of your people will work on software and that their work will be harder to track and more difficult to manage. Unless you make some changes in the way your software work is done, your current problems will likely get much worse.” Watts Humphrey Winning with Software: An Executive Strategy, 2001 Editor: Daniel L. Dvorak Systems and Software Division Jet Propulsion Laboratory California Institute of Technology Flight Software Complexity Contents EXECUTIVE SUMMARY .............................................................................................................1 1 INTRODUCTION ....................................................................................................................4 1.1 Origins and Objectives ................................................................................................4 1.2 Work Description ........................................................................................................4 1.3 Organization of Report ...............................................................................................6 1.4 Participants ..................................................................................................................7 1.5 Acknowledgements ...................................................................................................11 2 FINDINGS AND RECOMMENDATIONS ..........................................................................13 2.1 Raise Awareness of Downstream Complexity .........................................................13 2.2 Emphasize Requirements Rationale .........................................................................14 2.3 Emphasize Trade Studies ..........................................................................................15 2.4 More Early Analysis and Architecting .....................................................................16 2.5 Establish Architecture Reviews ................................................................................17 2.6 Nurture Software Architects .....................................................................................18 2.7 Involve Operations Engineers Early and Often ........................................................19 2.8 COTS Software: A Mixed Blessing ..........................................................................20 2.9 Invest in Reference Architecture ..............................................................................21 2.10 Stimulate Technology Infusion .................................................................................21 2.11 Apply Static Analysis Tools and Code Compliance Checkers .................................22 2.12 Standardize Fault Protection Terminology ...............................................................22 2.13 Establish Fault Protection Proposal Review .............................................................23 2.14 Develop Fault Protection Education .........................................................................23 2.15 Research Fault Containment Techniques..................................................................24 2.16 Collect and Use Software Metrics ............................................................................24 3 FLIGHT SOFTWARE GROWTH .........................................................................................26 3.1 Flight Software Described ........................................................................................26 3.2 Growth of NASA Flight Software ............................................................................27 3.3 Growth of Embedded Systems Software ..................................................................30 3.4 Sources of Growth ....................................................................................................31 3.5 A Caution about Software Size Metrics....................................................................32 4 FLIGHT SOFTWARE COMPLEXITY ................................................................................33 4.1 Complexity Described ..............................................................................................33 4.2 Complexity through the Lifecycle ............................................................................36 4.3 Views on Complexity ...............................................................................................36 4.4 A Case Study: Laser Interferometer Space Antenna (LISA) ....................................40 3/5/09 i Flight Software Complexity 4.5 Software Complexity Metrics ...................................................................................42 5 FAULT MANAGEMENT .....................................................................................................43 5.1 NASA Planetary Spacecraft Fault Management Workshop .....................................43 5.2 Integrating Fault Protection with Nominal Control System .....................................44 6 THINKING OUTSIDE THE BOX ........................................................................................45 7 PREVENTION, DETECTION, AND CONTAINMENT .....................................................47 8 LITERATURE SURVEY ......................................................................................................49 9 TOPICS FOR FUTURE STUDY ...........................................................................................51 10 PAST AND FUTURE ............................................................................................................52 11 SUMMARY ...........................................................................................................................54 12 REFERENCES .......................................................................................................................55 3/5/09 ii Flight Software Complexity Executive Summary In 2007 the NASA Office of Chief Engineer (OCE) commissioned a multi-center study to bring forth technical and managerial strategies to address risks associated with the growth in size and complexity of flight software (FSW) in NASA’s space missions. The motivation for the study grew from problems attributed to flight software in a variety of missions—in both pre-launch and post-launch activities—and concerns that such problems were growing with the expanding role of flight software. The study was tasked to examine the growth in flight software size and complexity, recommend ways to reduce and better manage complexity, and identify methods of testing complex logic. The study gave special attention to fault protection software because of its complexity. Study participants consisted of engineers and managers at Applied Physics Laboratory, Goddard Space Flight Center, Jet Propulsion Laboratory, Johnson Space Center, and Marshall Space Flight Center. The study adopted a simple definition of “complexity”: how hard something is to understand or verify. This definition implies that the main consequence of complexity is risk, whether technical risk or schedule risk or mission risk. It also highlights the role of humans in the equation since understandability can be enhanced through education and training, as reflected in some recommendations. The study examined complexity not just in flight software development, but in upstream activities (requirements and design) and downstream activities (testing and operations). The study made a distinction between essential functionality, which comes from vetted requirements and is, therefore, unavoidable, and incidental complexity, which arises from decisions about architecture, design, and implementation. The latter can be reduced by making wise decisions and is, therefore, the target of most recommendations. Flight software is a kind of embedded real-time software, a field that has seen exponential growth since its inception. In some areas of NASA, flight software is growing by a factor of ten every ten years. Estimates for Orion’s primary flight software exceed one million lines of code. The growth trend is expected to continue because of increasingly ambitious requirements and because of the advantages of situating new functionality in software or firmware rather than hardware. Flight software has become a spacecraft’s “complexity sponge” because it readily accommodates evolving understanding, making it an enabler of progress. NASA is not alone in such growth. Over the forty years from