reusable components design and implementation of hierarchical software systems 221797