Page 38 -
P. 38
CHAPTER 1 THE PRODUCT 9
parts of the design that represent something new. In the hardware world, component
reuse is a natural part of the engineering process. In the software world, it is some-
thing that has only begun to be achieved on a broad scale.
A software component should be designed and implemented so that it can be
reused in many different programs. In the 1960s, we built scientific subroutine libraries
XRef that were reusable in a broad array of engineering and scientific applications. These
Software reuse is subroutine libraries reused well-defined algorithms in an effective manner but had a
discussed in Chapter
13. Component-based limited domain of application. Today, we have extended our view of reuse to encom-
software engineering is pass not only algorithms but also data structure. Modern reusable components encap-
presented in Chapter sulate both data and the processing applied to the data, enabling the software engineer
27.
to create new applications from reusable parts. For example, today's graphical user
interfaces are built using reusable components that enable the creation of graphics
windows, pull-down menus, and a wide variety of interaction mechanisms. The data
structure and processing detail required to build the interface are contained with a
library of reusable components for interface construction.
1.2.2 Software Applications
Software may be applied in any situation for which a prespecified set of procedural
steps (i.e., an algorithm) has been defined (notable exceptions to this rule are expert
system software and neural network software). Information content and determinacy
are important factors in determining the nature of a software application. Content
refers to the meaning and form of incoming and outgoing information. For example,
many business applications use highly structured input data (a database) and pro-
duce formatted “reports.” Software that controls an automated machine (e.g., a
numerical control) accepts discrete data items with limited structure and produces
individual machine commands in rapid succession.
Information determinacy refers to the predictability of the order and timing of infor-
mation. An engineering analysis program accepts data that have a predefined order,
executes the analysis algorithm(s) without interruption, and produces resultant data
in report or graphical format. Such applications are determinate. A multiuser oper-
ating system, on the other hand, accepts inputs that have varied content and arbi-
trary timing, executes algorithms that can be interrupted by external conditions, and
produces output that varies as a function of environment and time. Applications with
these characteristics are indeterminate.
It is somewhat difficult to develop meaningful generic categories for software appli-
cations. As software complexity grows, neat compartmentalization disappears. The
following software areas indicate the breadth of potential applications:
System software. System software is a collection of programs written to service
other programs. Some system software (e.g., compilers, editors, and file manage-
ment utilities) process complex, but determinate, information structures. Other sys-
tems applications (e.g., operating system components, drivers, telecommunications