Hello Jplhix,
[In what ways does this reuse reduce the overall cost of the product?
In what ways is the cost unchanged?]
There is a *small* cost generally in the "as-is" reuse of a code
module. Studies by Barry Boehm at USC:
http://sunset.usc.edu/research/COCOMOII/cocomo_main.html
[look at the 1995 papers for a chart of non-linear reuse costs]
The STC paper is the one I use in references to figures, etc.
http://sunset.usc.edu/research/COCOMOII/Docs/stc.pdf
look at figure 3 for a good chart that illustrates the costs for
reusing software.
indicate this cost is about 5%-10% of the original development and is
assumed due to:
- effort to select the code module for reuse
- effort to understand the what the module does
- effort to check interfaces with the module
So, if you reuse a code module the development effort is far less than
to develop from scratch. However, there are other "costs" such as
memory, CPU time, and so on that are unchanged with reuse of a code
module.
[Suppose that a code module is reused with one change; an addition
operation is changed to a subtraction. What impact does this minor
change have on the savings of the problem above.]
From the same paper, the costs of change grow dramatically from the
low level until at the 10% change level, the cost of development is
about 55% of the original development cost. The factors that make up
this cost includes:
- effort to identify where the change is needed
- effort to make the change
- effort to retest the change
and so on.
This kind of analysis has been repeated in other studies as well. A
good set of search phrases include:
software cost reuse
cocomo (or software cost model)
personal software process
and so on. These links provide more background information. The last
one describes a method where an individual developer can improve their
development process and determine the effort required to reuse code,
modify code, and develop new software.
--Maniac |