SlideShare a Scribd company logo
Chapter 15 Dependability and Security AssuranceLecture 11Chapter 15 Dependability and Security Assurance
Topics coveredStatic analysisReliability testingSecurity testingProcess assuranceSafety and dependability cases2Chapter 15 Dependability and Security Assurance
Validation of critical systemsThe verification and validation costs for critical systems involves additional validation processes and analysis than for non-critical systems:The costs and consequences of failure are high so it is cheaper to find and remove faults than to pay for system failure;You may have to make a formal case to customers or to a regulator that the system meets its dependability requirements. This dependability case may require specific V & V activities to be carried out.3Chapter 15 Dependability and Security Assurance
Validation costsBecause of the additional activities involved, the validation costs for critical systems are usually significantly higher than for non-critical systems.Normally, V & V costs take up more than 50% of the total system development costs.The outcome of the validation process is a tangible body of evidence that demonstrates the level of dependability of a software system.4Chapter 15 Dependability and Security Assurance
Static analysisStatic analysis techniques are system verification techniques that don’t involve executing a program.The work on a source representation of the software – either a model or the program code itself.Inspections and reviews are a form of static analysisTechniques covered here:Formal verificationModel checkingAutomated program analysis5Chapter 15 Dependability and Security Assurance
Verification and formal methodsFormal methods can be used when a mathematical specification of the system is produced.They are the ultimate static verification technique that may be used at different stages in the development process:A formal specification may be developed and mathematically analyzed for consistency. This helps discover specification errors and omissions.Formal arguments that a program conforms to its mathematical specification may be developed. This is effective in discovering programming and design errors.6Chapter 15 Dependability and Security Assurance
Arguments for formal methodsProducing a mathematical specification requires a detailed analysis of the requirements and this is likely to uncover errors.Concurrent systems can be analysed to discover race conditions that might lead to deadlock. Testing for such problems is very difficult.They can detect implementation errors before testing when the program is analyzed alongside the specification.7Chapter 15 Dependability and Security Assurance
Arguments against formal methodsRequire specialised notations that cannot be understood by domain experts.Very expensive to develop a specification and even more expensive to show that a program meets that specification.Proofs may contain errors.It may be possible to reach the same level of confidence in a program more cheaply using other V & V techniques.8Chapter 15 Dependability and Security Assurance
Model checkingInvolves creating an extended finite state model of a system and, using a specialized system (a model checker), checking that model for errors.The model checker explores all possible paths through the model and checks that a user-specified property is valid for each path.  Model checking is particularly valuable for verifying concurrent systems, which are hard to test.Although model checking is computationally very expensive, it is now practical to use it in the verification of small to medium sized critical systems. 9Chapter 15 Dependability and Security Assurance
Model checking10Chapter 15 Dependability and Security Assurance
Automated static analysisStatic analysers are software tools for source text processing.They parse the program text and try to discover potentially erroneous conditions and bring these to the attention of the V & V team.They are very effective as an aid to inspections - they are a supplement to but not a replacement for inspections.11Chapter 15 Dependability and Security Assurance
Automated static analysis checks12Chapter 15 Dependability and Security Assurance
Levels of static analysisCharacteristic error checkingThe static analyzer can check for patterns in the code that are characteristic of errors made by programmers using a particular language.User-defined error checkingUsers of a programming language define error patterns, thus extending the types of error that can be detected. This allows specific rules that apply to a program to be checked.Assertion checkingDevelopers include formal assertions in their program and relationships that must hold. The static analyzer symbolically executes the code and highlights potential problems.13Chapter 15 Dependability and Security Assurance
Use of static analysisParticularly valuable when a language such as C is used which has weak typing and hence many errors are undetected by the compiler.Particularly valuable for security checking – the static analyzer can discover areas of vulnerability such as buffer overflows or unchecked inputs.Static analysis is now routinely used in the development of many safety and security critical systems.14Chapter 15 Dependability and Security Assurance
Reliability testingReliability validation involves exercising the program to assess whether or not it has reached the required level of reliability.This cannot normally be included as part of a normal defect testing process because data for defect testing is (usually) atypical of actual usage data.Reliability measurement therefore requires a specially designed data set that replicates the pattern of inputs to be processed by the system.15Chapter 15 Dependability and Security Assurance
Reliability validation activitiesEstablish the operational profile for the system.Construct test data reflecting the operational profile.Test the system and observe the number of failures and the times of these failures.Compute the reliability after a statistically significant number of failures have been observed.16Chapter 15 Dependability and Security Assurance
Reliability measurement17Chapter 15 Dependability and Security Assurance
Statistical testingTesting software for reliability rather than fault detection.Measuring the number of errors allows the reliability of the software to be predicted. Note that, for statistical reasons, more errors than are allowed for in the reliability specification must be induced.An acceptable level of reliability should be specified and the software tested and amended until that level of reliability is reached.18Chapter 15 Dependability and Security Assurance
Reliability measurement problemsOperational profile uncertaintyThe operational profile may not be an accurate reflection of the real use of the system.High costs of test data generationCosts can be very high if the test data for the system cannot be generated automatically.Statistical uncertaintyYou need a statistically significant number of failures to compute the reliability but highly reliable systems will rarely fail.Recognizing failureIt is not always obvious when a failure has occurred as there may be conflicting interpretations of a specification.19Chapter 15 Dependability and Security Assurance
Operational profilesAn operational profile is a set of test data whose frequency matches the actual frequency of these inputs from ‘normal’ usage of the system. A close match with actual usage is necessary otherwise the measured reliability will not be reflected in the actual usage of the system.It can be generated from real data collected from an existing system or (more often) depends on assumptions made about the pattern of usage of a system.20Chapter 15 Dependability and Security Assurance
An operational profile21Chapter 15 Dependability and Security Assurance
Operational profile generationShould be generated automatically whenever possible.Automatic profile generation is difficult for interactive systems.May be straightforward for ‘normal’ inputs but it is difficult to predict ‘unlikely’ inputs and to create test data for them.Pattern of usage of new systems is unknown.Operational profiles are not static but change as users learn about a new system and change the way that they use it.22Chapter 15 Dependability and Security Assurance
Key pointsStatic analysis is an approach to V & V that examines the source code (or other representation) of a system, looking for errors and anomalies. It allows all parts of a program to be checked, not just those parts that are exercised by system tests.Model checking is a formal approach to static analysis that exhaustively checks all states in a system for potential errors.Statistical testing is used to estimate software reliability. It relies on testing the system with a test data set that reflects the operational profile of the software.  23Chapter 15 Dependability and Security Assurance
Chapter 15 Dependability and Security AssuranceLecture 224Chapter 15 Dependability and Security Assurance
Security testingTesting the extent to which the system can protect itself from external attacks.Problems with security testingSecurity requirements are ‘shall not’ requirements i.e. they specify what should not happen. It is not usually possible to define security requirements as simple constraints that can be checked by the system.The people attacking a system are intelligent and look for vulnerabilities. They can experiment to discover weaknesses and loopholes in the system.Static analysis may be used to guide the testing team to areas of the program that may include errors and vulnerabilities.25Chapter 15 Dependability and Security Assurance
Security validationExperience-based validationThe system is reviewed and analysed against the types of attack that are known to the validation team.Tiger teamsA team is established whose goal is to breach the security of the system by simulating attacks on the system.Tool-based validationVarious security tools such as password checkers are used to analyse the system in operation.Formal verificationThe system is verified against a formal security specification.26Chapter 15 Dependability and Security Assurance
Examples of entries in a security checklistSecurity checklist1. Do all files that are created in the application have appropriate access permissions? The wrong access permissions may lead to these files being accessed by unauthorized users.2. Does the system automatically terminate user sessions after a period of inactivity? Sessions that are left active may allow unauthorized access through an unattended computer.3. If the system is written in a programming language without array bound checking, are there situations where buffer overflow may be exploited? Buffer overflow may allow attackers to send code strings to the system and then execute them.4. If passwords are set, does the system check that passwords are ‘strong’? Strong passwords consist of mixed letters, numbers, and punctuation, and are not normal dictionary entries. They are more difficult to break than simple passwords.5. Are inputs from the system’s environment always checked against an input specification? Incorrect processing of badly formed inputs is a common cause of security vulnerabilities.27Chapter 15 Dependability and Security Assurance
Process assuranceProcess assurance involves defining a dependable process and ensuring that this process is followed during the system development.Process assurance focuses on:Do we have the right processes? Are the processes appropriate for the level of dependability required. Should include requirements management, change management, reviews and inspections, etc.Are we doing the processes right? Have these processes been followed by the development team.Process assurance generates documentationAgile processes therefore are rarely used for critical systems.28Chapter 15 Dependability and Security Assurance
Processes for safety assuranceProcess assurance is important for safety-critical systems development:Accidents are rare events so testing may not find all problems;Safety requirements are sometimes ‘shall not’ requirements so cannot be demonstrated through testing.Safety assurance activities may be included in the software process that record the analyses that have been carried out and the people responsible for these.Personal responsibility is important as system failures may lead to subsequent legal actions.29Chapter 15 Dependability and Security Assurance
Safety related process activitiesCreation of a hazard logging and monitoring system.Appointment of project safety engineers who have explicit responsibility for system safety.Extensive use of safety reviews.Creation of a safety certification system where the safety of critical components is formally certified.Detailed configuration management (see Chapter 25).30Chapter 15 Dependability and Security Assurance
Hazard analysisHazard analysis involves identifying hazards and their root causes.There should be clear traceability from identified hazards through their analysis to the actions taken during the process to ensure that these hazards have been covered.A hazard log may be used to track hazards throughout the process.31Chapter 15 Dependability and Security Assurance
A simplified hazard log entry32Chapter 15 Dependability and Security Assurance
Safety and dependability casesSafety and dependability cases are structured documents that set out detailed arguments and evidence that a required level of safety or dependability has been achieved.They are normally required by regulators before a system can be certified for operational use. The regulator’s responsibility is to check that a system is as safe or dependable as is practical.Regulators and developers work together and negotiate what needs to be included in a system safety/dependability case.33Chapter 15 Dependability and Security Assurance
The system safety caseA safety case is:A documented body of evidence that provides a convincing and valid argument that a system is adequately safe for a given application in a given environment.Arguments in a safety or dependability case can be based on formal proof, design rationale, safety proofs, etc. Process factors may also be included.A software safety/dependability case is part of a wider system safety/dependability case.34Chapter 15 Dependability and Security Assurance
The contents of a software safety case35Chapter 15 Dependability and Security Assurance
Structured argumentsSafety/dependability cases should be based around structured arguments that present evidence to justify the assertions made in these arguments.The argument justifies why a claim about system safety/security is justified by the available evidence.36Chapter 15 Dependability and Security Assurance
Structured arguments37Chapter 15 Dependability and Security Assurance
Insulin pump safety argumentArguments are based on claims and evidence.Insulin pump safety:Claim: The maximum single dose of insulin to be delivered (CurrentDose) will not exceed MaxDose.Evidence: Safety argument for insulin pump (discussed later)Evidence: Test data for insulin pump. The value of currentDose was correctly computed in 400 testsEvidence: Static analysis report for insulin pump software revealed no anomalies that affected the value of CurrentDoseArgument: The evidence presented demonstrates that the maximum dose of insulin that can be computed = MaxDose.38Chapter 15 Dependability and Security Assurance
Structured safety argumentsStructured arguments that demonstrate that a system meets its safety obligations.It is not necessary to demonstrate that the program works as intended; the aim is simply to demonstrate safety.Generally based on a claim hierarchy. You start at the leaves of the hierarchy and demonstrate safety. This implies the higher-level claims are true.39Chapter 15 Dependability and Security Assurance
A safety claim hierarchy for the insulin pump 40Chapter 15 Dependability and Security Assurance
Safety argumentsSafety arguments are intended to show that the system cannot reach in unsafe state.These are weaker than correctness arguments which must show that the system code conforms to its specification.They are generally based on proof by contradictionAssume that an unsafe state can be reached;Show that this is contradicted by the program code.A graphical model of the safety argument may be developed.41Chapter 15 Dependability and Security Assurance
Construction of a safety argumentEstablish the safe exit conditions for a component or a program.Starting from the END of the code, work backwards until you have identified all paths that lead to the exit of the code.Assume that the exit condition is false.Show that, for each path leading to the exit that the assignments made in that path contradict the assumption of an unsafe exit from the component.42Chapter 15 Dependability and Security Assurance
Insulin dose computation with safety checks-- The insulin dose to be delivered is a function of blood sugar level,-- the previous dose delivered and the time of delivery of the previous dosecurrentDose = computeInsulin () ;// Safety check—adjust currentDose if necessary.// if statement 1if (previousDose == 0){	if (currentDose > maxDose/2)currentDose= maxDose/2 ;}else	if (currentDose > (previousDose * 2) )currentDose= previousDose * 2 ;// if statement 2if ( currentDose < minimumDose )currentDose= 0 ;else if ( currentDose > maxDose )currentDose= maxDose ;administerInsulin(currentDose) ;43Chapter 15 Dependability and Security Assurance
Informal safety argument based on demonstrating contradictions 44Chapter 15 Dependability and Security Assurance
Program pathsNeither branch of if-statement 2 is executedCan only happen if CurrentDose is >= minimumDose and <= maxDose.then branch of if-statement 2 is executedcurrentDose = 0.else branch of if-statement 2 is executedcurrentDose = maxDose.In all cases, the post conditions contradict the unsafe condition that the dose administered is greater than maxDose.45Chapter 15 Dependability and Security Assurance
Key pointsSecurity validation is difficult because security requirements state what should not happen in a system, rather than what should. Furthermore, system attackers are intelligent and may have more time to probe for weaknesses than is available for security testing.Security validation may be carried out using experience-based analysis, tool-based analysis or ‘tiger teams’ that simulate attacks on a system.It is important to have a well-defined, certified process for safety-critical systems development. The process must include the identification and monitoring of potential hazards.46Chapter 15 Dependability and Security Assurance
Key pointsSafety and dependability cases collect all of the evidence that demonstrates a system is safe and dependable. Safety cases are required when an external regulator must certify the system before it is used.Safety cases are usually based on structured arguments. Structured safety arguments show that an identified hazardous condition can never occur by considering all program paths that lead to an unsafe condition, and showing that the condition cannot hold.47Chapter 15 Dependability and Security Assurance

