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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

18 Run-Time Verification 555<br />

Although these are very early days, some of the projects already carried out<br />

<strong>in</strong> run-time verification produce tools that, when looked at properly, are simply<br />

debuggers with fancy features and/or provide good trac<strong>in</strong>g mechanisms. Examples<br />

<strong>in</strong>clude, <strong>in</strong>ter alia, Jass [BFMW01], Opium [Duc90], Morph<strong>in</strong>e [DJ01], Coca<br />

[Duc99], DynaMICs [GRMD01], Daikon [ECGN01], and ESC/Java [RLNS00].<br />

Some approaches <strong>in</strong> run-time verification <strong>in</strong>clude collect<strong>in</strong>g statistics dur<strong>in</strong>g runtime<br />

to perform some form of debugg<strong>in</strong>g later on. However, what is encourag<strong>in</strong>g<br />

amongst the majority of these projects and tools is the use of l<strong>in</strong>ear time logic<br />

(or extensions of it) to describe the monitor that monitors the program behavior<br />

[Gei01] or as the basis of a specification language to specify the properties to<br />

monitor [DGJV01]. In particular, Hakansson et al. [HJL03] proposed the generation<br />

of on-l<strong>in</strong>e test oracles with a rich logic which conta<strong>in</strong>s past operators, metric<br />

time, and can handle data values by means of the quantification construct.<br />

What is needed is a tool (or set of) that software professionals can use to<br />

specify requirements, to design the system, to code, to test, to deploy, and to<br />

monitor the software while runn<strong>in</strong>g, someth<strong>in</strong>g like an <strong>in</strong>tegrated development<br />

environment (IDE) that comb<strong>in</strong>es those attributes. JPAX [HR01a] is go<strong>in</strong>g <strong>in</strong><br />

the right direction. This is an IDE that tries to comb<strong>in</strong>e the positive attributes<br />

of test<strong>in</strong>g, i.e. <strong>in</strong> terms of scal<strong>in</strong>g up, and that of formal methods, i.e. by provid<strong>in</strong>g<br />

temporal formulas for specification. It falls shy to be called a run-time<br />

verification tool as it only monitors a program and emits its results, it does<br />

not automatically correct the monitored program. MaCS [KLS + 02] is go<strong>in</strong>g <strong>in</strong><br />

the right direction towards be<strong>in</strong>g called a run-time verification tool. It comb<strong>in</strong>es<br />

monitor<strong>in</strong>g a program with steer<strong>in</strong>g that program if, while runn<strong>in</strong>g, fails to concur<br />

with its specification. There are some obvious problems to tackle <strong>in</strong> this area,<br />

such as how far forward <strong>in</strong> a runn<strong>in</strong>g program should a tool look to correct, and<br />

the computational complexity that is <strong>in</strong>herent <strong>in</strong> tackl<strong>in</strong>g such a problem.

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

Saved successfully!

Ooh no, something went wrong!