1. A system for customizing an application program, comprising: (1) a plurality of reusable modules for incorporation into end-user derived modules, at least one of said reusable modules having a set of variables accessible by an end-user and a set of variables not accessible by the end-user, and wherein a derived module incorporating said reusable module inherits attributes of said reusable module; (2) a graphical editor for modifying and managing software modules; and (3) an object visualization editor for graphically representing relationships between modules and variables within modules;