1 / 22

Houdini, an annotation assistant for ESC/Java

Systems Research Center. Houdini, an annotation assistant for ESC/Java. K. Rustan M. Leino Compaq SRC Joint work with Cormac Flanagan. Oxford University, 15 January 2001. Static program checking. Static program checkers. ESC/Java architecture. Warning: Index possibly too big.

Download Presentation

Houdini, an annotation assistant for ESC/Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systems Research Center Houdini, an annotation assistant for ESC/Java K. Rustan M. Leino Compaq SRC Joint work with Cormac Flanagan Oxford University, 15 January 2001

  2. Static program checking

  3. Static program checkers

  4. ESC/Java architecture

  5. Warning: Index possibly too big ESC/Java example

  6. Annotation assistant

  7. Annotation assistant

  8. Annotation assistant

  9. Annotation assistant

  10. Annotation assistant

  11. Annotation assistant Houdini The great ESC wizard!

  12. Annotation assistant Unannotated Java program Inference engine Annotated Java program ESC/Java Warning messages

  13. Basic Houdini algorithm generate candidate set of annotations ;repeat invoke ESC/Java to refute annotations ; remove refuted annotationsuntil quiescence ; invoke ESC/Java to identify possible defects

  14. Candidate annotations • integer f //@ invariant f cmpexpr ; cmp {<,<=,==,!=,>=,>} • reference f //@ invariant f != null ; • array f //@ invariant \nonnullelements(f) ; //@ invariant (\forall int i; 0 <= i && i < expr ==> f[i] != null) ; //@ invariant f.length cmpexpr ;

  15. Houdini guesses“optimistic” annotations Houdini infers annotations,and reports warnings … and Houdini always uses any given annotations Houdini input Houdini “library” “specified library” “program”

  16. Houdini output

  17. Experience

  18. Static program checkers Houdini

  19. Future (ongoing) work • Streamline guessing • Increase performance • Rev up user interface

  20. Conclusions • Houdini can apply the power of ESC/Java to legacy code • Houdini is a tool by itself • Inferred non-properties are useful in debugging See also http://research.compaq.com/SRC/esc/

More Related