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:
- How Failures Come to Be
- Comparing Coverage
- Detecting Anomalies
- Isolating Failure Causes
- Locating Failure Causes