  Model-based reasoning is a central concept in current research into
intelligent diagnostic systems. It is based on the assumption that sources of
incorrect behavior in technical devices can be located and identified via the
existence of a model describing the basic properties of components of a certain
application domain. When actual data concerning the misbehavior of a system
composed from such components is available, a domain-independent diagnosis
engine can be used to infer which parts of the system contribute to the
observed behavior. This paper describes the application of the model-based
approach to the debugging of Java programs written in a subset of Java. We show
how a simple dependency model can be derived from a program, demonstrate the
use of the model for debugging and reducing the required user interactions,
give a comparison of the functional dependency model with program slicing, and
finally discuss some current research issues.
