Top Banner
Jonathan Aldrich Introduction to Software Analysis Analysis of Software Artifacts © 2009 Jonathan Aldrich 2 Analysis of Software Artifacts Introduction to Software Analysis
54

Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Jun 28, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Jonathan Aldrich

Introduction to

Software Analysis

Analysis of Software Artifacts

©2009 Jonathan Aldrich

2

Analy

sis

of S

oftw

are

Art

ifacts

Introduction to Software Analysis

Page 2: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

5Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software Disasters: Therac-25

•Delivered radiation treatment

•2 modes

•Electron: low power electrons

•X-Ray: high power electrons

converted to x-rays with

shield

•Race condition

•Operator specifies x-ray,

then quickly corrects to

electron mode

•Dosage process doesn’t see

the update, delivers x-ray

dose

•Mode process sees update,

removes shield

•Consequences

•3 deaths, 3 serious injuries

from radiation overdose

from http://www.netcomp.monash.edu.au/cpe9001/assets/readings/HumanErrorTalk6.gif

source: Levesonand Turner, An Investigation of the Therac-25 Accidents, IEEE Computer, Vol. 26, No. 7, July 1993.

Page 3: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

9Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software Disasters: Ariane5

•$7 billion, 10 year rocket

development

•Exploded on first launch

•A numeric overflow occurred in

an alignment system

•Converting lateral velocity from

a 64 to a 16-bit form

at

•Guidance system shut down

and reported diagnostic data

•Diagnostic data was interpreted

as real, led to explosion

•Irony: alignment system was

unnecessary after launch and

should have been shut off

•Double irony: overflow was in

code reused from Ariane4

•Overflow impossible in Ariane4

•Decision to reuse Ariane4

software, as developing new

software was deemed too risky!

from http://www-user.tu-chemnitz.de/~uro/teaching/crashed-numeric/ariane5/

source: Ariane501 Inquiry Board report

Page 4: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

10

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software Disasters

Patriot Missile

Mars Rover

Mars Clim

ate Orbiter

Page 5: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

11

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software Quality Challenges

•Expense

•Testing and evaluation may consume more time and cost in

the software engineering process than design and code

development

•Pre

cis

ion

•Almost impossible to completely succeed in testing and QA

•“Very high quality”is rarely achieved, even for critical systems

•Major gaps in testing and inspection

•C

onsequences

•NIST report: $60B lost

•Developers: Holding back features and new capabilities[adapted from

Scherlis]

Page 6: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

13

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Hardware Disasters: What’s Different?

•Can be equally serious

•But don’t seem to be equally common

Page 7: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

15

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Why is Building Quality Software Hard?

•For other disciplines we do pretty well

•Well-understood quality assurance techniques

•Failures happen, but they are arguably rare

•Engineers can m

easure and predict quality

•For software, we aren’t doing well

•Failure is a daily or weekly occurrence

•How m

any cars get recalled for a patch once a

month?

•We have relatively poor techniques for measuring,

predicting, and assuring quality

Page 8: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

16

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software vs. other Engineering Disciplines

•Every software project is different

•Classifications of engineering design

•Routine design: specialize a well-known design to a

specific context

•Most common in engineering projects

Anyone recognize these cars?

Page 9: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

17

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software vs. other Engineering Disciplines

•Every software project is different

•Classifications of engineering design

•Routine design: specialize a well-known design to a

specific context

•Most common in engineering projects

•Innovative design: extend a well-known design to new

parameter values

•Sometimes risky –see Tacoma Narrows Bridge!

Page 10: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

18

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software vs. other Engineering Disciplines

•Every software project is different

•Classifications of engineering design

•Routine design: specialize a well-known design to a

specific context

•Most common in engineering projects

•Innovative design: extend a well-known design to new

parameter values

•Creative design: introduce new parameter values into the

design space

•Involves generating new prototypes

•Variants of old prototypes, or completely new

•Relatively unusual, and highly risky

Page 11: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

19

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software vs. other Engineering Disciplines

•Every software project is different

•Classifications of engineering design

•Routine design: specialize a well-known design to a

specific context

•Most common in engineering projects

•Innovative design: extend a well-known design to new

parameter values

•Creative design: introduce new parameter values into the

design space

•Involves generating new prototypes

•Variants of old prototypes, or completely new

