Page 279 -
P. 279
requirements for security and dependability. I briefly introduce the use of
formal specification in Chapter 12, and an additional chapter on this topic
is available on the Web.
Chapters 13 and 14 are concerned with software engineering techniques
for the development of dependable and secure systems. I cover depend-
ability engineering and security engineering separately, but they have
much in common. I discuss the importance of software architectures and
present design guidelines and programming techniques that help
achieve dependability and security. I also explain why it is important to
use redundancy and diversity to ensure that systems can cope with fail-
ures and external attacks. I introduce the increasingly important topic of
software survivability or resilience, which allows systems to continue to
deliver essential services while their security is being threatened.
Finally, in this section, Chapter 15 is concerned with dependability and
security assurance. I explain the use of static analysis and model check-
ing for system verification and fault detection. These techniques have
been successfully used in critical systems engineering. I also cover spe-
cific approaches to testing the dependability and security of systems and
explain why a dependability case may be necessary to convince an exter-
nal regulator that a system is safe and secure.