More Related Content

PPTX
Ch17-Software Engineering 9
PPTX
Ch16-Software Engineering 9
PPTX
Ch23-Software Engineering 9
PPTX
Ch8-Software Engineering 9
PPTX
Ch6-Software Engineering 9
PPTX
Ch9-Software Engineering 9
PPTX
Ch11-Software Engineering 9
PPTX
Ch5- Software Engineering 9
Ch17-Software Engineering 9
Ch16-Software Engineering 9
Ch23-Software Engineering 9
Ch8-Software Engineering 9
Ch6-Software Engineering 9
Ch9-Software Engineering 9
Ch11-Software Engineering 9
Ch5- Software Engineering 9

What's hot (20)

PPTX
Ch22-Software Engineering 9
PPTX
PPTX
Ch10 dependable systems
PPTX
Ch10-Software Engineering 9
PPTX
Ch7 implementation
PPTX
Ch18-Software Engineering 9
PPTX
Ch2-Software Engineering 9
PPTX
Ch21-Software Engineering 9
PPTX
Ch15 - Software Reuse
PPTX
Ch7-Software Engineering 9
PPTX
Ch14-Software Engineering 9
PPTX
Ch4-Software Engineering 9
PPTX
Ch15 software reuse
PPT
Ian Sommerville, Software Engineering, 9th Edition Ch2
PPTX
Ch24 quality management
PPTX
Ch19 systems engineering
PPTX
Chap4 RE validation
PPTX
Ch24-Software Engineering 9
PPT
Ian Sommerville, Software Engineering, 9th EditionCh 8
PPTX
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Ch22-Software Engineering 9
Ch10 dependable systems
Ch10-Software Engineering 9
Ch7 implementation
Ch18-Software Engineering 9
Ch2-Software Engineering 9
Ch21-Software Engineering 9
Ch15 - Software Reuse
Ch7-Software Engineering 9
Ch14-Software Engineering 9
Ch4-Software Engineering 9
Ch15 software reuse
Ian Sommerville, Software Engineering, 9th Edition Ch2
Ch24 quality management
Ch19 systems engineering
Chap4 RE validation
Ch24-Software Engineering 9
Ian Sommerville, Software Engineering, 9th EditionCh 8
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Ad

