Writing the documentation
An important part of software quality comes from noting that the product is not simply code directed at a compiler or interpreter. As we noted in Chapter 15, Designing for Testability, code that cannot be trusted cannot be used. In that chapter, we suggested that testing was essential to establishing trust. We'd like to generalize that a bit. In addition to detailed testing, there are several other quality attributes that make the code usable, and trustworthiness is one of those attributes.
We trust code in the following scenarios:
We understand the use cases
We understand the data model and processing model
We understand the test cases
When we look at more technical quality attributes, we see that these are really about understanding. For example, debugging seems to mean that we can confirm our understanding of how the application works. Auditability also seems to mean that we can confirm our understanding of processing by viewing specific examples to show that they...