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
   33   34   35   36   37   38   39   40   41   42   43