Designing Robust Software

by Jessica Winblad

Rhymes With Orange Strip (1-2-2001) Y2K in Review... We should know better than to think we can predict WHEN a computer will crash or for WHAT reason.


Example: Unix is often said to be robust because it can operate for prolonged periods without crashing or requiring rebooting, and if individual programs crash, they usually do so without affecting other programs or the operating system.

Software is often instead:

Tactics to Deliver Robustness:


Design Goals are not always for Robustness:

Rapid Application Design Robust Design
Good for:
  • Proof of concept
  • to assess feasibility
  • Demos/things that aren't built to last

Faster to implement typically (less worrying about the possible "what ifs" of what could go wrong)

When code needs to:
  • work under all circumstances
  • be stable and not crash
  • handle unexpected cases gracefully

Requires more thorough testing to verify as many errors as possible are avoided

"Exception handling code can be difficult to represent in terms of design and documentation, largely because it generally falls outside normal program flow, and can occur at virtually any point in a program."

Return to Homepage