Storing and retrieving software components: a refinement based system | Synapse