This paper is an overview of software reuse, its origins, research areas and main historical contributions. Reuse as the process of using existing software artefacts and knowledge has more than 40-year long history, and is currently recognized as an important mechanism to improve software quality and development productivity. Main attention is paid to retrospective analysis of key researches in the area of software reuse. Starting from the seminal paper and the other earliest contributions the survey discusses important milestones in the evolution of initial ideas of component sub-industry to mature field of research in software engineering. Active areas of past researches being overviewed by this paper include reuse libraries, asset classification and selection, measurement and experimentation, design patterns and studies of systematic reuse. Separate attention is paid to consolidation of main benefits and obstacles of software reuse. The paper concludes important ideas emerging from the historical experience about multidisciplinary nature of reuse, necessity of software reuse process and the role of domain engineering. Overview of key aspects (organizational, technical and economic) important for establishing software reuse programs is given.