Viewers also liked (18)

PPTX
Ch19-Software Engineering 9
PPTX
Ch13-Software Engineering 9
PPTX
Chap2 RE processes
PPTX
Chap1 RE Introduction
PPTX
Ch20-Software Engineering 9
PPTX
Ch12-Software Engineering 9
PPTX
Beit 381 se lec 20 - 31 - 12 apr25 - case tools and ascent1-55
PPT
Ian Sommerville, Software Engineering, 9th Edition Ch 23
PDF
PPTX
Ch 4 software engineering
PPTX
PPTX
Chap5 RE management
PPTX
Ch14 resilience engineering
PPT
Ian Sommerville, Software Engineering, 9th Edition Ch1
PDF
Ai 02 intelligent_agents(1)
PPT
PDF
Swiching
Ch19-Software Engineering 9
Ch13-Software Engineering 9
Chap2 RE processes
Chap1 RE Introduction
Ch20-Software Engineering 9
Ch12-Software Engineering 9
Beit 381 se lec 20 - 31 - 12 apr25 - case tools and ascent1-55
Ian Sommerville, Software Engineering, 9th Edition Ch 23
Ch 4 software engineering
Chap5 RE management
Ch14 resilience engineering
Ian Sommerville, Software Engineering, 9th Edition Ch1
Ai 02 intelligent_agents(1)
Swiching
Ad

