In: Computer Science
Part-A: Answer the following questions:
1. Give three reasons why a system’s dependability is more important than its detailed functionality.
2. Why do you think dependability is important in most sociotechnical systems?
3. What are the dimensions on system dependability?
4. List two system properties that are sometimes considered to be dependability properties but which are not normally thought of as principal dependability properties
. 5. What is the difference between the business process layer and the organizational layer in the sociotechnical systems stack.
Part-B: There are four techniques for achieving a dependable system: • faults prevention; • faults elimination; • faults tolerance; • faults predicting. What can be the steps you may take in these four categories to ensure that the system in development is dependable?
1) System failures may have widespread effects with large numbers of people affected by the failure.
Systems that are not dependable and are unreliable, unsafe or insecure may be rejected by their users.
The costs of system failure may be very high if the failure leads to economic losses or physical damage.
2) The software dependability is important in most sociotechnical systems for following reasons:
• To avoid the introduction of accidental errors into the system during software specification and development.
• To design verification and validation processes that are effective in discovering residual errors that affect the dependability of the system.
• To design protection mechanism that guard against external attacks that can compromise the availability or security of the system.
• To configure the deployed system and its supporting software correctly for its operating environment.
• System failure costs may be enormous.
• Users often reject systems that are unreliable, unsafe, or insecure.
3) the dimensions on system dependability are:-
Availability
Reliability
Safety
Security
4)two system properties that are sometimes considered to be dependability properties but which are not normally thought of as principal dependability properties are :-
Survivability
Error tolerance
5) Business processes generally deal with the different tasks users require to do a specific job. Organizational systems deal more with how the entire business operates.
Part-B )
Fault prediction involves adopting various models to predict the potential faults. The prediction models use various statistical techniques to predict the fault in a particular component, based on factors such as lines-of-code (LOC), maturity of technology, depth-of-inheritance (DIT), programming language, and other parameters. These models can be supplemented by historical data analysis of project data from internal repositories, to predict the fault probabilities for a given module or component, and major areas of fault occurrence. This provides input to the fault prevention and fault detection phases.
Fault prevention is a proactive strategy to identify all potential areas where a fault can occur and to close those gaps.
During the requirements phase, the business rules and requirements that are incomplete or ambiguous will give rise to a heap of defects during development. This can be avoided in two main ways:
•
Document requirements in structured, unambiguous ways, and quantify them with numbers wherever possible
•
Provide intersecting views of requirements by presenting the requirements in multiple views. For instance, a combination of use case and prototype view is more effective than capturing requirements only through business rules.
During the design phase, potential faults can be prevented by adopting proof-of-concept (PoC)-based design validation, feasibility analysis and adopting open standards for designing components. During the development phase, coding guidelines, coding checklists, continuous and automated code reviews, and unit test cases for providing high coverage would all serve the purpose of fault prevention. Another technique of fault prevention is to adopt the time-tested and proven industry and technology best practices.
Fault detection can be achieved through various validation techniques. This includes devising comprehensive test cases, continuous integration and testing, cross-verification using traceability matrix, automated testing, and so on. Continuous and iterative integration and testing is an effective way to catch the faults early. A robust monitoring and notification infrastructure also helps in early detection of faults.
Fault tolerance can be achieved at various levels. As infrastructure-related fault tolerance is discussed in the coming section, here the software aspect of fault tolerance is discussed. A software application can prevent total loss of functionality by graceful degradation functionality alternatives. Core and business-critical functionalities should be available in spite of unavailability of supporting functionalities.