1 how to apply static and dynamic analysis in practice © software quality week ‘97 how to apply...

21
1 How to Apply Static and Dynamic Analysis in Practice © Software Quality Week ‘97 How to Apply Static and Dynamic Analysis in Practice - Otto Vinter Manager Software Technology and Process Improvement Brüel & Kjaer Sound & Vibration Measurement email: [email protected]

Upload: eileen-osborne

Post on 29-Dec-2015

217 views

Category:

Documents


3 download

TRANSCRIPT

1How to Apply Static and Dynamic Analysis in Practice©

Software Quality Week ‘97

How to Apply Static and Dynamic Analysis in Practice

-

Otto Vinter

Manager Software Technology and Process Improvement

Brüel & Kjaer Sound & Vibration Measurement

email: [email protected]

2How to Apply Static and Dynamic Analysis in Practice©

Company Profile

Brüel & KjaerSkodsborgvej 307, DK-2850 Naerum, Denmark

Tel: +45 4580 0500, Fax: +45 4580 1405

High-Precision Electronic Instrumentation for

• Sound

• Vibration

• Condition Monitoring

• Gas Measurements

3How to Apply Static and Dynamic Analysis in Practice©

The PET Process Improvement Experiment

The Prevention of Defects through

Experience-Driven Test Efforts

(PET)

PET Objectives• Extract knowledge on frequently occurring problems in

the development process for embedded software

• Change the development process by defining the optimum set of methods and tools available to prevent these problems reappearing

• Measure the impact of the changes in a real-life development project

Funded by the CEC ESSI Programme (Project no. 10438)

4How to Apply Static and Dynamic Analysis in Practice©

Defect Analysis from Error Logs

Results of the Analysis of Error Reports• no special bug class dominates embedded software

development

• requirements problems, and requirements related problems, are the prime bug cause (36%)

• problems due to lack of systematic unit testing is the second largest bug cause (22%)

5How to Apply Static and Dynamic Analysis in Practice©

The PET Experiment

Actions to Improve Unit Testing • introduction of static and dynamic analysis

• host/target tools

• basic set of metrics

Comparative Analysis• assess a trial-release of a product

• remove all static analysis anomalies

• increase test coverage to industry best practice

(branch coverage > 85%)

• measure the effect after production release

6How to Apply Static and Dynamic Analysis in Practice©

Results of the PET Experiment

Applying Static and Dynamic Analysis:• 75% reduction in production-release bugs

- compared to trial-release

• 70% requirements bugs in production-release

- because bugs in other categories dropped

• 46% increase in testing efficiency

- bugs found per hour of testing

• app. 75% payback on tools and training

- reduced maintenance effort

7How to Apply Static and Dynamic Analysis in Practice©

Where to Apply Static and Dynamic Analysis

Test Activities• Requirements Verification

• Design Verification

• Unit Test

• Integration Test

• Acceptance Test

• Beta Test

} Static and Dynamic Analysis

8How to Apply Static and Dynamic Analysis in Practice©

Static Analysis in Unit Testing

• Static analysis is performed

- before unit testing starts

- and after any modification to unit

• Complexity Metrics

- use McCabe complexity metric as an indication

- take loop nesting into account

- use visual inspection of data flow graphs• for perceived complexity

• focused code inspection

• Analysis reports are reviewed / inspected

- determine special actions

- determine test coverage profile

- test coverage levels

9How to Apply Static and Dynamic Analysis in Practice©

Static Flowgraph (McCabe = 10)

10How to Apply Static and Dynamic Analysis in Practice©

Static Flowgraph (McCabe = 20)

11How to Apply Static and Dynamic Analysis in Practice©

McCabe = 46

12How to Apply Static and Dynamic Analysis in Practice©

McCabe = 55

13How to Apply Static and Dynamic Analysis in Practice©

Visualisation Theme

If it looks right, it could be wrong,

but if it looks wrong, it can’t be right.

Uffa Fox, yacht designer

14How to Apply Static and Dynamic Analysis in Practice©

Static Analysis in Unit Testing

Data Flow Analysis• Undefined but referenced variables

- must be removed from the code

• Variables defined but not used in scope

- should be documented in the code

• Variables redefined with no use in between

- should be documented, if not close to

• Suspicious casting (loss of information, mismatches)

- if unavoidable, use explicit casts

- should be documented

• Global variable anomalies (local overrides global)

- should be removed

15How to Apply Static and Dynamic Analysis in Practice©

Static Analysis in Unit Testing

• Establish project standards for code

- no goto’s, breaks in all cases, procedure size, etc.

• Remove unused items

- unreachable code (incl. procedures)

- declared variables that are not used

• Address design architecture problems

- use visual inspection of control flow graphs

- procedure parameter anomalies

(referenced only, defined only, not used)

16How to Apply Static and Dynamic Analysis in Practice©

Static Analysis Results

Data Flow Anomalies

Type of Bug Distribution

• Use of uninitialised variable: 15 %

• Variable defined but not used in scope: 24 %

• Variable redefined with no use in between: 36 %

• Parameter mismatch: 6 %

• Unreferenced procedure: 18 %

• Declared but not used variable: 0 %

• Other types of static bugs: 0 %

17How to Apply Static and Dynamic Analysis in Practice©

Dynamic Analysis in Unit Testing

Test coverage strategy • based on information from static analysis

• determined on a unit by unit basis

Unit test coverage must take into consideration• perceived complexity

- based on a visual inspection

• degree and type of reuse

• criticality

- product and project issues

• developer experience

- domain, product, and unit

• bug and change request history

18How to Apply Static and Dynamic Analysis in Practice©

Dynamic Analysis in Unit Testing

• Dynamic analysis reports are reviewed / inspected

- after unit testing (and a static analysis)

- and after any modification to unit

• Test coverage achieved

- test coverage level (e.g. 85% of branches)

- visual inspection of dynamic flow graphs

- determine special actions

• Static and dynamic analysis reports are saved in the configuration system along with the code

19How to Apply Static and Dynamic Analysis in Practice©

Problems when Introducing Static and Dynamic Analysis

Static analysis• an extreme amount of anomalies to evaluate

- more than 1 per 60 lines of code

Dynamic analysis• best suited for automatic testing

• documented test cases

• no automatic test case generation

- only structure based

• test cases are selected by normal unit testing techniques

- equivalence partitioning, boundary value analysis ...

20How to Apply Static and Dynamic Analysis in Practice©

Problems when Introducing Static and Dynamic Analysis

Tools break• code expands when instrumented (40%)

• large amount of tracing data is generated (Mbytes)

So• instrument only parts of system

- handle frequently used parts separately

• run the regression test suite several times

- with different parts instrumented

21How to Apply Static and Dynamic Analysis in Practice©

Conclusions on Static/Dynamic Analysis

Performance Improvement • an efficient way to remove bugs

• marginal delay on trial release date

• marginal increase in the testing resources required

• immediate payback on tools, training & implementation

• increased quality and reduced maintenance costs

• increased motivation

• applicable to the whole software development industry, incl. embedded software