Concurrent software has become omnipresent but remains extremely difficult to implement. To create reliable and efficient concurrent software, developers rely on techniques that detect bugs and other problems with a minimum of human effort. This talk presents such techniques and shows how they apply to real-world software. At first, the talk presents an automatic and precise testing technique for thread-safe classes. Beyond correctness testing, the idea generalizes to non-functional properties, e.g., performance-regression testing.Then, the talk shows how to go from class-level to application-level analysis by presenting the first fully automated technique for systematically analyzing multi-client web applications. All presented techniques do not require any input except the software under test and guarantee that each reported problem is indeed a bug.The approaches have found various bugs in widely used software, e.g., the Java standard library and Google Docs.
Michael Pradel is an assistant professor at TU Darmstadt, which he joined after a PhD at ETH Zurich and a post-doc at UC Berkeley. His research interests span software engineering and programming languages, with a focus on tools and techniques for building reliable, efficient, and secure software. In particular, he is interested in dynamic program analysis, test generation, concurrency, performance profiling, and JavaScript-based web applications.