Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering
The Prolog fact below reports detection of an Observer occurrence in JHotDraw 5.1. It tells us that:
candidate(observer, 100, [ role(subject, ['CH.ifa.draw.standard.StandardDrawing']), role(observers, ['CH.ifa.draw.standard.StandardDrawing.fListeners']), role(notifier,[ 'CH.ifa.draw.standard.StandardDrawing.figureInvalidated(FigureChangeEvent)', 'CH.ifa.draw.standard.StandardDrawing.figureRequestUpdate(FigureChangeEvent)'] ), role(updateCall, [ 'l.drawingInvalidated(new CH.ifa.draw.framework.DrawingChangeEvent(...))', 'l.drawingRequestUpdate(new CH.ifa.draw.framework.DrawingChangeEvent(...))' ]), role(observer, [ 'CH.ifa.draw.framework.DrawingChangeListener']), role(updatemethod, [ 'CH.ifa.draw.framework.DrawingChangeListener.drawingInvalidated(DrawingChangeEvent)', 'CH.ifa.draw.framework.DrawingChangeListener.drawingRequestUpdate(DrawingChangeEvent)'] )] ).
The above output format does not make explicit which Notifier calls which UpdateCall to which Update Method. A more explicit output format (such as DPDX) will be implemented.