Before looking at the technical aspects of what makes a good software application we should establish what we think constitutes good software.
A good software application should:
Enable small changes in users' needs to be accommodated by small changes in the code
Be delivered on time and on budget
Function mostly to expectations
Be easy to use
. . . software seems like malleable stuff, most programs are actually intricate plexuses of brittle logic through which data of only the right kind may pass.
|--W. Waytt Gibbs, “Software's Chronic Crisis”|
Software can be thought of as a machine that has many states, with these states ...