An interactive graphical approach to off-line programming