Some notes for Software Engineering --
Reuse
by Herbert J. Bernstein
© Copyright Herbert J. Bernstein, 2002
Reuse
While some software engineering projects require totally new approaches,
designed from scratch, most projects have areas of similarity to
work that has been done in the past. A great deal of time and effort
can be saved by reusing software components from other projects.
Reuse is an old idea, starting with the creation of libraries of math
and i/o routines to support common features of mathematical calculations.
To varying extents, reuse can be an important issue in analysis, design
and implementation
- Analysis with reuse
- Existing analyses, decompositions, standards and designs used as
frameworks
- Subproblems mapped to known problems
- Vocabulary, classes and objects of existing systems used to
understand new problems
- Extensively used for user interfaces, device interfaces
- Speeds system analysis
- Major subsystems may be analyzed by filling in the blanks
- Use of standards minimizes training
- Tends to distort requirements
- COTS (Commercial off the shelf) becomes a requirement, even
when not appropriate
- features in existing systems get included even if they are not
needed
- novel aspects of the problem get missed
- Design with reuse
- Existing API, libraries, etc. provide a sound resource bases
- New virtual resources can be built to reduce the gap between
sub goals and resources
- Helps to keep the design on a feasible track
- Modes of reuse
- System reuse -- reuse of a complete system to solve a problem
- Accountings systems, office suites, graphics packages, ...
- Databases
- Networks, other infrastructure
- Enterprise Resource Planning systems
- Subsystem (component) reuse -- erector set approach
- Procedural component reusue
- procedure/subroutine/function libraries
- driver plugin interfaces
- Object-oriented component reusue
- GUI-oriented component reusue -- JavaBeans
http://java.sun.com/products/javabeans/docs/spec.html
- standard plug-in components for GUI-based application
builders
- API and library reuse
- Open source vs. closed source reuse
- Programming with reuse
- Programming languages
- Operating systems
- Scripting languages
- APIs, libraries, system calls
- Macro libraries
- Procedure/subroutine/function libraries
- GUI APIs and templates
- File systems
- Database systems
- ....
- Utility programs
- IDE's, GUI IDE's