Software Reviews Software reviews are the filter for the software engineering process Applied at various different points and serve to uncover errors that can be removed Purify the software engineering activities
Recap
Software Engineering II Lecture 28 Fakhar Lodhi
Software Engineering II Lecture 28 Fakhar Lodhi
The V-Model Requirements Acceptance Test Inspection Architecture Integration Test Inspection Design Unit Test Inspection The V-Model Code Inspection
Importance of reviews “Technical work needs reviewing for the same reason that pencils needs erasers: To err is human. The second reason that we need technical reviews is although that people are good at catching errors, large class of errors escape the originator more easily than they escape anyone else”. Freedman
Importance of reviews A review – any review – is a way of using the diversity of a group of people to: Point out needed improvements in the product of a single person or team Confirm those parts of a product in which improvement is either not desired or no needed Achieve technical work of more uniform, or at least more predictable, quality than can be achieved without reviews, in order to make technical work more manageable. Freedman
Defect Removal Efficiency Jones 1997 Design Inspection Code Inspection Quality Assurance Testing Worst 30% 37% 50% 55% 65% 75% 77% 85% 95% Median 40% 53% 70% 80% 87% 90% 97% 99% Best 60% 93% 99.9% Sample size – 1500 projects
Defect Amplification Model Defects Detection Errors from previous step Errors Passed Through Percentage Efficiency for error detection Errors passed To next step Amplified Errors 1:x Newly generated errors Development Step
10 37 94 0% 6 0% 10 20% 4 *1.5 27 * 3 10 25 25 Preliminary Design Errors passed through Amplification Factor Errors detected in this stage Errors detected in this stage Amplified Errors 10 37 94 0% 6 0% 10 20% Newly generated errors 4 *1.5 27 * 3 Errors passed to next step Errors passed to next step = 116 - 0.2*116 = 94 Errors passed to next step 10 25 25 Errors detected in this stage Preliminary Design Detailed Design Code /Unit test Total Errors/Defects 6+4*1.5+25 = 37 Total Errors/Defects 10+27*3+25 = 116 Errors passed to next step = 94 – 0.5*94 = 47 Errors passed to next step = 47 – 0.5*47 = 24 94 47 24 12 94 50% 47 50% 24 50% Final Defects left unidentified Errors detected in this stage Errors detected in this stage Integration test Validation test System test Errors detected in this stage Total Defects 47+0+0 = 47
After Introducing Inspections at the Design and Code Level Errors passed to next step = 29 - 0.5*29= 15 Errors passed to next step = 60 - 0.6*60= 24 Errors detected in this stage 3 15 24 70% 2 50% 5 60% 1 *1.5 10 * 3 10 Errors passed to next step 25 25 Preliminary Design Detailed Design Code /Unit test Total Defects 2+1.5+25=29 Total Defects 5+10*3+25=60 24 12 6 3 24 50% 12 50% 6 50% Integration test Validation test System test