•Relatively unusual, and highly risky

•Software

•Nearly all design is innovative or creative

•As soon as design is routine, we put it in a library,

language or tool!

•“software manufacturing”will never happen

Page 12: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

20

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software’s Unmatched Complexity

•50 M

loc= 1 m

illion pages

•What other man-m

ade artifacts have designs this large?

•We do because software is so flexible and powerful

•We are limited only by complexity

•As soon as we m

anage one level of complexity, the m

arket will

push us to add more!

•Worse: every page matters

•Q: Could W

indows crash because a third-party device driver

has a bug?

•A: Yes. In fact, that’s the biggest cause of Windows crashes.

•Why?

Page 13: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

21

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Engineering Mathematics

•Continuous m

athematics: calculus, etc.

•Foundation of electrical, mechanical, civil, even chemical

engineering

•Some quality strategies

•Divide and conquer

•Break a big problem into parts

•Physical location: floor, room…

•Conceptual system: frame, shell, wiring, plumbing…

•Solve those parts separately

•Overengineer

•Build two so if one fails the other will work

•Build twice as strong to allow for failure

•Statistical analysis of quality

•Relies on continuous domain

•These work because the different parts of the system are

independent

•Never completely true, but true enough in practice

Page 14: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

23

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software uses Discrete Mathematics

•Old quality strategies fail!

•Divide and conquer

•Butterfly effect: small bugs mushroom into big problems

•Overengineering

•Build two, and both will fail simultaneously

•Statistical quality analysis

•Most software has few m

eaningful statistical properties

•Discrete math defeats conventional modularity

•Must leverage discrete math to analyze software

•Choose concrete cases based on conceptual categories

•Functional test coverage

•Inspection checklists

•Dynamic analysis

•Construct proofs based on considering all abstract cases

•Static analysis

•Form

al modeling

•Program verification

•Very differentfrom analysis in other engineering disciplines

Page 15: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

24

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Questions for Analysis

•How can we ensure a system does not behave badly?

•How can we ensure a system meets its specification?

•How can we ensure a system meets the needs of its

users?

Page 16: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

25

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Software Analysis, Defined

•The systematic examination of a software artifact to

determine its properties

•Systematic

•Attempting to be comprehensive

•Test coverage, inspection checklists, exhaustive m

odel checking

•Examination

•Automated

•Regression testing, static analysis, dynamic analysis

•Manual

•Manual testing, inspection, modeling

•Artifact

•Code, execution trace, test case, design or requirements

document

•Properties

•Functional: code correctness

•Quality attributes: evolvability, security, reliability, perform

ance,

Page 17: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

27

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Verification and Validation

Two kinds of Analysis questions

•Verification

•Does the system meet its specification?

•i.e. did webuild the system right?

•Flaws in design or code

•Incorrect design or implementation decisions

•Validation

•Does the system meet the needs of users?

•i.e. did we build the right system?

•Flaws in specification

•Incorrect requirements capture

•We will focus m

ostly on verification

•Testing, inspection discussion will touch on validation

•Other validation approaches beyond scope of course

•prototyping, interviews, scenarios, user studies

[adapted from

Scherlis]

Page 18: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

29

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Analysis in a Process Context

Quality Goal

Definition

Artifact

Development

Artifact Analysis

Quality

Measurement

Process Refinement

Guidelines from

other courses:

specific and

testable

Page 19: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

30

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Analysis in a Process Context

Quality Goal

Definition

Artifact

Development

Artifact Analysis

Quality

Measurement

Process Refinement

Page 20: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

31

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Prevention –Worth a Pound of Cure

•Requirements

•Involve stakeholders

•Non-functional

attributes

•Prototyping

•Process

•Risk management

•Root cause analysis

•Continuous

improvement

•Design

•Design patterns

•Separation of concerns

•Encapsulation

•Safe APIs

•Coding

•Safe languages

•Safe coding practices

Evaluative techniques like testing are important—

but quality cannot be tested in!

[adapted from Scherlis]

Page 21: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

32

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Analysis in a Process Context

Quality Goal

Definition

Artifact

Development

Artifact Analysis

Quality

Measurement

Process Refinement

Page 22: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

34

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Principal Evaluative Techniques

•Testing

•Direct execution of code on test data in a controlled environment

