Previous page | Next page | Contents | Home Obix pragmatics

Quality

Quality is a permanent and implicit requirement!

Yes, this pragmatic seems quite too obvious to be worth talking about. We all know that everyone wants high quality. So, why mention it in first place? The reason is that creating high quality software is not easy at all. Plenty of source code (including most software I have written), is not of high quality. Two main reasons are:

Let's take a very typical example. We have to add a new functionality to an existing program. After examining the source code, which may have been written by someone else, we see that it is of bad quality and/or it is not prepared to add the new functionality in an appropriate way. Or, worse, it contains programming errors. In this case we have two possibilities:

  1. first we refactor the existing code (this takes time), and then we add the new functionality in a well designed, properly implemented way.

  2. we accept the existing code (after all, it works and our client is impatient), and quickly change the code in a mediocre way.

It is a fact that programmers frequently choose solution 2, because they may feel themselves not responsible for the bad code, because it is often a frustrating task to change existing code, and also because it may take a lot of time (days, weeks or even months). But, as software often has to be changed in the real world (about 70% of a programmer's time is spent on maintenance), the consequence of repeatedly doing changes in such a way will undoubtedly end up in a disaster: unstable, unmaintainable spaghetti code.

Hence, we constantly have to resist against writing low quality, unmaintainable code.

Moreover, we should always keep in mind that:

high quality code always reduces total software development costs

even if at some points much more time must be invested.

But: What exactly is high quality code? Typically, when speaking about quality of software, we think of the following properties:

Obviously, there are a lot of requirements to be fulfilled by high quality software. Each of the following pragmatics concerns quality and contributes to one or more of the above properties.


Previous page | Next page | Contents | Home October 2004