Software Reuse
The demands for lower software production and maintenance costs along with increased quality and decreased time to market can only be satisfied if more reuse is practiced.
A characteristic of an engineering discipline is that it is based upon an approach to system design which makes the maximum use of existing components. Furthermore, engineering design of this type is supported by catalogs of component descriptions, specifying the components interface, that provide the necessary data for the designer.
What is reusable?
- Application system
- Subsystem
- Component
- Module
- Object
- Function or Procedure
What are the payoffs and tradeoffs?
- The larger the structure the higher the payoff.
- The higher the abstraction level the higher the payoff.
- The larger the structure the higher the difficulty.
- The higher the abstraction the higher the difficulty.
Reuse Strategies
- Routine Libraries (Mathematics and Statistics)
- Class Libraries
- Generics
- Class Frameworks
- Patterns
- Components
- Software Architecture
- Application Templates
- Domain Analysis
What are the impediments?
The problem is not lack of technology but unwillingness to address the most important issues influencing software reuse: managerial, economic, legal, cultural, and social. (Prieto-Diaz, 1991)
Ego
- "I would no more use someone else's code than Hemingway would reuse another author's paragraphs." This symbolizes the individual's view of reuse. Clearly the model is to rewrite routines from scratch since it can only be certified as good if written by you.
- There is a corporate version of this, usually under the name NIH - not invented here.
Economic
- Some developers actually believe increased reused implies reduced employment.
Retrieval
- Designing a reusable component does not in itself insure reuse. To be reused, the individual items must be identified by another developer as a candidate for another application. This implies an infrastructure where components are described and that description is accessible easily. Remember the component handbooks of engineering design.
Expensive
- Three types of costs are associated with reuse:
- the cost of building the reusable component
- the cost of reuse
- the cost of the reuse process
Legal
- Contractually, on certain projects, the developed artifacts are the property of the contracting organization. Hence, any reuse is a violation of their ownership of an item.
Managerial
- Management can find it difficult to reconcile the issue of reuse in determining a developers productivity. This relates both to the developer producing a reusable component as well as the develop incorporating an existing component into a product. In the first case, charging the development cost of a reusable component to a certain project may not be justified. In the second case, there is difficulty in counting the developer's SLOC based on reuse.