07.01.2013 Views

Lecture Notes in Computer Science 3472

Lecture Notes in Computer Science 3472

Lecture Notes in Computer Science 3472

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

552 Séver<strong>in</strong>e Col<strong>in</strong> and Leonardo Mariani<br />

it can specify only <strong>in</strong>variants stat<strong>in</strong>g if a given variable is constant, positive, negative,<br />

odd, even or approximatively bounded. This approach has been shown to<br />

be particularly effective for debugg<strong>in</strong>g [HL02a]; <strong>in</strong> fact an anomalous behavior<br />

often violates several <strong>in</strong>variants before generat<strong>in</strong>g the failure. Thus, the sequence<br />

of violated <strong>in</strong>variants can be used to reach the po<strong>in</strong>t stor<strong>in</strong>g the fault from the<br />

po<strong>in</strong>t that has generated the failure.<br />

Other Techniques In the past, other <strong>in</strong>ference techniques have been proposed<br />

<strong>in</strong> the Mach<strong>in</strong>e Learn<strong>in</strong>g field [RW88], but they are quite complex and rarely<br />

can learn programs more complex than a b<strong>in</strong>ary function. For <strong>in</strong>stance, Lau et<br />

al. [LDW03] proposed a learn<strong>in</strong>g technique able to learn program statements<br />

from executions, but it learns only procedural programs, requires a heavy <strong>in</strong>strumentation,<br />

and is not suitable to learn programs of non-trivial complexity<br />

(the average program length is six statements).<br />

18.7 Case Studies<br />

Theoretical aspects such as language expressiveness, complexity of specify<strong>in</strong>g<br />

requirements and <strong>in</strong>trusiveness of the approach are very important, but the<br />

concrete applicability of a run-time verification technique must be demonstrated<br />

with <strong>in</strong>dustrial case studies.<br />

The Java implementation of PathExplorer, named JPaX, has been essentially<br />

developed and used <strong>in</strong> the NASA Research Center, therefore it has been<br />

applied to many programs produced for rovers, spacecrafts and similar devices.<br />

In particular, JPaX has been used to verify the planetary rover controller K9’s<br />

executive subsystem [ADG + 03], a space craft fault protection system [ADG + 03]<br />

and a space craft attitude control system [HR04].<br />

The K9’s executive subsystem is a multi-threaded system of about 8.000 l<strong>in</strong>es<br />

of Java code that executes hierarchical plans. JPaX has been used to discover<br />

faults related to concurrency, and produced encourag<strong>in</strong>g results; <strong>in</strong> fact, the tool<br />

discovered all but two concurrency faults, all data races and all deadlocks. The<br />

two missed faults are subtle errors <strong>in</strong>volv<strong>in</strong>g Java’s wait and notify constructs.<br />

More advanced techniques, e.g., model check<strong>in</strong>g, are required to detect such k<strong>in</strong>d<br />

of errors.<br />

The space craft fault protection system monitors both critical hardware and<br />

software components to detect faults and to execute corrective responses. JPaX<br />

has been used to check LTL formulas aga<strong>in</strong>st execution traces and it discovered<br />

some bugs and <strong>in</strong>accuracies <strong>in</strong> the documentation. One of the found bugs was<br />

even present <strong>in</strong> the program version that flew on the space craft.<br />

The attitude control system is 1850 l<strong>in</strong>es length Java program that was analyzed<br />

by the JPaX’s concurrency algorithms. Also <strong>in</strong> this case JPaX found unknown<br />

data races and found all artificially generated deadlocks and data races.<br />

Moreover, JPaX has been executed also for verify<strong>in</strong>g several small size programs,<br />

such as a discrete-event elevator simulator (about 500 l<strong>in</strong>es of code) and<br />

two task-parallel applications (about 250 and 700 l<strong>in</strong>es of code) [AHB03]. JPaX

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!