2017/2018 Edition

Mining Programs and Processes

Lecturer: Prof. Andreas Zeller (Universitaet des Saarlandes, Saarbruecken, Germany).

About the lecturer | Course Summary | Slides | Assignment

About the lecturer: Andreas Zeller is a full professor at Universitaet des Saarlandes in Saarbruecken, Germany. He received his Diploma from Technical University of Darmstadt and his PhD degree from Technical University of Braunschweig. His broad research area is software engineering, which concerns the construction and evolution of large, complex software systems at reasonable cost and high reliability. His research in this area concerns the analysis of these systems, especially the analysis of why these systems fail to work as they should.
At early stage of his career he co-authored GNU Data Display Debugger (DDD), a well-known debugging tool. He is an author of over 50 research publications, including the recent book "Why Programs Fail: A Guide to Systematic Debugging", which won a Jolt Product Productivity Award. In recognition of his work, he was invited to serve as a program committee member of most influential software engineering conferences like FSE, ISSTA (chair in 2008), PASTE (chair in 2005) and as an editor of ACM Transactions on Software Engineering and Methodology.

Course summary:
Mining Programs
A program fails. How can we locate the cause? A new generation of program analysis techniques automatically determines failure causes - in the input, in the set of code changes, or in the program state. In contrast to "classical" static analysis, these new techniques exploit the data from multiple concrete runs - and may even generate further runs as needed. In this lecture, we explore the state of the art in automated debugging in practice and research, using real-life case studies such as Mozilla and GCC. Finally, we discuss the current frontiers in debugging, and how future research may break them.
More Information: www.whyprogramsfail.com

Mining Processes
I need to change some piece of code. What do I need to consider? Is there anything else I need to change? To answer such questions, one needs to know not only the software, but also its development process. To learn about the process, one can mine software repositories such as version archives and bug databases - and learn, for instance, which changes are correlated with each other, and better yet, which activities are correlated with success or failure. In this lecture, we discuss the state of the art in mining repositories, using real-life development processes from groups such as Eclipse or Microsoft Windows. Finally, we discuss the current challenges and opportunities in research.
More Information

Mining Operational Preconditions (talk by Andrzej Wasylkowski)
When calling a function, one has to satisfy its precondition --- that is, reach a state in which the function can be called. Preconditions do not state, though, how this state is reached. In this talk I will present OP-Miner, a tool which mines program code to infer the sequence of operations an object goes through before being used as a parameter: "In parseProperties(String xml), the parameter xml normally stems from getProperties()." I will show how by learning and checking such operational preconditions we can uncover real-life bugs in real-life programs like AspectJ --- bugs where the sequence of construction methods for arguments deviates from common (and correct) usage.

About Andrzej Wasylkowski
Andrzej Wasylkowski received his MSc degree from the University of Wroclaw in 2005. He is currently a PhD student at the Saarland University in Saarbruecken, Germany, supported by a scholarship from the DFG research training group on Quality Guarantees for Computer Systems. His research is in software engineering with focus on using program analysis and data mining techniques for defect detection.

Slides
All the slides are available in various formats on www.whyprogramsfail.com -- the most appropriate slides are:

See also HERE