Software Engineering is the area to analysis, design, development and maintenance of software. Quality is the main constraint about the success of the software design. Works on testability of components or component-based software have proposed several techniques for increasing testability of component-based software systems. This work aims at reviewing these techniques for understanding their similarities and differences. This helps in evaluating proposed techniques as per their contribution in solving the concerned problems. The major quality attribute of a software product is the degree to which it can be relied upon to perform its intended function. Evaluation, prediction, and improvement of this attribute have been of concern to designers and users of computers and software from the early days of their evolution. Idea behind code reuse is that a partial or complete computer program written at one time can be written into another program at later time. Simulators also calculate the mean relative error between original effort and calculated efforts. Selecting the right software tool is one of the most important decisions taken by company; the success of the company will depend predominantly on it. Moreover, it is hard to recognize which tool is most appropriate technology transfer is an issue of major significance for organisations wishing to use reuse technology. This paper gives overview about the software models and reuse technology of software and the trends, which are currently used.