Developing aerospace systems is a complex task driven by standards and safety requirements to ensure reliability of sophisticated hardware and software. NASA future missions include an approach to developing swarmbased spacecraft systems comprising multiple self-organizing and autonomous spacecraft.Deep space presents numerous hazards and harsh conditions for remote exploration missions, which must often operate autonomously without intervention from Earth. To increase the survivability of the remote missions, NASA is exploiting principles and techniques that help such systems become more resilient through self-management and automatic adaptation. By adhering to the principles of autonomic computing, 6-8 contemporary spacecraft systems implement vital features for unmanned missions, such as self-configuration, self-healing, self-optimization, and self-protection.Moreover, biologically inspired approaches target new classes of space exploration missions that use swarm intelligence and swarm cooperation to achieve extremely robust systems. Swarm-based systems comprise thousands of small spacecraft working together to explore places in deep space where a single and monolith spacecraft is impractical.However, developing such systems-from conceptualization to validation-is a complex multidisciplinary activity, and reliability and safety are key objectives. The systems can't exhibit post-release faults or failures that could jeopardize the mission or cause loss of life. They integrate complex hardware and sophisticated software and thus require careful design and thorough testing to ensure adequate reliability. Moreover, aerospace systems have strict dependability and real-time requirements; need flexible resource reallocation; and must be limited in size, weight, and power consumption.System engineers thus must optimize their designs for three key factors: performance, reliability, and cost. As a result, the development process, characterized by numerous iterative design and analysis activities, is lengthy and costly. Moreover, for systems requiring certification prior to operation, the control software must go through rigorous verification and validation.
Verification-Driven Software DevelopmentWhen developing software, it's important to choose a life-cycle process appropriate for the project at hand, because all other activities derive from that process. Aerospace systems must meet a variety of standards and adhere to high safety requirements, so the software development process for such systems should emphasize verification, validation, certification, and testing (see Figure 1) The process should also be technically adequate and cost effective for managing the safety requirements and design complexity and for certifying embedded system software. Most modern aerospace software development projects use some kind of spiral-based methodology over a waterfall process, because it better emphasizes verification.
Emphasizing SafetyThe development process should help software developers specify the required level of safety...