reuse based design in software engineering
Reuse-Based Design in software engineering
Reuse Based design accepts an existing partition of reusable modules, functions or designs, but crafts an interface that ties them together in order to provide the specified function.
For a module to be reusable, however, we must require that it should be used by other several modules as in design-reusable-structure.
It is, of course, not necessary to create a program top-down, even though its structure is function-oriented. However, if we want delay the decision of what the system is supposed to do as long a possible, a better choice is to structure the program around the data rather than around the actions taken by the program.
The Unix filter provides a good example of reuse-based design by means of a toolkit. Unix filters represent highly encapsulated functions, or tools, which accepts input and provides output in a standard format.
Each such function is designed to be both useful and primitive. The individual functions can then be assembled by gluing them together with pipes, using a shell language. If these tools are sufficiently varied and general, must of the tasks can be rapidly implemented. In case, performance isn’t high, any individual tool can be rewritten for optimization, without modifying anything else.
Toolkit reuse generally depends on heavy encapsulation, a standard interface between tools, and a late-binding, interpretive language to tie the tools together. Encapsulation allows for re-implementation to achieve optimization, fault-tolerance, customization, etc.
Originally published at https://www.csmates.com.