Tuesday 12pm, 11 December 2018
Improving Developer Experience by Learning Models from Software Systems
Postdoctoral researcher - MIT CSAIL
Learning models from software systems and repositories can inform software engineers in the development process. In this talk, I want to provide an overview on two approaches that leverage data from software systems and developer interaction to support engineering activities.
We present an integrated approach that constructs an In-IDE performance model from monitoring data in production environments. When developers change the source code, we perform incremental analysis to update our performance model to reflect the impact of these changes. This allows us to provide performance feedback in near real time to enable developers to understand the operational footprint of their code and prevent performance problems. We have two implementations of the approach called PerformanceHat in Eclipse for Java and in Visual Studio for C#. In a controlled experiment with 20 professional software engineers we found that they were significantly faster in detecting performance problems and finding their root-cause, compared to a representative baseline approach.
We also present ongoing work on synthesizing and repairing infrastructure code, which is a means to define desired computing infrastructure state using a programming language. We record developer interactions and observe state changes in Docker containers to synthesize a finite state machine. The challenge is to distinguish between experimental interactions and essential interactions that eventually lead to the desired final state of the infrastructure in order to generate a minimal and maintainable Dockerfile (the infrastructure code file). We show different techniques to achieve this goal in addition to a repair technique based on learned probabilistic models from all Dockerfiles on GitHub that transforms instructions in the language to conform to (statistical) best practices.
Jürgen Cito is a postdoctoral researcher at MIT CSAIL, working with Prof. Martin Rinard. He received his PhD in February 2018 from the University of Zurich, Switzerland. He has worked on continuous and incremental performance modeling and is currently interested in applying techniques from programming language and software engineering research to produce reliable computing and industrial infrastructure. His research is supported by the SNSF (Swiss National Science Foundation), IBM Research, and Facebook Research.