Software reuse is regarded by many researchers as a key factor to improving software productivity and quality. Software reuse challenges are numerous and require us to rethink the entire spectrum of activities involved in the engineering of software. In this article, we focus on the technical aspects of software reuse, namely, building reusable software, repackaging existing software to make it more readily reusable, and providing computer support for software development with reusable components. We describe two research projects, Practitioner, an ESPRIT-funded collaboration, and SoftClass, a project funded mainly by TANDEM Computers. Both projects attempt to address the above issues, with an emphasis on developing computer tools that support the various reuse activities. The representation of software components is central to both projects. The Practitioner project, which focuses on the early stages of the software life-cycle, has developed tools and representations that support domain analysis activities. SoftClass focuses on the development of representations that lend themselves to computer inferencing for the purposes of supporting design with reusable components. We conclude by summarizing the major technical differences between the projects and discussing other factors that are, in our opinion, equally important to the success of such projects. © 1994.