The project JADE Extensions (JADE-X) project aims at developing an intelligent debugging environment that
improves the software engineering process by providing assistance in locating and (if possible) correcting bugs in
Java programs. Considering the size and complexity of recent computer programs, this is generally a very
expensive and time-consuming task. Therefore, research has developed several approaches that deal with
debugging and verification of computer programs, each of them using proprietary methodologies and requiring
different amount of knowledge. Unlike those approaches, our approach does not deal with formal verification of
programs, the debugging tool to be developed during JADE-X adapts model-based diagnosis (MBD) for
debugging. MBD has been developed for finding and fixing faults in hardware and is based on a componentoriented
model of the system describing its functionality. This approach can also be used for software debugging.
In this domain, the components are constructed from various elements of the program, such as statements or
expressions. The connections are derived from the used and modified variables. However, it is not easy to develop
a general model that can be used to locate different kinds of faults efficiently, as the model influences e.g. the
number of bug candidates. Hence, the development of suitable models for program debugging depends on multiple
aspects and has to be investigated carefully.
JADE-X is based on the results obtained during the previous project (JADE) and extends the results in order to
provide better results. Multiple models representing different abstractions of programs are to be developed in order
to provide better results for different kinds of faults without an increased amount of user interaction. Combinations
of such models are expected to considerably enhance the debugging process, as a reduction in bug candidates,
diagnosis time and user interaction can be achieved. Project JADE-X is expected to deliver multiple models of
Java programs (including object-oriented features), knowledge about when to apply which models, an
improvement of available diagnosis algorithms and an empirical evaluation of the results using a collection of realworld
examples. Finally, a debugging tool for Java programs is to be implemented that includes multiple models,
diagnosis algorithms and mechanisms to express the desired behavior of a program.