Critical systems are systems whose failure may lead to injury or loss of life, damage to the environment, unauthorized disclose of information or serious financial losses. There are three types of critical system:
- Safety-critical systems A system whose failure may result in injury, loss of life or serious environmental damage. An example of a safety-critical system is a control system for a chemical manufacturing plant.
- Mission-critical systems A system whose failure may result in the failure of some goal-directed activity. An example of a mission-critical system is a navigational system for a spacecraft.
- Business-critical systems A system whose failure may result in very high costs for the business using that system. An example of a business-critical system is the customer accounting system in a bank. Business-critical systems may be affected by security-related failures.
The high costs of failure of critical systems means that trusted methods and techniques must be used for development. Consequently, critical systems are usually developed using well-tried techniques rather than newer techniques that have not been subject to extensive practical experience. Rather than embrace new techniques and methods, critical systems developers are naturally conservative. They prefer to use older techniques whose strengths and weaknesses are understood, rather than new techniques which may appear to be better but whose long-term problems are unknown.
Expensive software engineering techniques that are not cost-effective for non-critical systems may sometimes be used for critical systems development. For example, formal mathematical methods of software development (discussed in Chapter 13) have been successfully used for safety and security critical systems. One reason why these formal methods are used is that it helps reduce the amount of testing required. For critical systems, the costs of verification and validation are usually very high—more than 50% of the total system development costs.