*********************************
There is now a CONTENT FREEZE for Mercury while we switch to a new platform. It began on Friday, March 10 at 6pm and will end on Wednesday, March 15 at noon. No new content can be created during this time, but all material in the system as of the beginning of the freeze will be migrated to the new platform, including users and groups. Functionally the new site is identical to the old one. webteam@gatech.edu
*********************************
TITLE: Building Reliable Software Systems
ABSTRACT:
Applications critically depend on the reliability of underlying software layers, such as distributed systems, operating systems, and hypervisors. Building reliable systems is a challenging task in this context, not only because of their large scale but also because their development often requires correctly reasoning about concurrency, complex hardware semantics, and non-intuitive fault models. Combined, these hurdles make the already challenging task of developing software significantly more difficult.
In this talk, I will discuss systematic and principled approaches to help developers build correct systems. First, I will present a technique for testing operating system kernels that systematically explores their thread interleaving space, thereby effectively exposing hard-to-find kernel concurrency bugs. Next, I will introduce a systematic testing technique for modern, hardware-accelerated hypervisors that leverages symbolic execution to automatically construct effective hypervisor test cases. Finally, I will show how to complement formal verification techniques with testing approaches to bridge the gap between the two fields and help developers build reliable systems.
BIO:
Pedro Fonseca is a postdoctoral researcher in the systems lab at the Paul G. Allen School of Computer Science and Engineering of the University of Washington, where he works with Arvind Krishnamurthy, Hank Levy, and Xi Wang. He completed his Ph.D. in 2015 at the Max Planck Institute and the University of Saarland, where he worked with Rodrigo Rodrigues. He is interested in principled and systematic approaches to build reliable software systems, and he tackles this research problem by gathering insights about emerging trends, building systematic testing tools, and designing and redesigning software systems.