What is the difference between good software and bad software? It is reasonably easy to recognise the extremes when we encounter them, but there is a set of criteria that can be used to explain the differences. These criteria are also useful when building or modifying software, as they can be used to help make design decisions.
Good software has the following characteristics:
- Correctness: it produces the right results and exhibits the right behaviour.
- Usability: the user finds it easy to make it perform the desired functions.
- Maintainability: it can be easily maintained and updated.
- Availability: it is available (ie, will run) when it is needed.
- Useful: it performs a task that someone wants performed.
It is often thought that performance should be another criterion, but in my view the need for good performance results from the usability and availability criteria.
These criteria apply to every kind of software, including spreadsheets. Spreadsheets are an interesting case because it is difficult to tell the difference between usability and maintainability, as one of their main uses is to be updated and enhanced.
The following external links are relevant: