SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
 
 
 
 
 

BW12
Concurrent Session 
11/7/2012 3:45 PM 
 
 
 
 
 
 

"Back to the Basics:
Principles for Constructing Quality
Software"
 
 
 

Presented by:
Rick Spiewak
The MITRE Corporation
 
 
 
 
 
 

Brought to you by: 
 

 
 
340 Corporate Way, Suite 300, Orange Park, FL 32073 
888‐268‐8770 ∙ 904‐278‐0524 ∙ sqeinfo@sqe.com ∙ www.sqe.com
Rick Spiewak
The MITRE Corporation
A lead software systems engineer at The MITRE Corporation, Rick Spiewak works at the
Electronic Systems Center at Hanscom Air Force Base as part of the Battle Management
Systems Group, concentrating on mission planning. In the computer software industry for more
than forty years, Rick has developed software and managed software development for data
acquisition systems, transaction processing, data communications, and networking. With a
focus on the software quality improvement process, Rick has spoken on this topic at a number
of conferences and been published in CrossTalk and MSDN magazines.
Back to the Basics: Principles for
Constructing Quality Software
2012 Better Software Conference East
7 November 2012
November,
Approved for Public Release; Distribution Unlimited. Case Number: 12-3430

Rick Spiewak
The MITRE Corporation
rspiewak@mitre.org
© 2012-The MITRE Corporation. All rights reserved.

What is Software Quality Management?:
An Application of the Basic Principles of Quality Management

“Quality is free. It’s not a gift, but it is
free.
free What costs money are the
unquality things – all the actions that
involve not doing jobs right the first
time.” 1
1

“Quality Is Free: The Art of Making Quality Certain”, Philip B. Crosby.

McGraw-Hill Companies (January 1, 1979)

2

1
What is Software Quality Management?:
An Application of the Basic Principles of Quality Management

“You can’t inspect quality into a
product.
product ” 2

Harold F. Dodge, as quoted in “Out of the Crisis”, W. Edwards Deming.
MIT, 1982

2

3

What is Software Quality Management?:
An Application of the Basic Principles of Quality Management

“Trying to improve software quality
by increasing the amount of testing
is like trying to lose weight by
weighing yourself more often.” 3
3

“Code Complete 2” Steve McConnell. Microsoft Press 2004

4

2
Back to the Basics
■Define quality:
– “Meeting the requirements.”
– Not: “Exceeding the customer’s expectations.”
■ Q lit improvement requires changes in processes
Quality i
t
i
h
i
– Fixing problems earlier in the process is more
effective and less costly than fixing them later.
– The causes of defects must be identified and fixed
in the processes
– Fixing defects without identifying and fixing the
causes does not improve product quality

Setting higher standards will help
drive better development practices
5

Two Ways to Get Started
■Classical Quality Management: start fresh in
identifying and fixing process defects which may
be unique to your organization
■Richard Hamming: “How do I obey Newton’s
rule? He said, ‘If I have seen further than others, it
is because I’ve stood on the shoulders of giants.’
These days we stand on each other’s feet”

If we want to profit from the work of
pioneers in the field of software quality, we
owe it to ourselves and them to stand on
their shoulders.
6

3
Phases of Software Development
■Requirements Definition
■Architecture
■Design

■Construction
■Testing
■Documentation
■Training
Training
■Deployment
■Sustainment
7

What’s Wrong With Software Construction?
■Historically a “write-only” exercise:
If it doesn’t break, no one else reads it

■Ad-hoc or absent standards
Ad h
b
t t d d
■Testing as a separate exercise
■Re-work (patch) to fix defects (“bugs”)
■Features take precedence over quality
■Definition of quality is not rigorous

Standards d b t
St d d and best practices are not
ti
t
uniformly followed because they are
not normally stated as requirements
8

4
What’s Missing in Software Construction?

If we built buildings this way….
They i h
Th might not stand up
d

Or, we might not
9

Buildings are not built this way
Building construction has standards!
Typical Building Code Requirements:
■ Building Heights and Areas
■ Types of Construction
■ Soils and Foundations
■ Fire-Resistance and Fire Protection Systems
■ Means of Egress
■ Accessibility
■ Exterior Walls
■ Roof Assemblies
■ Rooftop Structures
■ Structural Design
■ Materials (Concrete, Steel, Wood, etc.)
■ Electrical, Mechanical, Plumbing….
10

5
Missing: the “Building Code” for software

■There is a lack of external standards
■Created ad hoc by each organization
y
g
■No penalty for inadequate standards
■Best practices are often discarded
under cost and schedule pressure

11

Shoulders of Giants
■Where do building codes come from?
– Not from a blank sheet of paper!

■Starting Point: The International Code Council®
– V tt d by local authorities
Vetted b l
l th iti
– May rely on standards developed by various
independent standards organizations.

■Example- The Building Code of New York State:
“The Building Code of New York State combines
language from the 2006 International Building
C
Code®, and New York modifications developed by
f
the State Fire Prevention and Building Code
Council and its Building Code Technical
Subcommittee.”
12

6
A Concrete Example
■Do we send engineers into a warehouse
with a tub of concrete?
■Or – S
O Standing on the shoulders of giants…
f
– The American Concrete Institute®

■New York State Building Code:
“1903.1 General. Materials used to produce
concrete, concrete itself and testing thereof shall
comply with the applicable standards listed in
ACI 318.”

