20 likes | 131 Views
Continuous Incremental Software Checking for Robotic and Satellite Missions – Corina Pasareanu , CMU/NASA Ames. Target Applications. Invariant Generation. Likely Invariants. Code (Android) + JML Specs. Systematic Analysis. JUnit Tests. Test Generation. Test Execution. User.
E N D
Continuous Incremental Software Checking for Robotic and Satellite Missions – CorinaPasareanu, CMU/NASA Ames Target Applications Invariant Generation Likely Invariants Code (Android) + JML Specs Systematic Analysis JUnit Tests Test Generation Test Execution User SymExe Tree Fail Pass Quick Fixes • Insert pre-condition • Modify code • Modify test Integrated Development Environment • Goals: • Shorten development cycle for flight SW; Reduce cost; Increase reliability • Current SW development cycle: • Coding and testing performed as separate activities • Testing is costly; performed after code development • Continuous Incremental Checking: • Testing performed during code development • Excess workstation cycles used to continuously generate and run tests and to suggest repairs and invariants • Seamless integration in coding environment familiar to developers SPHERESon ISS • Features: • Automatic test generation and execution • Automatic program and test repair • Rapid feedback to user: test failures, code and test fixes, invariants NASA PhoneSat
Symbolic execution tree: x: X, y: Y, d: D Path condition PC: true [1:] Example code: x: X, y: Y, d: D+1 PC: true 1: d=d+1; 2: if (x > y) 3: return d / (x-y); else 4:return d / (y-x); [2:] [2:] PC: X>Y PC: X<=Y [4:] [4:] [3:] PC: X<=Y& Y-X!=0 return: (D+1)/(Y-X) PC: X<=Y& Y-X=0 Div by zero! PC: X>Y return: (D+1)/(X-Y) Solve path conditions → test inputs