Encouraging software reuse improves the dependability of a product, as a reusable software unit is tried and tested. It reduces the risk of developing a large component from scratch, as it is easy to estimate the cost of using a large reusable software unit. Apart from ensuring quick product delivery, it enables the architects to reuse patterns and architectures suitable for particular situation, and the developers to use a set of program libraries, which eventually reduce the time for development.
Although, the idea of reusing a software unit seems to do more good than harm, it carries along with it certain drawbacks. The cost of maintaining a reusable unit will be high, if the system is subject to frequent changes. Tools used by the developers may not support the reusable component library, thereby making it extremely difficult to develop. Populating and maintaining an enormous library to exploit component reuse becomes expensive. Apart from these aspects, the very notion of identifying a reusable unit, comprehending the working process of a reusable unit and utilizing the unit in a new environment is itself a challenge.
2. THE REUSE ARENA
Over the past few decades, many techniques have been proposed and adopted to augment software reuse. These approaches harness the idea of reuse in similar application domains because the core functionality of such systems can be implemented using reusable software units. Every approach is suitable for few scenarios and it is the responsibility of the management and technical team to identify the suitability of the approach in developing a reusable software unit or exploiting the use of a software unit in developing a product.
2.1 A STUDY ON SOFTWARE REUSE IN ANDROID MARKET
3. COST BENEFIT ANALYSIS [METRICS AND MODELS]
The reusable assets of software are exhaustive and not limited to architectures, source code, data, design, documentation, estimation templates, human interfaces, plans, requirements and test cases [MM]. In order to use these reusable assets of software, every organization must estimate the cost in terms of time and money. Cost benefit analysis models include estimation of productivity, quality and return-on-investment (ROI). These models have not been derived or validated by data. They only help an organization in taking an initial step towards reuse based software engineering.
3.1 Cost-Productivity Model [METRICS AND MODELS]
A simple model has been proposed by Barnes and Bollinger  in order to determine the economic investment of an organization on software reuse. The variables and corresponding formulae are given below:
R % of code contributed by reusable components
B integration cost of reusable component as opposed to development cost
RC relative cost of overall development effort
RP relative productivity
E relative cost of making a component reusable. It is generally > 1 because creating a reusable component requires extra effort.