13

How Do We Apply This to Software?

■Don’t invent our own standards
■Identify industry best practices
■Enforce best practices
–Requirements
–Rules

This is how to make sure our
software doesn’t fall down!

14

7
Improving Development Practices:
■ Uniform Coding Standards
– References
– Tools
– Practices

■ Automated Unit Testing
– Design for test
– Tools for testing
– An Enterprise approach

■ Root Cause Analysis and Classification
– Analytic methods
– Taxonomy

Top level categories :
•
•
•
•
•
•
•
•
•
•

■ Code Reuse

0xxx Planning
1xxx Requirements and Features
2xxx F
2
Functionality as Implemented
ti
lit
I l
t d
3xxx Structural Bugs
4xxx Data
5xxx Implementation
6xxx Integration
7xxx Real-Time and Operating System
8xxx Test Definition or Execution Bugs
9xxx Other

– Development techniques
– Reliable sources
15

Improving Development Practices:
Uniform Coding Standards
■ References
– .NET
■ Framework

Design Guidelines: Conventions,
g
,
Idioms, and Patterns for Reusable .NET
Libraries
■ Practical Guidelines and Best Practices for
Microsoft Visual Basic and C# Developers

– Java
■ Effective Java Programming
■ The Elements of Java Style

Language Guide

■ Tools and Techniques
– Static Code Analysis
■

.NET: FxCop, Visual Studio

■ Java:

FindBugs, ParaSoft JTest

– Code Review (with audit)
16

8
Improving Development Practices: Tools
Static Analysis with FxCop for .NET
■ Microsoft developed free tool
■ Equivalent version in Visual Studio
■ Analyzes managed (.NET) code
■ Language independent
■ Applied to compiled code
■ Applies Microsoft best practices
■ Rules also documented in:
“Framework Design Guidelines”

17

Improving Development Practices:
Coding Standards – Code Review

■Preparation
–inspection of code by developer
inspection
–may uncover defects, inspire changes

■Review by other programmers
–sharing of ideas, improved techniques
–uncovers defects or poor techniques

■Determining, fixing causes of defects
■Customer audit
–provides assurance of execution
18

9
Improving Development Practices:
Automated Unit Testing
■Design Impact
– Design for Test
– Test Driven Development

■Tools and Techniques
– .NET
■ NUnit/NCover/NCover
■ Visual

Explorer

Studio

– Java
■ JUnit/Cobertura

(etc )
(etc.)

■Enterprise Impact
– Uniform Developer Usage
– Use by Test Organizations
19

Improving Development Practices:
Root Cause Analysis
■ A CMMI 5 practice area – but this should be a
requirement regardless of CMMI level.

■Find the cause
– “Five Whys”
– Kepner-Trego Problem Analysis
– IBM: Defect Causal Analysis

■Fix the cause => change the process
■Fix the problem: use the changed process
■How t P
H
to Preserve K
Knowledge?
l d ?
Top level categories :

– Classify Root Causes
– Look for patterns
– Metrics: Statistics, Pareto Diagrams

•
•
•
•
•
•
•
•
•
•

0xxx Planning
1xxx Requirements and Features
2xxx Functionality as Implemented
3xxx Structural Bugs
4xxx Data
5xxx Implementation
6xxx Integration
7xxx Real-Time and Operating System
8xxx Test Definition or Execution Bugs
9xxx Other

20

10
Improving Development Practices:
Root Cause Classification
■Beizer Taxonomy
– Classification of Root Causes of Software Defects
–D
Developed by Boris Beizer
l
db B i B i
– Published in “Software Testing Techniques 2nd Edition”
– Modified by Otto Vinter
– Based on the Dewey Decimal System
– Extensible Classification
– “A Beizer categorisation can be performed at a rate of 5
minutes per bug” *

■Orthogonal D f t Cl
O th
l Defect Classification
ifi ti
■Defect Causal Analysis
* PRIDE report, section 5.1
21

Classifying Root Causes:
Beizer* Taxonomy

Top level categories :
• 0xxx Planning
• 1xxx Requirements and Features
• 2xxx Functionality as Implemented
• 3xxx Structural Bugs
• 4xxx Data
• 5xxx Implementation
• 6xxx Integration
• 7xxx Real-Time and Operating System
• 8xxx Test Definition or Execution Bugs
• 9xxx Other
* Boris Beizer, "Software Testing Techniques", Second edition, 1990, ISBN-0-442-20672-0
22

11
Improving Development Practices:
Software Reuse for .NET

■Extensibility features in .NET
■Microsoft Patterns and Practices
–Enterprise Library
■ Data Access Application Block
■ Logging Application Block
■ Tracing (Core)

■.NET Library Features
–Windows Presentation Foundation
Windows
–Windows Communication Foundation
–Windows Workflow
–Entity Framework
–LINQ
23

Improving Requirements
■Requirements: a key source of defects
■1999 – PRIDE study in Denmark
■Key techniques studied:
– User scenario descriptions
– Navigational Prototype Usability Testing

■Key results achieved:
(Comparison between product versions)
– 27% reduction in error reports
– 72% reduction in usability issues per new screen
– Almost 3 times difference in productivity

24

12
How Much Does It Cost?

?

?
?

?