Similar to Ch15-Software Engineering 9 (20)

PPT
Ch24
PPT
Critical System Validation in Software Engineering SE21
PPT
Verification and Validation in Software Engineering SE19
PPT
Sv&amp;V Rim
PPT
Ch22
DOCX
CHAPTER 15Security Quality Assurance TestingIn this chapter yo
PPTX
Ch8.Testing software enginnering 43.pptx
PPTX
Software engineering
PPTX
Ch8.Testing.pptx for computer network 5th smester
PPT
SECh1920
PDF
Software reliability engineering
PPT
Sech1920 1200112979886874-3
PDF
Getting the Most Value from VM and Compliance Programs white paper
DOCX
Chapter 8 – Software TestingChapter 8 Software Testing13.docx
PPTX
Testing Techniques.pptx
PPT
Chapter 9 Testing Strategies.ppt
PPTX
Automating The Process For Building Reliable Software
PPT
Chapter 8 - Software Testing.ppt
PPTX
Ch8 - Testing
Ch24
Critical System Validation in Software Engineering SE21
Verification and Validation in Software Engineering SE19
Sv&amp;V Rim
Ch22
CHAPTER 15Security Quality Assurance TestingIn this chapter yo
Ch8.Testing software enginnering 43.pptx
Software engineering
Ch8.Testing.pptx for computer network 5th smester
SECh1920
Software reliability engineering
Sech1920 1200112979886874-3
Getting the Most Value from VM and Compliance Programs white paper
Chapter 8 – Software TestingChapter 8 Software Testing13.docx
Testing Techniques.pptx
Chapter 9 Testing Strategies.ppt
Automating The Process For Building Reliable Software
Chapter 8 - Software Testing.ppt
Ch8 - Testing

