There are many desirable software qualities. Some of these apply both to the product and to the process used to produce the product. The user wants the software products to be reliable, efficient, and easy to use.
The producer of the software wants it to be verifiable, maintainable, portable, and extensible. The manager of the software project wants the process of software development to be productive and easy to control.
In this section, we consider two different classifications of software-related qualities: internal versus external and product versus process.
The producer of the software wants it to be verifiable, maintainable, portable, and extensible. The manager of the software project wants the process of software development to be productive and easy to control.
In this section, we consider two different classifications of software-related qualities: internal versus external and product versus process.
External versus Internal Qualities
We can divide software qualities into external and internal qualities. The external qualities are visible to the users of the system: the internal qualities are those thatconcern the developers of the system. In general, users of the software only care about the external qualities, but it is the internal qualities, which deal largely withthe structure of the software, that help developers achieve the external qualities.
For example, the internal quality of verifiability is necessary for achieving theexternal quality of reliability. In many cases, however, the qualities are relatedclosely and the distinction between internal and external is not sharp.
Product and Process Qualities
It is interesting to examine the word product here. It usually refers to what is delivered to the customer. Even though this is an acceptable definition from the customer’s perspective, it is not adequate for the developer who requires a general definition of a software product that encompasses not only the object code and the user manual that are delivered to the customer but also the requirements, design, source code, test data, etc. In fact, it is possible to deliver different subsets of the same product to different customers.