Sunday, 7 August 2011

Socia-technical systems

The teml system is one that is universally used. We talk about computer systems,
operating systems, payment systems, the educational system, the system of govemment,
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 paJ1s.
Very abstract systems such as the system of government are well outside the
scope of this book. Consequently, I focus here on systems that include computers
and that have some specific purpose such as to enable communication, support navigation,
and compute salaries. Therefore, a useful working definition of these types
of systems is:
A system is a purposeful collection ofinterrelated components that work together
to achieve some objective.
This general definition embraces a vast range of systems. For example, a very
simple system such as a pen may only include three or four hardware components.
By contrast, an air traffic control system includes thousands of hardware and software
components plus human users who make decisions based on information from
the computer system.
Systems that include software fall into two categories:
Technical computer-based systems are systems that include hardware and software
components but not procedures and processes. Examples of technical systems
include televisions, mobile phones and most personal computer software.
Individuals and organisations use technical systems for some purpose but
knowledge of this purpose is not part of the system. For example, the word
proc1essor I am using is not aW~il'e that is it being used to write a book.
Socio-technical systems include one or more technical systems but, crucially,
also mclude knowledge of how the system should be used to achieve some broader
objective. This means that these systems have defined operational processes,
include people (the operators) as inherent parts of the system, are governed by
organisational policies and rules and may be affected by external constraints
such as national taws and regulatory policies. For example, this book was created
through a socio-technical publishing system that includes various processes
and technical systems.
Essential characteristics of socio-technical systems are as follows.
I. They have emergent properties that are properties of the system as a whole rather
than associated with individu~.l parts of the system. Emergent properties
depend on both the system components and the relationships between them. As
this is so complex, the emergent properties can only be evaluated once the system
has been assembled.
2. They are often nondeterministic. This means that, when presented with a specific
input, they may not always produce the same output. The system's
behaviour depends on the human operators, and people do not always react in
the same way. Furthermore, use of the system may create new relationships
between the system components and hence change its emergent behaviour.
3. The extent to which the system supports organisational objectives does not just
depend on the system itself. It also depends on the stability of these objectives,
the relationships and conflicts between organisational objectives and how people
in the organisation interpret these objectives. New management may reinterpret
the organisational objective that a system is designed to support, and
a successful' system may then become a 'failure'.
In this book, I am concerned with socio-technical systems that include hardware
and software, which have defined operational processes and which offer an interface,
implemented in software, to human users. Software engineers should have some
knowledge of socio-technical systems and systems engineering (White, et al., 1993;
Thayer, 2(02) because of the importance of software in these systems. For example,
there were fewer than 10 megabytes of software in the US Apollo space program
that put a man on the moon in 1969, but there are about 100 megabytes of
software in the control systems of the Columbus space station.
Acharacteristic of all systems is that the properties and the behaviour of the system
components are inextricably intermingled. The successful functioning of each
system component depends on the functioning of some other components. Thus,
software can only operate if the processor is operational. The processor can only
carry out computations if the software system defining these computations has been
successfully installed.
Systems are usually hierarchical and so include other systems. For example, a
police command and control system may include a geographical information system
to provide details of the location of incidents. These other systems are called
sub-systems. A characteristic of sub-systems is that they can operate as independent
systems in their own right. Therefore, the same geographical information system
may be used in different systems.
Because software is inherently flexible, unexpected systems 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 interference, 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 unac~eptable. The problem may then be characterised
as a 'software failure' whereas, in fact, it was a failure in the design process for
the system as a whole.
This situation, where software engineers are left with the problem of enhancing
software capabilities without increasing hardware cost, is very common. Many socalled
software failures were not a consequence of inherent software problems; they
were the: result of trying to change the software to accommodate modified system
engineeJing 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 several limitations in the equipment used.
Software engineering is therefore critical for the successful development of
complex, computer-based socio-technical systems. As a software engineer, you should
not simply be concerned with the software itself but you should also have a broader
awareness of how that software 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 better software and to participate as equal members of a
systems engineering group.

No comments:

Post a Comment

Your comments are welcome!