Keynote abstract

Summary form only given. The production of high quality robust and reliable software depends on the availability of effective software development tools, including testing, static analysis and dynamic analysis tools. Although much effort has been spent over the years to improve these tools, there are still challenges that remain. One challenge is scalability for large applications and another is precision, with a trade-off between the two. New exciting opportunities are now available from advances in computer architecture that have the potential to greatly improve both the scalability and precision of our tools. These advances include multicore architectures and hardware performance monitors. The multicore architecture enables software to be parallelized and also analysis and execution to be run concurrently. Hardware performance monitors enable tracking of certain aspects of a program's execution with little or no overhead. This talk will explore how more efficient and effective software development tools, and in particular will focus on static and testing tools can be developed. The key idea is to exploit computer architectural advances to improve the scalability and preciseness of tools. The talk will discuss how scalability can be addressed using multiple cores and hardware performance counters, and precision can be addressed by using both path sensitive analysis and more expensive algorithms, including interprocedural and context sensitive. Techniques for tools that use multiple cores for parallelizing static analyses will be described. The use of hardware performance monitors in place of instrumentation to gather information from an executing program will be discussed. A combination of hardware performance counters and multiple cores will be explored to concurrently collect and analyze information in dynamic analysis and testing.