A Component-Based Approach to Support End-User Development