Ch15-Software Engineering 9

  • 1. Chapter 15 Dependability and Security AssuranceLecture 11Chapter 15 Dependability and Security Assurance
  • 2. Topics coveredStatic analysisReliability testingSecurity testingProcess assuranceSafety and dependability cases2Chapter 15 Dependability and Security Assurance
  • 3. Validation of critical systemsThe verification and validation costs for critical systems involves additional validation processes and analysis than for non-critical systems:The costs and consequences of failure are high so it is cheaper to find and remove faults than to pay for system failure;You may have to make a formal case to customers or to a regulator that the system meets its dependability requirements. This dependability case may require specific V & V activities to be carried out.3Chapter 15 Dependability and Security Assurance
  • 4. Validation costsBecause of the additional activities involved, the validation costs for critical systems are usually significantly higher than for non-critical systems.Normally, V & V costs take up more than 50% of the total system development costs.The outcome of the validation process is a tangible body of evidence that demonstrates the level of dependability of a software system.4Chapter 15 Dependability and Security Assurance
  • 5. Static analysisStatic analysis techniques are system verification techniques that don’t involve executing a program.The work on a source representation of the software – either a model or the program code itself.Inspections and reviews are a form of static analysisTechniques covered here:Formal verificationModel checkingAutomated program analysis5Chapter 15 Dependability and Security Assurance
  • 6. Verification and formal methodsFormal methods can be used when a mathematical specification of the system is produced.They are the ultimate static verification technique that may be used at different stages in the development process:A formal specification may be developed and mathematically analyzed for consistency. This helps discover specification errors and omissions.Formal arguments that a program conforms to its mathematical specification may be developed. This is effective in discovering programming and design errors.6Chapter 15 Dependability and Security Assurance
  • 7. Arguments for formal methodsProducing a mathematical specification requires a detailed analysis of the requirements and this is likely to uncover errors.Concurrent systems can be analysed to discover race conditions that might lead to deadlock. Testing for such problems is very difficult.They can detect implementation errors before testing when the program is analyzed alongside the specification.7Chapter 15 Dependability and Security Assurance
  • 8. Arguments against formal methodsRequire specialised notations that cannot be understood by domain experts.Very expensive to develop a specification and even more expensive to show that a program meets that specification.Proofs may contain errors.It may be possible to reach the same level of confidence in a program more cheaply using other V & V techniques.8Chapter 15 Dependability and Security Assurance
  • 9. Model checkingInvolves creating an extended finite state model of a system and, using a specialized system (a model checker), checking that model for errors.The model checker explores all possible paths through the model and checks that a user-specified property is valid for each path. Model checking is particularly valuable for verifying concurrent systems, which are hard to test.Although model checking is computationally very expensive, it is now practical to use it in the verification of small to medium sized critical systems. 9Chapter 15 Dependability and Security Assurance
  • 10. Model checking10Chapter 15 Dependability and Security Assurance
  • 11. Automated static analysisStatic analysers are software tools for source text processing.They parse the program text and try to discover potentially erroneous conditions and bring these to the attention of the V & V team.They are very effective as an aid to inspections - they are a supplement to but not a replacement for inspections.11Chapter 15 Dependability and Security Assurance
  • 12. Automated static analysis checks12Chapter 15 Dependability and Security Assurance
  • 13. Levels of static analysisCharacteristic error checkingThe static analyzer can check for patterns in the code that are characteristic of errors made by programmers using a particular language.User-defined error checkingUsers of a programming language define error patterns, thus extending the types of error that can be detected. This allows specific rules that apply to a program to be checked.Assertion checkingDevelopers include formal assertions in their program and relationships that must hold. The static analyzer symbolically executes the code and highlights potential problems.13Chapter 15 Dependability and Security Assurance
  • 14. Use of static analysisParticularly valuable when a language such as C is used which has weak typing and hence many errors are undetected by the compiler.Particularly valuable for security checking – the static analyzer can discover areas of vulnerability such as buffer overflows or unchecked inputs.Static analysis is now routinely used in the development of many safety and security critical systems.14Chapter 15 Dependability and Security Assurance
  • 15. Reliability testingReliability validation involves exercising the program to assess whether or not it has reached the required level of reliability.This cannot normally be included as part of a normal defect testing process because data for defect testing is (usually) atypical of actual usage data.Reliability measurement therefore requires a specially designed data set that replicates the pattern of inputs to be processed by the system.15Chapter 15 Dependability and Security Assurance
  • 16. Reliability validation activitiesEstablish the operational profile for the system.Construct test data reflecting the operational profile.Test the system and observe the number of failures and the times of these failures.Compute the reliability after a statistically significant number of failures have been observed.16Chapter 15 Dependability and Security Assurance
  • 17. Reliability measurement17Chapter 15 Dependability and Security Assurance
  • 18. Statistical testingTesting software for reliability rather than fault detection.Measuring the number of errors allows the reliability of the software to be predicted. Note that, for statistical reasons, more errors than are allowed for in the reliability specification must be induced.An acceptable level of reliability should be specified and the software tested and amended until that level of reliability is reached.18Chapter 15 Dependability and Security Assurance
  • 19. Reliability measurement problemsOperational profile uncertaintyThe operational profile may not be an accurate reflection of the real use of the system.High costs of test data generationCosts can be very high if the test data for the system cannot be generated automatically.Statistical uncertaintyYou need a statistically significant number of failures to compute the reliability but highly reliable systems will rarely fail.Recognizing failureIt is not always obvious when a failure has occurred as there may be conflicting interpretations of a specification.19Chapter 15 Dependability and Security Assurance
  • 20. Operational profilesAn operational profile is a set of test data whose frequency matches the actual frequency of these inputs from ‘normal’ usage of the system. A close match with actual usage is necessary otherwise the measured reliability will not be reflected in the actual usage of the system.It can be generated from real data collected from an existing system or (more often) depends on assumptions made about the pattern of usage of a system.20Chapter 15 Dependability and Security Assurance
  • 21. An operational profile21Chapter 15 Dependability and Security Assurance
  • 22. Operational profile generationShould be generated automatically whenever possible.Automatic profile generation is difficult for interactive systems.May be straightforward for ‘normal’ inputs but it is difficult to predict ‘unlikely’ inputs and to create test data for them.Pattern of usage of new systems is unknown.Operational profiles are not static but change as users learn about a new system and change the way that they use it.22Chapter 15 Dependability and Security Assurance
  • 23. Key pointsStatic analysis is an approach to V & V that examines the source code (or other representation) of a system, looking for errors and anomalies. It allows all parts of a program to be checked, not just those parts that are exercised by system tests.Model checking is a formal approach to static analysis that exhaustively checks all states in a system for potential errors.Statistical testing is used to estimate software reliability. It relies on testing the system with a test data set that reflects the operational profile of the software. 23Chapter 15 Dependability and Security Assurance
  • 24. Chapter 15 Dependability and Security AssuranceLecture 224Chapter 15 Dependability and Security Assurance
  • 25. Security testingTesting the extent to which the system can protect itself from external attacks.Problems with security testingSecurity requirements are ‘shall not’ requirements i.e. they specify what should not happen. It is not usually possible to define security requirements as simple constraints that can be checked by the system.The people attacking a system are intelligent and look for vulnerabilities. They can experiment to discover weaknesses and loopholes in the system.Static analysis may be used to guide the testing team to areas of the program that may include errors and vulnerabilities.25Chapter 15 Dependability and Security Assurance
  • 26. Security validationExperience-based validationThe system is reviewed and analysed against the types of attack that are known to the validation team.Tiger teamsA team is established whose goal is to breach the security of the system by simulating attacks on the system.Tool-based validationVarious security tools such as password checkers are used to analyse the system in operation.Formal verificationThe system is verified against a formal security specification.26Chapter 15 Dependability and Security Assurance
  • 27. Examples of entries in a security checklistSecurity checklist1. Do all files that are created in the application have appropriate access permissions? The wrong access permissions may lead to these files being accessed by unauthorized users.2. Does the system automatically terminate user sessions after a period of inactivity? Sessions that are left active may allow unauthorized access through an unattended computer.3. If the system is written in a programming language without array bound checking, are there situations where buffer overflow may be exploited? Buffer overflow may allow attackers to send code strings to the system and then execute them.4. If passwords are set, does the system check that passwords are ‘strong’? Strong passwords consist of mixed letters, numbers, and punctuation, and are not normal dictionary entries. They are more difficult to break than simple passwords.5. Are inputs from the system’s environment always checked against an input specification? Incorrect processing of badly formed inputs is a common cause of security vulnerabilities.27Chapter 15 Dependability and Security Assurance
  • 28. Process assuranceProcess assurance involves defining a dependable process and ensuring that this process is followed during the system development.Process assurance focuses on:Do we have the right processes? Are the processes appropriate for the level of dependability required. Should include requirements management, change management, reviews and inspections, etc.Are we doing the processes right? Have these processes been followed by the development team.Process assurance generates documentationAgile processes therefore are rarely used for critical systems.28Chapter 15 Dependability and Security Assurance
  • 29. Processes for safety assuranceProcess assurance is important for safety-critical systems development:Accidents are rare events so testing may not find all problems;Safety requirements are sometimes ‘shall not’ requirements so cannot be demonstrated through testing.Safety assurance activities may be included in the software process that record the analyses that have been carried out and the people responsible for these.Personal responsibility is important as system failures may lead to subsequent legal actions.29Chapter 15 Dependability and Security Assurance
  • 30. Safety related process activitiesCreation of a hazard logging and monitoring system.Appointment of project safety engineers who have explicit responsibility for system safety.Extensive use of safety reviews.Creation of a safety certification system where the safety of critical components is formally certified.Detailed configuration management (see Chapter 25).30Chapter 15 Dependability and Security Assurance
  • 31. Hazard analysisHazard analysis involves identifying hazards and their root causes.There should be clear traceability from identified hazards through their analysis to the actions taken during the process to ensure that these hazards have been covered.A hazard log may be used to track hazards throughout the process.31Chapter 15 Dependability and Security Assurance
  • 32. A simplified hazard log entry32Chapter 15 Dependability and Security Assurance
  • 33. Safety and dependability casesSafety and dependability cases are structured documents that set out detailed arguments and evidence that a required level of safety or dependability has been achieved.They are normally required by regulators before a system can be certified for operational use. The regulator’s responsibility is to check that a system is as safe or dependable as is practical.Regulators and developers work together and negotiate what needs to be included in a system safety/dependability case.33Chapter 15 Dependability and Security Assurance
  • 34. The system safety caseA safety case is:A documented body of evidence that provides a convincing and valid argument that a system is adequately safe for a given application in a given environment.Arguments in a safety or dependability case can be based on formal proof, design rationale, safety proofs, etc. Process factors may also be included.A software safety/dependability case is part of a wider system safety/dependability case.34Chapter 15 Dependability and Security Assurance
  • 35. The contents of a software safety case35Chapter 15 Dependability and Security Assurance
  • 36. Structured argumentsSafety/dependability cases should be based around structured arguments that present evidence to justify the assertions made in these arguments.The argument justifies why a claim about system safety/security is justified by the available evidence.36Chapter 15 Dependability and Security Assurance
  • 37. Structured arguments37Chapter 15 Dependability and Security Assurance
  • 38. Insulin pump safety argumentArguments are based on claims and evidence.Insulin pump safety:Claim: The maximum single dose of insulin to be delivered (CurrentDose) will not exceed MaxDose.Evidence: Safety argument for insulin pump (discussed later)Evidence: Test data for insulin pump. The value of currentDose was correctly computed in 400 testsEvidence: Static analysis report for insulin pump software revealed no anomalies that affected the value of CurrentDoseArgument: The evidence presented demonstrates that the maximum dose of insulin that can be computed = MaxDose.38Chapter 15 Dependability and Security Assurance
  • 39. Structured safety argumentsStructured arguments that demonstrate that a system meets its safety obligations.It is not necessary to demonstrate that the program works as intended; the aim is simply to demonstrate safety.Generally based on a claim hierarchy. You start at the leaves of the hierarchy and demonstrate safety. This implies the higher-level claims are true.39Chapter 15 Dependability and Security Assurance
  • 40. A safety claim hierarchy for the insulin pump 40Chapter 15 Dependability and Security Assurance
  • 41. Safety argumentsSafety arguments are intended to show that the system cannot reach in unsafe state.These are weaker than correctness arguments which must show that the system code conforms to its specification.They are generally based on proof by contradictionAssume that an unsafe state can be reached;Show that this is contradicted by the program code.A graphical model of the safety argument may be developed.41Chapter 15 Dependability and Security Assurance
  • 42. Construction of a safety argumentEstablish the safe exit conditions for a component or a program.Starting from the END of the code, work backwards until you have identified all paths that lead to the exit of the code.Assume that the exit condition is false.Show that, for each path leading to the exit that the assignments made in that path contradict the assumption of an unsafe exit from the component.42Chapter 15 Dependability and Security Assurance
  • 43. Insulin dose computation with safety checks-- The insulin dose to be delivered is a function of blood sugar level,-- the previous dose delivered and the time of delivery of the previous dosecurrentDose = computeInsulin () ;// Safety check—adjust currentDose if necessary.// if statement 1if (previousDose == 0){ if (currentDose > maxDose/2)currentDose= maxDose/2 ;}else if (currentDose > (previousDose * 2) )currentDose= previousDose * 2 ;// if statement 2if ( currentDose < minimumDose )currentDose= 0 ;else if ( currentDose > maxDose )currentDose= maxDose ;administerInsulin(currentDose) ;43Chapter 15 Dependability and Security Assurance
  • 44. Informal safety argument based on demonstrating contradictions 44Chapter 15 Dependability and Security Assurance
  • 45. Program pathsNeither branch of if-statement 2 is executedCan only happen if CurrentDose is >= minimumDose and <= maxDose.then branch of if-statement 2 is executedcurrentDose = 0.else branch of if-statement 2 is executedcurrentDose = maxDose.In all cases, the post conditions contradict the unsafe condition that the dose administered is greater than maxDose.45Chapter 15 Dependability and Security Assurance
  • 46. Key pointsSecurity validation is difficult because security requirements state what should not happen in a system, rather than what should. Furthermore, system attackers are intelligent and may have more time to probe for weaknesses than is available for security testing.Security validation may be carried out using experience-based analysis, tool-based analysis or ‘tiger teams’ that simulate attacks on a system.It is important to have a well-defined, certified process for safety-critical systems development. The process must include the identification and monitoring of potential hazards.46Chapter 15 Dependability and Security Assurance
  • 47. Key pointsSafety and dependability cases collect all of the evidence that demonstrates a system is safe and dependable. Safety cases are required when an external regulator must certify the system before it is used.Safety cases are usually based on structured arguments. Structured safety arguments show that an identified hazardous condition can never occur by considering all program paths that lead to an unsafe condition, and showing that the condition cannot hold.47Chapter 15 Dependability and Security Assurance