We so often in our day to day life use the term “dependable computer system”. Dependability has four properties that come together to make a system reliable.
The four dependability properties are:
The “Availability” of a system refers to the possibility that the system is up and running all the times providing the services it is ought to. Let’s take the example of an ISP provider. If due to system failure, the internet connection is unavailable it would massively affect the customers of the ISP, and it’s current and future income. The impact also depends on the time of the failure. If the ISP is down at 5 am in the morning, then it might not affect a large base of customers. But if the ISP server is down even for 10 minutes but during the working hours of a weekday, then it will impact heavily. Also, availability concerns the fact that how much time it takes to restore the system and make it functional.
The next important property is “Reliability.” A system is reliable if it performs particular purpose at a given time interval. A system is reliable if it is performing tasks by its specification consistently. A system that fails to meet the customer requirements would be an unreliable system. It might happen because software engineers are not domain specialists and if there are incomplete requirements or there is a gap then these developers might make assumptions of their own. E.g., a word processor that is used by a student at the school and by employees at the office would have different definitions of reliability. The students might explore various features of the word processor, and it might crash once in a while whereas, at the office, people just use it in a hardcoded way. So how a system is used, what inputs are made; multiple factors could lead to system failure and make it unreliable.
A system is “safe” if it does not damage the people and the environment. Aircraft control system is an example of a safety-critical system. A small mistake in handling the system could lead to plane crash and deaths. A reliable system does not mean that it is safe as well. There might be faults in the systems that for many years are not revealed as a particular input was never triggered. The requirements were not complete and didn’t define a scenario of the system behavior. Any fault in the system hardware can also cause the system to function incorrectly. The users operating the system might input a combination of data that may lead to a fault. In short, rigorous testing might not even ensure the percentage of system’s safety. But it can be achieved using risk management that covers hazard avoidance, detection, and removal techniques.
Lastly, a “security” of a system is a crucial property as well. A system might face threats to its confidentiality and data. Also, the system’s integrity should be protected. Any attack on the system can make it unavailable or unreliable. It has been observed that many vulnerabilities in the sociotechnical systems are a result of human error rather than a hardware or software fault. Users of the system need to use the system with high intelligence. If a user would select a password that is easily guessable by others, then it is not a fault in the implementation of the system, but it is the user’s fault that he doesn’t follow the rules for keeping a complex password. Many systems/websites do not let the user keep simple passwords and show error. A system could be secured if the vulnerabilities are identified, limited and removed using stringent techniques.
A system would be called dependable if it is available, reliable, safe and secure to use. All these properties are inter-linked and impact each other. Thus proper planning of hazard idenitification and removal can make a system fully dependable.