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
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
Tools and Behavioral Abstraction
A Direction for Software Engineering
Research in Software Engineering (RiSE) Microsoft Research, Redmond
Future of Software Engineering symposium ETH, Zurich, Switzerland 23 November 2010
with the right features that is easy to use that is hard to misuse
accidentally maliciously
can be developed effectively
free of defects
can be maintained
to add features to adapt to new environments to preserve/transfer knowledge between developers
Big changes in recent decades
and in decades to come
Tools help developers…
find simple errors, like type errors build programs
keep track of program versions run tests symbolically debug generate tests semantically analyze programs
Run time Compile time Design time closer to the time of program construction
Karatsuba, BinarySearch, Schorr-Waite
Microsoft applies lots of semantic tools
…to already written software. For programs being constructed, less so.
Need to: Have motivation
Must have vested interest in correctness
Understand concepts
Teach concepts using tools!
Understand tools
Between fully automatic and interactive verification Automatic reasoning engine Interaction at the level of the source
MathTheorem
Deciphering error messages can be difficult
Program errors Specification errors or omissions Misunderstanding constructs Tool incompleteness
Insert
Time to get a failed proof must be short (Time to re-run a proof does not matter)
Find specifications for code
Really?
Code from specifications
Duplicates
Abstraction by occlusion
Procedural abstraction Data abstraction Parameterization
Behavioral abstraction
Description at multiple stages Multiple forms of descriptions Change of representation Executable code Ceaseless analysis Automation
User interface Early simulation Prioritizing analysis Allowing informality Refinements into dynamically allocated state Supporting program evolution
Ingredients of the future of software engineering
More tools Behavioral abstraction Systems for systematic development