Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Quality Assurance

Similar presentations


Presentation on theme: "Software Quality Assurance"— Presentation transcript:

1 Software Quality Assurance
QA & QA in Context

2 Defect vs. QA QA ==> Quality Assurance
Focus on correctness aspect of quality QA as dealing with defects Post-release: Impact on consumers Pre-release: What producer can do What? Testing & many other activities When? Earlier ones desirable (lower cost), but may not be feasible How? Classification next slide

3 Classification of QA activities
What are the QA activities to deal with defects? QA activities can be classified into three generic categories – Defect Prevention Defect Reduction Defect Containment

4 Error/Fault/Failure & QA
Preventing fault injection Error blocking ( error ==> faults ) Error source removal Removal of faults ( pre: detection) Inspection : Fault discovered/removed Testing : Failures trace back to faults Failure prevention and containment Local failure ==> Global failure Via dynamic measures to tolerate faults Failure impact ==> Safety Assurance

5 [1] Defect prevention Defect prevention can be done in two generic ways- Error source removal Error blocking These QA activities prevent certain types of faults from being injected into the software Since errors are the missing/incorrect human actions that lead to injection of faults into software systems, we can directly correct or block these actions, or remove the underlying causes for them

6 [1] Defect prevention Error source removal : Eliminating certain error sources such as eliminating ambiguities or correcting human misconceptions, which are the root causes for errors. Root cause analysis  identify error sources Remove through education/training/etc.

7 [1] Defect prevention 2) Error blocking: Fault prevention or blocking by directly correcting or blocking these missing or incorrect human actions. Error : missing/incorrect actions Direct intervention to block errors fault injections prevented Systematic defect prevention via process improvements

8 [1] Defect prevention Defect prevention activities can be used for most software systems to reduce the chance for defect injections and the subsequent cost to deal with these injected defects.

9 [1] Defect prevention Most defect prevention activities assume that there are known error sources or missing/incorrect actions that result in fault injections, as follows: If human misconceptions are the error sources, education and training can help us remove these error sources If imprecise designs and implementations that deviate from product specifications or design intensions are the causes for faults, formal methods can help prevent such deviations If non-conformance to selected processes or standards is the problem that leads to fault injections, then process conformance/standard enforcement can help prevent the injection of related faults If certain tools/technologies can reduce fault injections under similar environments, they should be adopted

10 [1] Defect prevention Root cause analyses are needed to establish these pre-conditions, or root causes for injected or potential faults, so that appropriate defect prevention activities can be applied to prevent injection of similar faults in the future. Once such causal relations are established, appropriate QA activities can then be selected & applied for defect prevention. Education and training provide people-based solutions for error source elimination. Formal method provide a way to eliminate certain error sources and to verify the absence of related faults. Other defect prevention techniques Analysis & modeling for defect prevention Technologies, standards, and methodologies for defect prevention Software tools to block defect injection

11 [2] Defect Reduction Defect Reduction through fault detection and removal. These QA alternatives detect and remove certain faults once they have been injected into the software systems. Most traditional QA activities fall into this category. Inspection directly detects and removes faults from the software code, design etc. Testing removes faults based on related failure observations during program execution Various other means, based on either static analyses or observations of dynamic executions, can be applied to reduce the # of faults in a software system.

12 [2] Defect Reduction For most large software systems in use today, it is unrealistic to expect the defect prevention activities surveyed above to be 100% effective in preventing accidental fault injections. Need effective techniques to remove as many of the injected faults as possible under project constraints. Inspection Testing Other techniques & risk identification

13 [2] Defect Reduction Inspection: Direct fault detection & removal
Inspection is the most commonly used static technique for defect detection and removal Inspections are critical reading & analysis of software code or other software artifacts, such as designs, product specifications, test plans etc. Inspection are typically conducted by multiple human inspectors, through some coordination process. Faults are detected directly in inspection by inspectors Formality and structures of Inspections vary Informal reviews /Walkthroughs ( self-conducted, independent, group-wise) Formal inspections Inspection is most commonly applied to code, but it could be used throughout the development process (particularly early in s/w dev.)

14 [2] Defect Reduction Testing: Failure observation & fault removal
One of the most important activities of QA Most commonly performed QA activity Involves the execution of software and the observation of the program behavior/outcome. If a failure is observed, the execution record is then analyzed to locate & fix the fault(s) that caused the failure When can a specific testing activity be performed & related faults be detected? What to test, and what kind of faults are found? When, or at what defect level , to stop testing?

15 [2] Defect Reduction Other techniques & risk identification:Besides Inspection & Testing, there are other static analyses and dynamic activities. Various other static techniques –boundary value analysis, control flow and data flow analyses Various other dynamic, execution-based techniques also available –symbolic execution, simulation, prototyping They can help us detect and remove various defects early in the software development process, before large-scale testing becomes a viable alternative

