Software Defect Prevention via Continuous Inspection

49
Avoid the Zone of Chaos: Economics of Quality and Productivity via Code Review Reducing software development risk and cost while improving speed, quality and maintainability by applying review at all levels Presented by: Joshua Gough Atlanta ALT.NET Meetup http://www.meetup/com/AtlAltDotNet 6/19/2012

description

Research and guidance for educing software development risk and cost while improving speed, quality and maintainability by applying review at all levels.

Transcript of Software Defect Prevention via Continuous Inspection

Page 1: Software Defect Prevention via Continuous Inspection

Avoid the Zone of Chaos: Economics of Quality and

Productivity via Code ReviewReducing software development risk and cost while improving speed, quality and maintainability by applying review at all levels

Presented by: Joshua GoughAtlanta ALT.NET Meetuphttp://www.meetup/com/AtlAltDotNet6/19/2012

Page 2: Software Defect Prevention via Continuous Inspection

● Avoiding the Ultimate Risk● Software Development Processes● Risks associated with poor code-review

and lack of defect prevention● Automated .NET tools to support

"continuous inspection", code-review, and defect prevention

● Demo of static source-code analysis with Visual Studio and NDepend

Topic Outline

Page 3: Software Defect Prevention via Continuous Inspection

● How to validate that you're building the product your customers or users want and need?

● What untested assumptions and risks can lurk in requirements and design docs?

● What kinds of reviews can happen before or in parallel with coding to test assumptions and mitigate risks?

Avoiding The Ultimate Risk

Page 4: Software Defect Prevention via Continuous Inspection

Danger! Don't Go There!

Say What?

Page 5: Software Defect Prevention via Continuous Inspection

Royce Strawman Waterfall Model

Page 6: Software Defect Prevention via Continuous Inspection

Royce's Observations

Page 7: Software Defect Prevention via Continuous Inspection

Final Royce Model (Shame on our industry for not reading his whole paper)

Page 8: Software Defect Prevention via Continuous Inspection

Generic Iterative and Incremental Model

Page 9: Software Defect Prevention via Continuous Inspection

Boehm Spiral Model

Page 10: Software Defect Prevention via Continuous Inspection

Generic Agile

Page 11: Software Defect Prevention via Continuous Inspection

Extreme Programming (XP) Feedback Loops

Page 12: Software Defect Prevention via Continuous Inspection

Scrum Agile Process Framework

Page 13: Software Defect Prevention via Continuous Inspection

Whirlpool Model(A "violent water metaphor" we can live with and enjoy)

Page 14: Software Defect Prevention via Continuous Inspection

Scrum Agile Process Framework

Page 15: Software Defect Prevention via Continuous Inspection
Page 16: Software Defect Prevention via Continuous Inspection

Let's Review...

Page 17: Software Defect Prevention via Continuous Inspection

Traditional: Known | Known

Page 18: Software Defect Prevention via Continuous Inspection

Agile: Known | Unknown

Page 19: Software Defect Prevention via Continuous Inspection

Lean Startup: Unknown| Unknown

Page 20: Software Defect Prevention via Continuous Inspection

And Now: Code Review...

Page 21: Software Defect Prevention via Continuous Inspection

● Formal code review: involves a careful and detailed process with multiple participants and multiple phases: Example: Fagan Inspection

● Over-the-shoulder : One developer looks over the author's shoulder as the latter walks through the code.

● Email pass-around – Source code management system emails code to reviewers automatically after checkin is made.

● Pair Programming – Two authors develop code together at the same workstation, such is common in Extreme Programming.

● Tool-assisted code review – Authors and reviewers use specialized tools designed for peer code review.

Types of Code Review

Page 22: Software Defect Prevention via Continuous Inspection

Economic Reasons : Defect Cost Increase

Page 23: Software Defect Prevention via Continuous Inspection

Productivity Reasons: Faster Schedule

Relationship between defect rate and development time. As a rule, the projects that achieve the lowest defect rates also achieve the shortest schedules. -- Capers Jones

Sweet Spot!

Page 24: Software Defect Prevention via Continuous Inspection

