Page 282 -
P. 282

Chapter 10   Sociotechnical systems  265



                                                                      Society

                                                                    Organization

                                                                  Business Processes

                                                                  Application System
                                            Systems                                            Software
                                          Engineering                                         Engineering
                                                          Communications and Data Management

                                                                  Operating System
                     Figure 10.1 The
                     sociotechnical systems                          Equipment
                     stack

                                         In principle, most interactions are between neighboring layers, with each layer
                                       hiding the detail of the layer below from the layer above. In practice, this is not
                                       always the case. There can be unexpected interactions between layers, which result
                                       in problems for the system as a whole. For example, say there is a change in the law
                                       governing access to personal information. This comes from the social layer. It leads
                                       to new organizational procedures and changes to the business processes. However,
                                       the application system may not be able to provide the required level of privacy so
                                       changes have to be implemented in the communications and data management
                                       layer.
                                         Thinking holistically about systems, rather than simply considering software in
                                       isolation, it is essential when considering software security and dependability.
                                       Software failure, in itself, rarely has serious consequences because software is intan-
                                       gible and, even when damaged, is easily and cheaply restored. However, when these
                                       software failures ripple through other parts of the system, they affect the software’s
                                       physical and human environment. Here, the consequences of failure are more signif-
                                       icant. People may have to do extra work to contain or recover from the failure; for
                                       example, there may be physical damage to equipment, data may be lost or corrupted,
                                       or confidentiality may be breached with unknown consequences.
                                         You must, therefore, take a system-level view when you are designing software
                                       that has to be secure and dependable. You need to understand the consequences of
                                       software failures for other elements in the system. You also need to understand how
                                       these other system elements may be the cause of software failures and how they can
                                       help to protect against and recover from software failures.
                                         Therefore, it is a system rather than a software failure that is the real problem.
                                       This means that you need to examine how the software interacts with its immediate
                                       environment to ensure that:


                                       1.  Software failures are, as far as possible, contained within the enclosing layers of
                                          the system stack and do not seriously affect the operation of adjoining layers. In
                                          particular, software failures should not lead to system failures.
   277   278   279   280   281   282   283   284   285   286   287