16 [3] Defect Containment Defect Containment through fault tolerance, failure prevention, or failure impact minimization, to assure software reliability and safety. Defect reduction activities can only reduce the number of faults to a fairly low level, but not completely eliminate them ( because of the large size & high complexity of most software systems in use today) The containment measures focus on the failures by either containing them to local areas so that there are no global failures observable to users, or limiting the damage caused by software system failures Local failure ==> Global failure

17 [3] Defect Containment Defect Containment can be done in two generic ways: Some QA alternatives, such as the use of fault-tolerance techniques, break the causal relation between faults and failures so that local faults will not cause global failures, thus “tolerating” these local faults. A related extension to fault-tolerance is containment measures to avoid catastrophic consequences, such as death, personal injury, and severe property or environmental damages, in case of failures.

18 [3] Defect Containment Software fault-tolerance Motivation
Fault present but removal infeasible/impractical Fault tolerance ==> contain defects FT techniques: break fault-failure link Recovery: rollback & redo NVP: N-Version programming ==> Fault blocked

19 [3] Defect Containment Safety Assurance & Failure Containment
Extending FT idea for safety. Fault tolerance to failure “tolerance” Safety : Accident free Accident: Failure with severe consequences Hazard: Pre-condition to accident Safety Assurance: Hazard analysis, hazard elimination/reduction/control, damage control

20 Defect prevention, reduction & containment
Existing software quality literature generally covers defect reduction techniques such as testing & inspection in more details than defect prevention activities, while largely ignore the role of defect containment in QA.

21 QA in Context Defect handling is an integral part of QA activities, and different QA alternatives & related activities can be viewed as a concerted effort to ensure software quality. These activities can be integrated into software development & maintenance processes as an integral part of the overall process activities, typically in the following fashion – Testing is an integral part of any development process, forming an important link in the overall development chain. Quality reviews/inspections often accompany the transition from one phase to another. Various defect prevention activities are typically carried out in the early stages. Defect containment activities typically focus on the later, operational part of the development process (although their planning & implementation need to be carried out throughout the development process).

22 QA in Context QA and the overall development context
Defect handling/resolution Activities in process Alternative perspectives: Verification & Validation view Status & tracking Causal (root-cause) analysis Resolution: defect removal/etc. Improvement: break causal chain

23 Defect Measurement & Analysis
Parallel to defect handling Where injected/found? Type/severity/impact? More detailed classification possible? Consistent interpretation Timely defect reporting Defect analyses/quality models As follow up to defect handling Data & historical baselines Goal: assessment/prediction/improvement Causal /risk/reliability/etc. analyses

24 QA in Software Processes
Mega-process: initiation, development, maintenance, termination Development components: Requirement, Specification, Design, Coding, Testing, Release Process variations: Waterfall development process Iterative development process Spiral development process Lightweight /agile development process & XP Maintenance process too Mixed/Synthesized /customized processes

25 QA in Waterfall Process
Focus on defect Requirement & Specification Prevention Design Coding Focus on defect Testing Removal Focus on defect Containment Release & Support

26 QA in Waterfall Process
QA throughout process: Defect prevention in early phases Focused defect removal in testing phase Defect containment in late phases Phase transition: Inspection/Review/etc.

27 QA in Software Processes
Process variation( not Waterfall) and QA: Iterative: QA in iterative/increments Spiral: QA & risk management XP: test-driven development QA in maintenance processes: Focus on defect handling Some defect containment activities for critical or highly-dependable systems Data for future QA activities QA scattered through all processes

28 V&V Core QA activities grouped into V&V
Validation: w. r. t. requirement( what?) Appropriate/fit-for-use/”right things”? Scenario & usage inspection/testing System/integration/ acceptance testing Beta testing & operational support Verification: w. r. t. specification/design (how?) Correct/“doing things right” Design as specification for components Structural & functional testing Inspections and formal verification

29 V&V vs. DC View Two views of QA: Mapping between V&V and DC view:
V&V(verification & validation) view DC ( defect-centered) view Interconnected: mapping possible? Mapping between V&V and DC view: V&V after commitment ( defect injected directly) defect removal & containment focus Verification: more internal focus Validation: more external focus In V-model: closer to user (near top) or developer(near bottom)?

30 QA Activities: Mapping from DC view to V&V view
QA activity V&V view Defect prevention Both, mostly indirectly Requirement-related Validation, indirectly Other defect prevention Verification indirectly Formal specification Formal verification Verification Defect Reduction Both, but mostly verification Testing type- Unit integration Both, more verification system Both acceptance Both, more validation beta Validation Defect Containment Both, but mostly validation Operation Design & implementation


Download ppt "Software Quality Assurance"

Similar presentations


Ads by Google