NASA and its international partners will increasingly depend on software-based systems to implement advanced functions for
future space missions, such as Martian rovers that autonomously navigate long distances exploring geographic features formed
by surface water early in the planet’s history. The software-based functions for these missions will need to be robust and
highly reliable, raising significant challenges in the context of recent Mars mission failures attributed to software faults.
After reviewing these challenges, this paper describes tools that have been developed at NASA Ames that could contribute to
meeting these challenges: 1) Program synthesis tools based on automated inference that generate documentation for manual review
and annotations for automated certification. 2) Model-checking tools for concurrent object-oriented software that achieve
scalability through synergy with program abstraction and static analysis tools.