? ?
? ?

?

?

25

Cost/Benefit Analysis:
Automated Unit Testing (AUT)
■Cost and Benefits of Automated Unit Testing
■The situation:
– Organizations either use AUT or don’t
– No one will stop to compare
(if they do, they won’t tell anyone what they found out!)

■The basic cost problem:
– To test n lines of code, it takes n to n + 25% lines
– Why wouldn’t it cost more to do this?
– If there isn’t any more to it, why use this technique?

■The solution:
– Use a more complete model
– There’s more to cost than lines of code!
26

13
The SEER-SEM1 Modeling tool
■Based on analysis of thousands of projects
■Takes into account a wide variety of factors:
– Sizing
g
– Technology
– Staffing
– Tool Use
– Testing
– QA

■Delivers outputs:
p
– Effort
– Duration
– Cost
– Expected Defects
1SEER®

is a trademark of Galorath Incorporated

27

Cost/Benefit Analysis: Technique
■Consider the cost of defects:
– Legacy defects to fix
– New defects to fix
– Defects not yet fixed (legacy and new)

■Model costs using SEER-SEM scenarios
– Cost model reflecting added/modified code
– Comparison among scenarios with varying
development techniques
– Schedule Effort for each scenario
Schedule,
– Probable undetected remaining defects after
FQT (Formal Qualification Test) per scenario

28

14
Cost-Benefit Analysis: Example
■The Project:
– Three major applications
– Two vendor-supplied applications
pp
pp
– Moderate criticality

■The cases:
– Baseline: no AUT
■ Nominal

team experience (environment, tools, practices)

– Introducing AUT
■ Increases

automated tool use parameter
d
development environment experience
l
t
i
t
i
■ Increases volatility
■D
Decreases

– Introducing AUT and Added Experience
■ Increases

automated tool use parameter
and volatility changes are eliminated

■ Experience

29

Cost-Benefit Analysis: Results
■Estimated schedule months
■Estimated effort
– Effort months
– Effort hours
– Effort costs

■Estimate of defect potential
– Size
– Complexity

■Estimate of delivered defects
– Project size
– Programming language
– Requirements definition formality
– Specification level
– Test level
–…
30

15
Defect Prediction Detail*
Baseline Introducing  Difference
AUT

AUT + 
Experience

Difference

Potential Defects

738

756

2%

668

‐9%

Defects Removed

654

675

3%

600

‐8%

Delivered Defects
Defect Removal 
Efficiency
Hours/Defect 
Removed

84

81

‐4%

68

‐19%

88.60%

89.30%

36.52

37.41

89.80%
2%

35.3

‐3%

* SEER-SEM Analysis by Karen McRitchie, VP of Development, Galorath Incorporated
31

Cost Model*
Baseline
Schedule Months
Effort Months
Hours
Base Year Cost
Defect Prediction

Introducing  Difference
AUT

AUT + 
Difference
Experience

17.09

17.41

2%

16.43

‐4%

157

166

6%

139

‐11%

23,881

25,250

6%

21,181

‐11%

$2,733,755

$2,890,449

6%

$2,424,699

‐11%

84

81

‐4%

68

‐19%

* SEER-SEM Analysis by Karen McRitchie, VP of Development, Galorath Incorporated
32

16
Defect Removal – Capers Jones
■ What are the best, proven techniques?
■ Optimal Sequence of Software Defect Removal
From:
“Software Engineering Best Practices:
Lessons from Successful Projects in the Top Companies”
McGraw-Hill, 2010. Chapter 9, pp. 618-619

■ Combining these recommended methods “will achieve
cumulative defect removal efficiency levels in excess of
95 percent for every software project and can achieve 99
percent for some projects ”
projects.”

33

Pretest Defect Removal
1. Requirements inspection
2. Architecture inspection
3.
3 Design inspection
4. Code inspection
5. Test case inspection
6. Automated static analysis

34

17
Testing Defect Removal
7. Subroutine test
8. Unit test
9.
9 New f
function test
10.Security test
11.Performance test
12.Usability test
13.System test
14.Acceptance
14 Acceptance or beta test

35

What Should We Do?
■If you develop software:
– Follow general best practices
– Add best practices for your technology
– Formulate your own guidelines but ■ Stand

on the shoulders of giants!!

– Enforce your guidelines through reviews

■If you contract for software development
– Examine the practices of competitors
– Insist on accountability for best practices
– Trust, but verify!

■If you acquire software for the government
– This is a whole separate topic! See references.
36

18
How to Incorporate Best Practices
■Have/Require a Software Development Plan
– Processes and practices
– Tools and Techniques to be used
– Requirements management
– Types and frequency of reviews
– Types of tests
– Configuration and release management
– Well-Defined Deliverables

■Have/Require a Software Test Plan
– Development Test
– QA Testing
– Acceptance Test
37

Summary
■The use of known best practices can
improve the quality of software
p
q
y
■Better results can be achieved at the
same time as lower costs
■If you want these benefits, you have
to require best practices!

38

38

19
Questions

39

39

Selected References

