According to the common sense, the term "dependability" refers to a property of a generic system that equates to its trustworthiness. The term "trustworthy" refers to the degree of user confidence that the system will operate as he expects and that the system will not fail in normal use. The user's sensation of confidence cannot be expressed numerically, but at least it can refer to countable events or periods of time, etc.
Dealing with computing systems as set of components characterized by four fundamental properties: functionality, performance, cost and dependability; the latter is the ability to deliver service that can justifiably be trusted. The service delivered by a system is its behaviour as it is perceived by its user(s); a user is another system (human, physical) that interacts with the former at the service interface.
There are four main attributes to dependability:
- Availability: the ability of the system to deliver correct services when requested.
- Reliability: the probability, over a given period of time, that the system will correctly deliver services as expected by the user.
- Safety: absence of catastrophic consequences on the people and the environment.
- Security: the ability of the system to protect itself against accidental or deliberate intrusion.
The importance and influence of each attribute of dependability depend on the application. Generally availability is always requested whereas reliability, safety and security may or may not be required.
Frameworks capture expertise in the form of reusable algorithms, extensible architectures, and component implementations. Application frameworks have emerged as a powerful technology for developing and reusing middleware and application software. Because current frameworks are application templates, they are not well suited to cope with scenarios with high degrees of heterogeneity, dynamism and unpredictability. Likewise, this approach does not support secure interoperation with external (and not trusted) elements.
Patterns capture expertise in the form of reusable architecture design themes and styles, which can be reused even when algorithms, components implementations, or frameworks cannot. Most security patterns are expressed in a textual form, as informal indications on how to solve some (usually organizational) security problem. There is no guarantee of the correct application of a textual pattern because the description does not consider the effects of interactions, adaptation and combination. This makes textual patterns not appropriate for automated processing.