•Functional and perform

ance attributes

•Component-level

•System-level

•Identify and locate faults –no assurance of complete coverage

•Inspection

•Human evaluation of code, designdocuments (specs and m

odels)

•Structural attributes

•Design and architecture

•Coding practices

•Algorithms and design elements

•Creation and codification of understanding

•Dynamic analysis

•Tools extracting data from test runs

•Finding faults: memory errors

•Gathering data: perform

ance, invariants

•Inform

ation is precise but does not cover all possible executions

[adapted from Scherlis]

Page 23: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

35

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Emerging Evaluative Techniques

•Modeling

•Building and analyzing form

al models of a system

•Find design flaws

•Predict system properties

•Often tool-supported

•Static analysis

•Tool-supported direct static evaluation of form

al software artifacts

•Mechanical errors

•Null references

•Unexpected exceptions

•Memory usage

•Can make (partial) correctness guarantees about all executions

•Form

al (i.e. mathematical) verification

•Form

al proof that a program m

eets its specification

•Typical focus on functional attributes

•Some tool support

•Typically expensive

[adapted from Scherlis]

Page 24: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

37

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Criteria for Evaluating Techniques

•Cost

•Money, time to market

•Sunk and recurring

•Timeliness

•Design time

•During coding

•During testing

•After deploym

ent

•Accuracy

•False positives

•False negatives

•Development value

•Is the inform

ation actionable?

•e.g. enough inform

ation to fix a

bug?

•Risks of adoption

•Measurability

•What can we measure about

the technique’s outcomes?

•Scope: What kinds of defects?

•Functionality

•Quality attributes:

perform

ance, usability,

security, safety, …

•Design problems

[adapted from Scherlis]

Page 25: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

38

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Analysis in a Process Context

Quality Goal

Definition

Artifact

Development

Artifact Analysis

Quality

Measurement

Process Refinement

Page 26: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

39

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Faults, Errors, Failures, Hazards

•Faults, D

efe

cts

, B

ugs

•Fault

–a fla

w in a

physic

al com

ponent

•Traditional notion of a fault in hardware reliability theory (physical parts

wearing out)

•D

efe

ct (o

r B

ug) –

a s

tatic fla

w in s

oftw

are

code

•Syntactically local in code or structurally pervasive

•Software defects cause errors only when triggered by use.

•Err

or–

incorr

ect sta

te a

t execution tim

e c

aused b

y a

defe

ct

•E.g., buffer overflow, race condition, deadlock, corrupted data

•Failure

–effect of an e

rror on s

yste

m c

apability

•E.g., program crashes, attacker gains control, program becomes

unresponsive, incorrect output

•Severity

–cost of fa

ilure

to s

takehold

ers

•E.g., Loss of life, privacy compromise

•H

azard

–pro

duct of fa

ilure

pro

bability a

nd s

everity

•Equivalent to risk exposure

[adapted from

Scherlis]

Page 27: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

40

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Robustness / Fault Tolerance

•How does the system behave in the presence of errors in the

system or environment?

•Hardware: memory parity errors, sensor failures, actuator anomalies

•Software: buffer overflows, null dereferences, protocol violations

•Environment: network faults, inputs out of range

•Robustness:diminishing the likelihood or severity of fa

ilure

in

response to the d

efe

ct

•Buffer overrun in C == ? in Java

•Strategies for robustness

•Type systems

•Run-time system checks

•Rebooting components

•Autonomic architectures

•Self-healing data structures

•Data validation

•State estimators

Page 28: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

41

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Analysis in a Process Context

Quality Goal

Definition

Artifact

Development

Artifact Analysis

Quality

Measurement

Process Refinement

Page 29: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

42

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Root Cause Analysis at Microsoft

•Gather data on failures

•Every MSRC bulletin

•Beta release feedback

•Watson crash reports

•Self host

•Bug databases

•Understand important failures in a deep way

•Understand why the defect was introduced

•Not just the incorrect code

•Understand why it was not caught earlier

•Process failure

•Identify patterns in defect data

•Design and adjust the engineering process to ensure

that these failures are prevented

•Developer education

•Review checklists

•New static analyses

source: ManuvirDas

Page 30: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

43

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Session Summary

•Achieving software quality is difficult

•Due in part to the discrete nature of software

