Reliable programming

4/26/99


Click here to start


Table of Contents

Reliable programming

How to write programs that work

A reliable design is...

Modular design

Testing pieces separately

Robust design

Programming without limits

Deterministic design

Isolating indeterminacy

Testable design

Assertions

Logging

A reliable implementation is...

Well specified implementation

Clean implementation

Explaining programs

Edge cases

Proving programs

Systematic testing

What is most important to test?

Unit testing

Debugging

A necessary nuisance

How to avoid making things worse

A special state of mind

How not to do it

A more productive approach

Simplifying the bug hunt

Once you think you've found it

Debugging tools

Did fixing it break anything else?

Ensuring that bugs stay fixed

Example: compiler test library (1988)

When does a compiler test work?

Running batches of tests

Summary

Author: Andrew Koenig

Email: ark@research.att.com

Home Page: http://www.research.att.com/info/ark