■ Spiewak, Rick and McRitchie, Karen. Using Software Quality Methods to
Reduce Cost and Prevent Defects, CrossTalk, Dec 2008.
http://www.crosstalkonline.org/storage/issuearchives/2008/200812/200812-Spiewak.pdf
■ McConnell Steve Code Complete 2 Microsoft Press, 2004
McConnell, Steve.
2.
Press 2004.
■ Crosby, Philip B. Quality Is Free: The Art of Making Quality Certain.
McGraw-Hill Companies, 1979.
■ Beizer, Boris. Software Testing Techniques. 2nd ed. International
Thomson Computer Press, 1990.
■ Jones, Capers. Software Engineering Best Practices: Lessons from
Successful Projects in the Top Companies. McGraw-Hill Companies,
2010.
■ Vinter O., S. Lauesen & J. Pries-Heje. A Methodology for Preventing
Requirements Issues from Becoming Defects (1999)
http://www.ottovinter.dk/Finalrp3.doc
■ Spiewak, R. et al. Applying the fundamentals of quality to software
acquisition. 2012 IEEE SysCon
http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6189447
40
40
■

20

Mais conteúdo relacionado

Destaque

Agile Test Management and Reporting—Even in a Non-Agile Project
Agile Test Management and Reporting—Even in a Non-Agile ProjectAgile Test Management and Reporting—Even in a Non-Agile Project
Agile Test Management and Reporting—Even in a Non-Agile ProjectTechWell
 
Creating a Better Testing Future: The World Is Changing and We Must Change Wi...
Creating a Better Testing Future: The World Is Changing and We Must Change Wi...Creating a Better Testing Future: The World Is Changing and We Must Change Wi...
Creating a Better Testing Future: The World Is Changing and We Must Change Wi...TechWell
 
Decoupled System Interface Testing at FedEx
Decoupled System Interface Testing at FedExDecoupled System Interface Testing at FedEx
Decoupled System Interface Testing at FedExTechWell
 
Twelve Risks to Enterprise Software Projects-And What to Do About Them
Twelve Risks to Enterprise Software Projects-And What to Do About ThemTwelve Risks to Enterprise Software Projects-And What to Do About Them
Twelve Risks to Enterprise Software Projects-And What to Do About ThemTechWell
 
Sprinkle on Just Enough Process
Sprinkle on Just Enough ProcessSprinkle on Just Enough Process
Sprinkle on Just Enough ProcessTechWell
 
Mobile Testing Trends and Innovations
Mobile Testing Trends and InnovationsMobile Testing Trends and Innovations
Mobile Testing Trends and InnovationsTechWell
 
Essential Test-Driven Development
Essential Test-Driven DevelopmentEssential Test-Driven Development
Essential Test-Driven DevelopmentTechWell
 
Don’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing AgileDon’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing AgileTechWell
 
Are Your Test Reports a Death Sentence?
Are Your Test Reports a Death Sentence?Are Your Test Reports a Death Sentence?
Are Your Test Reports a Death Sentence?TechWell
 
Test Design Techniques in Exploratory Testing
Test Design Techniques in Exploratory TestingTest Design Techniques in Exploratory Testing
Test Design Techniques in Exploratory TestingTechWell
 
Agile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective ActionsAgile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective ActionsTechWell
 
Oh, WASP! Security Essentials for Web Apps
Oh, WASP! Security Essentials for Web AppsOh, WASP! Security Essentials for Web Apps
Oh, WASP! Security Essentials for Web AppsTechWell
 
Continuous Testing through Service Virtualization
Continuous Testing through Service VirtualizationContinuous Testing through Service Virtualization
Continuous Testing through Service VirtualizationTechWell
 
Configuration Management Best Practices
Configuration Management Best PracticesConfiguration Management Best Practices
Configuration Management Best PracticesTechWell
 
Ensuring Security through Continuous Testing
Ensuring Security through Continuous TestingEnsuring Security through Continuous Testing
Ensuring Security through Continuous TestingTechWell
 

Destaque (15)

Agile Test Management and Reporting—Even in a Non-Agile Project
Agile Test Management and Reporting—Even in a Non-Agile ProjectAgile Test Management and Reporting—Even in a Non-Agile Project
Agile Test Management and Reporting—Even in a Non-Agile Project
 
Creating a Better Testing Future: The World Is Changing and We Must Change Wi...
Creating a Better Testing Future: The World Is Changing and We Must Change Wi...Creating a Better Testing Future: The World Is Changing and We Must Change Wi...
Creating a Better Testing Future: The World Is Changing and We Must Change Wi...
 
Decoupled System Interface Testing at FedEx
Decoupled System Interface Testing at FedExDecoupled System Interface Testing at FedEx
Decoupled System Interface Testing at FedEx
 
Twelve Risks to Enterprise Software Projects-And What to Do About Them
Twelve Risks to Enterprise Software Projects-And What to Do About ThemTwelve Risks to Enterprise Software Projects-And What to Do About Them
Twelve Risks to Enterprise Software Projects-And What to Do About Them
 
Sprinkle on Just Enough Process
Sprinkle on Just Enough ProcessSprinkle on Just Enough Process
Sprinkle on Just Enough Process
 
Mobile Testing Trends and Innovations
Mobile Testing Trends and InnovationsMobile Testing Trends and Innovations
Mobile Testing Trends and Innovations
 
Essential Test-Driven Development
Essential Test-Driven DevelopmentEssential Test-Driven Development
Essential Test-Driven Development
 