•Analysis defined

•The systematic examination of a software artifact

to determine its properties

•Diversity of analysis techniques

•Testing, inspection, static and dynamic analysis,

model checking, form

al verification

•Each appropriate for different attributes of quality

Page 31: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Jonathan Aldrich

Introduction to

Software Analysis

Analysis of Software Artifacts

©2009 Jonathan Aldrich

44

Analy

sis

of S

oftw

are

Art

ifacts

Course Overview

Page 32: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

45

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Course Goals

•Understanding

•Principles underlying analysis techniques

•Where different analyses are appropriate

•Tradeoffs between analysis techniques

•Theory sufficient to evaluate new analyses

•Experience

•Applying analysis to software artifacts

Page 33: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

46

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Course Outline

•Introduction (this lecture)

•Introduction to Software Analysis

•Course Overview

•OrothogonalDefect Classification

•Traditional analysis techniques

•Testing

•Inspection

•Design analysis

•Design patterns

•Frameworks

•Program specification and verification

•Form

al specification

•Proving programs correct

•Static analysis

•Model checking

•Dataflow analysis

•Static analysis applications

•Analysis across the software lifecycle

•Principles of security analysis; STRIDE

•Perform

ance analysis: profiling

•Wrap-up

Page 34: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

47

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Homeworksand Projects

•Course project: developing board game program

•Inspect rule specification and implement rules

•Inspect and test rule implementations

•Design a generic game framework

•Inspect the framework design

•Form

ally specify the framework

•Implement the framework and/or plugins to the specification

•System test the framework and plugins

•Run a commercial or open-source tool on the system

•Analyze your experiences using defect data

•Other assignments

•Prove small programs correct with Hoare logic

•Check program correctness with the ESC/Java tool

•Demonstrate your understanding of static analysis and model

checking

•Probe a software system for security violations

•Measure and tune system perform

ance

•Develop a quality assurance plan for your studio project

Page 35: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

48

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Course Instructor

•Jonathan Aldrich, Ph.D.

•Assistant Professor at Carnegie Mellon

University since 2003

•Active researcher and educator in this field

•Consultant to companies integrating static

analysis into their engineering process

•Awards for work on static analysis for

conform

ance to a software architecture

•2006 NSF CAREER award

•2007 Dahl-Nygaard Junior Prize

•Premier award for early-career researchers

who have m

ade technical contributions to

the field of Object-Orientation

•http://www.cs.cmu.edu/~aldrich/

Page 36: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Jonathan Aldrich

Introduction to

Software Analysis

Analysis of Software Artifacts

©2009 Jonathan Aldrich

49

Analy

sis

of S

oftw

are

Art

ifacts

Orthogonal Defect Classification

Page 37: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

50

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Analysis in a Process Context

Quality Goal

Definition

Artifact

Development

Artifact Analysis

Quality

Measurement

Process Refinement

Page 38: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

51

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Principled Process Refinement:

Orthogonal Defect Classification (ODC)

•Analyzing defect data to refine QA process

•Need to know where defects are introduced and where found

•A defect’s type is related to where it was introduced

•Hypothesis: can estimate defect type with less bias than

directly estimate of phase where defect was introduced

Page 39: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

52

Analysis of Software Artifacts

©2009 Jonathan Aldrich

ODC Defect Types

Low-level

design

Local problems that do not require design

change

Algorithm

Publications

Incorrect documentation

Documentation

Libraries/tools

Mistakes in libraries, change m

anagement

Build

Low-level

design

Incorrect management of shared

resources

Timing

Code

Assigned / initialized incorrect value

Assignment

Low-level

design or code

Data not properly validated before use

Checking

Low-level

design

Error interacting with other components

Interface

Design

Capability affected requiring design

change

Function

Sourc

eD

escription

Defe

ct Type

Page 40: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

55

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Example:

Analyzing Defect Type Distribution over Time

•Ideal curves

•Function peaks in design inspection

•Assignment peaks at unit test

•Interface peaks at integration test

•Timing peaks at system test

•Actual curve for function increases at each stage!

•What does this tell us? What would you do about it?

•Something was m

issed in design

•Better to re-do design rather than keep testing

Page 41: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

60

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Example:

Analyzing Defect Type Distribution over Time

•Fig 5,6,7

