Darrell Reimer, Nick Mitchell
Team: Bowen Alpern, Vas Bala, Herb Derby, Nick Mitchell, Todd Mummert, Darrell Reimer, Edith Schonberg, Gary Sevitsky, Kavitha Srinivas, Harini Srinivasan
About the talk:
|Over the past several years, our group has been involved directly
with problems in large IBM customer applications. Increasingly, these applications
are primarily composed of a collection of heterogeneous, reuseable frameworks.
We call this class of applications "framework-intensive". We'd like to
share with you the customer-driven research we've been involved in, and
in particular, to share the excitement we have in developing tools that
meet the particularly stringent requirements of these applications:
the tools must be useable in the field, constraints on time and space on
the analysis is extremely tight, the perturbation of the data collection
on the running application must be minimal, and the tools must handle the
high degree complexity we're seeing in these applications.
We'll show two examples of tools that are driven by our experience debugging problems in these applications. One is called Saber, a tool that analyzes code for common errors and violations of best practices. An Eclipse plugin, Saber combines a static analysis deep enough to uncover semantic errors with a rules engine that detects those errors. For example, customers have used Saber to detect race conditions, improperly managed resources, and a variety of other nasty problems that can cause outages in deployments of these kind of applications. The second is Leakbot, a tool that analyzes, and then tracks, the evolution of object reference graphs within running programs. One very common bug that shows up in these systems that Leakbot addresses is Java memory leaks. Both of these tools will be integrated into IBM products within the next year, and both scale to very large applications. Leakbot, for example, can analyze graphs with 50 million objects, and can track the actual evolution of large reference graphs with only 1-2% slowdown.