Cisco Case Study Data : Defect Counts

Page 25: Software Defect Prevention via Continuous Inspection

Formal Code Review

Page 26: Software Defect Prevention via Continuous Inspection

Hope This Guy Gets Lost in Elevator

Page 27: Software Defect Prevention via Continuous Inspection

Email Pass-Around Pre Check-In

Page 28: Software Defect Prevention via Continuous Inspection

Email Pass-Around Post Check-In

Page 29: Software Defect Prevention via Continuous Inspection

Email Pass-Around Code Review(Pray Uncle Bob Doesn't Get The Email, Unless You Crave Discipline!)

Page 30: Software Defect Prevention via Continuous Inspection

Over-The-Shoulder Walkthrough

Page 31: Software Defect Prevention via Continuous Inspection

Don't Be This Guy (Either of Them!)

Page 32: Software Defect Prevention via Continuous Inspection

Pair Programming● Agile software development technique wherein two

programmers work together at one workstation● One drives and writes codes while the other observes

(or navigates) and reviews each line of code● The two programmers switch roles frequently● While reviewing, the observer also considers the

strategic direction of the work in order to:○ Devise ideas for improvements and likely future

problems to address○ Free the driver to focus all of his or her attention on

the "tactical" aspects of completing the current task, using the observer as a safety net and guide

Page 33: Software Defect Prevention via Continuous Inspection

In Other Words...

Page 34: Software Defect Prevention via Continuous Inspection

But, What Does the Science Say?● Isolated studies of pair-programming reveal

results ranging all across the map

● Some meta-analyses also reveal wide-ranging results

● I suspect the answer to be "It depends", therefore proceed without dogma and use pragmatism

Page 35: Software Defect Prevention via Continuous Inspection

Example Study

Page 36: Software Defect Prevention via Continuous Inspection

Study Summary● 48% increase in correctness for complex systems

○ No significant time difference

● Simple systems had 20% time decrease○ No significant correctness difference

● Overall no general time reduction or correctness increase○ But an overall 84% effort increase

● Limitations: this was a one day experiment with 99 individuals and 98 pairs

How would working together longer affect results?

Page 37: Software Defect Prevention via Continuous Inspection

Tool-Assisted Code Review!

Page 38: Software Defect Prevention via Continuous Inspection

Demo: Visual Studio Code Analysis

Page 39: Software Defect Prevention via Continuous Inspection

Demo: NDepend Critical Warnings

Page 40: Software Defect Prevention via Continuous Inspection

11 Lessons from SmartBear Cisco Case Study

Page 41: Software Defect Prevention via Continuous Inspection

1. Review fewer than 200-400 lines of code at a time.

Page 42: Software Defect Prevention via Continuous Inspection

2. Aim for an inspection rate of less than 300-500 LOC/hour

Page 43: Software Defect Prevention via Continuous Inspection

3. Take enough time for a proper, slow review, but not more than 60-90 minutes

Key

Page 44: Software Defect Prevention via Continuous Inspection

4. Authors should annotate source code before the review

Page 45: Software Defect Prevention via Continuous Inspection

Additional Tactical Tips...● 5. Establish quantifiable goals for code

review and capture metrics so you can improve your processes

● 6. Checklists substantially improve results for both authors and reviewers

● 7. Verify that defects are actually fixed!

Page 46: Software Defect Prevention via Continuous Inspection

And Managerial Tips...● 8. Managers must foster a good code review

culture in which finding defects is viewed positively

● 9. Beware the “Big Brother” effect

● 10. The Ego Effect: Do at least some code review, even if you don't have time to review it all

Page 47: Software Defect Prevention via Continuous Inspection

11.Lightweight-style code reviews are efficient, practical, and effective at finding bugs

Page 48: Software Defect Prevention via Continuous Inspection

Many Thanks to SmartBear Software!(See CodeCollaborator Free Trial and Jason Cohen's Free Book)

F r e e !

Page 49: Software Defect Prevention via Continuous Inspection

Contact● Meetup: http://www.meetup.com/AtlAltDotNet● Email: [email protected]● Web: http://agilefromthegroundup.blogspot.com