Design and Code Scavenging
Scavenging: copy as much as possible from existing design or code, modify
it for current application.
- CS education is design scavenging!
Programmer knows a library of reusable designs.
- Reuse works better if code is designed for reuse; but it is hard
to get people to do this.
- Abstraction: designs or source code fragments represent informal concepts.
- Selection: informal. Programmer must remember or find reusable code.
- Specialization: manually edit code. This may introduce errors;
cannot ``reuse'' validation.
- Integration: modify code and/or context of use.
- Cognitive distance: may be large unless reusing one's own code.
For a software reuse technique to be effective, it must be easier to
reuse the artifacts than it is to develop the software from scratch.