Page 283 -
P. 283

266   Chapter 10   Sociotechnical systems


                                    2.  You understand how faults and failures in the non-software layers of the systems
                                        stack may affect the software. You may also consider how checks may be built
                                        into the software to help detect these failures, and how support can be provided
                                        for recovering from failure.
                                      As software is inherently flexible, unexpected system problems are often left to
                                    software engineers to solve. Say a radar installation has been sited so that ghosting of
                                    the radar image occurs. It is impractical to move the radar to a site with less interfer-
                                    ence, so the systems engineers have to find another way of removing this ghosting.
                                    Their solution may be to enhance the image-processing capabilities of the software to
                                    remove the ghost images. This may slow down the software so that its performance
                                    becomes unacceptable. The problem may then be characterized as a ‘software failure’,
                                    whereas, in fact, it is a failure in the design process for the system as a whole.
                                      This sort of situation, in which software engineers are left with the problem of
                                    enhancing software capabilities without increasing hardware costs, is very common.
                                    Many so-called software failures are not a consequence of inherent software prob-
                                    lems but rather are the result of trying to change the software to accommodate mod-
                                    ified system engineering requirements. A good example of this was the failure of the
                                    Denver airport baggage system (Swartz, 1996), where the controlling software was
                                    expected to deal with limitations of the equipment used.
                                      Systems engineering (Stevens et al., 1998; Thayer, 2002; Thomé, 1993; White
                                    et al., 1993) is the process of designing entire systems—not just the software in these
                                    systems. Software is the controlling and integrating element in these systems and
                                    software engineering costs are often the main cost component in the overall system
                                    costs. As a software engineer, it helps if you have a broader awareness of how soft-
                                    ware interacts with other hardware and software systems, and how it is supposed to
                                    be used. This knowledge helps you understand the limits of software, to design bet-
                                    ter software, and to participate in a systems engineering group.

                             10.1 Complex systems


                                    The term ‘system’ is one that is universally used. We talk about computer systems, oper-
                                    ating systems, payment systems, the education system, the system of government, and so
                                    on. These are all obviously quite different uses of the word ‘system’, although they share
                                    the characteristic that, somehow, the system is more than simply the sum of its parts.
                                      Abstract systems, such as the system of government, are outside the scope of this
                                    book. Rather, I focus on systems that include computers and that have some specific
                                    purpose such as to enable communication, support navigation, or compute salaries.
                                    A useful working definition of these types of systems is as follows:

                                      A system is a purposeful collection of interrelated components, of different
                                      kinds, which work together to achieve some objective.
                                      This general definition embraces a vast range of systems. For example, a simple
                                    system, such as laser pointer, may include a few hardware components plus a small
   278   279   280   281   282   283   284   285   286   287   288