Don’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing AgileDon’t Go over the Waterfall: Keep Agile Testing Agile
Don’t Go over the Waterfall: Keep Agile Testing Agile
 
Are Your Test Reports a Death Sentence?
Are Your Test Reports a Death Sentence?Are Your Test Reports a Death Sentence?
Are Your Test Reports a Death Sentence?
 
Test Design Techniques in Exploratory Testing
Test Design Techniques in Exploratory TestingTest Design Techniques in Exploratory Testing
Test Design Techniques in Exploratory Testing
 
Agile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective ActionsAgile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective Actions
 
Oh, WASP! Security Essentials for Web Apps
Oh, WASP! Security Essentials for Web AppsOh, WASP! Security Essentials for Web Apps
Oh, WASP! Security Essentials for Web Apps
 
Continuous Testing through Service Virtualization
Continuous Testing through Service VirtualizationContinuous Testing through Service Virtualization
Continuous Testing through Service Virtualization
 
Configuration Management Best Practices
Configuration Management Best PracticesConfiguration Management Best Practices
Configuration Management Best Practices
 
Ensuring Security through Continuous Testing
Ensuring Security through Continuous TestingEnsuring Security through Continuous Testing
Ensuring Security through Continuous Testing
 

Semelhante a Back to the Basics: Principles for Constructing Quality Software

Back to the basics principles for constructing quality software
Back to the basics   principles for constructing quality softwareBack to the basics   principles for constructing quality software
Back to the basics principles for constructing quality softwareRick Spiewak
 
SBQS - SOFTWARE CRAFTSMANSHIP
SBQS - SOFTWARE CRAFTSMANSHIPSBQS - SOFTWARE CRAFTSMANSHIP
SBQS - SOFTWARE CRAFTSMANSHIPPercival Lucena
 
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ..."Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...Fwdays
 
Fifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynoteFifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynoteGeoff Halprin
 
SE_Module1new.ppt
SE_Module1new.pptSE_Module1new.ppt
SE_Module1new.pptADARSHN40
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategiesRaquel Pau
 
Software Engineering.ppt
Software Engineering.pptSoftware Engineering.ppt
Software Engineering.pptHODCOMPUTER10
 
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SESE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SEAbhishekTripathi709328
 
Design for Testability in Practice
Design for Testability in PracticeDesign for Testability in Practice
Design for Testability in PracticeTechWell
 
Agile Development – Why requirements matter
Agile Development – Why requirements matterAgile Development – Why requirements matter
Agile Development – Why requirements matterAgile Austria Conference
 
Software Project management
Software Project managementSoftware Project management
Software Project managementsameer farooq
 

Semelhante a Back to the Basics: Principles for Constructing Quality Software (20)

Back to the basics principles for constructing quality software
Back to the basics   principles for constructing quality softwareBack to the basics   principles for constructing quality software
Back to the basics principles for constructing quality software
 
CAJ-014 Rick Spiewak
CAJ-014 Rick SpiewakCAJ-014 Rick Spiewak
CAJ-014 Rick Spiewak
 
SBQS - SOFTWARE CRAFTSMANSHIP
SBQS - SOFTWARE CRAFTSMANSHIPSBQS - SOFTWARE CRAFTSMANSHIP
SBQS - SOFTWARE CRAFTSMANSHIP
 
Week1.pptx
Week1.pptxWeek1.pptx
Week1.pptx
 
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ..."Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
 
SRS.pdf
SRS.pdfSRS.pdf
SRS.pdf
 
Fifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynoteFifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynote
 
SE-Lecture1.ppt
SE-Lecture1.pptSE-Lecture1.ppt
SE-Lecture1.ppt
 
SE_Module1new.ppt
SE_Module1new.pptSE_Module1new.ppt
SE_Module1new.ppt
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
 
Software Engineering.ppt
Software Engineering.pptSoftware Engineering.ppt
Software Engineering.ppt
 
ch1_introduction (1).ppt
ch1_introduction (1).pptch1_introduction (1).ppt
ch1_introduction (1).ppt
 
ch1_introduction (2).ppt
ch1_introduction (2).pptch1_introduction (2).ppt
ch1_introduction (2).ppt
 
ch1_introduction.ppt
ch1_introduction.pptch1_introduction.ppt
ch1_introduction.ppt
 
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SESE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Unit 1
Unit 1Unit 1
Unit 1
 
Design for Testability in Practice
Design for Testability in PracticeDesign for Testability in Practice
Design for Testability in Practice
 
Agile Development – Why requirements matter
Agile Development – Why requirements matterAgile Development – Why requirements matter
Agile Development – Why requirements matter
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 

Mais de TechWell

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and RecoveringTechWell
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization TechWell
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTechWell
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartTechWell
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyTechWell
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTechWell
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowTechWell
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityTechWell
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyTechWell
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTechWell
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipTechWell
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsTechWell
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GameTechWell
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsTechWell
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationTechWell
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessTechWell
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateTechWell
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessTechWell
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTechWell
 

Mais de TechWell (20)

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and Recovering
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build Architecture
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good Start
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test Strategy
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for Success
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlow
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your Sanity
 
Ma 15
Ma 15Ma 15
Ma 15
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps Strategy
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOps
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—Leadership
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile Teams
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile Game
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps Implementation
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery Process
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to Automate
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for Success
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile Transformation
 

