Internal Software Quality Characteristics

Programmers care about the internal characteristics of the software as well as the external ones:

  • Maintainability: The ease with which you can modify a software system to change or add capabilities, improve performance, or correct defects. 
  • Flexibility: The extent to which you can modify a system for uses or environments other than those for which it was specifically designed. 
  • Portability: The ease with which you can modify a system to operate in an environment different from that for which it was specifically designed. 
  • Reusability: The extent to which and the ease with which you can use parts of a system in other systems. 
  • Readability: The ease with which you can read and understand the source code of a system, especially at the detailed-statement level. 
  • Testability: The degree to which you can unit-test and system-test a system; the degree to which you can verify that the system meets its requirements. 
  • Understandability: The ease with which you can comprehend a system at both the system-organizational and detailed-statement levels. Understandability has to do with the coherence of the system at a more general level than readability does.