Classification of Software Qualities

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.
 
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
 
We use a process to produce the software product. We can also attribute some qualities to the process, although process qualities often are closely related to product qualities. For example, if the process requires careful planning of system test data before any design and development of the system starts, products reliability will increase. Some qualities, such as efficiency, apply both to the product and to the process.

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.

Share/Bookmark