The design, code, and test cycle of a problem-fix is not very different from the design,
code, and test activities of the development cycle. The danger is that the fix cycle
may not utilize the same level of software engineering discipline because many of the
problem-fixes may involve only one or two lines of code fix. It is so tempting to just fix
the code and go on to the next problem. For an organization that is handling multiple
software product releases across multiple countries, as mentioned in Chapter 11, the
discipline of keeping all the requirements, design, coding, and testing documentations
updated is imperative. A code fix to a problem often needs to be propagated to other
releases and also to multiple country versions. The tasks and activities of the problem-
fix-and-delivery group require the same software engineering methodologies and
techniques as those described in the earlier chapters of this text. In addition, there is
more awareness of the need for measurements as customers are starting to demand
contractual agreements on service levels with penalty clauses if the agreement is not
met. This is especially true with hardware system availability where most of the system
is expected to be available between 99% and 100%. Fortunately, the customer demand
on software has not yet reached such a level.
The problem/fix process for life-threatening situations is very different from the normal
condition. It is not uncommon to see support personnel physically on site at a customer’s
system to fix and resolve the problem in such emergency situations. In fact, depending on
the particular case, even the original designer or programmer sometimes participates in
supporting the customer. In such situations, the changes and fixes made at the customer
site still need to be documented and the fix code integrated back into a general fix release
later for other customers. A word of caution: Support is only for problems originating from
the original software product, not for any modified or customized code problem. Today,
most software product organizations provide only executable object code and do not
release source code anymore to evade the issue of supporting customer-modified code.
12.1.4 Fix Delivery and Fix Installs
The deliveries of fixes follow two major paths. There are the regular and periodic fix
releases that are on a quarterly or semiannual cycle. These are the different code fixes
that have been accumulated since the last fix release. A fix release, in general, does not
contain the complete product. It is not a total product refresh but contains only those
modules and code that are affected by the problem-fixes. The fix code is packaged in a
sequential order. The fix releases are also sequential, and the customers are expected to
install the fix releases in sequential order. All fix releases are made available to all the cus-
tomers that have a valid support/service contract. These fix releases, sometimes called
patches, are downloadable from an online site or are shipped to the customers on CDs.
Not all customers will apply (or install) the fix releases immediately. These are custom-
ers who have achieved a “working” state and do not want to risk their working software
with any new fix releases. They may, however, encounter a problem later and want a
particular problem-fix. These customers must be reminded to apply all the fix releases in
sequence since they last fully applied a fix release. Such a retroactive application of all
the fix releases can be very time consuming and frustrating when the customer wants
only one problem fixed or a single patch. However, in order to keep the support service
256 Chapter 12 Software Support and Maintenance
91998_CH12_Tsui.indd 256 1/10/13 11:06:33 AM