tools and behavioral abstraction
play

Tools and Behavioral Abstraction A Direction for Software - PowerPoint PPT Presentation

Tools and Behavioral Abstraction A Direction for Software Engineering K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Future of Software Engineering symposium ETH, Zurich, Switzerland 23 November 2010


  1. Tools and Behavioral Abstraction A Direction for Software Engineering K. Rustan M. Leino Research in Software Engineering (RiSE) Microsoft Research, Redmond Future of Software Engineering symposium ETH, Zurich, Switzerland 23 November 2010

  2. with the right features that is easy to use that is hard to misuse accidentally maliciously can be developed effectively on schedule free of defects can be maintained to add features to adapt to new environments to preserve/transfer knowledge between developers

  3. Big changes in recent decades and in decades to come Tools help developers… find simple errors, like type errors build programs optimize programs keep track of program versions run tests symbolically debug generate tests semantically analyze programs

  4. Run time Compile time Design time  closer to the time of program construction

  5. Karatsuba, BinarySearch, Schorr-Waite

  6. try, test, fix

  7. try, verify, fix

  8. Microsoft applies lots of semantic tools …to already written software. For programs being constructed, less so.

  9. Need to: Have motivation Must have vested interest in correctness Understand concepts Teach concepts using tools! Understand tools

  10. Our tools can understand our programs , but we don’t understand our tools!

  11. 0. Auto-active verification 1. Verification debugging 2. Short turn-around time

  12. Formula

  13. Between fully automatic and interactive verification Automatic reasoning engine Interaction at the level of the source

  14. MathTheorem

  15. Deciphering error messages can be difficult Program errors Specification errors or omissions Misunderstanding constructs Tool incompleteness

  16. Verification debugging Insert

  17. Time to get a failed proof must be short (Time to re-run a proof does not matter)

  18. Find specifications for code Really? Code from specifications

  19. Duplicates

  20. Abstraction by occlusion Procedural abstraction Data abstraction Parameterization Behavioral abstraction

  21. Description at multiple stages Multiple forms of descriptions Change of representation Executable code Ceaseless analysis Automation

  22. User interface Early simulation Prioritizing analysis Allowing informality Refinements into dynamically allocated state Supporting program evolution

  23. Ingredients of the future of software engineering More tools Behavioral abstraction Systems for systematic development

Recommend


More recommend