Mining Software Archives
Discovering Usage Patterns

Lehrstuhl für Softwaretechnik (Prof. Zeller)
Universität des Saarlandes – Informatik
Informatik Campus des Saarlandes
Campus E9 1 (CISPA)
66123 Saarbrücken
E-mail: zeller @
Telefon: +49 681 302-70970

Deutschsprachige Startseite Page d'acceuil en franšais English home page

[ Software Evolution | Vulnerable Components | Predicting Failures | Good Bug Reports | Related Changes | Cross-cutting Concerns | Usage Patterns | Jazz | Trends ]

The Software Evolution project at the Software Engineering Chair, Saarland University, analyzes version and bug databases to predict failure-prone modules, related changes, and future development activities.

What's new

  • A paper on HAM and DynaMine has been selected for the Mining Challenge at MSR 2006 in Shanghai. Read the paper...

Discovering application-specific usage patterns

When developers change code they add new method calls. Method calls that are added together, are related to each other. Our DynaMine prototype obtains this co-addition relationship from version archives and identifies usage patterns that describe how methods should be called, for instance a call to addWidget() should be followed by removeWidget(). Besides simple pairs, usage patterns come as state machines or grammars. They explain to developers how to use certain methods and violations of a pattern may be reported as warnings.

DynaMine scales up to the history of industrial-sized projects such as ECLIPSE.


  • DynaMine: Finding common Error Patterns by Mining Software Revision Histories. V. B. Livshits, T. Zimmermann. Proc. European Software Engineering Conference/ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE), Lisbon, Portugal, September 2005. [PDF]
    Abstract. A great deal of attention has lately been given to addressing software bugs such as errors in operating system drivers or security bugs. However, there are many other lesser known errors specific to individual applications or APIs and these violations of application-specific coding rules are responsible for a multitude of errors. In this paper we propose DynaMine, a tool that analyzes source code check-ins to find highly correlated method calls as well as common bug fixes in order to automatically discover application-specific coding patterns. Potential patterns discovered through mining are passed to a dynamic analysis tool for validation; finally, the results of dynamic analysis are presented to the user.The combination of revision history mining and dynamic analysis techniques leveraged in DynaMine proves effective for both discovering new application-specific patterns and for finding errors when applied to very large applications with many man-years of development and debugging effort behind them. We have analyzed Eclipse and jEdit, two widely-used, mature, highly extensible applications consisting of more than 3,600,000 lines of code combined. By mining revision histories, we have discovered 56 previously unknown, highly application-specific patterns. Out of these, 21 were dynamically confirmed as very likely valid patterns and a total of 263 pattern violations were found.

Keep me posted


<> · · Stand: 2017-01-03 21:10