Último

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Último (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Back to the Basics: Principles for Constructing Quality Software

  • 1.           BW12 Concurrent Session  11/7/2012 3:45 PM              "Back to the Basics: Principles for Constructing Quality Software"       Presented by: Rick Spiewak The MITRE Corporation             Brought to you by:        340 Corporate Way, Suite 300, Orange Park, FL 32073  888‐268‐8770 ∙ 904‐278‐0524 ∙ sqeinfo@sqe.com ∙ www.sqe.com
  • 2. Rick Spiewak The MITRE Corporation A lead software systems engineer at The MITRE Corporation, Rick Spiewak works at the Electronic Systems Center at Hanscom Air Force Base as part of the Battle Management Systems Group, concentrating on mission planning. In the computer software industry for more than forty years, Rick has developed software and managed software development for data acquisition systems, transaction processing, data communications, and networking. With a focus on the software quality improvement process, Rick has spoken on this topic at a number of conferences and been published in CrossTalk and MSDN magazines.
  • 3. Back to the Basics: Principles for Constructing Quality Software 2012 Better Software Conference East 7 November 2012 November, Approved for Public Release; Distribution Unlimited. Case Number: 12-3430 Rick Spiewak The MITRE Corporation rspiewak@mitre.org © 2012-The MITRE Corporation. All rights reserved. What is Software Quality Management?: An Application of the Basic Principles of Quality Management “Quality is free. It’s not a gift, but it is free. free What costs money are the unquality things – all the actions that involve not doing jobs right the first time.” 1 1 “Quality Is Free: The Art of Making Quality Certain”, Philip B. Crosby. McGraw-Hill Companies (January 1, 1979) 2 1
  • 4. What is Software Quality Management?: An Application of the Basic Principles of Quality Management “You can’t inspect quality into a product. product ” 2 Harold F. Dodge, as quoted in “Out of the Crisis”, W. Edwards Deming. MIT, 1982 2 3 What is Software Quality Management?: An Application of the Basic Principles of Quality Management “Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often.” 3 3 “Code Complete 2” Steve McConnell. Microsoft Press 2004 4 2
  • 5. Back to the Basics ■Define quality: – “Meeting the requirements.” – Not: “Exceeding the customer’s expectations.” ■ Q lit improvement requires changes in processes Quality i t i h i – Fixing problems earlier in the process is more effective and less costly than fixing them later. – The causes of defects must be identified and fixed in the processes – Fixing defects without identifying and fixing the causes does not improve product quality Setting higher standards will help drive better development practices 5 Two Ways to Get Started ■Classical Quality Management: start fresh in identifying and fixing process defects which may be unique to your organization ■Richard Hamming: “How do I obey Newton’s rule? He said, ‘If I have seen further than others, it is because I’ve stood on the shoulders of giants.’ These days we stand on each other’s feet” If we want to profit from the work of pioneers in the field of software quality, we owe it to ourselves and them to stand on their shoulders. 6 3
  • 6. Phases of Software Development ■Requirements Definition ■Architecture ■Design ■Construction ■Testing ■Documentation ■Training Training ■Deployment ■Sustainment 7 What’s Wrong With Software Construction? ■Historically a “write-only” exercise: If it doesn’t break, no one else reads it ■Ad-hoc or absent standards Ad h b t t d d ■Testing as a separate exercise ■Re-work (patch) to fix defects (“bugs”) ■Features take precedence over quality ■Definition of quality is not rigorous Standards d b t St d d and best practices are not ti t uniformly followed because they are not normally stated as requirements 8 4
  • 7. What’s Missing in Software Construction? If we built buildings this way…. They i h Th might not stand up d Or, we might not 9 Buildings are not built this way Building construction has standards! Typical Building Code Requirements: ■ Building Heights and Areas ■ Types of Construction ■ Soils and Foundations ■ Fire-Resistance and Fire Protection Systems ■ Means of Egress ■ Accessibility ■ Exterior Walls ■ Roof Assemblies ■ Rooftop Structures ■ Structural Design ■ Materials (Concrete, Steel, Wood, etc.) ■ Electrical, Mechanical, Plumbing…. 10 5
  • 8. Missing: the “Building Code” for software ■There is a lack of external standards ■Created ad hoc by each organization y g ■No penalty for inadequate standards ■Best practices are often discarded under cost and schedule pressure 11 Shoulders of Giants ■Where do building codes come from? – Not from a blank sheet of paper! ■Starting Point: The International Code Council® – V tt d by local authorities Vetted b l l th iti – May rely on standards developed by various independent standards organizations. ■Example- The Building Code of New York State: “The Building Code of New York State combines language from the 2006 International Building C Code®, and New York modifications developed by f the State Fire Prevention and Building Code Council and its Building Code Technical Subcommittee.” 12 6
  • 9. A Concrete Example ■Do we send engineers into a warehouse with a tub of concrete? ■Or – S O Standing on the shoulders of giants… f – The American Concrete Institute® ■New York State Building Code: “1903.1 General. Materials used to produce concrete, concrete itself and testing thereof shall comply with the applicable standards listed in ACI 318.” 13 How Do We Apply This to Software? ■Don’t invent our own standards ■Identify industry best practices ■Enforce best practices –Requirements –Rules This is how to make sure our software doesn’t fall down! 14 7
  • 10. Improving Development Practices: ■ Uniform Coding Standards – References – Tools – Practices ■ Automated Unit Testing – Design for test – Tools for testing – An Enterprise approach ■ Root Cause Analysis and Classification – Analytic methods – Taxonomy Top level categories : • • • • • • • • • • ■ Code Reuse 0xxx Planning 1xxx Requirements and Features 2xxx F 2 Functionality as Implemented ti lit I l t d 3xxx Structural Bugs 4xxx Data 5xxx Implementation 6xxx Integration 7xxx Real-Time and Operating System 8xxx Test Definition or Execution Bugs 9xxx Other – Development techniques – Reliable sources 15 Improving Development Practices: Uniform Coding Standards ■ References – .NET ■ Framework Design Guidelines: Conventions, g , Idioms, and Patterns for Reusable .NET Libraries ■ Practical Guidelines and Best Practices for Microsoft Visual Basic and C# Developers – Java ■ Effective Java Programming ■ The Elements of Java Style Language Guide ■ Tools and Techniques – Static Code Analysis ■ .NET: FxCop, Visual Studio ■ Java: FindBugs, ParaSoft JTest – Code Review (with audit) 16 8
  • 11. Improving Development Practices: Tools Static Analysis with FxCop for .NET ■ Microsoft developed free tool ■ Equivalent version in Visual Studio ■ Analyzes managed (.NET) code ■ Language independent ■ Applied to compiled code ■ Applies Microsoft best practices ■ Rules also documented in: “Framework Design Guidelines” 17 Improving Development Practices: Coding Standards – Code Review ■Preparation –inspection of code by developer inspection –may uncover defects, inspire changes ■Review by other programmers –sharing of ideas, improved techniques –uncovers defects or poor techniques ■Determining, fixing causes of defects ■Customer audit –provides assurance of execution 18 9
  • 12. Improving Development Practices: Automated Unit Testing ■Design Impact – Design for Test – Test Driven Development ■Tools and Techniques – .NET ■ NUnit/NCover/NCover ■ Visual Explorer Studio – Java ■ JUnit/Cobertura (etc ) (etc.) ■Enterprise Impact – Uniform Developer Usage – Use by Test Organizations 19 Improving Development Practices: Root Cause Analysis ■ A CMMI 5 practice area – but this should be a requirement regardless of CMMI level. ■Find the cause – “Five Whys” – Kepner-Trego Problem Analysis – IBM: Defect Causal Analysis ■Fix the cause => change the process ■Fix the problem: use the changed process ■How t P H to Preserve K Knowledge? l d ? Top level categories : – Classify Root Causes – Look for patterns – Metrics: Statistics, Pareto Diagrams • • • • • • • • • • 0xxx Planning 1xxx Requirements and Features 2xxx Functionality as Implemented 3xxx Structural Bugs 4xxx Data 5xxx Implementation 6xxx Integration 7xxx Real-Time and Operating System 8xxx Test Definition or Execution Bugs 9xxx Other 20 10
  • 13. Improving Development Practices: Root Cause Classification ■Beizer Taxonomy – Classification of Root Causes of Software Defects –D Developed by Boris Beizer l db B i B i – Published in “Software Testing Techniques 2nd Edition” – Modified by Otto Vinter – Based on the Dewey Decimal System – Extensible Classification – “A Beizer categorisation can be performed at a rate of 5 minutes per bug” * ■Orthogonal D f t Cl O th l Defect Classification ifi ti ■Defect Causal Analysis * PRIDE report, section 5.1 21 Classifying Root Causes: Beizer* Taxonomy Top level categories : • 0xxx Planning • 1xxx Requirements and Features • 2xxx Functionality as Implemented • 3xxx Structural Bugs • 4xxx Data • 5xxx Implementation • 6xxx Integration • 7xxx Real-Time and Operating System • 8xxx Test Definition or Execution Bugs • 9xxx Other * Boris Beizer, "Software Testing Techniques", Second edition, 1990, ISBN-0-442-20672-0 22 11
  • 14. Improving Development Practices: Software Reuse for .NET ■Extensibility features in .NET ■Microsoft Patterns and Practices –Enterprise Library ■ Data Access Application Block ■ Logging Application Block ■ Tracing (Core) ■.NET Library Features –Windows Presentation Foundation Windows –Windows Communication Foundation –Windows Workflow –Entity Framework –LINQ 23 Improving Requirements ■Requirements: a key source of defects ■1999 – PRIDE study in Denmark ■Key techniques studied: – User scenario descriptions – Navigational Prototype Usability Testing ■Key results achieved: (Comparison between product versions) – 27% reduction in error reports – 72% reduction in usability issues per new screen – Almost 3 times difference in productivity 24 12
  • 15. How Much Does It Cost? ? ? ? ? ? ? ? ? ? ? 25 Cost/Benefit Analysis: Automated Unit Testing (AUT) ■Cost and Benefits of Automated Unit Testing ■The situation: – Organizations either use AUT or don’t – No one will stop to compare (if they do, they won’t tell anyone what they found out!) ■The basic cost problem: – To test n lines of code, it takes n to n + 25% lines – Why wouldn’t it cost more to do this? – If there isn’t any more to it, why use this technique? ■The solution: – Use a more complete model – There’s more to cost than lines of code! 26 13
  • 16. The SEER-SEM1 Modeling tool ■Based on analysis of thousands of projects ■Takes into account a wide variety of factors: – Sizing g – Technology – Staffing – Tool Use – Testing – QA ■Delivers outputs: p – Effort – Duration – Cost – Expected Defects 1SEER® is a trademark of Galorath Incorporated 27 Cost/Benefit Analysis: Technique ■Consider the cost of defects: – Legacy defects to fix – New defects to fix – Defects not yet fixed (legacy and new) ■Model costs using SEER-SEM scenarios – Cost model reflecting added/modified code – Comparison among scenarios with varying development techniques – Schedule Effort for each scenario Schedule, – Probable undetected remaining defects after FQT (Formal Qualification Test) per scenario 28 14
  • 17. Cost-Benefit Analysis: Example ■The Project: – Three major applications – Two vendor-supplied applications pp pp – Moderate criticality ■The cases: – Baseline: no AUT ■ Nominal team experience (environment, tools, practices) – Introducing AUT ■ Increases automated tool use parameter d development environment experience l t i t i ■ Increases volatility ■D Decreases – Introducing AUT and Added Experience ■ Increases automated tool use parameter and volatility changes are eliminated ■ Experience 29 Cost-Benefit Analysis: Results ■Estimated schedule months ■Estimated effort – Effort months – Effort hours – Effort costs ■Estimate of defect potential – Size – Complexity ■Estimate of delivered defects – Project size – Programming language – Requirements definition formality – Specification level – Test level –… 30 15
  • 18. Defect Prediction Detail* Baseline Introducing  Difference AUT AUT +  Experience Difference Potential Defects 738 756 2% 668 ‐9% Defects Removed 654 675 3% 600 ‐8% Delivered Defects Defect Removal  Efficiency Hours/Defect  Removed 84 81 ‐4% 68 ‐19% 88.60% 89.30% 36.52 37.41 89.80% 2% 35.3 ‐3% * SEER-SEM Analysis by Karen McRitchie, VP of Development, Galorath Incorporated 31 Cost Model* Baseline Schedule Months Effort Months Hours Base Year Cost Defect Prediction Introducing  Difference AUT AUT +  Difference Experience 17.09 17.41 2% 16.43 ‐4% 157 166 6% 139 ‐11% 23,881 25,250 6% 21,181 ‐11% $2,733,755 $2,890,449 6% $2,424,699 ‐11% 84 81 ‐4% 68 ‐19% * SEER-SEM Analysis by Karen McRitchie, VP of Development, Galorath Incorporated 32 16
  • 19. Defect Removal – Capers Jones ■ What are the best, proven techniques? ■ Optimal Sequence of Software Defect Removal From: “Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies” McGraw-Hill, 2010. Chapter 9, pp. 618-619 ■ Combining these recommended methods “will achieve cumulative defect removal efficiency levels in excess of 95 percent for every software project and can achieve 99 percent for some projects ” projects.” 33 Pretest Defect Removal 1. Requirements inspection 2. Architecture inspection 3. 3 Design inspection 4. Code inspection 5. Test case inspection 6. Automated static analysis 34 17
  • 20. Testing Defect Removal 7. Subroutine test 8. Unit test 9. 9 New f function test 10.Security test 11.Performance test 12.Usability test 13.System test 14.Acceptance 14 Acceptance or beta test 35 What Should We Do? ■If you develop software: – Follow general best practices – Add best practices for your technology – Formulate your own guidelines but ■ Stand on the shoulders of giants!! – Enforce your guidelines through reviews ■If you contract for software development – Examine the practices of competitors – Insist on accountability for best practices – Trust, but verify! ■If you acquire software for the government – This is a whole separate topic! See references. 36 18
  • 21. How to Incorporate Best Practices ■Have/Require a Software Development Plan – Processes and practices – Tools and Techniques to be used – Requirements management – Types and frequency of reviews – Types of tests – Configuration and release management – Well-Defined Deliverables ■Have/Require a Software Test Plan – Development Test – QA Testing – Acceptance Test 37 Summary ■The use of known best practices can improve the quality of software p q y ■Better results can be achieved at the same time as lower costs ■If you want these benefits, you have to require best practices! 38 38 19
  • 22. Questions 39 39 Selected References ■ Spiewak, Rick and McRitchie, Karen. Using Software Quality Methods to Reduce Cost and Prevent Defects, CrossTalk, Dec 2008. http://www.crosstalkonline.org/storage/issuearchives/2008/200812/200812-Spiewak.pdf ■ McConnell Steve Code Complete 2 Microsoft Press, 2004 McConnell, Steve. 2. Press 2004. ■ Crosby, Philip B. Quality Is Free: The Art of Making Quality Certain. McGraw-Hill Companies, 1979. ■ Beizer, Boris. Software Testing Techniques. 2nd ed. International Thomson Computer Press, 1990. ■ Jones, Capers. Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies. McGraw-Hill Companies, 2010. ■ Vinter O., S. Lauesen & J. Pries-Heje. A Methodology for Preventing Requirements Issues from Becoming Defects (1999) http://www.ottovinter.dk/Finalrp3.doc ■ Spiewak, R. et al. Applying the fundamentals of quality to software acquisition. 2012 IEEE SysCon http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6189447 40 40 ■ 20