•s

•s

High-level design inspection

Low-level design inspection

Code inspection

Functional test

new

Page 42: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

62

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Process Inferences

•No errors => good work

FVT: Functional T

est

Found

Page 43: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

63

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Process Inferences

•No errors => good work

•High errors throughout => trouble

FVT: Functional T

est

Found

Page 44: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

64

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Process Inferences

•No errors => good work

•High errors throughout => trouble

•High errors then low => fixed w/ good stage

FVT: Functional T

est

Found

Page 45: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

65

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Process Inferences

•No errors => good work

•High errors throughout => trouble

•High errors then low => fixed w/ good stage

•Low then high => revamp stageF

VT: Functional T

est

Found

Page 46: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

66

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Defect Triggers

•Trigger –a condition that allows a defect to surface

•Examples

•bug fix

•boundary conditions

•exception handling

•timing

•workload

•Why useful?

•If defects in the field differ from defects found in test, that

points out an inadequacy of the test suite

Page 47: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

67

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Defect Triggers

•Example from pilot

•Most defects triggered by boundary conditions

•Intervention: invest more time in inspections looking at

boundary conditions

Page 48: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

68

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Defect Triggers

•Another pilot

•Context: significant interaction with other components

•Observation: few lateral compatibility triggers

•Suggests poor review process (or extraordinarily talented

team)

Page 49: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

70

Analysis of Software Artifacts

©2009 Jonathan Aldrich

ODC: Case Study 1

Source: Butcher, Munro, and Kratschmer. Im

proving Software Testing via ODC: Three Case Studies. IBM Systems Journal 41(1), 2002.

•Surprisingly m

any

errors in base code

•Majority should have

been caught in

function test

•Response: more

regression testing

•Many field defects had

“variation”trigger

•different inputs for a

function

•Response: more

variation testing

Page 50: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

71

Analysis of Software Artifacts

©2009 Jonathan Aldrich

•Case study 2

•Good signs led to early entry into system test

•broad range of triggers & some complex triggers: coverage,

variation, sequence, interaction, recovery/exception,

startup/restart

•Field triggers included a lot of software configuration

•do more configuration testing

•A lot of “checking”defects from missing code

•broaden testing with code coverage tool and analyzing test

cases for trigger coverage

•Case study 3

•Assessed a project as not ready for release

•Fewer than expected defects found in functional testing relative

to GUI review

•functional testing inadequate

•Simple defects found in functional testing (coverage, variation

triggers)

•more interesting defects not exposed yet!

•Majority of defects found in old code

•should have been caught before!

ODC: Case Study 2 & 3

Source: Butcher, Munro, and Kratschmer. Im

proving Software Testing via ODC: Three Case Studies. IBM Systems Journal 41(1), 2002.

Page 51: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

72

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Session Summary

•A principled approach to tracking defects can provide insight into

improving process

•Orthogonal Defect Classification

•Objective defect types used to estimate defect introduction phase

•Defect trigger distribution used to identify weaknesses in testing

•ODC provided useful feedback in case studies

Page 52: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

73

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Questions?

Page 53: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

75

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Announcements

•Course inform

ation

•Blackboard: discussion, turn-in

•Web site: everything else

•http://www.cs.cmu.edu/~aldrich/courses/654/

•First assignment out in the next couple of days

•Topic: Specification Inspection, ODC, and Java

•Mostly a group assignment

•Due M

onday, January 19, at 10:30am

•Next page: Policies

Page 54: Introduction to Software Analysisaldrich/courses/654-sp09/slides/1-course-intro.pdfIntroduction to Software Analysis 18 Software vs. other Engineering Disciplines Analysis of Software

Introduction to

Software Analysis

76

Analysis of Software Artifacts

©2009 Jonathan Aldrich

Policies

•Time Management

•Keep track of time spent on each assignment

•Late W

ork

•5 free late days

•can be used on non-critical path assignments only

•No other late work except under extraordinary circumstances

•Collaboration Policy

•You may discuss the lectures and assignments with others, and

help each other with technical problems

•Your work must be your own. You may not look at other solutions

before doing your own. If you discuss an assignment with others,

throw away your notes and work from the beginning yourself.

•You must cite sources if you use or paraphrase any material

•If you have any questions, ask the instructor or TAs