This chapter covers:
- Evaluating software from different points of view and for different objectives
- Distinguishing internal from external software qualities
- Distinguishing functional from non-functional software qualities
- Assessing interactions and tradeoffs between software qualities
The core idea of this book is to separately optimize the same class with respect to different code qualities. So, what are these qualities? First of all, the word quality should be intended as a characteristic that a piece of software may or may not have, not as its overall value. That’s why we talk about multiple qualities. Still, not all characteristics can be considered qualities. The programming language in which a piece of software is written is certainly a characteristic of that software, but not a quality. Qualities should be susceptible to be graded on a scale, at least in principle.