This document discusses software reuse and component-based development. It defines software reuse as creating software from existing software components rather than building from scratch. Component-based development allows large, abstract enterprise components to be reused to reduce development time. There are different types of software reuse and several benefits including increased reliability, reduced risks, and accelerated development. Component retrieval is discussed as an important part of software reuse, but it remains a difficult problem to find efficient solutions. Overall, the document presents an overview of software reuse and component-based development while noting that more work is still needed to improve component retrieval methods.